How to tell whether a tag actually fired
"Is the tag working?" is answered badly more often than almost any other question in analytics, because the easy check and the reliable check are different things.
1. The page source (least reliable)
Searching page source for G- tells you whether a tag ID appears in the HTML the server returned. It does not tell you whether the tag executed, whether it was blocked, or whether consent allowed it.
It also misses everything loaded through Tag Manager, which is most tags on most sites.
Useful for spotting duplicates. Not proof of anything working.
2. The network tab
Open developer tools, filter requests for collect, load the page. If a request goes out with your measurement ID in it, the tag fired and data left the browser.
This is real evidence, and it is the fastest reliable check. It also shows you the payload — which events, which parameters, which values — that a summary interface will never show.
3. Preview and debug modes
Tag Manager's preview shows which tags fired, which triggers evaluated true, and what every variable resolved to at that moment. When a tag is not firing, this tells you why, which the network tab cannot.
GA4's DebugView shows events arriving at the property in near real time, which proves the round trip rather than just the departure.
Use both: preview for why it fired, DebugView for whether it arrived.
4. Realtime, then the reports
Realtime confirms data is being processed. Standard reports confirm it is being processed correctly, but with hours of delay — so they are a confirmation step, not a debugging tool.
The checks people forget
Consent state. Test with consent declined as well as granted. A tag that only works after acceptance is behaving correctly and collecting a fraction of your traffic.
A real device. Desktop Chrome with extensions disabled is the friendliest possible environment. Test on a phone, on mobile data.
The path that matters. Test the conversion by actually converting. A tag that fires on the thank-you page when visited directly may not fire when reached through the real form flow, particularly if the flow is a single-page app.
Blockers. Roughly a quarter of users run one. Your data has a hole in it regardless of how correct the implementation is, and knowing the approximate size of that hole is more useful than pretending it is zero.