Why your Ordinary session counts should match Shopify Admin closely

How Ordinary's session counts relate to Shopify Admin's analytics, why they should match within a small margin after the bot filter, and what to expect across the install boundary.

Ordinary Written by The Ordinary Team · Updated

Why your Ordinary session counts should match Shopify Admin closely

Short version: Ordinary captures every real shopper Shopify’s own pixel sees, plus the cohort Shopify misses (ad-blocker, iOS strict tracking, in-app browsers), and then filters out bot traffic the same way Shopify Admin does — so your headline session counts match Shopify Admin within a small margin. What Ordinary adds on top: attribution depth, click-ID stitching across every major paid platform, multi-touch journey reconstruction, and cross-platform reconciliation in one place.

What “real” means in our session count

Every store gets some traffic from automated visitors: search-engine crawlers (Googlebot, Bingbot), AI scrapers (GPTBot, ClaudeBot, PerplexityBot), SEO-tool bots (AhrefsBot, SemrushBot), social-link unfurl previews (Facebook, Twitter, Slack, Discord), uptime monitors (Pingdom, UptimeRobot), and one-time visitors who land on a page and never return. These are real HTTP requests but they’re not shoppers.

Ordinary classifies these as bot traffic and excludes them from session counts in your reports. The classification uses two signals:

  • User-agent pattern matching at ingest — recognizes the hundreds of known crawler / scraper / headless-browser signatures.
  • Behavioral retro-tagging — a daily check that flags visitors who fired exactly one event in their entire history then never came back. This catches the disguised bots that pass user-agent checks by pretending to be a real browser.

Result: your session count reflects what real humans actually did. This is the same posture Shopify Admin takes, which is why the numbers should line up closely.

How to read your dashboard across the install boundary

When you install Ordinary, your dashboard pulls from two sources:

Before the install — Shopify’s analytics warehouse

Ordinary backfills your historical session counts, landing pages, channel attribution, add-to-cart counts, and checkout-started counts directly from Shopify’s records. These numbers match Shopify Admin → Analytics → Reports exactly — they’re the same data.

The backfill goes back as far as Shopify retains it (typically up to 12 months for most plans).

After the install — Ordinary’s first-party pixel

The pixel starts capturing the moment you connect. It records the same shoppers Shopify’s analytics records, AND the shoppers Shopify’s own tracking misses (ad-blocker / iOS-strict cohort), THEN filters bot traffic before showing you the number.

Net effect: the post-install session count should be very close to what Shopify Admin reports for the same day, with small discrepancies in either direction depending on the specific bot mix on a given day. There’s no dramatic step-change at the install boundary anymore.

What Ordinary captures beyond the headline session count

The session count matches Shopify Admin. Underneath it, Ordinary records signal Shopify’s own analytics doesn’t:

  • Click IDs from every major paid platform — Google (gclid / gbraid / wbraid), Meta (fbclid), TikTok (ttclid), Bing (msclkid), Klaviyo (_kx), Pinterest, LinkedIn, Twitter, Snapchat, Reddit. Stitched across the full funnel and persisted on every order.
  • First-touch / last-touch attribution — every shopper’s original landing UTMs preserved alongside their last-touch ones, on every order, with channel context.
  • Multi-touch chains — every intermediate touchpoint between first visit and order, in time order.
  • iOS-strict and ad-blocker shoppers — these visitors are in Ordinary’s underlying data with full attribution, even when their pixel events don’t bump the headline session count materially.
  • Cross-platform reconciliation — orders join cleanly to Meta spend, Google Ads keyword data, Klaviyo flows, Amazon Ads reporting, GA4 — one source of truth across channels.

What gets backfilled vs what only Ordinary captures going forward

DataHistorical (pre-install)Going forward (post-install)
Daily session count (real humans, bot-filtered)✓ from Shopify✓ from pixel
Landing pages
Add-to-cart counts
Checkout-started counts
Bounce rate, avg session duration
Channel attribution (Google/Meta/email/etc.)✓ (deeper post-install)
UTM parameters
Click IDs (gclid, fbclid, ttclid, _kx, etc.)
Device, browser, geographic location
Per-shopper journey reconstruction
Multi-touch attribution chains
Order revenue attribution

The ”✗ historical” rows are signals Shopify’s analytics warehouse doesn’t expose to apps. Those start populating the moment your pixel fires.

What you might notice on day 1

For the first 7–14 days after install:

  • Headline session counts will be very close to Shopify Admin — no dramatic step up or down at the install boundary, just normal day-to-day variation.
  • Conversion rate reflects bot-filtered shoppers — slightly higher than if bots inflated the denominator, which is the posture you want for a real conversion rate.
  • Period-over-period comparisons are reliable across the install boundary because both sides are bot-filtered.
  • Attribution depth ramps up — first-touch / last-touch click IDs start showing up on orders within a few minutes of install, giving you channel attribution Shopify’s own reports don’t have.

Want to recover even more?

Ordinary’s standard pixel recovers ~95% of real human shoppers on most stores. For the remaining ~5% (mostly Brave on aggressive settings + some iOS configurations), Ordinary offers a first-party CNAME upgrade that brings recovery closer to ~99%. The lift is marginal but available — ask your account manager if you’d like to set that up.

Did this answer your question?

Thanks for your feedback! 🙌

Related articles