Analytics - Tag Manager

Solved:  Why Google Tag Manager Events Are Not Showing In Analytics

Why Google Tag Manager Events Are Not Showing In Analytics

TL:DR

If an event works in Google Tag Manager Preview but isn’t appearing in GA4 for real users, check whether the GTM container version containing your changes is actually published.

That was the problem in my case: I had approval permissions rather than publish permissions, so my testing worked but the live site was still running an older container version.

If your container is definitely published, work through the checks below to establish whether the problem is with the GTM trigger, tag, GA4 property, consent configuration or GA4 reporting.

When GTM Events Work in Preview but Don’t Show in GA4

I recently ran into a particularly frustrating Google Tag Manager problem while working on a Google Tag Manager (GTM) and Google Analytics 4 (GA4) configuration project for a new website product launch.

The aim was to set up custom events and conversions that would track a user landing on the main website, clicking through to a subdomain and completing a sign-up process.

The setup wasn’t entirely straightforward.

The main site was WordPress, while the subdomain was a bespoke application built using React with an SPA (single-page application) architecture. Both were on the same top-level domain and already had Google Tag Manager and GA4 tracking in place.

I’d initially been working in a test environment before the new functionality was rolled out to the live site.

Everything worked.

The events fired correctly in GTM Preview. I could follow the journey through to conversion and see the events being tracked in GA4.

But once the changes were supposed to be live and real users started accessing the site, nothing was being tracked.

My first thought was that the React SPA was causing the problem. Tracking interactions and page changes on an SPA can require a more considered tracking configuration, including using History Change triggers in GTM to detect navigation that doesn’t result in a traditional page load.

So I checked the triggers. I tested different approaches. I went back through the implementation.

And I kept getting the same result:

Everything worked perfectly for me in testing, but nothing was being tracked for actual users.

That turned out to be the biggest clue.

The eventual cause was much simpler than the JavaScript or SPA problems I’d been investigating: the GTM container containing my changes wasn’t actually live.

I’d been given approval permissions rather than the permissions required to publish those changes.

Before getting to that discovery, though, it’s worth showing how I established that the tags and events themselves were working. It’s the same troubleshooting process I’d use as part of my analytics and tracking consultancy, and it can help narrow down why your own GTM events aren’t appearing in GA4.

How do I check whether my GTM event is actually firing?

The first thing to establish is whether the problem is in Google Tag Manager or further down the tracking chain.

Use GTM’s Preview mode to test the event and confirm that the expected trigger fires and the corresponding GA4 event tag runs.

In my case, this was exactly what I did. The tags and triggers behaved correctly in Preview, which initially suggested that the GTM configuration itself wasn’t the problem.

Once your tags and triggers are configured like this:

tags and triggers

You then launch preview mode:

Preview

This opens Tag Assistant, where you can see what happens as you interact with the site, including which tags fire, and which don’t.

Tag Assistant shows a summary of the tags that have fired during your session. You can also select individual default and custom events to see exactly what fired at each point:

tag assistant tags

You can dig further into each event to inspect the variables available when it occurred:

tag assitant variables

And the current state of the data layer:

DOM Ready

In this example from my own site, I can see the page view firing alongside a LinkedIn pixel and some custom scripts.

I also have a GA4 event configured to track clicks on a specific group of links within the main content area.

When I click one of those links while using Preview mode, Tag Assistant shows the event occurring and the corresponding tag firing:

Link Click

I can then select the tag itself to see why it fired and which values were passed:

tag property

At this point, everything is behaving as expected in GTM. The event fires, the trigger works and the expected values are being passed.

So the next question is: is GA4 actually receiving it?

How do I view Google Tag Manager events in Google Analytics?

Once you’ve confirmed that the event is firing correctly in GTM Preview, the next step is to check whether the event is reaching GA4.

There are two useful places to check this while troubleshooting: Realtime and DebugView.

They serve slightly different purposes, and in my case both helped confirm that the events themselves were configured correctly.

Check the event in GA4 Realtime

Once you’ve confirmed the event is firing in GTM Preview, check whether GA4 is receiving it.

Open Realtime in GA4 and trigger the event yourself. If the event appears here, you know GA4 is receiving data from the interaction rather than the problem simply being a GTM trigger that doesn’t fire.

real time tracking

In my example, I could see my homepage link-click event appearing in Realtime:

home page link click event

I use events like these to understand interactions that aren’t captured by page views alone. That can include internal link clicks, banner clicks and form submissions.

So far, so good: the event fired in GTM and GA4 was receiving it while I was testing.

Check the event in GA4 DebugView

DebugView gives you another way to inspect the events GA4 is receiving during a debugging session.

Rather than looking at activity from all recent users, DebugView lets you concentrate on events generated by devices or sessions with debug mode enabled. When testing through GTM Preview, this makes it particularly useful for following your own events as you trigger them.

You can access DebugView from your GA4 property:

property menu

When I launched the site through GTM Preview, I could then follow the events being sent during my debugging session:

debug view

Again, everything looked correct.

My tags fired in GTM Preview. The events appeared in GA4 while I was debugging. Yet when real users accessed the live site, those events weren’t being tracked.

That discrepancy was the important clue.

Why is my GTM event working in Preview but not for real users?

At this point, I’d established that the event itself worked. GTM could fire it and GA4 could receive it during testing.

So rather than continuing to change the tag or trigger, I needed to work out what was different between my Preview session and the version of the site being used by everyone else.

I’d initially suspected something more technical. Because part of the journey took place on a React SPA, I’d investigated whether JavaScript was interfering with the Analytics implementation.

But I was looking in the wrong place.

The problem turned out to be much simpler: the GTM container version I’d been testing wasn’t actually the version published on the live site.

My problem: I didn’t have GTM publish permissions

When I was added to the client’s GTM account, I’d been given Approve permissions rather than the permissions I needed to publish the container myself.

So I could create and edit the tags. I could test everything in Preview. I could see the events arriving in GA4 while debugging.

But the version I was testing wasn’t the version running on the live site.

FFS.

In my defence, I’d previously tended to be given the access needed to publish changes myself. What caught me out here was that nothing during the build and testing process made the problem particularly obvious.

I could make my changes, test them successfully and submit a new container version. From my perspective, everything looked like it had worked.

If you’re seeing the same behaviour, everything works in Preview but not for real users, check the permissions you’ve been given and, more importantly, which container version is actually published.

You can check your access under the user permissions for the GTM account and container:

user permissions


How to check whether your GTM changes are actually live

Having confirmed your permissions, the next thing to check is whether the container version containing your changes is actually live.

This was the confusing part in my case. I could make changes, test them in Preview and submit a new container version. Nothing in that workflow had made it obvious to me that the version I’d been testing wasn’t the version being served to real users.

submit button

In approval mode, it looks like this:

submit button

You’d think they’d amend to button to read “submit for approval” or similar.

The real giveaway was the version history.

Every time I’d submitted my changes, a new version had been created. But when I looked more closely, the live version was still the same one that had been published before I’d started working on the project:

version history

And that explained everything.

In GTM Preview: I was testing my newer workspace changes, so the events fired correctly.

In GA4 while debugging: I could see those test events arriving, so GA4 appeared to be working correctly.

For real users: the website was still loading the older published GTM container, which didn’t contain my new event tracking.

There wasn’t anything wrong with the event or its trigger, and there wasn’t an obscure React or JavaScript problem to solve.

The tracking I’d been testing simply hadn’t been published to the live site.

Fair to say, even after several years of working with GTM, every day is a school day.

If your GTM container is published, what else should you check?

Publish permissions were the problem in my case, but if you’ve confirmed that the correct GTM container version is live, there are a few other places I’d check.

The event doesn’t fire in GTM Preview: Start with the trigger conditions, variables and tag configuration. If GTM can’t fire the event during testing, GA4 isn’t the first place to look.

The event fires in GTM but doesn’t appear in GA4: Check that the tag is sending data to the correct GA4 property and Measurement ID, and use DebugView or Realtime to establish whether GA4 is receiving anything.

The event works for some users but not others: Check whether your cookie consent and Consent Mode configuration is affecting when analytics tags can run.

The event appears in Realtime but not in your standard reports: You’ve established that GA4 is receiving the event, so the problem is further down the chain. Check reporting/processing rather than continuing to change the GTM trigger.

The important thing is to troubleshoot in order:

Does the trigger occur → does the GTM tag fire → is the correct container live → does GA4 receive the event → does it appear in reporting?

Find the first point where that chain breaks and you’ll have a much better idea of where the problem actually is.

If you’re still unable to work out where your tracking is breaking, this is exactly the sort of problem I investigate as part of my analytics and tracking consultancy. I can audit the implementation across GTM, GA4 and consent configuration to identify what’s firing, what isn’t and where data is being lost.




About The Author

I'm Dave Ashworth, a freelance SEO and website optimisation consultant with a background in development and a focus on fixing what's broken, improving what's working, and helping businesses grow through clear, practical SEO.

I combine hands-on technical know-how with years of experience in analytics, content strategy and platform optimisation. Whether it's an audit, a migration, or ongoing performance support, my work's about making websites stronger, faster, and easier to understand for - users, search engines and AI platforms.

When I'm not writing guides or sharing insights, I'm working directly with clients to solve problems, track results, and keep their sites moving in the right direction.

Dave Ashworth

get in touch

If you need some expert website optimisation and configuration, want to find out more, or even just have a question, fill in the form below as I will always be happy to help