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.

Ordinary Written by The Ordinary Team · Updated

Attribution numbers don’t match Shopify

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 countsShopify SalesOrdinary Attribution
Includes orders with no visitor dataYesOnly those we can attribute
Includes draft orders / manual ordersYesUsually no (no pixel data)
Uses which timestampOrder creationSession start of the attributed click
Currency handlingShop currencyYour display currency, FX-converted
Tax / shipping in revenueConfigurable in ShopifyConfigurable in Ordinary

So even if everything’s working perfectly, expect:

  • Ordinary shows fewer orders than Shopify’s total — we can only attribute orders where we saw pixel activity.
  • Revenue may differ by 1-3% due to FX timing and tax/shipping config.

How big a gap is normal?

  • Within 5% on order count: typical for a well-instrumented store.
  • Within 2% on revenue: typical if tax and FX are configured consistently.
  • More than 10% missing: something’s probably off. Investigate.

Common causes of larger gaps

Pixel not firing on all pageviews

If your pixel is Disconnected or firing inconsistently, sessions are missing, and we can’t attribute their orders. See Pixel says “Disconnected”.

Check the Pixel events (last 5 min) counter on Settings → Integrations → Shopify.

Orders from channels the pixel can’t see

  • Amazon orders — different storefront; can’t be attributed. They show in Campaigns → Amazon as Amazon-attributed, not as Shopify orders.
  • Phone orders / draft orders — no pixel data, no attribution possible.
  • Point of Sale (POS) orders — in-person retail doesn’t fire the web pixel. These show as “Direct” or “No attribution” depending on your model.

Orders from before your pixel was installed

If you installed Ordinary recently, orders placed before install have no attribution — we didn’t see the sessions that led to them. They show in revenue / order totals (those come from Shopify), 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.

Tax / shipping config mismatch

In Ordinary Settings → Reporting:

  • “Include tax in revenue” — default off.
  • “Include shipping in revenue” — default off.

If Shopify reports are configured to include these and yours doesn’t, revenue will be 10-20% lower than Shopify.

Timezone

Shopify’s Sales reports default to your shop timezone. Ordinary defaults to UTC unless you’ve set a display timezone in Settings. A single order can fall on different calendar days across the two systems depending on the checkout time.

When to be worried

Worry about the mismatch when:

  • It’s 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 sales@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.

Did this answer your question?

Thanks for your feedback! 🙌

Related articles