Session counts vs Shopify Admin

How Ordinary's session counts compare to Shopify Admin, why they're usually close, why crawlers can make them much lower, and what to expect at install.

Ordinary Written by The Ordinary Team · Updated
On this page

Short version: Ordinary’s first-party pixel captures the large majority of real shopping sessions, and then leaves out automated traffic — including crawler traffic Shopify Analytics counts as sessions. On most stores that puts the two counts within a small margin of each other. On a store with popular article or blog pages it can put Ordinary’s count well below Shopify’s, because that is where crawlers concentrate. 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). These are real HTTP requests but they’re not shoppers. A real person who lands on one page and leaves is not treated as a bot.

Ordinary classifies these as bot traffic and excludes them from session counts in your reports. Three signals drive it:

  • Known automated visitors — recognized at the moment of capture from the hundreds of known crawler / scraper / headless-browser signatures.
  • Context-free requests — a page request arriving with no browser identity, no referring source and no campaign tag. Deliberately conservative: any one of those signals and the visit counts as a real one.
  • Crawler-shaped page-days — a single page taking a flood of visits in one day where effectively every visit leaves on arrival within seconds, and Ordinary’s own pixel barely saw anyone there.

Result: your session count reflects what real humans actually did. Shopify Analytics filters the first two categories as well, which is why the two counts are usually close. It does not filter the third, which is why on a store that attracts crawlers Ordinary’s number is the lower one — and the more useful one, since a conversion rate divided by crawler traffic understates how well the store converts.

Where Ordinary shows you the difference

When crawler traffic has been excluded from a period, the dashboard shows Shopify’s own session total underneath Ordinary’s, together with how many crawler sessions were left out and the pages they landed on. Open Shopify Admin → Analytics → Reports → Sessions by landing page for the same period and you will find those pages carrying almost no time on site and almost every visit leaving on arrival.

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 shopper sessions on your storefront, then filters bot traffic before showing you the number.

Net effect: on most stores the post-install session count is very close to what Shopify Admin reports for the same day. Where it is lower, the gap is automated traffic, and the dashboard names how much. Either way there’s no step-change at the install boundary — the same exclusions apply on both sides of it.

What Ordinary captures beyond the headline session count

Whatever the headline session count, 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 line up with Shopify Admin, apart from any crawler traffic Ordinary excludes — which the dashboard names when it happens. No 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 the same traffic is excluded on both sides of it.
  • 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?

Measured across stores, Ordinary’s standard pixel captures about 87% of browse sessions. Most of the rest are shoppers whose ad blocker or privacy settings stop the pixel from reaching Ordinary. Their orders still arrive and are still attributed; it’s their browsing that goes unseen.

To capture more of them, set up first-party CNAME forwarding under Settings → First-Party Pixel: it sends pixel traffic through a hostname on your own domain, which far fewer blockers stop. It’s self-serve; see What is a first-party pixel?.

Did this answer your question?

Thanks for your feedback! 🙌

Related articles