Ad & Integrations > Advertising
Debugging Events
Read the SuperFunnel superfunnel-view event in your dataLayer, learn the IDs it carries, and fix the most common GTM, GA4, and Pixel tracking problems.
Overview
When a tag does not fire, a conversion counts twice, or a number looks wrong, the fastest way to diagnose it is to look at what SuperFunnel actually pushes to the page. This page covers the superfunnel-view event SuperFunnel writes to the GTM dataLayer, the identifiers it carries, and the issues that come up most often when wiring tags through Google Tag Manager, GA4, or the Meta Pixel.
Looking for session IDs?
For the per-visitor identifiers you can read in your own code with
window.sf.getSession(), and the on-page event console log, see
Debugging & Session IDs.
The superfunnel-view Event
Every SuperFunnel page pushes an event named superfunnel-view to the dataLayer once it loads. This is the event name you listen for: create a Custom Event trigger on superfunnel-view in GTM, or, if you forward data to Google Analytics 4, fire your GA4 event on superfunnel-view and map the fields below as event parameters. A typical push looks like this (the ID values are examples):
dataLayer.push({
event: "superfunnel-view",
pageType: "page",
device: "mobile",
account_id: "your-account-id",
campaign_id: "this-page-or-quiz-id",
variant_id: "this-variant-id",
website_id: "this-variation-id",
});| Field | Description |
|---|---|
event | The event name GTM and GA4 listen for. SuperFunnel uses superfunnel-view on page load. |
pageType | The kind of page that loaded, for example page or quiz. |
device | The visitor's device, for example mobile or desktop. |
account_id | Your account. The same value across every page and quiz you own, so it groups all your activity under one account. |
campaign_id | The page or quiz. Stays the same across that page's variants, so use it to track one page or quiz. |
variant_id | The variant. Identifies one specific variant. |
website_id | The variation. Unique to a single variation, so it is the ID that tells two variations apart, for example a control and a treatment in an experiment. |
The distinction that trips people up is variant vs. variation. A single variant can hold more than one variation, for example a control and a treatment running side by side in an experiment. When you compare those two, track on website_id, because variant_id is identical for both.
Reading the Values in GTM
To use any of these fields in a trigger or tag, register it as a Data Layer Variable in GTM.
Create the variable
Go to Variables → New → Data Layer Variable and set the Data Layer
Variable Name to the exact field name, for example website_id.
Confirm it reads
Open Preview mode, load your page, select the superfunnel-view event in
the debug panel, and check that the variable shows the expected value.
Troubleshooting
Most tracking problems come down to two things: a tag is installed or firing more than once, or the event you are tracking is not the one the platform expects. Work through these in order.
Events are overcounted
For example, one form submission shows up as many leads, or a day's lead count is wildly inflated.
Root cause. The Pixel is almost always installed in more than one place, such as both in Custom Code and again by the AI assistant on individual pages, so every event fires twice. A secondary cause is mapping the wrong event: SuperFunnel fires a custom form-submission event, not a standard Meta Lead, so without a deliberate mapping Meta either misses it or you double up trying to force it.
Use the correct SuperFunnel event
SuperFunnel emits superfunnel-view on page load, superfunnel-form-submission
when a visitor reaches the Final Step, and the broader superfunnel-conversion
for any conversion (including click-outs). Map the one that matches your real conversion
point, not the page-load superfunnel-view event, or you will count a conversion on
every visit. If your lead converts before the final step, use a custom event.
See Default conversion events.
Verify the Pixel loads, exactly once
Open the live page and confirm your Dataset ID loads, using Test Events or the Meta Pixel Helper extension. If it does not appear at first, refresh the page. Confirm only one Pixel instance is active, the Pixel Helper makes a double-load easy to spot, and remove any duplicate added through the AI assistant or a second Custom Code snippet.
Map the custom event to a single Meta Lead event
Translate the SuperFunnel form-submission event to a standard Meta Lead
event once, in Google Tag Manager, then remove any other place the Lead
event was being fired. Full steps:
Map form submission → Meta Lead.
Re-test end to end
Submit the form in GTM Preview and confirm the Lead tag fires once. Then check Events Manager → Test Events and confirm a single Lead event arrives per submission.
Other common issues
- Tag does not fire — the trigger's event name must match the SuperFunnel event name exactly, including case (for example
superfunnel-vieworsuperfunnel-form-submission). Read the real name in Preview mode. - Pixel not detected — refresh the page; confirm the base code is enabled in Custom Code and set to Header.
fbq is not defined— the Meta Pixel base code is not loaded yet. Make sure it is installed globally in the header, before any tag that fires it. Install via Custom Code or as a GTM tag.- Body script runs too early — give body snippets a 1 ms delay so they run after elements render.
- Data Layer Variable is empty in a tag — the variable name does not match the field exactly, or the tag fires before the
superfunnel-viewevent. Check the spelling and confirm the value in Preview mode. - Experiment variations look identical — you are tracking on
variant_id, which is shared across variations. Switch towebsite_idto tell a control and a treatment apart. - Events fire on the wrong step — SuperFunnel's form-submission event fires at the final step. If your real conversion happens earlier, fire a custom event at that point instead, see Online Event Tracking.
- Conversions still under-reported — browser tracking is being blocked. Add the server-side path with Offline Conversion Tracking.
What's Next
Google Tag Manager
Install a container and fire tags on SuperFunnel events.
Meta Pixel
Install the Pixel and map SuperFunnel events to standard Meta events.
Debugging & Session IDs
Read per-visitor identifiers and the on-page event console log.
Online Event Tracking
Fire your own on-page events with the SuperFunnel JavaScript API.