A lead messages on WhatsApp after seeing an ad, asks for the price, requests one more photo and confirms the purchase. The payment lands minutes later through Yape. For the business, the sale is closed and paid. For the platform that showed the ad, that person still looks like a click that never converted, because it never completed a checkout or fired a pixel.
The informal checkout is the real checkout across much of Peru
In Peru, Yape and Plin became the default payment method for much of small and mid-size sales, and those sales often get negotiated on WhatsApp or Instagram before any transfer happens. That path (ad, chat, wallet payment) never touches a page with a purchase event, so no ad platform has any way of knowing it happened.
This is not exclusive to one category. It hits the apparel brand selling through an Instagram catalog, the food business taking orders on WhatsApp, and any business whose buyer prefers to resolve everything over chat instead of a checkout form. The higher that volume, the bigger the share of real results the algorithm never sees.
What breaks when that sale never makes it back to the campaign
Meta or Google’s algorithm optimizes against the conversions it receives. If it only gets purchases with a formal checkout, it learns to look for that buyer profile and stops looking for the one who resolves everything over chat, which in several categories in Peru is the common case, not the exception. Meanwhile, the report shows a cost per result worse than the real one, simply because it is missing a chunk of the actual sales.
How to recover that sale for the report
- Use phone number as the single identifier. It is the data the lead already left when messaging on WhatsApp and, in most cases, the same one tied to the account that made the Yape or Plin transfer.
- Log every chat-closed sale with that phone number, date and amount. A daily spreadsheet is enough to start: there is no need to integrate bank systems.
- Upload those sales as offline conversions to the ad platforms, the same way you would with an in-store sale.
- Build an exclusion audience out of those buyers so the campaign stops spending on re-targeting someone who already paid.
It is the same identity problem covered in attribution models and why last click lies: a sale exists, but the system that decides where budget goes never learns about it unless something explicitly tells it. Here the fix is a shared identifier and a routine that uploads that sale to the platform, the same pattern used for any conversion that happens outside a formal checkout. It is also the standard we apply in data marketing for Peru: before spending more on ads, you need the algorithm learning from every sale, not only the ones that went through an online cart.
If your business closes sales on WhatsApp and gets paid through Yape or Plin, your reported cost per result is probably worse than your real one.