Skip to main content

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.

note

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.

  1. 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.
  2. Contact the Client Experience team to enable the checkout data layer and the Google Analytics integration for your account.

  3. 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.
important

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:

AspectGA4 (recommended)Universal Analytics (legacy)
Property typeEvent-basedSession & pageview-based
Ecommerce modelGA4 Ecommerce events (view_cart, begin_checkout, add_to_cart, purchase, etc.)Enhanced Ecommerce (ec/ecommerce objects)
Recommended withCheckout 2.0 and Checkout 1.0Existing legacy Checkout 1.0 setups
StatusActively developed by GoogleDeprecated, 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:

  1. 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.
  2. Via direct gtag.js calls

    • Your gtag.js implementation listens for the same dataLayer events.
    • 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, and items).

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.

The following GA4 events are available for Checkout 2.0 via GTM:

EventTriggered when
begin_checkoutCustomer opens Checkout 2.0 for the first time.
page_viewCustomer views any step in the checkout flow. Fires on initial load and each step change.
add_to_cartCustomer 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_promotionA recommendation/promotion is selected and added to the cart. Emitted together with add_to_cart.
remove_from_cartCustomer removes a line item from the cart. The event fires immediately when the customer clicks Remove, before the page reloads.
add_payment_infoCustomer 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.
purchaseCustomer clicks Buy now and the system successfully generates a purchase ID with no validation errors. Fires exactly once per unique purchase ID.

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:

begin_checkout fields

FieldTypeDescription
eventstringEvent name. Always "begin_checkout".
ecommerce.currencystringISO 4217 currency code selected by the customer.
ecommerce.valuenumberOrder total (gross) at the time of the event.
ecommerce.itemsarrayArray of items currently in the cart.

ecommerce.items fields

FieldTypeDescription
item_idstringProduct ID.
item_namestringProduct display name.
affiliationstringAlways "cleverbridge".
couponstringApplied coupon code, if any.
discountnumberItem-level discount (gross).
item_brandstringClient account name.
item_categorystringProduct category.
item_variantstringInternal product name or variant.
pricenumberDiscounted item price (gross).
quantitynumberQuantity of the item.
Example
 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

FieldTypeDescription
eventstringEvent name. Always "page_view".
subscription_typestringSubscription type (for example, "none", "auto_renew", or another configured value).
checkout_typestringCheckout context (for example, "new" or "upgrade").
affiliationstringAlways "cleverbridge".
languagestringSelected language (ISO code).
transaction_intervalnumberSubscription interval in months; 0 for one-time purchases.
currencystringSelected currency (ISO 4217).
cart_idstringValue of the &cart parameter, if present.
entry_urlstringCustomer’s checkout entry URL.
page_namestringLogical step identifier (for example, funnelName.templateSteps.progressStep).
session_idstringCheckout session ID.
x-parametersarrayArray of custom key–value pairs provided via x-parameters.
countrystringDelivery country (ISO code).
Example
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

FieldTypeDescription
eventstringEvent name. Always "add_to_cart".
ecommerce.currencystringISO 4217 currency code.
ecommerce.valuenumberOrder total (gross) after the add.
ecommerce.itemsarrayArray with the added item (and optionally cart context).

commerce.items fields

FieldTypeDescription
item_idstringProduct ID added from recommendations.
item_namestringProduct display name.
affiliationstringAlways "cleverbridge".
discountnumberItem-level discount (gross).
item_brandstringClient account name.
item_categorystringProduct category.
item_variantstringInternal product name or variant.
pricenumberDiscounted item price (gross).
quantitynumberQuantity added.
indexnumberRecommendation array index (position in the recommendation list).
Example
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.

select_promotion fields

FieldTypeDescription
eventstringEvent name. Always "select_promotion".
ecommerce.creative_namestring(Optional) Creative name for the placement, such as banner or module title.
ecommerce.creative_slotstring(Optional) Slot or position of the promotion, for example, "right_rail" or "footer_recommendation".
ecommerce.promotion_idstringUnique identifier of the recommendation or promotion.
ecommerce.promotion_namestringDisplay name of the recommendation or promotion.
ecommerce.itemsarrayArray containing the promoted or selected product.

ecommerce.items fields

FieldTypeDescription
item_idstringProduct ID associated with the promotion.
item_namestringProduct display name.
affiliationstringAlways "cleverbridge".
discountnumberItem-level discount (gross), if any.
item_brandstringClient account name.
item_categorystringProduct category.
item_variantstringInternal product name or variant.
pricenumberDiscounted item price (gross).
quantitynumberQuantity of the item.
Example
js
dataLayer.push({
event: "select_promotion",
ecommerce: {
creative_name: "Sidebar Bundle",
creative_slot: "right_rail",
promotion_id: "rec_002",
promotion_name: "Recommended Add-on",
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
}
]
}
});


A customer selects a recommended product displayed in the sidebar, so we push a select_promotion event to the data layer. It identifies the promotion as rec_002 with the name Recommended Add-on, and records contextual details such as placement (right_rail) and creative (Sidebar Bundle). The associated product is Add-on Storage 100GB (ID 67890) from Acme Corp, priced at 59.99 with no discount.

GTM can use this event to measure how customers interact with recommendations and evaluate promotion performance across placements.

remove_from_cart fields

FieldTypeDescription
eventstringEvent name. Always "remove_from_cart".
ecommerce.currencystringISO 4217 currency code.
ecommerce.valuenumberOrder total (gross) after the item is removed.
ecommerce.itemsarrayArray containing details of the removed item.

ecommerce.items fields

FieldTypeDescription
item_idstringProduct ID removed from the cart.
item_namestringProduct display name.
affiliationstringAlways "cleverbridge".
discountnumberItem-level discount (gross).
item_brandstringClient account name.
item_categorystringProduct category.
item_variantstringInternal product name or variant.
pricenumberDiscounted item price (gross).
quantitynumberQuantity removed.
indexnumberRunning number or UI position of the removed item.
Example
js
dataLayer.push({
event: "remove_from_cart",
ecommerce: {
currency: "GBP",
value: 0,
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: 1
}
]
}
});

A customer removes a product from the cart, so we push a remove_from_cart event to the data layer. The event contains the item details—Add-on Storage 100GB (ID 67890) from Acme Corp, priced at 59.99 in GBP—and indicates it was the first item in the list (index 1).

GTM can use this event to track cart adjustments, update remarketing audiences, and analyze abandonment behavior.

add_payment_info fields

FieldTypeDescription
eventstringEvent name. Always "add_payment_info".
ecommerce.currencystringISO 4217 currency code.
ecommerce.valuenumberOrder total (gross) when payment details are completed or a payment option is selected.
ecommerce.itemsarrayArray containing all items in the cart at the time of the event.

ecommerce.items fields

FieldTypeDescription
item_idstringProduct ID.
item_namestringProduct display name.
affiliationstringAlways "cleverbridge".
discountnumberItem-level discount (gross).
item_brandstringClient account name.
item_categorystringProduct category.
item_variantstringInternal product name or variant.
pricenumberDiscounted item price (gross).
quantitynumberQuantity of the item.
Example
js
dataLayer.push({
event: "add_payment_info",
ecommerce: {
currency: "USD",
value: 129.99,
items: [
{
item_id: "12345",
item_name: "Pro Suite Annual",
affiliation: "cleverbridge",
discount: 20.00,
item_brand: "Acme Corp",
item_category: "Software",
item_variant: "Pro Suite",
price: 129.99,
quantity: 1
}
]
}
});

A customer completes their payment information on the checkout page, so we push an add_payment_info event to the data layer. The event includes details of the order in USD, with a total value of 129.99 and one product—Pro Suite Annual (ID 12345) from Acme Corp—with a 20.00 discount applied.

GTM can use this event to trigger analytics or conversion tags that record payment intent or checkout progression.

purchase fields

FieldTypeDescription
eventstringEvent name. Always "purchase".
ecommerce.transaction_idstringUnique reference or transaction ID for the purchase.
ecommerce.valuenumberOrder total (gross).
ecommerce.taxnumberTotal tax amount.
ecommerce.shippingnumberShipping cost, or 0 if not applicable.
ecommerce.currencystringISO 4217 currency code used for the purchase.
ecommerce.itemsarrayArray containing all purchased items.

ecommerce.items fields

FieldTypeDescription
item_idstringProduct ID.
item_namestringProduct display name.
affiliationstringAlways "cleverbridge".
discountnumberItem-level discount (gross).
item_brandstringClient account name.
item_categorystringProduct category.
item_variantstringInternal product name or variant.
pricenumberFinal item price (gross).
quantitynumberQuantity purchased.
Example
js
dataLayer.push({
event: "purchase",
ecommerce: {
transaction_id: "CB-REF-001122",
value: 129.99,
tax: 10.83,
shipping: 0,
currency: "USD",
items: [
{
item_id: "12345",
item_name: "Pro Suite Annual",
affiliation: "cleverbridge",
discount: 20.00,
item_brand: "Acme Corp",
item_category: "Software",
item_variant: "Pro Suite",
price: 129.99,
quantity: 1
}
]
}
});

A customer successfully completes a purchase, so we push a purchase event to the data layer. The event records the transaction ID CB-REF-001122, a total order value of 129.99 USD, and includes tax of 10.83 with no shipping cost. The purchased item is Pro Suite Annual (ID 12345) from Acme Corp, discounted by 20.00.

GTM can use this event to record conversions, trigger remarketing tags, and send detailed order data to analytics and advertising platforms.


Did you find this doc useful?