Most attribution problems are not modeling problems. They are plumbing problems. Before you argue about first-touch versus last-touch or whether to buy a measurement tool, it is worth spending one afternoon confirming that the data feeding every report is actually correct. Here is the pass I run when I sit down with a store whose numbers feel off.
Start by writing down your sources of truth. Open Shopify and note total revenue for the last 30 days, the version before refunds and the version after. Open each ad platform and note spend and platform-reported revenue for the same window. Do not try to reconcile anything yet. You just want the raw figures on one page so you can see the size of the gaps you are dealing with. Half the time the gap is smaller than people fear and the panic was about nothing.
Next, confirm your pixel and server events are firing once and only once. Open your store in an incognito window with the Meta Pixel Helper or the GA debug view running, then complete a real test purchase. Watch for a single Purchase event with the correct value. The two failure modes to catch are no event at all, which means you are flying blind, and a duplicate event, which means a theme app and a manual pixel are both firing and inflating every conversion you record. If you run both browser pixel and the conversions API, check that deduplication is set up with a matching event ID, or you are counting many purchases twice at the source.
Then check that the purchase value matches what you actually charged. Buy something, note the order total in Shopify, and compare it to the value the pixel sent. If they disagree, find out why before you trust a single ROAS number. Common culprits are a pixel passing subtotal while Shopify reports the total with shipping and tax, or a currency mismatch on an international order. A value that is consistently off by the cost of shipping will quietly distort every efficiency calculation you make.
Now audit your UTMs, because this is where most channel reports rot. Pull a week of orders and look at the landing page and referrer data, or your GA acquisition report. You are looking for traffic dumped into direct or unassigned that you know came from a campaign. Email links with no tags, influencer links someone set up in a hurry, paid placements pointing at a bare homepage URL. Every untagged link is revenue your channel reports cannot see, and it makes your best performers look worse than they are. Fix the templates once and the problem stops recurring.
Check your attribution windows next, and just write them down. Note what each platform is set to, the Meta click and view window, the Google conversion window, the lookback in GA. You are not changing them today. You are documenting them so that when two reports disagree next month you already know it is a settings difference and not a crisis. Most the numbers broke fire drills are two systems with different windows being compared as if they were the same.
Then do one blended reconciliation by hand. Take total Shopify revenue, divide by total ad spend across every channel for the same period, and write down the number. That blended ratio cannot be double-counted, so it is the most honest read you have on whether marketing as a whole is paying off. Compare it to the sum of your platform-reported revenue. If the platforms claim far more than your store actually did, you have quantified your double-counting, and you now know how much salt to take every channel number with.
The last thing to verify is refund handling. Pull your return rate for the period and check whether any of your reporting accounts for it. Most pixel-based revenue never gets adjusted when an order is refunded, so if you run a meaningful return rate your platforms are permanently overstating revenue by roughly that percentage. Knowing the number lets you mentally discount accordingly.
Once the plumbing checks out, an attribution tool earns its place by doing this reconciliation continuously instead of you redoing it by hand every month. I run ThoughtMetric across the stores I manage for exactly that, so I’ll say up front that I work with them and use it daily rather than pretend I’m a neutral bystander. ThoughtMetric pulls Shopify orders as the revenue base, layers click data on top, and reconciles the channels into one view, which means the audit you just did by hand becomes a dashboard you glance at. Any order-level attribution tool in the category does a version of this. The point is that the tool is only as good as the plumbing under it, which is why the audit comes first and the software comes second.
Block out the afternoon before your next planning cycle. Sources of truth on one page, pixel firing once with the right value, UTMs clean, windows documented, one blended reconciliation, refunds accounted for. None of it is glamorous and all of it determines whether every decision you make for the next quarter rests on real numbers or on plumbing nobody ever checked.
Leave a comment