Why Your Amazon and Shopify Numbers Never Match (And What to Do About It)
If you sell on both, you already know the feeling: Amazon Seller Central says one number, Shopify says another, and your ad platform disagrees with both. None of the three are lying to you. They are measuring different things, on different clocks, and calling the result “today's numbers.” Chasing a single source of truth is the wrong fix. The right one is catching the mismatch before it feeds a decision, which is a different problem and a much more solvable one.
The three reasons the numbers never agree
Every mismatch we've traced on a live DTC account comes down to one of three causes, and none of them is an error.
1. Settlement lag
Amazon doesn't report a sale the day it happens; it reports it when the settlement period closes, which can be one to two weeks later. A number you pulled on Monday and the same number pulled the following Monday can legitimately differ, because the first read was incomplete. Compared against Shopify's same-day order data, it looks like a discrepancy. It's a timing difference wearing a discrepancy's clothes.
2. Attribution windows that don't match your calendar
An ad platform attributes a sale to the day someone clicked, not the day they bought. A seven-day click window means a Tuesday sale can get logged against the ad you ran the previous Wednesday. Pull a “this week” report from two platforms with different attribution windows and you're not comparing two views of the same week — you're comparing two different definitions of “this week.”
3. Retention limits that quietly delete your history
Amazon's reporting console keeps granular daily data for 60 to 90 days depending on the report, then rolls it up or drops it. Six months from now, the answer to “what happened in March” depends entirely on whether anything captured March's numbers while they still existed. If nothing did, the console will still hand you a figure when you ask — it just won't tell you that figure is a rollup, not the original.
The failure mode that actually costs money
None of the three causes above is dangerous by itself. What's dangerous is the fourth thing, which isn't really a cause at all: a report that stops updating and keeps returning the same number every time you check it. Nothing errors. Every pull “succeeds.” It's just the same figure, silently, for as long as the connection stays broken — and a stopped number is indistinguishable from a stable one unless something is comparing today's pull against yesterday's.
We've seen three straight weeks of ad recommendations made on spend data that had quietly stopped moving. Nobody caught it, because nobody was checking whether the number had changed — only whether a number came back.
Reconciliation, not a single dashboard
The fix isn't picking one platform as the source of truth and ignoring the rest; each one knows something the others don't. The fix is a system that reads every source on its own schedule, keeps its own copy of every day's numbers before retention limits can delete them, and says out loud — to a person, not to a log file — when two numbers that should agree don't, or when a number that should be moving hasn't.
That's the same principle behind how we build ops for DTC brands: escalate the disagreement instead of averaging it away or picking a winner automatically. A person decides which number to trust once it's flagged; the system's job is making sure the flag happens before the number is three weeks stale, not three weeks after.
What to set up first
- A daily snapshot, stored outside either platform's console — so a 60-day retention window can't erase your own history of what actually happened.
- A same-number check, not just a report check: compare today's pull against yesterday's for each source, and flag when a figure that should move hasn't.
- One place spend and sales get reconciled, with the gap surfaced rather than smoothed over, so a real discrepancy is visible on the day it appears instead of the week someone finally goes looking.
Most of this runs on the same kind of automation workflows that already move data between your store and your ad accounts; reconciliation is a matter of pointing them at the right comparison rather than building something new. See recent builds for what this looks like on a live account, or the pricing guide for what it typically costs to set up.
If your numbers don't match right now
Start by checking which of the three causes above explains it — settlement lag and attribution windows account for most day-to-day disagreements and aren't worth chasing. What's worth chasing is a number that hasn't moved in a while. That's the one that costs you a decision.
Want this built for your business?
Book a free ops teardown and we'll map your highest-impact win with an honest, fixed-price scope.