
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.

A shopper taps your Snapchat ad, lands on your store, leaves to Tabby to complete payment, and comes back. The order is recorded as direct.
If a large share of your customers pay in instalments, that single mechanic makes every paid channel in your account look weaker than it is.
Checkout hands the shopper to an external domain. When they return, most setups see a fresh visit whose referrer is the gateway domain, or no referrer at all.
The system treats the first session as finished and starts a new one. The order attaches to the new session, so it's credited to the last visible source instead of the real one.
Nothing errors and no event is missing. There's an order written against the wrong source, and every report built on top of it inherits that.
The tell is the correlation: the higher the share of instalment payments in your store, the larger the gap.
Direct isn't a channel to begin with. It's the bucket for every visit the system couldn't name. That matters because it's the one line in your report you can't act on. You can't spend more on direct, optimise direct, or brief an agency on direct. So a growing direct share doesn't just distort the numbers, it moves budget into a column where no decision is possible.
A store doing 480 orders a month, with 60% of them paid in instalments, so 288 orders pass through an external gateway.
Before gateways are treated as pass-through:
Afterwards those 288 return to their real sources. Say 150 Snapchat, 90 Meta, 48 Google.
Here's what that does to one budget decision, taking Snapchat at a 200 SAR average order:
| Recorded orders | Attributed revenue | Spend | ROAS | |
|---|---|---|---|---|
| Before | 10 | 2,000 SAR | 5,000 SAR | 0.4× |
| After | 160 | 32,000 SAR | 5,000 SAR | 6.4× |
Hypothetical figures, meant to size the decision rather than describe a real store.
Nothing changed in the campaign. What changed is where the order was written.
The principle goes beyond payments: any destination a customer passes through and returns from should be treated as a transit step, not a new source.
Applied properly, gateway domains are classified as pass-through. The session stays attributed to its original source, and the shopper re-enters the same journey instead of starting a new one. Flowfy covers Tabby, Tamara, PayPal, Stripe and myshopify as pass-through domains.
This fix is unusually cheap. Most measurement improvements need history: a model to train, a month of data to accumulate, a volume threshold to clear. This one needs none of that, because it's a classification rule. Install it today and the next order through a gateway is written against its real source.
If direct is climbing while brand demand is flat and instalment payments are rising, you're most likely looking at gateway attribution loss rather than genuine direct traffic.
Does this affect card payments too? Any redirect off-site and back can break a session, including 3-D Secure checks. Instalment providers are simply the most common case in this market.
Can I fix it with UTM parameters? Not reliably. The return leg isn't a link you control, so there's nothing to tag. The classification has to happen where sessions are stitched together.
Will my historical data be corrected? No. Attribution is applied as orders arrive, and past orders keep the source they were written with. That's one more reason to fix it before a season rather than after.
Does it work the same on Zid? Yes. The break is in the checkout redirect, not in the store platform.

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.