Skip to main content

πŸ”΄ Phase 1 β€” CoreΒ Β·Β Powers list-level analytics in GA4.

view_item_list

When to push​

When the user sees a product list: category page (PLP), search results, cross-sell recos, homepage carousel… Push once per list render (not on scroll).

Example​

window.dataLayer.push({ ecommerce: null });
window.dataLayer.push({
event: 'view_item_list',
ecommerce: {
item_list_id: 'plp_face',
item_list_name: 'PLP Face',
items: [
{
item_id: 'BIO-CRM-001',
item_name: 'Hydrating Day Cream',
item_brand: 'Biosphere',
item_category: 'Skincare',
item_variant: '50 ml',
price: 42.00,
index: 1,
quantity: 1
},
{
item_id: 'BIO-SER-002',
item_name: 'Radiance Serum',
price: 58.00,
index: 2,
quantity: 1
}
// … up to 200 items
]
}
});

Parameters​

ParameterRequired
item_list_idrecommended
item_list_namerecommended
items (with index)required

Item-level: see items structure. index (position) is recommended.

Platforms​

PlatformNative event
GA4view_item_list
Metaβ€”
Google AdsDynamic remarketing

Edge cases​

  • Lazy load / pagination: push once per batch loaded (not per scroll line).
  • Search results: combine with search, use item_list_id: 'search_results'.
  • Cross-sell on PDP: item_list_id: 'xsell_pdp'.

Pitfalls​

  • ❌ Pushing on every hover or scroll line.
  • ❌ Missing item_list_id β†’ can't filter list performance in GA4.
  • ❌ index differs between view_item_list and select_item for the same item.