The two paths look identical from a spreadsheet, until you check what's being paid for
'Buy more traffic' and 'message the people who already bought' both end in the same box: a customer, on your site or in your DMs, considering an order. But one path pays to be introduced to a stranger, and the other pays to remind someone who's already met you — structurally different costs, before anyone even responds.
The comparison only makes sense channel by channel, because reactivating a dormant customer doesn't mean the same thing on Messenger, on Zalo, and through a fresh ad account. Each has its own line for how dormant is too dormant to reach for free.
Sorting a stale contact list into 'recently quiet' versus 'genuinely gone' is worth doing before picking a channel at all — the two groups need different tools, and treating them the same either wastes a message trying to reach someone who's already outside every free window, or overpays running an ad at someone who would have answered a message for free.
What buying traffic again actually costs
In Vietnam, Meta ad pricing has run around $1.83 CPM and $0.16 CPC, according to third-party ad-cost trackers — and that's the blended market rate, not a discount for reaching someone who's already a customer. A cold campaign and a 'reach past buyers' campaign draw from the same auction.
Retargeting narrows who sees the ad, but it doesn't change what the platform charges to show it. Every impression is still purchased fresh, in the same auction the rest of the market is bidding into — the ad system has no memory of the sale that already happened.
What reactivating actually costs — and why 'free' has an expiration date
If a customer still has an open session with you, the marginal cost of reaching them again is close to zero. Messenger's 24-hour window allows unlimited free messages while it's open, resetting with every reply. Zalo's version is narrower — a 48-hour window with 8 free messages inside it, then a small per-message charge past that.
The catch is in the word 'dormant.' Someone who hasn't engaged in weeks or months has long since closed both of those windows. The free-reactivation case only holds for contacts who are recently quiet, not the ones a win-back effort usually exists to reach.
For contacts who are genuinely dormant, the cost shape is still different — just not free
Once the free windows are closed, reaching a Zalo contact costs a flat 55₫ per message outside an expired session, or a set per-message rate through a paid template — a fixed, known cost regardless of how competitive the ad market is that week. A Meta CPM moves with demand from every other advertiser bidding for the same audience at the same time.
That's the real structural difference: the paid reactivation tools charge for delivery to someone you already have contact details for. The ad system charges for competing to be seen by someone it's still trying to identify as a match — even when that someone already owns the product.
- Ad auction: price moves with demand, regardless of whether the viewer already bought
- Reactivation tools: a fixed per-message cost, the same whether the market is busy or quiet
- The difference only shows up once the contact is reachable outside the ad system at all
Where this breaks down entirely
None of this applies to a contact who was never captured onto an owned channel in the first place — a marketplace buyer whose only trace is an order ID, not a phone number or a messaging handle. For that segment, there's no cheap reactivation path, because there's no channel to reactivate them on.
That's the actual argument for building the list before it's needed: not that a dormant contact costs nothing to win back, but that the cost only gets structurally cheaper once they're somewhere you can reach them directly — and that has to happen before they go quiet, not after.
In practice this means the reactivation-versus-ads decision isn't really made at the moment a customer goes dormant. It's made much earlier, at the point of sale, by whether anyone captured a channel to reach them on before the marketplace or the checkout flow closed that door.

