What a tag is, and why it breaks silently
The one mental model that explains every tracking bug you will ever debug.
A tag is a small piece of JavaScript that runs in a visitor's browser and sends a request to somebody's server. That's the whole thing. Google Analytics is a tag. The Meta pixel is a tag. A chat widget, a heatmap recorder, a Google Ads conversion — tags.
Every tag does three things:
- Waits for something to happen — a page loads, a button gets clicked, a form submits.
- Collects some values — the page URL, a product ID, an order total.
- Sends a request to a vendor's endpoint with those values in it.
Open the network tab in your browser's dev tools on almost any commercial site and filter for collect. Every row you see is step 3 happening: a request to https://www.google-analytics.com/g/collect?... with the event name and its parameters in the query string. That request is the only thing GA4 ever receives. Everything in every report is built from those rows.
Why it fails without telling you
Here is the part that makes this field different from normal software: none of those three steps can fail loudly.
- If step 1 never happens — the trigger is misconfigured — the tag simply never runs. No error. GA4 doesn't know the event existed, so it can't tell you it's missing.
- If step 2 collects the wrong thing —
undefinedwhere the order total should be — the request still goes out. GA4 receives a purchase with no value and records exactly that, without complaint. - If step 3 is blocked — by an ad blocker, a consent setting, a content-security policy — the browser drops the request. The tag "fired" from GTM's point of view. Nothing arrived.
A normal application throws an exception, logs a stack trace, pages someone. A tag produces a plausible-looking number that is wrong. Revenue flat while orders are up. Sessions doubled since the theme update. Conversions that stopped on a Tuesday.
You find out when someone compares two reports and asks why they disagree. That is usually weeks later.
The three places to look
Because a tag is only ever those three steps, every tracking bug lives in exactly one of three places:
| Step | Where to look | Tool |
|---|---|---|
| Did it fire? | GTM Preview mode — the tag shows under "Tags Fired" for the event | Preview |
| Did it collect the right values? | The variables panel in Preview, or the request parameters in the network tab | Preview + network tab |
| Did it arrive? | The network tab: was there a request, and did it get a 2xx response? |
Network tab, GA4 DebugView |
You'll use all three in Module 2. For now, the only thing to keep is the model: fire, collect, send — and none of them tell you when they fail.
What "intact" means
This course, and the tools on this site, are organized around that model. The Tracking Health Scanner watches step 3 from outside: it loads a page in a real browser and records every request that leaves it, so you can see what actually fired — once, twice, or not at all. The Container Auditor checks step 1 and 2 from inside: tags that can never fire, variables that don't exist, IDs typed in wrong.
Tracking is intact when all three steps happen, once, with the right values, on every page that matters. The rest of this course is how to get there and how to prove it.