
How to settle an attribution argument by opening one order
Most arguments about channel performance aren't arguments about data. Identify the type first, because only one of the three is settled by opening a record.

Meta Ads Manager says 340 conversions. Salla says 240 orders.
The two numbers aren't measuring the same thing. Meta counts conversions it can attribute to itself. Your store counts orders that happened. Four things separate them, and each one has a different fix.
The common setup is 7 days after a click, 1 day after a view.
Someone clicks your ad on Sunday. On Thursday they search your store name on Google, come in, and buy. Meta counts that order, because the click happened inside the window you configured.
Your store logs one order. Meta logs one conversion. A last-click analytics tool logs "organic search". Three reports describing the same order.
Meta only sees its own traffic. It has no way of knowing the same buyer saw a Snapchat ad two days earlier. So it claims what it can, and Snapchat does the same.
Add up conversions across three dashboards and you'll get more sales than your store made.
Running the pixel and CAPI together is the correct setup. The browser sees things the server can't, and the other way round.
But the two need a shared event ID. Without one, Meta can't tell they're the same purchase, so it counts it twice.
The signature is easy to spot: conversions climb above your store's order count, ROAS improves, and no extra riyal shows up in your bank.
The gap doesn't only run one way. Browser-only tracking loses events:
Those orders reach your store normally, just without a source. In Saudi stores, instalment gateways are the biggest reason the "direct" bucket looks inflated for a store that advertises daily.
Five minutes and a spreadsheet:
If the platform total is clearly higher, you have overlap or duplication. Start with reason 3, because it's the fastest to fix.
If a large share of your Salla orders have no known source, you have a collection gap. Start with reason 4, specifically the payment gateway.
Most stores have both. That's what makes the gap look reasonable: duplication inflates the platform side while lost events deflate the store side, so you see an acceptable difference and you actually have two problems.
Not any single platform dashboard.
The number you want is your store's orders, each with its source, counted once. Three conditions:
Platform numbers and store numbers won't match, and they aren't supposed to. What you want is for your attributed order count to sit close to your store's order count and never above it.
Flowfy collects on two paths. A browser SDK records the visit and its source, and your store's server sends the order over a webhook, on a path an ad blocker can't touch.
The two paths meet in one place, and three things happen there:
A stable event key means an order is counted once, inside a platform and across platforms. Identity resolution groups a buyer's identifiers into one customer, so "saw it on mobile, bought on laptop" is one person. And payment gateways like Tabby and Tamara are treated as a step inside the journey rather than a new source.
Attribution then runs on the stored journey with a 90-day window, so you can read the same period on first touch, last touch or even distribution without re-collecting anything.
Compare one month: your Salla orders against the sum of platform conversions. If the platform total is higher, start with the shared event ID between pixel and CAPI. If a large share sits in "direct", check what happens to attribution when a customer pays with Tabby or Tamara.

Most arguments about channel performance aren't arguments about data. Identify the type first, because only one of the three is settled by opening a record.

An 890 SAR order credited to a channel you didn't spend on this month. If you can't explain why, that number dies and takes every other figure from the same source with it.

No attribution model answers this question. The only method is a holdout, and it costs real money. Here's how to design one and which channel deserves it.