Skip to content
Google AnalyticsHow-to guide

How to Debug Google Tag Manager Step by Step

To debug Google Tag Manager, start Preview mode, repeat the action that should fire your tag, then read Tag Assistant from that event: which tags fired, which did not, why the trigger failed, and whether the data reached GA4.

By Kristijan GjorgjioskiIndependent SEO consultant

Published 18 October 2026 · 7 min read

Key takeaways

  • Write down what should fire, on which event, with which values, before you open Preview. Debugging without an expected result is guessing.
  • Always read Tag Assistant from the event where the action happened. A tag can look fine on Container Loaded and fail on the click that matters.
  • When a tag does not fire, open it under Tags Not Fired and compare each trigger condition with the variable values at that event.
  • Firing in Preview is not the finish line. Confirm the hit in GA4 DebugView, with consent accepted and declined.

Your tag shows up in the container. The trigger looks right.

But the conversion never arrives in GA4.

Sound familiar?

Here's the thing: Tag Manager almost always tells you why.

You just need to read Tag Assistant in the right order.

This is the eight-step process I use when a client's tracking breaks.

It works on new builds and on inherited containers with years of history.

Before You Start

You need three things:

  • Access to the container in Tag Manager, so you can open the workspace and start Preview.
  • The page and action that fail. "Leads dropped" is not enough. "The quote form on /contact/ stopped sending form_success" is.
  • A clean browser profile with no ad or script blockers. Extensions that block tracking will block your debugging too.

If the problem is in GA4 reports rather than in the tags, start somewhere else.

My guide on why GA4 data does not match covers the reporting side.

Step 1: Write Down What Should Happen

Debugging needs a target.

Without one, you are just clicking around.

Before you open Preview, write one line per tag you are testing:

Tag Should fire on With these values
GA4 - Event - Quote form success Custom Event: form_success form_name = quote_request
Google Ads - Conversion - Quote Custom Event: form_success conversion value set
Meta - Lead Custom Event: form_success only after marketing consent

Now every check in the next steps has a pass or fail answer.

If your container has a data layer specification, this table comes straight out of it.

If it doesn't, that is worth fixing after the bug. I explain why in my Google Tag Manager best practices.

And if you never planned which events to track at all, a GA4 measurement plan is where that list should start.

Step 2: Start Preview Mode and Connect Tag Assistant

Preview mode runs your current workspace draft on your site, as if it were published. Only you see it.

Here's how to start it, following Tag Manager Help on preview and debug:

  1. Open the container and click Preview in the top right of the Workspace tab.
  2. Tag Assistant opens in a new tab. Enter the URL of the page you are testing.
  3. Click Connect. Your site opens in a new window and shows "Connected" in the bottom corner.
  4. Go back to the Tag Assistant tab and click Continue.

If the site breaks or won't load, untick Include debug signal in the URL and connect again.

Some sites reject the extra parameter.

Want to debug an older version instead of the draft?

Open Versions, choose the version, and pick Preview from its menu.

Step 3: Repeat the Action and Pick the Right Event

Now do exactly what a visitor does. Load the page. Fill in the form. Submit it.

Each thing that happens appears as an event in the list on the left of Tag Assistant: the page load events, any clicks Tag Manager listens for, and every data layer push.

This is where most people go wrong.

They look at the Summary or the first page load event, see their tag listed somewhere, and assume it worked.

Instead, click the exact event where your action happened.

For the quote form, that is the form_success event.

Everything you check from here on should be read at that event.

Pro tip: If the event you expect isn't in the list at all, the problem is upstream of Tag Manager. The site never pushed it. Send the developer your spec line from Step 1 and stop debugging tags for now.

Step 4: Read Tags Fired and Tags Not Fired

With the right event selected, open the Tags view.

You will see two lists: Tags Fired and Tags Not Fired.

Your tag is in one of them.

If it's under Tags Fired, click it and check the values it sent. Right event name? Right parameters? Right measurement ID?

A tag that fires with the wrong values is still a bug.

If it's under Tags Not Fired, click it and look at its firing trigger.

Tag Assistant shows each trigger condition and marks which ones passed and which failed.

The failed condition is your answer. Common culprits:

  • The trigger waits for a different event name than the site pushes (formSuccess vs form_success).
  • A filter checks a Page Path that doesn't match, often because of a trailing slash.
  • The trigger is a click trigger keyed to a CSS class that a redesign removed.
  • An exception trigger is blocking it.

Step 5: Check Variables and the Data Layer at That Event

Trigger conditions compare variables against values.

So when a condition fails, look at what the variable actually held.

Still on the same event, open the Variables view.

Find the variable your trigger uses and read its value at that moment.

Then open the Data Layer view to see what the site pushed.

Three faults show up again and again:

  • Case mismatch. Data layer keys are case-sensitive, so formName and form_name are different keys.
  • Undefined values. The Data Layer Variable points at a key the push never included.
  • Wrong timing. The value exists, but it arrives in a later push than the event that fires the tag.

The fix for all three is usually on the site side.

Change the push, not the container, so the specification stays true.

Keeping that spec current is the first of my Tag Manager best practices for a reason.

A tag can have a perfect trigger and still be blocked by consent.

That is often correct behaviour, not a bug.

Test the journey twice: once accepting the banner, once declining.

In Tag Assistant, a blocked tag sits under Tags Not Fired. Open it.

Tag Manager Help on unblocking Google tags with consent mode says a tag is blocked when a consent-based trigger or variable is one of its conditions, or when you see a Required Additional Consent section with rows beneath it.

You can also select a Consent event in the event list and open the tag's Consent tab.

The On-page Default and On-page Update columns show the state before and after the visitor chose.

What should happen with each choice is a decision for whoever owns your consent policy.

Your job here is to confirm the tags follow it.

Step 7: Confirm the Hit Reached GA4

Firing in Preview is not the finish line.

You need to see the data arrive.

Open GA4, go to Admin, and under Data display click DebugView.

According to Google's DebugView help, Tag Assistant and Preview mode turn on debug mode for your own device, so your events stream in as you test.

Repeat the action and watch for the event and its parameters.

Nothing arriving?

Check three things in order:

  1. The measurement ID in the tag matches the property you are watching.
  2. The visit was not blocked by consent (Step 6).
  3. Your own traffic is not filtered out of the property.

If the property itself looks badly configured, that is a bigger job than one tag.

A GA4 audit checks the property settings end to end.

For conversions, also check the event is marked as a key event.

My guide to setting up key events in GA4 walks through that.

Step 8: Fix, Retest and Publish With a Note

Make the fix in a workspace named after the bug.

"Fix quote form trigger" beats "Default Workspace".

Then go back through Steps 3 to 7.

All of them, not just the one that failed.

Fixes have a way of breaking the tag next door.

When everything passes, click Submit, choose Publish and Create Version, and write a version name and a description of what you changed and why.

That note is what saves the next person.

If the fix causes a new problem, open Versions, pick the last good version and publish it again.

Common Tag Manager Bugs and Where to Look

Here is the quick lookup I keep for the faults I see most:

Symptom Likely cause Where to look
Tag never fires Event name or filter mismatch Tags Not Fired, then trigger conditions
Tag fires twice Two triggers or duplicate tags Tags Fired on the same event
Page views doubled in GA4 Two Google tags or page view tags Tags Fired on page load events
Value is undefined Wrong data layer key or timing Variables and Data Layer views
Fires in Preview, nothing in GA4 Consent, wrong ID or filters Consent tab, tag settings, DebugView
Worked last month, broke today Site release changed the page Click triggers on CSS classes or text

If the same faults keep coming back, the container itself is the problem.

A GA4 audit checklist helps you find what else it has broken downstream.

And if the property was never set up properly in the first place, a GA4 setup rebuild may be quicker than patching.

Make Debugging Part of Every Publish

Debugging is not just for emergencies.

Run Steps 2 to 7 before every publish and most bugs never reach your visitors.

Start with the tag that matters most to your business, usually the lead or purchase event.

Write its line from Step 1 today, then test it.

If your container fails these checks every time someone touches it, it probably needs structure rather than another fix.

That is the work I do on Tag Manager containers: data layer, naming, consent and safe publishing. It sits within my wider analytics services, next to GA4 setup and audits.

And if you would rather hand the whole thing over, my Google Tag Manager consulting starts with a look through your container export, free.

Frequently asked questions

Why is my Google Tag Manager preview not connecting?

Start with the basics: the container snippet must be on the page, and it must be the same container you are previewing. If the site breaks or refuses to connect, untick the option to include the debug signal in the URL and try again. Browser extensions that block scripts can also stop the connection, so test in a clean browser profile.

Can other people see my Google Tag Manager preview?

No. According to Tag Manager Help, the debug interface only appears in the browser that started Preview mode, or for people you share the session with. Regular visitors keep seeing the published container. To share, use More Actions and then Share in Tag Assistant and send your colleague the preview link.

Why does my tag fire in Preview but no data shows in GA4?

Firing only means Tag Manager ran the tag. The hit can still be blocked by consent settings, sent to the wrong measurement ID, or filtered out in the property. Check the consent state for that event in Tag Assistant, confirm the ID in the tag, then watch GA4 DebugView while you repeat the action.

How do I debug Google Tag Manager on a staging site?

Preview mode works on any domain where your container snippet is installed, including staging. If your team publishes to staging regularly, set up a custom environment in the container admin, install its snippet on the staging server and publish test versions there without touching the live container.

About the author

Kristijan Gjorgjioski

Independent SEO consultant · 6+ years in SEO · 60+ client websites worked on

I'm an independent SEO consultant with 6+ years in SEO. I run audits, migrations and content programmes for businesses in Europe, the UK and the USA, and I build the automation behind my own research.

Need help with google tag manager?

Book a free 30-minute call. I look at your site first and tell you plainly what I would fix, and in what order.