 

 [    ](https://www.facebook.com/sharer/sharer.php?u=https://www.skvare.com/markdownify/node/446&title=CiviCRM%20DataLayer%20Extension%3A%20Google%20Tag%20Manager%20and%20GA4%20Configuration "Share to Facebook") [    ](https://www.linkedin.com/sharing/share-offsite/?url=https://www.skvare.com/markdownify/node/446 "Share to Linkedin") [    ](mailto:?subject=CiviCRM%20DataLayer%20Extension%3A%20Google%20Tag%20Manager%20and%20GA4%20Configuration&body=https://www.skvare.com/markdownify/node/446 "Share to Email") 

 

 

#  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](https://github.com/Skvare/com.skvare.datalayer) 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](/blog/google-analytics-4-funnel-tracking-civicrm-without-custom-code) 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 &gt; Data Streams &gt; your stream
- Your GTM Container ID (format: GTM-XXXXXXX)

---

## Part 1: Extension Configuration

### Global Settings

Navigate to **Administer &gt; System Settings &gt; 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.

**Setting****Description**Enable for Contribution PagesWhen unchecked, all dataLayer pushes for every contribution page are suppressedEnable for Event RegistrationsWhen unchecked, all dataLayer pushes for every event registration are suppressedEnable 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.

**Setting****Description**Push civicrm\_view\_item eventsFires on the first page of a contribution flow or event registration, and on the Event Info page when enabledPush civicrm\_begin\_checkout eventsFires when the contributor or registrant submits the first step and moves deeper into the funnelPush civicrm\_purchase eventsFires on the Thank You page after a successful contribution or event registration, includes ecommerce block with line itemsPush civicrm\_registration\_step eventsFires once for each additional participant form step in multi-participant event registrations#### Behavior Settings

**Setting****Description**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 &gt; CiviContribute &gt; Manage Contribution Pages, find your page, click its name, then click the **DataLayer** tab.

**For an event:** Go to Administer &gt; CiviEvent &gt; 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.

**Option****Description**Inherit global settingFollows the master control and entity-type toggle from global settingsEnabled (override global)Forces tracking on even if the entity type is globally disabledDisabled (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 &gt; 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 &gt; 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 Name****Data Layer Variable Name**dlv - civicrm entity\_typecivicrm.entity\_typedlv - civicrm page\_idcivicrm.page\_iddlv - civicrm page\_titlecivicrm.page\_titledlv - civicrm event\_idcivicrm.event\_iddlv - civicrm event\_titlecivicrm.event\_titledlv - civicrm financial\_typecivicrm.financial\_typedlv - civicrm event\_typecivicrm.event\_typedlv - civicrm campaign\_idcivicrm.campaign\_iddlv - civicrm campaign\_titlecivicrm.campaign\_titledlv - civicrm is\_testcivicrm.is\_testdlv - civicrm entry\_pointcivicrm.entry\_pointdlv - civicrm frequency\_unitcivicrm.frequency\_unitdlv - civicrm frequency\_intervalcivicrm.frequency\_intervaldlv - civicrm installmentscivicrm.installmentsdlv - civicrm flow\_typecivicrm.funnel.flow\_typedlv - civicrm step\_namecivicrm.funnel.step\_namedlv - civicrm step\_numbercivicrm.funnel.step\_numberdlv - civicrm total\_stepscivicrm.funnel.total\_stepsdlv - civicrm has\_confirm\_pagecivicrm.funnel.has\_confirm\_pagedlv - civicrm additional\_participant\_countcivicrm.funnel.additional\_participant\_countdlv - civicrm ecommerce valuecivicrm.ecommerce.valuedlv - civicrm ecommerce currencycivicrm.ecommerce.currencydlv - 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 Name****Event Name**civicrm\_view\_itemcivicrm\_view\_itemcivicrm\_begin\_checkoutcivicrm\_begin\_checkoutcivicrm\_purchasecivicrm\_purchasecivicrm\_registration\_stepcivicrm\_registration\_stepEvent 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 Name****Variable**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 Name****Variable**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 Name****Variable**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 Name****Variable**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:

**Page****Event in Tag Assistant****Tag That Should Fire**Contribution main pagecivicrm\_view\_itemCiviCRM - view\_itemConfirm pagecivicrm\_begin\_checkoutCiviCRM - begin\_checkoutThank 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 &gt; 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 Name****Event Parameter**CiviCRM Additional Participant Countadditional\_participant\_countCiviCRM Campaign IDcampaign\_idCiviCRM Campaign Titlecampaign\_titleCiviCRM Entity Typeentity\_typeCiviCRM Entry Pointentry\_pointCiviCRM Event IDevent\_idCiviCRM Event Titleevent\_titleCiviCRM Event Typeevent\_typeCiviCRM Financial Typefinancial\_typeCiviCRM Flow Typeflow\_typeCiviCRM Frequency Intervalfrequency\_intervalCiviCRM Frequency Unitfrequency\_unitCiviCRM Has Confirm Pagehas\_confirm\_pageCiviCRM InstallmentsinstallmentsCiviCRM Is Testis\_testCiviCRM Page IDpage\_idCiviCRM Page Titlepage\_titleCiviCRM Participant Numberparticipant\_numberCiviCRM Step Namestep\_nameCiviCRM Step Numberstep\_numberCiviCRM 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 &gt; 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 &gt; 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 &gt; 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 &gt; 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 &gt; 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 &gt; 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 Name****Event Name****Filter**Info Page (optional)view\_itemCiviCRM Entity Type exactly matches `event_info`Registration Viewview\_itemCiviCRM Entity Type exactly matches `event`Additional Participantcivicrm\_registration\_stepnone neededCheckoutbegin\_checkoutnone neededCompletepurchasenone neededNote: `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 Name****Event Name****Filter**Page Viewview\_itemCiviCRM Entity Type exactly matches `contribution`Checkoutbegin\_checkoutnone neededCompletepurchasenone 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

**Problem****Where to Look**Tag not firing in PreviewCheck trigger name matches event name exactly — names are case-sensitiveParameter 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 dotsNo events in DebugViewMake sure GA Debugger Chrome extension is on and blueEvents appear but no parameters in reportsCustom dimensions not registered yet in GA4, or still within the 24 to 48 hour population windowTest transactions appearing in reportsCheck is\_test exception is applied to every tag and const - Block Test Traffic is set to trueFunnel shows no dataWiden the date range — GA4 filter suggestions and funnel data depend on events within the selected rangeFilter 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 yetDuplicate events in Tag AssistantDisable any legacy dataLayer scripts that may be pushing the same event names

 

 

- [CiviCRM](/tags/civicrm)
- [Google](/tags/google)
- [3rd-Party Integration](/tags/3rd-party-intergration)