Skip to content
Innovialabs

How to Debug Analytics Tracking: GTM Preview and GA4 DebugView

Practice4 min

In short

Check each event along the chain: does the tag fire in GTM Preview, does the event reach GA4 DebugView or the pixel, and only then look at reports; duplicates almost always mean two sources for one event.

The short answer

Tracking is verified along a chain, not in reports. First confirm the tag fired in the browser (GTM Preview), then confirm the event reached the analytics platform (GA4 DebugView, Meta Pixel Helper, the Metrica console). Standard reports update with a delay, so they cannot tell you whether something is broken right now.

Keep three levels in mind:

LevelWhat you checkTool
PageIs the right data in the dataLayerGTM Preview, Data Layer tab
TagDid the tag fire, with which parametersGTM Preview, Pixel Helper
PlatformDid the platform receive the eventGA4 DebugView, Realtime, Events Manager

GTM Preview: confirm the tag fired

  1. In Google Tag Manager click Preview and enter the site URL. Tag Assistant opens along with your site in debug mode.
  2. Perform the action: submit the form, click the button, reach the thank-you page.
  3. In the left column select the event and check Tags Fired and Tags Not Fired.
  4. If a tag did not fire, open it and see which trigger condition failed — GTM highlights it.
  5. In Variables check variable values at the moment of the event; in Data Layer see exactly what the site pushed.

Note: Preview shows workspace changes, including unpublished ones. What works in Preview reaches real visitors only after Submit / Publish.

GA4 DebugView and Realtime

DebugView lives in the GA4 property admin, under data display. It only shows events sent in debug mode. You can enable it by:

  • running GTM Preview — debug mode turns on automatically for GA4 tags;
  • installing the Google Analytics Debugger extension;
  • passing the debug_mode parameter in the tag configuration.

In DebugView click an event and check its parameters: form name, value, currency, transaction ID. A misspelled parameter name is obvious here, while in reports it would surface days later.

The Realtime report is a useful second check: it shows events from all users over the last few minutes, without debug mode. If an event shows in DebugView but never in Realtime from a normal browser, look at cookie consent or ad blockers.

Meta Pixel and Yandex Metrica

Meta Pixel Helper is a Chrome extension. Its icon shows how many pixels and events it found on the page, plus warnings: pixel loaded twice, event missing required parameters, invalid ID. For server events (Conversions API) use the Test Events tab in Events Manager.

Yandex Metrica: add the _ym_debug=1 parameter to the page URL and open the browser console.

https://example.com/?_ym_debug=1

The console lists sent hits and reached goals. Also compare the goal identifier in your code with the one set in the counter settings.

Why events fire twice

  • Two sources for one event. gtag code is hardcoded in the template and a GTM tag does the same. Or the pixel is installed manually and via a CMS integration.
  • Enhanced measurement plus your own tag. GA4 already collects things like form submissions or scrolls, and you added an identical tag.
  • SPAs and page_view. In a single-page app a page view is sent on history change and again by your tag.
  • A broad trigger. "All Clicks" fires on nested elements inside a button, or a form sends the event on submit and again on the thank-you page.
  • Reloading the thank-you page sends the conversion again. A unique transaction_id helps.

Why events do not fire

  • The markup changed: the CSS class or button ID the trigger relies on no longer exists.
  • The form submits via AJAX and the built-in Form Submission trigger misses it — a dataLayer push after a successful submit is more reliable.
  • The dataLayer event is pushed after the trigger was already evaluated.
  • The container is not published, the tag is paused, or the Measurement ID is wrong.
  • The tag is blocked by consent mode or an ad blocker.
  • Internal traffic is filtered and you are testing from the office IP.

Pre-publish checklist

  • Every key event is verified in Preview and in DebugView.
  • Parameters have expected values, no undefined.
  • A conversion fires once per action.
  • The Meta pixel and the Metrica counter each appear exactly once.
  • The container is published with a clear version description.

FAQ

Standard reports are processed with a delay, so new events do not appear there immediately. Debug-mode events can also be excluded by a developer traffic filter if one is active.

We can help with this

If you'd rather get the result than figure it all out yourself — this is what we do every day.

Discuss a project

Read next

Have an idea or a task? Tell us about it

We'll reply within one business day and propose a solution. The consultation is free.