dataLayer

Kixell Tag builds a normalized dataLayer compliant with the Google Analytics 4 e-commerce model and pushes it into window.dataLayer throughout the journey. These events then feed all of your tags (GA4, Google Ads, Meta, etc.) with no extra configuration in Google Tag Manager.

The purchase-journey events

Event Triggered when…
view_item_list a product list is displayed (category, search results, carousel)
select_item the user clicks a product in a list
view_item a product page is viewed
add_to_cart a product is added to the cart
remove_from_cart a product is removed from the cart
view_cart the cart is displayed
begin_checkout the user enters the checkout
add_shipping_info the shipping method is chosen
add_payment_info the payment method is entered
purchase the order is confirmed
view_promotion / select_promotion a promotion is displayed then clicked
search a search is performed
sign_up / login / logout account creation, login, logout

Structure of an item

Each product event carries an items array in the GA4 format:

ecommerce: {
  items: [{
    item_id: "REF-123",
    item_name: "Organic cotton t-shirt",
    price: 19.90,
    quantity: 1,
    item_brand: "My Brand",
    item_category: "Clothing",
    item_variant: "Blue / M",
    item_list_id: "category_42",
    item_list_name: "T-shirts",
    index: 3
  }]
}

The item_id sent depends on the product configuration of each platform (base field, prefix/suffix, combination) — see for example Google Analytics 4.

Product lists and listeners

To populate view_item_list and select_item correctly, Kixell Tag associates each list with an item_list_id and an item_list_name. The number of items reported is capped by the Maximum products in product list feedback setting (see GA4).

Detection also works with asynchronous loading (filters, pagination, sorting): the listeners and customizable selectors track products loaded dynamically. See DOM & event listeners.

Enrichment and custom events

  • Server-side enrichment: a third-party module can complete the items server-side via the actionKixellTagEnrichItems hook, with the GA4 event (view_item, add_to_cart, purchase…) passed explicitly.
  • Custom events: you can push your own events to GA4 without touching GTM — see dataLayer and custom events.