Stop letting Meta and Google grade their own homework.
Every ad platform reports the conversions it believes it caused. Add them up and you have sold more than you shipped. One first-party dataset keeps a single count.
Over-attribution
Three platforms. One sale.
Take a single $84 order. If you add up what each platform reports, you sold $252 of product. You sold $84. This is the arithmetic every DTC team quietly lives with.
| Reported by | Claims | What it is counting |
|---|---|---|
| Meta Ads | $84 | Counts the order: someone saw an ad inside its attribution window. |
| Google Ads | $84 | Counts the same order, for the same reason, from its own window. |
| TikTok Ads | $84 | Also counts it. None of the three is lying; each measures alone. |
| SourceTrack | $84 | One order, counted once, then split across the journey by the model you pick. |
DTC channel mix
Every channel a DTC team actually uses.
Channel classification runs on arrival, from one shared list — so a new AI assistant is recognised the same way a paid-search click is, without a per-report rule.
Paid social and paid search
Click IDs and campaign params preserved through the landing page, so the order still knows which campaign earned it.
Organic and referral
Referrer kept rather than discarded, including the affiliate and creator traffic that usually collapses into direct.
AI assistants
Sixteen answer engines classified on arrival — the newest channel, and the one furthest from the order it eventually produces.
Email and SMS
Campaign metadata carried across the session boundary, so a flow-driven repeat order is not credited to direct.
Alongside Shopify
Better than the default traffic report.
Shopify's own report is fine for sessions. It was never built to explain why those sessions became orders, or which of three platforms deserves the credit.
Default traffic report
Sessions by source
Counts visits. Untagged and referrer-stripped traffic collapses into direct, and one order can still be claimed by three ad platforms at once.
SourceTrack
Revenue by source
Orders arrive through a Shopify or Stripe webhook, tied to the journey that produced them, then credited under whichever of the nine models you pick.
FAQ
The questions that come up every time.
Why do Meta and Google both claim the same order?
Because each measures inside its own walls and counts any conversion it touched. Add the platforms up and you exceed the orders you shipped. Nobody is lying — there is just no referee, which is what one first-party dataset provides.
Are refunds handled?
Yes, and it matters more in ecommerce than anywhere else. A refunded order stops counting as revenue for the channel it was credited to, so a source cannot look profitable on money that came back.
Does this need a pixel that ad-blockers can break?
Orders arrive from official Shopify and Stripe webhooks rather than a browser pixel, so an ad-blocker or a checkout redirect cannot silently drop them.
Can I send conversions back to the ad platforms?
Yes — server-side to Meta CAPI, Google Ads, LinkedIn, TikTok, Pinterest, Microsoft and Snap, de-duplicated against your pixel by a shared event id.
Run alongside Shopify. Run alongside Meta. Be the referee.
28 days free, no card. Install the script, connect the order webhook, and see which channel actually earned the sale.
Product visuals shown use illustrative data.