On this page
Attribution models aren’t neutral maths. They’re a set of assumptions about how people buy, built into software, and those assumptions were written for markets where people pay online by card on their own device. Run that software over customers in Egypt or Saudi Arabia and you don’t get a slightly noisier version of the truth. You get a confident number that’s wrong by design.
It’s worth understanding properly, because the usual response, buying better tracking infrastructure, costs a lot and fixes none of it.
Four assumptions standard attribution makes
- The sale happens on the website. If the purchase finishes in a checkout you control, the platform can see it. If it finishes in a chat, on the phone or at the door, it can’t.
- One person, one device, one identity. The model assumes the person who clicked the ad is the person who bought, and that they can be recognised across visits.
- The click is the moment of influence. Everything before it, like the ad someone saw and didn’t click, a cousin’s recommendation or the shop they walked past, is missing from the model.
- A payment is revenue. The order counts as money, not as a promise of money that might be refused at the door.
All four are often false in this region. They’re not edge cases. They’re normal.

Cash on delivery, and the sale that happens offline
Cash on delivery breaks the fourth assumption completely. An order isn’t revenue until the customer accepts the parcel and pays the courier, which can be a week later, and a real share of orders get refused at the door.

What that does to your reports:
- Every platform counts the order as a conversion the moment it’s placed, so your ad accounts show revenue that hasn’t happened.
- Automated bidding goes after whatever produces orders, and the audiences that place the most orders are often the ones that refuse the most deliveries. The algorithm optimises for a number that moves against what you actually want.
- Return on ad spend based on placed orders can look far better than the real figure, which is how a campaign gets scaled for three months before anyone checks it against delivered revenue.
The fix is to send back the delivered order as the conversion, not the placed one. Import the “delivered” event from your fulfilment system as an offline conversion, linked to the original click ID, and let bidding optimise on that. It arrives a few days late, which is a real limitation, but optimising on late truth beats optimising on instant fiction.
If you can’t do that yet, do the cheaper version: report two numbers everywhere, placed orders and delivered revenue, and never let the first one appear alone in a report someone makes decisions from.
WhatsApp, shared devices and phone numbers as identity
The first two assumptions fail together here. A huge share of business conversation in this market happens on WhatsApp, and the moment someone taps through to chat, they’ve left every analytics system you have.
- The conversation is the funnel. Qualifying, negotiating, handling objections and closing all happen in a thread you can’t track.
- The identity is a phone number, not a cookie. That’s good news, because a phone number is a far more stable identifier than anything the browser gives you. It just isn’t the one your analytics was built around.
- Devices are shared: a family tablet, a phone handed to a spouse to look at something, a home purchase made from the office computer. Matching people across devices from their behaviour is guesswork here more often than vendors admit.
- Referrals are big and invisible. A recommendation forwarded in a family group is a major source of customers that leaves no measurable trace.
The workable answer is to carry the source into the message: pre-filled WhatsApp text with a short reference code that records the page and campaign, and a sales process that saves that code against the lead. It’s more a process change than a technical one, and for most businesses here it’s the measurement fix with the biggest return. The details are in tracking WhatsApp leads.
Shopping across Gulf borders
A smaller effect, but it distorts exactly the campaigns people look at hardest. Someone researches in one country and buys in another while travelling. Someone lives in one Gulf country and orders for family in another. Someone browses through a VPN and buys without it.
- Reports credit the sale to the location at the moment of purchase, so the market that did the persuading gets nothing.
- Switching currency halfway through can split one person across two versions of the site and two measurement setups.
- Travel and roaming bunch up around holidays and school breaks, so the distortion isn’t spread evenly across the year.
You won’t solve this at the session level. You manage it by reading regional performance for groups of markets instead of country by country, and by distrusting any conclusion that a neighbouring market “doesn’t convert”.
Blended customer cost as the main number
Once you accept that attribution by channel is unreliable here, the sensible step is to stop making it your main number. Blended customer acquisition cost, meaning total marketing spend divided by total new customers, both from your accounts and not from ad platforms, has one huge advantage: double counting can’t inflate it, and every platform’s self-reported success is already included.
- Take spend from the bank, not the dashboards. Include agency fees, tools and production, not just media.
- Take customers from your system of record: delivered orders or closed deals, not platform conversions.
- Compare month to month using the same definition. Which way it’s moving matters more than the number itself.
- Use platform figures for direction: useful for choosing which creative to run, useless for setting the total budget.
- Watch the gap. If the conversions the platforms claim add up to, say, twice your actual number of customers, that ratio is worth tracking in its own right.
Tests that show what a channel really adds
The only way to know whether a channel caused revenue is to switch it off and watch. These tests are crude, and still more honest than any model.

- The pause test. Switch one channel off completely for two weeks and watch total revenue, not that channel’s revenue. If total revenue doesn’t move, the channel was mostly taking credit for demand that was there anyway.
- Holding back one city. Run a campaign in three of four comparable cities and leave the fourth without it. Compare revenue by city. It’s cleaner than a before-and-after test because it avoids seasonal effects.
- Staggered launch. Start a campaign in one market two weeks before another. The gap between the two curves is the effect you added.
- Brand searches as a check. If a channel really creates demand, searches for your brand should rise with it. If they don’t, you may be paying to collect demand you already had.
Three warnings. Run these in a stable period, not during a sale or a religious season. Two weeks is the minimum for anything people think about before buying. And write down what you expect before you start, because afterwards every result looks explainable.
Designing this measurement is part of analytics and tracking, and the channel decisions belong to paid media.
Frequently asked
Is data-driven attribution better than last click?
A little, where there’s enough data and the sale happens on the site. Neither model can see a sale that happens in a chat or at the door, so here both are wrong in the same direction.
Should we use a multi-touch attribution tool?
Only if your sales really finish online and your traffic is large. Otherwise you’re buying a sharper view of the small part of your funnel you could already see.
How do we handle offline and in-store sales?
Ask, and save the answer in the same system as the sale. A single “how did you hear about us?” question at the point of sale, recorded consistently, beats most technical solutions for physical businesses.
Does the cash-on-delivery problem apply to lead generation too?
The same structure, yes. A form fill isn’t a customer. Send back qualified or closed leads as the conversion instead of raw submissions, or the platform will find you more of the people who fill in forms and never answer the phone.
How often should we run these tests?
Once or twice a year for each major channel, and always before a big budget increase. It’s the cheapest protection against scaling something that never worked.
If the conversions your platforms report add up to more customers than you actually have, that gap is worth an hour. Message me.

