Skip to main content
FHAVI

Research

Half of the storefronts we audited had no Meta pixel firing

We opened 47 storefronts that are actively advertising on Meta and recorded what their pages actually did — not what their analytics dashboard claims. The result is uncomfortable for anyone spending money on ads: in this sample, tracking was frequently absent rather than merely inaccurate.

Headline findings

What fired on a cold load

Measured on the home page, three seconds after navigation, with no user interaction and no consent accepted.
51%
had no Meta pixel fire within three seconds

24 of 47 storefronts

68%
had GA4 present

32 of 47

26%
loaded a Google Tag Manager container

12 of 47

6%
showed a server-side path

3 of 47

Method

How this was measured

  1. 1Sample: 200 storefronts taken from a set of 2,516 Shopify stores in the US, UK, Canada and Europe that were running at least one Facebook or Instagram ad in the previous 30 days.
  2. 2Each storefront was opened at its home page in headless Chromium with a desktop viewport, allowed to settle for three seconds, then inspected for window.fbq, window.gtag, GTM container ids, first-party cookies (_fbp, _ga) and network requests to facebook.com, google-analytics.com and known server-side container hosts.
  3. 3A store was counted as having a signal only if it appeared without interaction — no scrolling, no consent clicks. Nothing was injected and no test events were sent.
  4. 4160 storefronts were attempted; 47 loaded successfully. The other 113 timed out, refused a headless client, or were rate-limited during the run. Load failures are excluded from the percentages above rather than counted as missing tracking.

Limitations, stated plainly

  • A pixel that is consent-gated or deferred by a Shopify app can be invisible on a cold load. Some of the 51% will be gated rather than absent.
  • Server-side sending can happen entirely outside the browser. The 6% figure counts detectable server containers and first-party relays only, so it understates real server-side use.
  • 47 stores is a pilot sample, not a census. Treat the percentages as directionally useful, not precise to a decimal.
  • Only home pages were loaded. A store can fire nothing on the home page and still track a product page or checkout correctly.

Context

What the wider set of 2,516 stores looks like

The sample above came from a larger set assembled for outreach. These are the aggregate figures, which hold up better than the pilot percentages.
2,516
actively-advertising Shopify stores in the set
13
median live Meta ads per store (30 days)
588
stores running 100+ ads (23.4%)
130
stores running 1,000+ ads (5.2%)
582
median product count in the catalogue
84.5%
based in the US, UK or Canada

Citation

If you are writing about this

FHAVI Ltd, “The Ecommerce Tracking Gap: what 47 actively-advertising Shopify storefronts send to Meta and Google”, October 2026. https://fhavi.net/research/tracking-gap

Figures are as measured on the date shown. If you need the raw rows — country, ad volume, catalogue size and which signals fired — contact us and we will share the dataset.

What this means for a merchant

If your store is in that 51%, Meta is optimising on a partial picture of who buys. The fix is usually not a new tool but three specific things: the pixel firing on every template, a server-side path for when the browser blocks it, and one shared event id so a purchase is counted once.

See what the audit checks

Is your store in the 51%?

Send the domain. We will load it the same way we loaded these 47 and tell you what fires — before you pay for anything.

Prefer email? Write to md@fhavi.com