Use Google Analytics
The Cleverbridge Google Analytics integration is the recommended way to measure and analyze behavior on your checkout pages. It uses the same checkout data layer that powers Google Tag Manager (GTM), so you can send consistent, structured events into Google Analytics (GA4 or, for legacy setups, Universal Analytics) for reporting, attribution, and optimization.
Google Analytics tracking is available on both Checkout 1.0 and Checkout 2.0 pages.
Set up the integration
As a fully managed solution, Cleverbridge provides multiple options for configuring GA4 via Google Tag Manager on your checkout pages. Reach out to your Client Success Manager to explore the setup that’s best aligned with your goals.
You can also set up GA4 tracking yourself using Google Tag Manager by following Google’s official implementation guides.
-
Create or choose your Google Analytics property.
- For new implementations we recommend Google Analytics 4 (GA4).
- Many legacy Checkout 1.0 setups still send Enhanced Ecommerce data to Universal Analytics.
-
Contact the Client Experience team to enable the checkout data layer and the Google Analytics integration for your account.
-
Import the Cleverbridge container file we provide:
- In GTM, go to Admin panel.
- Click Import Container.
- Click Choose container file and select the file you received from Cleverbridge.
- Under Choose workspace, select Existing and pick the workspace where you want to import the container.
- Under Choose import option, select Merge and Overwrite conflicting tags, triggers, and variables.
- Click Confirm to execute the import.
We strongly recommend you execute the import via the Cleverbridge import container we’ll provide upon request, as our individually created triggers ensure a GDPR-compliant use. After the import, you can adapt the configuration to your needs. Any changes must be released by Cleverbridge before they become active on your production checkout.
If you have specific questions related to the GA4 configuration in the Cleverbridge GTM container, contact Client Experience.
How Cleverbridge works with Google Analytics
Cleverbridge exposes all checkout data through a structured dataLayer that you can use both in Google Tag Manager and in Google Analytics.
As this article focuses on Google Analytics, we assume you’ve already read the Use Google Tag Manager article and are familiar with:
- The Cleverbridge dataLayer and its fields.
- The list of checkout events for Checkout 1.0 and Checkout 2.0.
- How GTM variables read values from the dataLayer.
Now, let's focus on how those same events and fields are used inside Google Analytics.
GA4 vs Universal Analytics
Cleverbridge supports both Google Analytics 4 (GA4) and Universal Analytics (UA), but they work slightly differently:
| Aspect | GA4 (recommended) | Universal Analytics (legacy) |
|---|---|---|
| Property type | Event-based | Session & pageview-based |
| Ecommerce model | GA4 Ecommerce events (view_cart, begin_checkout, add_to_cart, purchase, etc.) | Enhanced Ecommerce (ec/ecommerce objects) |
| Recommended with | Checkout 2.0 and Checkout 1.0 | Existing legacy Checkout 1.0 setups |
| Status | Actively developed by Google | Deprecated, maintained only for legacy use |
How events are sent to Google Analytics
In most setups, Google Analytics receives Cleverbridge events in one of two ways:
-
Via Google Tag Manager (recommended)
- GTM listens for dataLayer events (for example,
view_cart,begin_checkout,add_to_cart,purchase). - GA tags in GTM map dataLayer fields (such as
ecommerce.items,ecommerce.value,transactionId) to GA parameters and item fields.
- GTM listens for dataLayer events (for example,
-
Via direct
gtag.jscalls- Your
gtag.jsimplementation listens for the samedataLayerevents. - When an event occurs, you call
gtag('event', '<event_name>', { ... })and pass the relevant values from the Cleverbridge object (for example,transaction_id,currency,value, anditems).
- Your
In both cases, the event names and fields are the same ones you know from the Use Google Tag Manager article – the difference is only how you send them into Google Analytics.
Events and data layer
Google Analytics uses the same Cleverbridge events as GTM, but with a GA-specific naming and payload for some flows.
- Checkout 2.0
- Checkout 1.0
Checkout 2.0
The following GA4 events are available for Checkout 2.0 via GTM:
| Event | Triggered when |
|---|---|
| begin_checkout | Customer opens Checkout 2.0 for the first time. |
| page_view | Customer views any step in the checkout flow. Fires on initial load and each step change. |
| add_to_cart | Customer adds a recommended product to the cart. The event fires immediately when the customer clicks Add, before the page reloads. Also emits select_promotion for the chosen recommendation. |
| select_promotion | A recommendation/promotion is selected and added to the cart. Emitted together with add_to_cart. |
| remove_from_cart | Customer removes a line item from the cart. The event fires immediately when the customer clicks Remove, before the page reloads. |
| add_payment_info | Customer completes all required payment fields, or selects a payment method with no input fields (for example, wire transfer). Fires as soon as the method selection or entered data becomes valid. |
| purchase | Customer clicks Buy now and the system successfully generates a purchase ID with no validation errors. Fires exactly once per unique purchase ID. |
Standard GA4 ecommerce events (Checkout 1.0)
The following GA4 events are available for Checkout 1.0 via GTM:
| Event | Triggered when |
|---|---|
| view_cart | The customer enters the checkout process for the first time. |
| begin_checkout | The customer continues in the checkout process (for example, from cart to next step). |
| add_to_cart | The customer adds an additional product to the cart (for example, a recommendation). The event fires as soon as the customer clicks Add, before the page reloads. |
| remove_from_cart | The customer removes a product from the cart. The event fires as soon as the customer clicks Remove, before the page reloads. |
| add_payment_info | The customer submits their personal and payment information and the review page appears. If your checkout process does not include a review page, this event is not triggered automatically. |
| purchase | The order is submitted successfully and the customer reaches the confirmation page. |
| view_promotion | A promotion appears on the page or as a “Don’t Leave Layer” (DLL) popup during the checkout (for example, cross-sell, up-sell, or other recommended product). |
| select_promotion | The customer selects a promotion (for example, by clicking a recommended product or DLL button). |
Custom Cleverbridge events (Checkout 1.0)
In addition to GA4 ecommerce events, Checkout 1.0 exposes a set of custom Cleverbridge events that you can optionally send into GA4 as custom events or use purely for GTM logic:
| Event | Description |
|---|---|
| init | First event used to initialize the dataLayer. |
| dontLeaveLayer | Triggered when the DLL appears during the checkout process (inline or as a popup). |
| dontLeaveLayerButtonClick | Triggered when customers interact with the DLL (for example, click a button). |
| paymentMethodChange | Triggered when customers change their payment method on the checkout page. |
| inputFieldCompleted | Triggered when customers complete all required input fields on the checkout page. |
| submitOrder | Triggered when the customer clicks the Buy Now button (fires before the page reloads and does not guarantee a successful order). |
| clickDownloadLink | Triggered when the customer clicks the download link to retrieve the license key on the confirmation page. |
You can use these custom events in GA4 to build additional funnels, debug customer behavior, or create remarketing audiences (for example, “started order but did not reach purchase”).
Data fields and examples for basic events
Each event pushes a dedicated data object to the dataLayer. These typically include an event name and additional parameters describing the context, such as product details, transaction values, or payment information.
The exact objects and available fields depend on the checkout model you’re using:
- Checkout 2.0
- Checkout 1.0
begin_checkout fields
| Field | Type | Description |
|---|---|---|
| event | string | Event name. Always "begin_checkout". |
| ecommerce.currency | string | ISO 4217 currency code selected by the customer. |
| ecommerce.value | number | Order total (gross) at the time of the event. |
| ecommerce.items | array | Array of items currently in the cart. |
ecommerce.items fields
| Field | Type | Description |
|---|---|---|
| item_id | string | Product ID. |
| item_name | string | Product display name. |
| affiliation | string | Always "cleverbridge". |
| coupon | string | Applied coupon code, if any. |
| discount | number | Item-level discount (gross). |
| item_brand | string | Client account name. |
| item_category | string | Product category. |
| item_variant | string | Internal product name or variant. |
| price | number | Discounted item price (gross). |
| quantity | number | Quantity of the item. |
dataLayer.push({
event: "begin_checkout",
ecommerce: {
currency: "USD",
value: 129.99,
items: [
{
item_id: "12345",
item_name: "Pro Suite Annual",
affiliation: "cleverbridge",
coupon: "FALL20",
discount: 20.00,
item_brand: "Acme Corp",
item_category: "Software",
item_variant: "Pro Suite",
price: 129.99,
quantity: 1
}
]
}
});
A customer starts checkout, so we push a begin_checkout event to the data layer with the current cart details: currency is USD, the order total is 129.99, and the cart contains one item—Pro Suite Annual (ID 12345) from Acme Corp. The FALL20 coupon applies a 20.00 discount, and the item price shown is the discounted gross price.
GTM can use this event to trigger analytics, conversion, and remarketing tags for the start of the checkout.
page_view fields
| Field | Type | Description |
|---|---|---|
| event | string | Event name. Always "page_view". |
| subscription_type | string | Subscription type (for example, "none", "auto_renew", or another configured value). |
| checkout_type | string | Checkout context (for example, "new" or "upgrade"). |
| affiliation | string | Always "cleverbridge". |
| language | string | Selected language (ISO code). |
| transaction_interval | number | Subscription interval in months; 0 for one-time purchases. |
| currency | string | Selected currency (ISO 4217). |
| cart_id | string | Value of the &cart parameter, if present. |
| entry_url | string | Customer’s checkout entry URL. |
| page_name | string | Logical step identifier (for example, funnelName.templateSteps.progressStep). |
| session_id | string | Checkout session ID. |
| x-parameters | array | Array of custom key–value pairs provided via x-parameters. |
| country | string | Delivery country (ISO code). |
js
dataLayer.push({
event: "page_view",
subscription_type: "none",
checkout_type: "new",
affiliation: "cleverbridge",
language: "en",
transaction_interval: 0,
currency: "USD",
cart_id: "CART-9A7B",
entry_url: "https://checkout.example.com/?pid=12345",
page_name: "checkout.step.shipping",
session_id: "sess_abc123",
"x-parameters": [{ partner: "affiliate42" }, { campaign: "fall_launch" }],
country: "US"
});
A customer views the shipping step of Checkout 2.0, so we push a page_view event to the data layer with contextual information about this session: the checkout type is new, the selected language is English, and the transaction is a one-time purchase (interval 0). The checkout is in USD, with the cart ID CART-9A7B and session ID sess_abc123. Additional parameters identify the affiliate partner (affiliate42) and campaign (fall_launch).
GTM can use this event to record funnel progression, measure engagement by step, and attribute the session to the correct campaign and partner.
add_to_cart fields
| Field | Type | Description |
|---|---|---|
| event | string | Event name. Always "add_to_cart". |
| ecommerce.currency | string | ISO 4217 currency code. |
| ecommerce.value | number | Order total (gross) after the add. |
| ecommerce.items | array | Array with the added item (and optionally cart context). |
commerce.items fields
| Field | Type | Description |
|---|---|---|
| item_id | string | Product ID added from recommendations. |
| item_name | string | Product display name. |
| affiliation | string | Always "cleverbridge". |
| discount | number | Item-level discount (gross). |
| item_brand | string | Client account name. |
| item_category | string | Product category. |
| item_variant | string | Internal product name or variant. |
| price | number | Discounted item price (gross). |
| quantity | number | Quantity added. |
| index | number | Recommendation array index (position in the recommendation list). |
js
dataLayer.push({
event: "add_to_cart",
ecommerce: {
currency: "EUR",
value: 59.99,
items: [
{
item_id: "67890",
item_name: "Add-on Storage 100GB",
affiliation: "cleverbridge",
discount: 0,
item_brand: "Acme Corp",
item_category: "Add-on",
item_variant: "Storage-100",
price: 59.99,
quantity: 1,
index: 2
}
]
}
});
A customer adds a recommended product to the cart, so we push an add_to_cart event to the data layer with details about the item: the currency is EUR, the total cart value is 59.99, and the added product is Add-on Storage 100GB (ID 67890) from Acme Corp. The product has no discount, is priced at 59.99 gross, and appears as the second recommendation in the list (index 2).
At the same time, a select_promotion event is pushed to record that this item was selected from the recommendation module, identifying the promotion ID rec_002 and name Recommended Add-on. GTM can use these events together to track user interaction with recommendations, measure conversion effectiveness, and attribute sales to specific promotional placements.