Skip to main content

CiviCRM DataLayer Extension: Google Tag Manager and GA4 Configuration

CiviCRM DataLayer Extension: Google Tag Manager and GA4 Configuration

CiviCRM Google 3rd-Party Integration

This guide covers everything you need to do after installing the CiviCRM DataLayer extension to get GA4 funnel tracking working on your CiviCRM contribution pages and event registrations. If you are not familiar with the extension yet, start with our overview blog post first. This guide covers extension configuration, Google Tag Manager setup, Google Analytics 4 custom dimensions, and building the exploration reports that make the data useful.


Before You Start

You will need:

  • The CiviCRM DataLayer extension installed and enabled (com.skvare.datalayer)
  • Editor or higher access to your GTM container
  • Editor or higher access to your GA4 property
  • Your GA4 Measurement ID (format: G-XXXXXXXXXX) — find this in GA4 under Admin > Data Streams > your stream
  • Your GTM Container ID (format: GTM-XXXXXXX)

Part 1: Extension Configuration

Global Settings

Navigate to Administer > System Settings > DataLayer Settings.

Google Tag Manager

Enter your GTM Container ID in the GTM Container ID field. When set, the extension automatically injects the GTM header and noscript body snippets on all tracked contribution and event pages. Leave this blank if you manage GTM placement yourself through your theme or CMS.

Master Control

Enable DataLayer Extension is the global on/off switch. Disabling it stops all dataLayer pushes on CiviCRM pages regardless of any other settings. Leave this checked.

Entity-Type Controls

These toggles enable or disable tracking for entire entity types. Individual pages and events can still override these via their own DataLayer tab.

SettingDescription
Enable for Contribution PagesWhen unchecked, all dataLayer pushes for every contribution page are suppressed
Enable for Event RegistrationsWhen unchecked, all dataLayer pushes for every event registration are suppressed
Enable for Event Info PagesPushes a civicrm_view_item event when a visitor lands on the public Event Info page before clicking Register

Event Tracking Controls

These are the global defaults for which GA4 event types are pushed. Individual pages and events can override each toggle independently.

SettingDescription
Push civicrm_view_item eventsFires on the first page of a contribution flow or event registration, and on the Event Info page when enabled
Push civicrm_begin_checkout eventsFires when the contributor or registrant submits the first step and moves deeper into the funnel
Push civicrm_purchase eventsFires on the Thank You page after a successful contribution or event registration, includes ecommerce block with line items
Push civicrm_registration_step eventsFires once for each additional participant form step in multi-participant event registrations

Behavior Settings

SettingDescription
Exclude test transactions from all pushesWhen checked, no dataLayer pushes occur for any transaction where is_test = true. Individual entities can override this.
JS variable nameThe JavaScript variable pushed to. Default is dataLayer. Change only if your GTM container uses a custom variable name.
Debug modeWrites each push to the browser console. Disable on production.

Click Save Settings.


Per-Page and Per-Event Overrides

Each contribution page and event has a dedicated DataLayer tab in its management screen. This lets you override global settings for that specific page or event without affecting anything else.

For a contribution page: Go to Administer > CiviContribute > Manage Contribution Pages, find your page, click its name, then click the DataLayer tab.

For an event: Go to Administer > CiviEvent > Manage Events, find your event, click its name, then click the DataLayer tab.

The DataLayer tab is hidden when the global master switch is off.

DataLayer Status

Controls whether this page or event is tracked at all.

OptionDescription
Inherit global settingFollows the master control and entity-type toggle from global settings
Enabled (override global)Forces tracking on even if the entity type is globally disabled
Disabled (override global)Suppresses all pushes for this page or event regardless of global settings

Contribution and Event Tracking Overrides

Each tracking toggle (view_item, begin_checkout, purchase, registration_step) can be set to Inherit, Enabled, or Disabled at the individual contribution page or event registration page. Leave as Inherit unless this page or event needs different behavior from the global defaults.

Test Transaction Behavior

Override whether test-mode transactions generate dataLayer pushes for this specific contribution page or event.


Part 2: GTM Variables

Variables are how GTM reads data from the CiviCRM extension. Think of them as named slots that hold values from the dataLayer like the page title, campaign name, or transaction amount.

Create the GA4 Measurement ID Variable

Create this first so you can reuse it across all four tags.

  1. In GTM, go to Variables > New
  2. Choose Constant
  3. In the Value field, enter your GA4 Measurement ID (format: G-XXXXXXXXXX)
  4. Name it const - GA4 Measurement ID
  5. Save

Create the Block Test Traffic Toggle Variable

This variable lets you control whether test transactions reach GA4 without editing every tag.

  1. In GTM, go to Variables > New
  2. Choose Constant
  3. In the Value field, enter true
  4. Name it const - Block Test Traffic
  5. Save

When set to true, test transactions are blocked from reaching GA4. When set to false and republished, test transactions flow through. See Part 3 for how this is used in tag exceptions.

Create the DataLayer Variables

Create one variable for each row in the table below. Repeat this process for all 23 variables.

How to create each variable:

  1. In GTM, go to Variables in the left menu
  2. Under User-Defined Variables, click New
  3. Click the pencil icon in the Variable Configuration box
  4. Choose Data Layer Variable
  5. Enter the Data Layer Variable Name exactly as shown in the table
  6. Make sure Data Layer Version is set to Version 2
  7. Leave Set Default Value unchecked
  8. Click Save
  9. Name the variable exactly as shown in the Variable Name column
  10. Click Save again
Variable NameData Layer Variable Name
dlv - civicrm entity_typecivicrm.entity_type
dlv - civicrm page_idcivicrm.page_id
dlv - civicrm page_titlecivicrm.page_title
dlv - civicrm event_idcivicrm.event_id
dlv - civicrm event_titlecivicrm.event_title
dlv - civicrm financial_typecivicrm.financial_type
dlv - civicrm event_typecivicrm.event_type
dlv - civicrm campaign_idcivicrm.campaign_id
dlv - civicrm campaign_titlecivicrm.campaign_title
dlv - civicrm is_testcivicrm.is_test
dlv - civicrm entry_pointcivicrm.entry_point
dlv - civicrm frequency_unitcivicrm.frequency_unit
dlv - civicrm frequency_intervalcivicrm.frequency_interval
dlv - civicrm installmentscivicrm.installments
dlv - civicrm flow_typecivicrm.funnel.flow_type
dlv - civicrm step_namecivicrm.funnel.step_name
dlv - civicrm step_numbercivicrm.funnel.step_number
dlv - civicrm total_stepscivicrm.funnel.total_steps
dlv - civicrm has_confirm_pagecivicrm.funnel.has_confirm_page
dlv - civicrm additional_participant_countcivicrm.funnel.additional_participant_count
dlv - civicrm ecommerce valuecivicrm.ecommerce.value
dlv - civicrm ecommerce currencycivicrm.ecommerce.currency
dlv - civicrm ecommerce itemscivicrm.ecommerce.items

Note: The GTM variable name (for example civicrm.funnel.additional_participant_count) is the path GTM uses to read the value out of the dataLayer object. What you register in GA4 is the shorter parameter name you will type in the tag's Event Parameters table (for example additional_participant_count). These are different things used at different stages of the data flow.


Part 3: GTM Triggers

Triggers tell GTM when to fire a tag. Each trigger listens for a specific event name coming from the CiviCRM extension.

How to create each trigger:

  1. Click Triggers in the left menu
  2. Click New
  3. Click the pencil icon in the Trigger Configuration box
  4. Choose Custom Event
  5. Enter the Event Name exactly as shown below
  6. Leave Use Regex Matching unchecked
  7. Under This trigger fires on, select All Custom Events
  8. Click Save
  9. Name the trigger exactly as shown below
  10. Click Save again
Trigger NameEvent Name
civicrm_view_itemcivicrm_view_item
civicrm_begin_checkoutcivicrm_begin_checkout
civicrm_purchasecivicrm_purchase
civicrm_registration_stepcivicrm_registration_step

Event names are case-sensitive. Type them exactly as shown.


Part 4: GTM Tags

Tags send data to GA4. Each tag fires when its trigger detects the matching CiviCRM event and passes along the variable values as event parameters.

Tag Exception Setup

If not using the setting on the CiviCRM extension page, every tag needs an exception to block test transactions from reaching GA4 by default. This uses the const - Block Test Traffic variable you created in Part 2.

Adding the exception to each tag:

After selecting the trigger for your tag:

  1. Click the + icon next to Exceptions
  2. Click + to create a new trigger
  3. Choose Custom Event
  4. Enter the event name for whichever tag you are working on (for example civicrm_view_item)
  5. Under This trigger fires on, select Some Custom Events
  6. Set the condition: dlv - civicrm is_test equals {{const - Block Test Traffic}}
  7. Name the exception trigger civicrm_[event] - test traffic (for example civicrm_view_item - test traffic)
  8. Save and apply as the exception

Turning Test Traffic On and Off

To allow test transactions through to GA4:

  1. In GTM, go to Variables
  2. Open const - Block Test Traffic
  3. Change the Value from true to false
  4. Save
  5. Click Submit to republish the container

To block test transactions again:

  1. In GTM, go to Variables
  2. Open const - Block Test Traffic
  3. Change the Value from false to true
  4. Save
  5. Click Submit to republish the container

When const - Block Test Traffic is set to true, any transaction where is_test is also true matches the exception and gets blocked. When you change the constant to false and republish, no test transaction can match the exception and they flow through to GA4.


How to Create Each Tag

  1. Click Tags in the left menu
  2. Click New
  3. Click the pencil icon in the Tag Configuration box
  4. Choose Google Analytics: GA4 Event
  5. In the Measurement ID field, click the puzzle piece icon and select {{const - GA4 Measurement ID}}
  6. Enter the Event Name as shown below
  7. Under Event Parameters, click Add Row for each parameter in the table
  8. Type the parameter name in the left column
  9. Click the puzzle piece icon in the right column and select the matching variable
  10. Scroll down to Triggering, click the pencil icon and select the trigger listed below
  11. Add the tag exception as described above
  12. Name the tag as shown below
  13. Click Save

Tag 1: CiviCRM - view_item

Event name: view_item   Trigger: civicrm_view_item

Parameter NameVariable
entity_type{{dlv - civicrm entity_type}}
page_id{{dlv - civicrm page_id}}
page_title{{dlv - civicrm page_title}}
event_id{{dlv - civicrm event_id}}
event_title{{dlv - civicrm event_title}}
financial_type{{dlv - civicrm financial_type}}
event_type{{dlv - civicrm event_type}}
campaign_id{{dlv - civicrm campaign_id}}
campaign_title{{dlv - civicrm campaign_title}}
entry_point{{dlv - civicrm entry_point}}
is_test{{dlv - civicrm is_test}}
flow_type{{dlv - civicrm flow_type}}
step_name{{dlv - civicrm step_name}}
step_number{{dlv - civicrm step_number}}
total_steps{{dlv - civicrm total_steps}}
has_confirm_page{{dlv - civicrm has_confirm_page}}

Tag 2: CiviCRM - begin_checkout

Event name: begin_checkout   Trigger: civicrm_begin_checkout

Parameter NameVariable
entity_type{{dlv - civicrm entity_type}}
page_id{{dlv - civicrm page_id}}
page_title{{dlv - civicrm page_title}}
event_id{{dlv - civicrm event_id}}
event_title{{dlv - civicrm event_title}}
financial_type{{dlv - civicrm financial_type}}
event_type{{dlv - civicrm event_type}}
campaign_id{{dlv - civicrm campaign_id}}
campaign_title{{dlv - civicrm campaign_title}}
frequency_unit{{dlv - civicrm frequency_unit}}
frequency_interval{{dlv - civicrm frequency_interval}}
installments{{dlv - civicrm installments}}
is_test{{dlv - civicrm is_test}}
flow_type{{dlv - civicrm flow_type}}
step_name{{dlv - civicrm step_name}}
step_number{{dlv - civicrm step_number}}
total_steps{{dlv - civicrm total_steps}}
has_confirm_page{{dlv - civicrm has_confirm_page}}
additional_participant_count{{dlv - civicrm additional_participant_count}}

Tag 3: CiviCRM - purchase

Event name: purchase   Trigger: civicrm_purchase

Parameter NameVariable
entity_type{{dlv - civicrm entity_type}}
page_id{{dlv - civicrm page_id}}
page_title{{dlv - civicrm page_title}}
event_id{{dlv - civicrm event_id}}
event_title{{dlv - civicrm event_title}}
financial_type{{dlv - civicrm financial_type}}
event_type{{dlv - civicrm event_type}}
campaign_id{{dlv - civicrm campaign_id}}
campaign_title{{dlv - civicrm campaign_title}}
frequency_unit{{dlv - civicrm frequency_unit}}
frequency_interval{{dlv - civicrm frequency_interval}}
installments{{dlv - civicrm installments}}
is_test{{dlv - civicrm is_test}}
flow_type{{dlv - civicrm flow_type}}
step_name{{dlv - civicrm step_name}}
step_number{{dlv - civicrm step_number}}
total_steps{{dlv - civicrm total_steps}}
has_confirm_page{{dlv - civicrm has_confirm_page}}
value{{dlv - civicrm ecommerce value}}
currency{{dlv - civicrm ecommerce currency}}
items{{dlv - civicrm ecommerce items}}

Tag 4: CiviCRM - registration_step

Event name: civicrm_registration_step   Trigger: civicrm_registration_step

Parameter NameVariable
entity_type{{dlv - civicrm entity_type}}
event_id{{dlv - civicrm event_id}}
event_title{{dlv - civicrm event_title}}
is_test{{dlv - civicrm is_test}}
flow_type{{dlv - civicrm flow_type}}
step_name{{dlv - civicrm step_name}}
step_number{{dlv - civicrm step_number}}
total_steps{{dlv - civicrm total_steps}}
has_confirm_page{{dlv - civicrm has_confirm_page}}
participant_number{{dlv - civicrm participant_number}}
additional_participant_count{{dlv - civicrm additional_participant_count}}

Part 5: Publish Your Container

After saving all variables, triggers, and tags:

  1. Click Submit in the top right corner of GTM
  2. Add a version name like CiviCRM dataLayer setup
  3. Add a brief description like Added CiviCRM GA4 tracking for contributions and event registrations
  4. Click Publish

Nothing goes live until you publish. Always publish after making changes including toggling the Block Test Traffic variable.


Part 6: Verifying with GTM Preview Mode

GTM Preview mode lets you see exactly what is firing on your site without affecting real users.

How to Open Preview Mode

  1. In GTM, click Preview in the top right corner
  2. Enter your website URL and click Connect
  3. A new browser tab opens on your site with a blue GTM debug bar at the bottom
  4. The Tag Assistant panel opens in a separate window — keep both open

What to Look For

Navigate to a CiviCRM contribution page. In the Tag Assistant panel on the left you will see a list of events. Click on civicrm_view_item and you should see:

  • Under Tags Fired: CiviCRM - view_item should appear with a green checkmark
  • Under Tags Not Fired: the other three tags should appear here since they fire on different events

Click through the contribution form all the way to the thank you page. Each step should show the corresponding tag firing:

PageEvent in Tag AssistantTag That Should Fire
Contribution main pagecivicrm_view_itemCiviCRM - view_item
Confirm pagecivicrm_begin_checkoutCiviCRM - begin_checkout
Thank you pagecivicrm_purchaseCiviCRM - purchase

How to Check Parameter Values

  1. In the Tag Assistant panel, click on the event name on the left (for example civicrm_view_item)
  2. Click on the tag name that fired (for example CiviCRM - view_item)
  3. You will see a list of all parameters and the values that were sent
  4. Verify that fields like page_title, flow_type, step_number, and total_steps have the correct values

If a parameter shows as undefined, the variable is not reading correctly. Go back and check that the Data Layer Variable Name is spelled exactly right including capitalization and dots.


Part 7: Verifying in GA4 DebugView

DebugView shows events arriving in GA4 in real time. It only works for your own browser session.

How to Enable Debug Mode

  1. Install the Google Analytics Debugger Chrome extension
  2. Turn it on by clicking the extension icon — it turns blue when active
  3. This flags your browser session as a debug session so GA4 separates your traffic

How to Open DebugView

  1. Go to GA4 at analytics.google.com
  2. Click Admin in the bottom left
  3. Under your property, click DebugView
  4. Navigate to your CiviCRM pages in another tab

What to Look For

Events appear as dots on a timeline at the top of the screen. Click any dot to see the event name and all parameters. You should see:

  • view_item firing when you land on a contribution or event page
  • begin_checkout firing when you reach the confirm page
  • purchase firing on the thank you page with value and currency populated

Note: the GTM dataLayer event name is civicrm_view_item but GA4 receives it as view_item because that is the event name entered in the GTM tag. This is expected.

If an event appears but parameters are missing, the tag fired but the variable had no value. Go back to GTM and check the variable path.


Part 8: Registering Custom Dimensions in GA4

GA4 does not automatically display custom parameters in reports. You need to register each one so it shows up in your data and becomes available in explorations.

How to Register a Custom Dimension

  1. In GA4, go to Admin > Custom Definitions
  2. Click Create Custom Dimensions
  3. Fill in the fields:
    • Dimension name: use the readable label from the table below
    • Scope: Event
    • Event parameter: enter the exact parameter name from the table below
  4. Click Save

Repeat for all 21 parameters below.

Dimension NameEvent Parameter
CiviCRM Additional Participant Countadditional_participant_count
CiviCRM Campaign IDcampaign_id
CiviCRM Campaign Titlecampaign_title
CiviCRM Entity Typeentity_type
CiviCRM Entry Pointentry_point
CiviCRM Event IDevent_id
CiviCRM Event Titleevent_title
CiviCRM Event Typeevent_type
CiviCRM Financial Typefinancial_type
CiviCRM Flow Typeflow_type
CiviCRM Frequency Intervalfrequency_interval
CiviCRM Frequency Unitfrequency_unit
CiviCRM Has Confirm Pagehas_confirm_page
CiviCRM Installmentsinstallments
CiviCRM Is Testis_test
CiviCRM Page IDpage_id
CiviCRM Page Titlepage_title
CiviCRM Participant Numberparticipant_number
CiviCRM Step Namestep_name
CiviCRM Step Numberstep_number
CiviCRM Total Stepstotal_steps

Note: value, currency, and items from the ecommerce block do not need to be registered as custom dimensions. GA4 recognizes these as standard ecommerce parameters automatically when they come through on a purchase event.

Custom dimensions can take 24 to 48 hours to start populating in reports after you register them. If a dimension shows as (not set) in an exploration, check that the Event parameter field exactly matches the parameter name sent by the tag, then allow more time for data to accumulate.


Part 9: GA4 Key Events

Key Events (formerly called Conversions) are milestones GA4 highlights in standard reports and uses for Google Ads optimization.

Recommended Key Events:

  • purchase — mark this as a Key Event to track completed contributions and registrations as your primary goal metric
  • begin_checkout — optionally mark this to track checkout initiation as a secondary metric

To add a Key Event:

  1. In GA4, go to Admin > Key Events
  2. Click Create Key Event
  3. Enter the event name (purchase or begin_checkout)
  4. Save

view_item and civicrm_registration_step do not need to be Key Events. For funnel analysis, your Funnel Exploration and Free Form reports work regardless of Key Event status.


Part 10: GA4 Exploration Reports

Explorations are GA4's advanced reporting tool. The following reports give you the most useful views of your CiviCRM data. Access all explorations from the Explore section in the left menu.


Shared Segments

Create these segments first. You will use them across multiple reports.

Live Transactions Only

  1. Under Variables > Segments, click +
  2. Choose Create new segment
  3. Choose Event segment
  4. Add condition: CiviCRM Is Test exactly matches false
  5. Name it Live Transactions Only
  6. Save

CiviCRM Event Traffic

  1. Under Variables > Segments, click +
  2. Choose Create new segment
  3. Choose Event segment
  4. Add condition: CiviCRM Entity Type contains event
  5. Name it CiviCRM Event Traffic
  6. Save

CiviCRM Contribution Traffic

  1. Under Variables > Segments, click +
  2. Choose Create new segment
  3. Choose Contribution segment
  4. Add condition: CiviCRM Entity Type exactly matches contribution
  5. Name it CiviCRM Contribution Traffic
  6. Save

Report 1: CiviCRM Events Free Form

This report shows each CiviCRM event with the GA4 events nested under it and total revenue per event.

  1. Click Explore > Blank
  2. Change technique to Free Form
  3. Name it CiviCRM - Events

Variables — Dimensions: Add Event name, CiviCRM Event Title

Variables — Metrics: Add Event count, Purchase revenue

Settings:

  • Rows: CiviCRM Event Title, Event name
  • Nested Rows: Yes
  • Values: Event count, Purchase revenue
  • Filters: CiviCRM Entity Type contains event AND CiviCRM Is Test exactly matches false

Tip: If filter value suggestions do not appear in the dropdown, widen your date range. GA4 only suggests values it has seen within the selected date range.


Report 2: CiviCRM Contributions Free Form

This report shows each contribution page with GA4 events nested under it and total revenue.

  1. Click Explore > Blank
  2. Change technique to Free Form
  3. Name it CiviCRM - Contributions

Variables — Dimensions: Add Event name, CiviCRM Entity Type, CiviCRM Page Title, CiviCRM Financial Type, CiviCRM Step Name, CiviCRM Campaign Title, CiviCRM Frequency Unit, CiviCRM Has Confirm Page, CiviCRM Is Test

Variables — Metrics: Add Event count, Purchase revenue

Settings:

  • Rows: CiviCRM Page Title, Event name
  • Nested Rows: Yes
  • Values: Event count, Purchase revenue
  • Filters: CiviCRM Entity Type exactly matches contribution AND CiviCRM Is Test exactly matches false

Report 3: CiviCRM Events Funnel Exploration

This funnel shows drop-off across the full event registration flow including the optional info page and additional participant steps.

  1. From within the CiviCRM Events exploration, click the + tab at the top
  2. Select Funnel exploration
  3. Name this tab Events Funnel

Toggle on Make Open Funnel in the Settings panel — this is a toggle in the Settings column, not at the top of the page.

Steps — click the pencil icon next to Steps and add:

Step NameEvent NameFilter
Info Page (optional)view_itemCiviCRM Entity Type exactly matches event_info
Registration Viewview_itemCiviCRM Entity Type exactly matches event
Additional Participantcivicrm_registration_stepnone needed
Checkoutbegin_checkoutnone needed
Completepurchasenone needed

Note: civicrm_registration_step is only ever fired by the additional participant form so no entity type filter is needed on that step. Since the funnel is open, registrations without additional participants will skip Step 3 and still be counted at Checkout and Complete.

Segment Comparisons: Drag Live Transactions Only into the Segment Comparisons drop zone.

Breakdown: Drag CiviCRM Entry Point into the Breakdown section. This splits the funnel by whether visitors came from the Event Info page or navigated directly to the registration form, which lets you compare conversion rates between the two entry paths.


Report 4: CiviCRM Contributions Funnel Exploration

  1. From within the CiviCRM Contributions exploration, click the + tab at the top
  2. Select Funnel exploration
  3. Name this tab Contributions Funnel

Toggle on Make Open Funnel

Steps:

Step NameEvent NameFilter
Page Viewview_itemCiviCRM Entity Type exactly matches contribution
Checkoutbegin_checkoutnone needed
Completepurchasenone needed

Segment Comparisons: Drag Live Transactions Only into the Segment Comparisons drop zone.

Breakdown: Drag CiviCRM Step Name into the Breakdown section. This splits the Checkout bar by checkout_attempt vs confirm, showing you whether people are dropping off before or after the confirmation page.


Report 5: CiviCRM Events Path Exploration

This shows the sequence of events users navigate through during an event registration.

  1. From within the CiviCRM Events exploration, click the + tab at the top
  2. Select Path exploration
  3. Name this tab Events Path

Apply the segment:

  • Click All Users at the top of the visualization
  • Select CiviCRM Event Traffic

Starting Point: Set to Event name, then select view_item. Click through the nodes to follow the path forward through begin_checkout to purchase.


Report 6: CiviCRM Contributions Path Exploration

  1. From within the CiviCRM Contributions exploration, click the + tab at the top
  2. Select Path exploration
  3. Name this tab Contributions Path

Apply the segment:

  • Click All Users at the top of the visualization
  • Select CiviCRM Contribution Traffic

Starting Point: Set to Event name, then select view_item.


Quick Troubleshooting Reference

ProblemWhere to Look
Tag not firing in PreviewCheck trigger name matches event name exactly — names are case-sensitive
Parameter showing as nullExpected behavior. The field does not apply to this transaction type.
Parameter showing as undefinedCheck the Data Layer Variable Name for typos including capitalization and dots
No events in DebugViewMake sure GA Debugger Chrome extension is on and blue
Events appear but no parameters in reportsCustom dimensions not registered yet in GA4, or still within the 24 to 48 hour population window
Test transactions appearing in reportsCheck is_test exception is applied to every tag and const - Block Test Traffic is set to true
Funnel shows no dataWiden the date range — GA4 filter suggestions and funnel data depend on events within the selected range
Filter value not showing in dropdownWiden date range to cover when your test data was recorded
(not set) in a dimension columnCustom dimension Event parameter may have a typo, or not enough data has accumulated yet
Duplicate events in Tag AssistantDisable any legacy dataLayer scripts that may be pushing the same event names