GA4 visar köp utan intäkter: orsaker och åtgärder
GA4 visar köp utan intäkter när köphändelsen saknar valuta, skickar värdet som text (med valutasymbol eller kommatecken), lägger värdet i items i stället för på händelsen, eller när Tag Manager inte skickar e-handelsdatan alls. Skicka värdet som ett tal och valutan som en kod med tre bokstäver, direkt på händelsen.
Kontrollera din egen sajt: den gratis skanningen visar på ungefär en minut om problemet finns på din sida. Rapporten är på engelska.
Det här behöver GA4 på ett köp
Google anger följande som obligatoriskt på händelsen purchase: transaction_id, value, currency och items (var och en med item_id eller item_name). Intäkten för köpet läses från value på händelsen, och intäkten per produkt från varje produkts price och quantity.
gtag('event', 'purchase', {
transaction_id: '10045',
value: 1299.00,
currency: 'SEK',
items: [{ item_id: 'SKU-123', item_name: 'Ullhalsduk', price: 1299.00, quantity: 1 }]
});
Orsak 1: valutan saknas
Ett värde utan valuta registreras inte som intäkt. I fliken Network (filtrera på /g/collect) ska köpanropet ha cu=SEK (eller din valutakod). Saknas cu lägger du till currency på händelsen, som en sträng enligt ISO 4217.
Orsak 2: värdet är text, inte ett tal
"1 299,00 kr", "$100.00" och "1.299,00" är strängar som GA4 inte kan läsa som belopp. Skicka 1299.00: ett tal, med punkt som decimaltecken, utan symbol och utan tusentalsavgränsare. Butiksmallar som skriver ut ett formaterat pris i dataLayer är den vanliga källan; använd det råa beloppet i stället.
Orsak 3: värdet ligger på fel ställe
value och currency måste ligga på händelsen, inte bara inuti items, och stavas med gemener. En push till dataLayer med ecommerce.Value eller ecommerce.revenue (det gamla namnet från Universal Analytics) ger en händelse utan värde.
Orsak 4: Tag Manager skickar inte e-handelsdatan
Med Google Tag Manager måste GA4-händelsetaggen för purchase ha Send Ecommerce data påslaget med dataLayer som källa, eller ha value, currency och items mappade som händelseparametrar. Töm också e-handelsobjektet före varje push, så att data från en tidigare händelse inte återanvänds:
dataLayer.push({ ecommerce: null });
dataLayer.push({ event: 'purchase', ecommerce: { transaction_id: '10045', value: 1299.00, currency: 'SEK', items: [ … ] } });
Orsak 5: händelsen skickas innan orderdatan finns
I kassor som laddar ordern via JavaScript kan en köphändelse som skickas när sidan laddas gå iväg med value: 0 eller utan värde. Skicka den på den push till dataLayer som innehåller ordern, inte på "Page View".
När intäkterna finns men är fel
- För höga: en omladdad orderbekräftelse utan
transaction_idskapar ett andra köp; två installationer skickar varje händelse två gånger. Se transaction_id i GA4. - Annorlunda än i butiken: GA4 räknar om andra valutor till egendomens valuta, och butiker räknar ofta med moms och frakt där ditt värde inte gör det, eller tvärtom. Bestäm vad värdet ska betyda och skicka det likadant överallt.
- Inte där ännu: standardrapporterna kan ta upp till ett dygn. Använd DebugView eller realtidsrapporten när du kontrollerar en ändring.
Bekräfta åtgärden
- Lägg en testorder med DevTools öppet på fliken Network. Anropet till
/g/collectmeden=purchaseska innehållacu, värdet (epn.value) ochep.transaction_id. - Öppna Admin och sedan DebugView, med felsökningsläget eller Tag Assistant påslaget, och kontrollera att köphändelsen visar
valueochcurrency.
Kontrollen av GA4 gör samma sak på händelserna för produktvisning, varukorg och kassa.
Källor
- Google Analytics: Fix missing revenue data
- Google Analytics: Set up a purchase event
- Google Analytics: Measure ecommerce
Bygger på plattformarnas offentliga dokumentation (oftast på engelska). Menyer och namn ändras, så kontrollera de länkade sidorna om ett steg ser annorlunda ut.