Your Ordinary revenue matches Shopify exactly
Unlike attribution or pixel-tracked sessions, your revenue totals in Ordinary match Shopify's Sales report to the cent — and we check it every hour.
Revenue matches Shopify exactly
Your total revenue in Ordinary equals what Shopify’s Sales report shows. Same number, same currency, same day boundary. If the two ever disagree by more than a penny, our automated system catches it within an hour.
This is the foundation of every revenue-based report you’ll see in Ordinary — dashboard totals, LTV, net margin, cohort revenue. All of them ultimately roll up to “what did this store make?” and we treat that as a question with exactly one correct answer.
Why this matters
Most analytics tools for Shopify are approximate. They sample, they interpolate, they filter, and over weeks or months the numbers drift. Merchants notice at quarter-close when the reported revenue doesn’t match their accountant’s and lose trust in the whole tool.
Ordinary’s design principle: if a number can be exact, it should be. Revenue can be exact. So revenue IS exact.
What we reconcile against
Shopify’s built-in Sales report is the source of truth. Our totals match that report for the same date range, in the shop’s base currency, with the same timezone bucketing.
Specifically, we match:
- Gross revenue per day
- Refund totals per day (items-only, matching Shopify’s “Returns” column)
- Net revenue per day (gross minus all refund components including shipping and tax refunds)
- Order counts per day
How we keep it matching
On ingest
Every order and refund that flows into Ordinary — via Shopify webhook, via our full-history sync on first install, or via manual re-sync — is stored as its underlying components, not just a precomputed total. We store every value Shopify’s own accounting math uses rather than a single “total” that we’d have to hope reconciles later.
That includes tips (excluded from Shopify’s total sales formula), discounts, processing timestamps, and the split between items and shipping and tax inside every refund. When Shopify revises their reporting formula in a future API version, we already have all the inputs.
Every hour
An automated reconciliation runs hourly. It compares our totals against Shopify’s Sales report for the last 3 closed days — a window long enough for Shopify’s own numbers to settle, short enough to catch any drift the same day it happens.
When drift happens
Ordinary’s automated checks flag any discrepancy within the hour, down to the exact day and component that differ. We don’t silently patch the number — we investigate and correct the ingest path so the underlying cause is fixed. The policy: every drift class is a bug, not a metric to manage.
When does this kick in for a new merchant?
Immediately on first install. When you connect Shopify to Ordinary, we automatically pull your full order history into Ordinary. Within a few minutes to an hour (depending on your order volume), your numbers are live. The hourly reconciliation then watches for any divergence from that point forward.
What if I find a mismatch?
Please tell us. Email sales@tryordinary.com with:
- The specific date range you’re comparing
- The number you see in Shopify’s Sales report
- The number you see in Ordinary
- A screenshot of both, if possible
This is exactly the feedback loop we want — a merchant-reported mismatch points our hourly checks at an edge case they haven’t exercised yet (usually a feature that merchant uses but none of our reconciled merchants had touched), so we can tighten the ingest path and keep your totals matched to the cent.
Related articles
- Attribution numbers don’t match Shopify — a DIFFERENT thing: attribution is approximate by nature (which channel drove this customer?), revenue is exact
- Connecting Shopify
- Dashboard