What each version of the extension added and fixed, newest first. Dates are the day a version
was finished; the Chrome Web Store usually takes a few days to review it, and Chrome updates the extension on
its own after that.
2.0.0
A new panel, and the container held against the page: which tag sent each hit, and which sent nothing.
Added
A new panel: a sidebar you arrange, a Home page that lists everything the panel can show, and Tools and Inject in place of the old tabs. A command palette on Ctrl+K.
Read the page’s container, then open any push to see the tags it fired, the ones it did not and why, the ones held by consent — and whether each tag that fired actually sent its hit.
Every hit names the container tag that sent it, and the audit names the hits no tag in the container could have sent.
Try a push: see which tags a push would fire before the site sends it, then make the push on the page for real.
An audit graded A to F, with a one-file HTML report. It follows ad click IDs from the URL to the cookie to the conversion, and finds sessions that start without a page_view, buyers credited to the payment page, campaign tags GA4 will file as Unassigned, and visitors lost when the domain changes.
A tracking plan: pushes checked against the events, parameters and allowed values you planned.
Compare two hits, two pushes, two containers or two GA4 properties side by side, or a saved session against the tab in front of you.
Eight more platforms, 71 in all: CJ Affiliate, Rakuten Advertising, Partnerize, PostHog, Spotify Pixel, StackAdapt, Yahoo DSP and Attentive.
Reddit, X, Pinterest, LinkedIn, TikTok, Snap and Microsoft UET read the way their own libraries send; Reddit, X, Pinterest, TikTok and Microsoft hashes checked the way those libraries make them.
Pushes from Shopify custom pixels are shown, marked as such.
Hits the page’s own CSP blocked are shown, and hits that never arrived are counted on the extension icon.
The product page’s structured data held against what the pixel sent.
Hold navigation keeps links and forms on the page, so what they send can be read before the next page loads.
Emails and phone numbers are masked in exported files.
Fixed
An unlabelled viewthroughconversion is read as a remarketing ping, not a conversion.
Missing customer data no longer says “turn on enhanced conversions” when the visitor declined.
Cookies that could not be read are no longer reported as a missing conversion linker.
When an ad blocker stops gtm.js, the panel says so.
1.9.0
Read any GTM container by its ID, laid out the way GTM lays it out.
Added
Look inside any container: enter a GTM ID and read its tags, triggers and variables in a view built like GTM’s own screens, including community templates by name and tags with their brand logos.
ChatGPT Ads, added by asking its own SDK what it sends.
Fixed
“Turn on for this site” did nothing, and once it was on there was no telling where the switch had gone.
A purchase inside a GA4 batch was hidden behind the page_view in front of it.
The audit called a site “Consent Mode V2” on too little evidence, and showed a guess from gcd as if it were certain.
The variable that reads prices off the page never worked.
1.8.0
Off until you switch it on, and every push says which script made it.
Added
The extension now starts switched off and runs only on the sites you turn it on for, with the cost each tab pays shown plainly.
GTM preview runs on the tab you are already using.
Every dataLayer push names the script that made it.
GA4’s own configuration is read and explained, along with the layers the panel cannot watch.
Pin a parameter and follow it down the whole request list; sort, hide empty values, and check a hashed value against the plain one.
Pick Event offers the other pushes the same click made, and says why it chose the one it did.
Adform read in full, the rest of the Adobe stack, and nine analytics vendors that were invisible before.
What is wrong with a hit is shown as a table, for every vendor.
Baselines become an archive you can walk again after a release.
The same product priced two ways is flagged.
Fixed
Only a GTM- container’s data layer was read; every data layer Google names is now read.
The container reader found a second way in after Google closed the first.
Ad consent is treated as something that changes during the session, not a state read once.
A closed tab now really releases what it held.
The request URL was printed into the panel unescaped.
1.7.1
A look of its own, and pushes that turn into GTM setups.
Added
A new design and a denser event list.
Pick Event: catch an event on a real page and export it as a container file GTM imports.
The trigger builder explains what it builds.
Fixed
The panel opens on the first click.
The log survives the next page load, and a journey keeps its start.
The previous site’s findings are dropped as soon as the site changes.
Two more places where the page could write markup into the panel.
The background worker is allowed to sleep, and the extension’s own files are no longer offered to every page.
1.7.0
Consent read as a sequence, and the container held against the session.
Added
Consent Mode read as a sequence rather than a snapshot: what was sent before and after each update.
Whether a Google Ads conversion can be attributed at all.
The server container and the GA4 setup behind a working tag are judged too.
The published container is read, and the session held against it; its verdict reaches the report.
The panel explains itself: every section has help that says what it shows.
1.6.0
Every parameter explains itself, and the errors the console hides become visible.
Added
Every parameter explains itself, and hits are judged with their parameters grouped.
Errors nothing else shows: duplicate hits, personal data in requests, platforms that went silent.
What the page pushed compared with what the tags actually sent.
How long the identity behind the numbers survives.
A findings report you can send to whoever has to fix it.
Follow a whole journey across pages, and check the log against DevTools itself.
A tracking baseline, and drift detection against it.
Conversions reconciled across platforms, and LinkedIn’s /wa/ endpoint.
The log survives the worker restarting, and vendors show their real logos.
Fixed
dataLayer events looked duplicated and were buried in GTM’s own internals.
dataLayer and network data were wrong on real e-commerce sites.
An iframe doubled every event, and setup calls were listed as events.
1.5.0
Platform debug modes, the GTM injector and 42 platforms.
Added
Platform debug modes.
Coverage grows to 42 platforms.
GTM preview enhancer, and a header injector for server-side GTM preview.
A flatter navigation, a GTM trigger recipe, and empty states that say what to do next.
Fixed
The GTM injector loaded gtm.js with an empty container ID.
1.4.0
Block a vendor’s hits, and force GA4 DebugView.
Added
Hit blocker: stop a vendor’s requests to see what the page does without them.
GA4 DebugView mode without touching the container.
Nine more analytics vendors.
Fixed
More reliable technology detection, and a sturdier element picker.
1.3.0
More than Google: tracking from many vendors, and server-side GTM recognised.
Added
Tracking requests from many vendors, not only Google’s.
Server-side GTM recognised.
1.2.1
Ready for the Chrome Web Store.
Fixed
Content Security Policy violations removed ahead of the store listing.
The network panel’s empty state rendered as raw HTML.
1.2.0
The extension becomes Tag Master.
Added
A new name and a new interface; the first versions went by another name.
Something not working the way this page says? Write to us —
most of the fixes above started as an email.
Try it on your own site
Tag Master is free, needs no account, and collects no data.