Attribution numbers don't match Shopify
Why Ordinary's attributed orders/revenue will always differ slightly from Shopify's built-in reports, and when the gap matters.
On this page
You’ll often notice Ordinary’s attribution report shows slightly different order counts or revenue from Shopify’s built-in Sales reports. This is normal and expected — here’s why.
Important distinction: this article is about ATTRIBUTION (which channel drove a sale — by nature approximate). Your total revenue in Ordinary DOES match Shopify’s Sales report exactly, to the cent — see Revenue matches Shopify exactly. If your total revenue numbers disagree with Shopify, that’s a bug we want to hear about, not expected behavior.
They’re measuring different things
| What it counts | Shopify Sales | Ordinary Attribution |
|---|---|---|
| Which orders | Every order | Every order, each assigned to a channel |
| Orders with no tracked visit | Counted | Credited to the order’s own campaign tags, or Direct |
| Which day an order lands on | Order creation, shop time zone | Order creation, shop time zone |
| Currency | Shop currency | Your display currency; orders placed in another currency aren’t included |
So even if everything’s working perfectly, expect:
- Totals match — the same orders and revenue as Shopify for the same days, for orders placed in your display currency. Orders placed in another currency aren’t included in channel totals.
- The channel split differs from Shopify’s own channel reports, because the two credit visits differently.
- Some orders land in Direct — orders with no tracked visit and no campaign tags of their own.
How big a gap is normal?
- Totals: none — orders and revenue in your display currency for the same days should match Shopify. If they don’t, that’s a bug; see Revenue matches Shopify exactly.
- Direct share: a stable share of Direct is normal. A sudden jump means visits stopped being tracked. Investigate.
Common causes of larger gaps
Pixel not firing on all pageviews
If your pixel is Disconnected or firing inconsistently, sessions are missing, so their orders fall back to their own campaign tags or Direct. See Pixel says “Disconnected”.
Check that the Shopify card on Settings → Shopify shows the Pixel active badge.
Orders from channels the pixel can’t see
- Amazon orders — sold on Amazon, not your storefront, so they aren’t Shopify orders and aren’t in this report. Amazon’s own reported sales show on Marketing Mix’s Amazon Ads card.
- Phone orders / draft orders — no visit to track. They’re credited to their own campaign tags if they have any, otherwise Direct.
- Point of Sale (POS) orders — in-person retail doesn’t fire the web pixel, so these are credited to Direct.
Orders from before your pixel was installed
If you installed Ordinary recently, orders placed before install have no tracked visits — we didn’t see the sessions that led to them. They still count in revenue and order totals (those come from Shopify), credited to their own campaign tags or Direct, but they won’t appear in session-based breakdowns like Traffic or the attribution funnel. That’s intentional: we don’t backfill session data from other analytics tools because the number has to come from one source to be trustworthy.
Customer-chose-Shop-Pay-long-ago
Shop Pay autofills cart and can sometimes skip the full checkout funnel. We still attribute these, but some edge cases (Apple Pay, Shop Pay express, guest checkouts with ad-blocker) slip through.
Comparing different days
Ordinary places each order on the day it was created, in your shop’s time zone — the same as Shopify’s Sales report. If a day doesn’t match, check both reports cover exactly the same dates.
Comparing different revenue definitions
Ordinary’s revenue follows Shopify’s Sales report: returns reduce revenue in the period they belong to. There are no tax or shipping toggles in Ordinary. If you’re comparing against a Shopify report with a different definition (for example gross sales), the numbers will differ by design.
When to be worried
Worry about the mismatch when:
- The Direct share is suddenly larger than it’s been — something changed. Check pixel status first.
- Specific campaigns show drastic under-attribution. A campaign you know is driving revenue showing zero orders is a red flag for UTM-tagging issues.
- Session counts diverge dramatically from GA4 or PostHog on the same days. Some divergence is expected — GA4 / PostHog use different session definitions, bot filtering, and client-side sampling, so the numbers will never match exactly. But if Ordinary is showing materially fewer sessions than either tool on the same days, that’s a pixel coverage issue worth investigating (ad blockers, consent gates, Shop Pay / direct checkout bypass).
Still unsure?
Email support@tryordinary.com with:
- Specific order IDs you expect to see attributed but aren’t.
- The date range you’re comparing.
- Screenshots of both Shopify’s and Ordinary’s revenue for that range.