transaction_id i GA4: vad det gör och hur du får det rätt
transaction_id är ordernumret som du skickar med köphändelsen i GA4. GA4 använder det för att ta bort ett andra köp med samma ID i webbströmmar och för att koppla returer till ordrar. Skicka ditt riktiga, unika ordernummer på varje köp: aldrig tomt, aldrig ett fast värde och aldrig något som identifierar kunden.
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 gör GA4 med det
Googles dokumentation för e-handel ber om ett transaktions-ID på varje e-handelshändelse, av två skäl: för att deduplicera köp och för att hantera returer. I praktiken betyder det:
- När två köp kommer in med samma
transaction_idbehåller GA4 ett. Det gäller bara webbströmmar, inte appströmmar. - En returhändelse med samma
transaction_idkopplas tillbaka till ordern. - Alla köp med samma ID räknas som samma order. Ett värde som aldrig ändras, eller en tom sträng, gör alltså att GA4 behandlar alla dina ordrar som en och slänger resten.
Google Ads bygger på samma idé: ordernumret som transaction_id på konverteringen hindrar att en omladdning av tacksidan räknas två gånger.
Här finns det i anropet
I dataLayer ligger det inuti ecommerce, bredvid värde och valuta:
dataLayer.push({ ecommerce: null });
dataLayer.push({
event: 'purchase',
ecommerce: {
transaction_id: '10045',
value: 1299.00,
currency: 'SEK',
items: [{ item_id: 'SKU-123', item_name: 'Ullhalsduk', price: 1299.00, quantity: 1 }]
}
});
I anropet till GA4 (DevTools, fliken Network, filtrera på collect) syns det som ep.transaction_id på anropet med en=purchase:
…/g/collect?v=2&tid=G-AB12CD34EF&en=purchase&cu=SEK&epn.value=1299&ep.transaction_id=10045…
Skickas flera händelser i samma anrop ligger de i anropets kropp i stället för i adressen. Öppna fliken Payload och leta efter raden med en=purchase.
Fem sätt det går fel på
- Det saknas. Varje gång en kund laddar om eller bokmärker tacksidan, eller kommer tillbaka dit från bekräftelsemejlet, registrerar GA4 ett nytt köp. Intäkter och antal konverteringar hamnar över dina verkliga ordrar.
- "undefined", "null" eller en platshållare från mallen. En variabel i Tag Manager som inte får något värde skickar samma text på varje order, och GA4 räknar då bara en av dem. Symptomet är det motsatta mot ovan: betydligt färre köp i GA4 än i butiken.
- En tom sträng. Samma problem. Googles dokumentation varnar uttryckligen för att skicka
"". - Det gamla formatet från Universal Analytics. Butiker som har gått över från Universal Analytics skickar ibland fortfarande ordernumret som
ecommerce.purchase.actionField.id. GA4 förväntar sigecommerce.transaction_id. - Kunddata i ID:t. Ett ID som bygger på en e-postadress eller ett namn skickar personuppgifter till Google, vilket villkoren inte tillåter. Använd ordernumret som butiken redan tilldelar.
Hitta problemet i dina rapporter
- Öppna Explore i GA4 och starta en tom utforskning av typen Free form.
- Lägg till dimensionen Transaction ID och måtten Ecommerce purchases och Purchase revenue, och välj ett datumintervall på några veckor.
- En rad som heter (not set) är köp utan transaktions-ID. Några få rader med väldigt höga antal (ett ID som
undefined,0eller din platshållartext) tyder på en variabel som inte får något värde. - Jämför antalet unika transaktions-ID:n med antalet ordrar i butiken för samma dagar. Stora skillnader åt något håll kommer från något av de fem problemen ovan.
Testa åtgärden
- Lägg en testorder med DevTools öppet på fliken Network och filtrera på
collect. - På orderbekräftelsen ska anropet med
en=purchaseinnehållaep.transaction_idmed det riktiga ordernumret från ditt bekräftelsemejl. - Ladda om orderbekräftelsen. I bästa fall skickas inget andra köpanrop. Annars måste det ha samma ID, så att GA4 tar bort det.
- I GA4 visar DebugView (med felsökningsläget i Tag Assistant påslaget) köphändelsen med parametern
transaction_idinom några sekunder.
Skannar du orderbekräftelsen med Plumfinch kontrolleras samma sak: rapporten visar "Google Analytics 4 purchase has no transaction_id" när det saknas.
Källor
- Google Analytics: Measure ecommerce
- Google Analytics: Measure ecommerce (developer guide)
- Google Ads: Use a transaction ID to minimize duplicate conversions
Bygger på plattformarnas offentliga dokumentation (oftast på engelska). Menyer och namn ändras, så kontrollera de länkade sidorna om ett steg ser annorlunda ut.