GA4 Ecommerce Product Reports: Interpreting Item Performance Data

Key Takeaway

Product list performance in GA4 requires view_item_list and select_item events with correct list names and item positions. Without both events firing consistently, impression and click-through data is incomplete.
Intermediate

GA4 product list performance reporting requires correct implementation ofview_item_list,select_item, and the full purchase funnel. Without all three event types firing with consistent item data, funnel metrics are incomplete and list-level analysis is impossible.

How GA4 product list tracking works

GA4 modelsproduct list performanceusing three interconnected events:view_item_list(an item appeared in a list),select_item(a user clicked on a list item), and the purchase funnel events that follow. Together they enable list-level click-through rate, conversion rate, and revenue attribution. The cart events that sit between list clicks and purchases are covered in ourGA4 cart abandonment tracking guide.

The key difference from Universal Analytics Enhanced Ecommerce is that GA4 requires theitem_list_idanditem_list_nameparameters to persist from impression through to purchase. If these parameters drop off anywhere in the funnel, attribution breaks and list performance metrics become unreliable. Our widerGA4 ecommerce tracking checksguide covers the full event sequence list views feed into.

3 to 5%

average list click-through rate (retail benchmark)

Internal audit heuristic — varies significantly by industry and placement

Many

GA4 ecommerce implementations are missing list-level tracking

0

list attribution if item_list_id drops between events

Universal Analytics (Enhanced Ecommerce)
GA4 Ecommerce
Impression tracking
impressions array in dataLayer
view_item_list event with items array
Click tracking
productClick action
select_item event
List persistence
List name in hit payload
item_list_id must persist through funnel
Promotion tracking
promoView / promoClick
view_promotion / select_promotion
Custom dimensions
Product-scoped custom dimensions (cd1, cd200)
item_parameters (flexible schema, subject to custom dimension registration limits)
Funnel reporting
Shopping Behaviour report (built-in)
Custom funnel exploration required

See our breakdown ofGA4 purchase event parametersfor how list context fits into the rest of the items array on the conversion event.

1

Fire view_item_list on every list render

Every page that shows a list of products, category pages, search results, recommendation carousels, related products, must fire view_item_list with all visible items. Include item_list_id, item_list_name, and index on every item object.

2

Fire select_item on every product click

When a user clicks any item in a list, fire select_item before navigation. Pass the same item_list_id and item_list_name from the impression event. Store these values in sessionStorage or dataLayer for retrieval on the product detail page.

3

Persist list context through the funnel

On the product detail page, fire view_item with the item_list_id and item_list_name retrieved from sessionStorage. Pass these same parameters on add_to_cart, begin_checkout, and purchase events for every item.

4

Validate with DebugView and tag assistant

Use GA4 DebugView to trace a full journey from list view through purchase. Confirm item_list_id appears on every event in the funnel for each item. Any event where it is missing breaks the attribution chain.

5

Build list performance exploration in GA4

In GA4 Explore, create a free-form exploration with item_list_name as the dimension and itemsClickedInList, itemListClickThroughRate, and itemRevenue as metrics. This is the equivalent of the UA Shopping Behaviour report.

For richer reporting, register list-level fields as item-scoped custom dimensions, ourguide to auditing GA4 custom dimensionscovers how to register them safely without hitting registration limits.

Product list implementation audit

Validate

  • Confirm view_item_list fires on all category, search, and recommendation surfaces
  • Check that item_list_id and item_list_name appear on every item in view_item_list
  • Verify select_item fires on product clicks with matching list parameters
  • Trace item_list_id presence through view_item, add_to_cart, and purchase events
  • Compare view_item_list item count against actual rendered product count

Fix

  • Add item_list_id and item_list_name to all view_item_list implementations
  • Implement sessionStorage persistence for list context on product detail pages
  • Update GTM tags to read list context from sessionStorage and append to cart and purchase events
  • Add index parameter to all items in view_item_list for position-level analysis

Watch for

  • itemListClickThroughRate = 0 despite products appearing in lists (select_item missing)
  • itemRevenue in list reports far below total revenue (list context not persisting to purchase)
  • view_item_list firing with fewer items than are visible on the page (lazy-load not accounted for)

Product list tracking implementation checklist

  • view_item_list fires on all category and search result pages
  • view_item_list fires on recommendation and related product carousels
  • item_list_id present on every item in view_item_list
  • select_item fires on all product clicks within lists
  • item_list_id persists from select_item to view_item
  • item_list_id persists from view_item to add_to_cart
  • item_list_id persists from add_to_cart to purchase
  • index parameter populated for list position analysis

Ready to audit your GA4 property?

Run a full GA4 audit in under 2 minutes. Free to start.

Audit findings should be reviewed by a qualified analyst before they are used for major reporting, media, or implementation decisions. Review your findings

GA4 Audits Team

GA4 Audits Team

Analytics Engineering

Specialising in GA4 architecture, consent mode implementation, and multi-layer audit frameworks.

Share