AuditTag

How AuditTag research measures tracking tags

By Sam ParkinsonVersion 1.2, updated 5 October 2026First published 19 September 20269 min read

The short answer: AuditTag research reads the public HTML of a defined list of online stores and records which of five tracking tags appear in it: GA4, Google Tag Manager, Google Ads, Meta Pixel and the retired Universal Analytics.

It is a presence check. It can say a tag was or was not found in a page's source. It cannot say whether a tag fires, sends the right values, or records purchases. Every figure we publish is worded to match that.

We are publishing this page before any results, on purpose. A statistic is only as good as the method behind it, and a method written after the numbers are in is easy to bend to fit them. This is the method, fixed in advance.

What a study measures

For each store in a sample, we record whether each of these tags is present in the served HTML of any page we read:

TagCounted as present when the page contains
Google Tag ManagerThe gtm.js loader, or a container id in the form GTM-XXXXXXX
GA4The gtag.js loader pinned to a G- id, a gtag('config', 'G-…') call, or a bare GA4 measurement id
Google AdsA gtag('config', 'AW-…') call, an AW- conversion id, or the googleadservices.com conversion script
Meta PixelThe fbevents.js library, an fbq('init', …) call, or, on Shopify, the pixel entry that Shopify's Facebook & Instagram app writes into the page ("pixel_type":"facebook_pixel" in Shopify's web pixel settings)
Universal AnalyticsA UA- property id, or the analytics.js or ga.js library

Only the parts of a page that can load a tag are read: every <script> (its attributes and its body) and every <noscript> fallback. Visible page text is ignored, and so is JSON-LD structured data. A blog post that quotes fbq('init' as an example is writing about a tag, not running one, and is not counted as having it.

From those five, a study reports these figures:

The detection rules are the same ones the free AuditTag audit uses. They are fixed patterns, not a model or a guess, so the same page always gives the same answer.

On-page findings

A study can also report on-page findings from the same pages: meta descriptions, page titles, alt text, headings and structured data. These use the thresholds the AuditTag audit uses, which are not Google limits. A title over 60 characters, a meta description over 160 characters and alt text over 125 characters are rules of thumb, and Google measures width and not characters. A finding is counted for a store when it appears on at least one page we read.

What the scan cannot see

This section matters more than any other on the page. A presence check reads what the server sends. Anything that happens after that is invisible to it.

What a study can support

  • "No GA4 tag was detected in the page source"
  • "Universal Analytics was still loading"
  • "A Meta Pixel was found in the HTML"
  • "Tag Manager was present"

What it cannot support

Any claim about whether a tag works: whether purchases are recorded, whether values are right, whether events fire twice, or whether a store "has no tracking". We will not publish those claims from this data.

Specifically, the scan does not detect:

Every one of these makes the scan under-count, not over-count. So "detected" figures are floors, and "not detected" figures are ceilings. Each published figure says which it is.

How stores are chosen

Each study uses one sample, and says whether it is a defined sample or a convenience sample (see below). A defined sample is fixed before any store is scanned:

  1. A named, public source. For example, a published list of stores on one platform or in one category. We name the source and the date we took the list, so anyone can rebuild the same sample.
  2. Written inclusion rules. A store is included if it is a live store selling to the public from its own domain. Marketplace listings, parked domains and password-protected pre-launch stores are excluded.
  3. No hand-picking. Once the list and rules are fixed, every store on the list is scanned. We do not drop stores because of what the scan found.
  4. Every exclusion is counted. Stores that were unreachable, blocked our crawler in robots.txt, or failed the inclusion rules are reported as numbers next to the results, with the reason.

A sample drawn from one list describes that list, not "all online stores". A study's title and every figure in it are scoped to the sample it actually used.

Two kinds of sample

We use two kinds of sample, and every study says which one it used. The four rules above describe a defined sample, drawn from one named list with every exclusion counted. That is the preferred kind.

A convenience sample is a set of stores we chose because we had a practical reason to look at them. It does not meet the rule against hand-picking. A study that uses one says so near the top, says how the stores were found and what we filtered on, and never describes the result as stores in general. Its figures describe those stores on the day they were scanned.

The first on-page study

The first study to include on-page checks uses a convenience sample of 100 independent UK stores on Shopify, in seven categories. We found them through public lists and searches and kept the stores that were on Shopify and that our crawler could read. For 89 of them we also required a published contact address, because we were looking for stores we could write to. The other 11, all jewellery stores, were added later and were not filtered that way. We took "independent" and "UK" from the lists and from each store's own pages, and we did not check the ownership of every store.

One store that was in the sample at the first scan refused our crawler on the final scan. We do not work around a refusal, so we dropped it and took the next store on our list in its place. We did not keep a full count of every store we looked at and passed over while building the lists.

How the scan runs

How we check the detector before trusting it

Before each study, the detector is run against pages whose tags we have confirmed by hand. Two false positives were found and fixed this way on 18 September 2026: visible page text being read as an installed tag, and Shopify paths mentioned in page text being read as a Shopify store. No research figure will use scans run before that fix.

The same check found a false negative on 24 September 2026. A Shopify store using the Facebook & Instagram app read as having no Meta Pixel, because that app's pixel is not in the served HTML as fbevents.js or fbq('init'. Shopify adds it after the page arrives. The pattern added in version 1.1 was checked against the public homepages of live Shopify stores before it went in. It matched each store whose page carried the app's pixel entry, and nothing on the others.

After each study, we take a random subset of at least 20 stores from the sample, check their page source by hand, and publish how many disagreed with the scan and in which direction.

The hand check of the first on-page study

We picked 20 of the 100 stores at random with a fixed seed. We fetched every page the crawler had read a second time and read it with a separate parser, then compared nine findings for each store, 180 comparisons in all.

The first run agreed on 178 of 180. Of the two that did not agree, one was our detector being wrong: it counted blank lazy-load placeholder images as images missing alt text. We fixed it and scanned the whole sample again from the start. The other was our check being wrong, because it counted a GA4 ID that sits only inside a consent app's settings and is not an installed tag. Run again after the fix on the same 20 stores, 179 of 180 agreed, and the one that did not was the same check being too loose. All 20 stores were also confirmed as Shopify stores. We did not independently verify that the stores are UK based or independent. We do not publish the names of the 20 stores.

A study is a dated snapshot

The findings of a study describe the stores as read in one final scan, on a stated date and time, with a stated build of the detector. They are not a lasting assessment of those stores. Pages, themes, sitemaps and tracking setups change, and which pages the crawler reads shifts with the sitemap, so a later scan can give different results.

We measured how much. When 20 of the stores were scanned a second time hours later, 8 of 100 store results changed across five on-page findings. Comparing two full scans of the whole sample hours apart, the number of stores whose result changed on any one on-page finding ranged from 1 to 18, while the tracking results did not change at all. So a study keeps one final scan and uses nothing from any earlier scan. It does not read a difference between two scans as a store getting better or worse.

If the detector changes, the study is scanned again from the start with the new build. Figures are never mixed across detector builds.

How results are reported

Corrections and changes

If you think a figure is wrong, or your store was scanned and you would like it left out of future samples, email hello@audittag.com. Corrections are published on the study itself, with the date and what changed.

If this method changes, the version number above goes up and the change is listed below. Earlier studies keep pointing at the version they used.

Change log

Want this check on your own site? The free audit runs the same tag detection on your pages in about a minute, alongside an on-page SEO check. Run a free audit →

Related