Every GA4 ecommerce event, from view_item through add_to_cart and begin_checkout to purchase and refund, carries an items array in its parameters. It is a list of product objects, one per line item.
window.dataLayer.push({
event: 'purchase',
ecommerce: {
transaction_id: 'ORD-12345',
value: 89.95,
currency: 'EUR',
items: [
{ item_id: 'SKU-RED-M', item_name: 'Red T-shirt',
price: 29.95, quantity: 1 },
{ item_id: 'SKU-BLU-L', item_name: 'Blue Jeans',
price: 60.00, quantity: 1 }
]
}
});Get it right and you get item-level revenue, product performance and conversion-path detail. Get it slightly wrong and the items disappear from your reports while the transaction still records, which is why it goes unnoticed.