Repejo pushar GA4-ecommerce-händelser till
window.dataLayer
i webbläsaren. Marknadsförare kan då koppla konverteringar i GTM mot valfri
plattform (Meta, Google Ads, TikTok m.fl.) utan separata integrationer per
annonssystem. Vill ni dessutom ha serverside-spårning relayar Repejo samma
purchase
till GA4 Measurement Protocol.
window.dataLayer
och er befintliga GTM-container plockar upp händelserna. Repejo laddar
aldrig en egen container och skriver aldrig över en befintlig dataLayer.
repejo_first_interaction)
behöver de pekas om till namnen nedan.
purchase skickas
purchase
skickas endast
när betalningen är bekräftad och givaren
landat på tacksidan (efter BankID/Swish). Den skickas aldrig
när användaren bara skickats vidare till betalning (t.ex. väntläge för
BankID/Swish). Konverteringspunkten innehåller därför korrekt kunddata på
tacksidan – inte innan betalningen är klar.
Pushar (särskilt user_data)
sker endast om besökaren samtyckt till marknadsföringscookies – samma modell
som Meta-integrationen.
user-has-consented-to-marketing-cookies
till true
på webbkomponenten.
Deduplicering:
Klient-push och serverside-reläet använder samma
transaction_id
(Repejos receivable-id), så GA4 dedupliserar de två purchase-händelserna
automatiskt. Konfigurera GTM-taggar att deduplicera på
transaction_id
så att en omladdning av tacksidan inte dubbelräknas.
Nedan visas exakt vad som hamnar i
window.dataLayer
per händelse. Varje ecommerce-händelse föregås alltid av en { ecommerce: null }-push
(GA4-praxis) så att items
aldrig läcker mellan händelser.
Byggs i webbläsaren, innehåller ingen personuppgift och har inget serverside-relä. Skickas en gång per sidladdning och händelsetyp, och endast om GTM är aktivt och marknadsföringssamtycke finns.
begin_checkout
– första valet som startar flödet (t.ex. väljer belopp).
view_item
– när användaren går vidare från första steget.
add_payment_info
– när användaren väljer betalmetod.
window.dataLayer.push({ ecommerce: null });
window.dataLayer.push({
event: "begin_checkout", // eller "view_item" / "add_payment_info"
ecommerce: {
currency: "SEK", // checkoutens valuta, annars "SEK"
value: 205 // utelämnas helt om beloppet inte är ett ändligt tal
}
});
Utöver trattshändelserna pushar checkouten en händelse per spårat element (fält, knappar, länkar och betalmetod-val) så att ni kan mäta hur givare rör sig genom formuläret element för element. Byggs i webbläsaren, innehåller ingen personuppgift och kräver marknadsföringssamtycke precis som trattshändelserna.
window.dataLayer.push({
event: "repejo_click",
click_classes: "form_radio", // elementkategori, se tabellerna nedan
click_id: "payment_method", // stabilt element-id
click_value: "autogiro", // endast betalmetod-radioknapparna
checkout_step: "select_payment_method" // internt stegnamn, när det är känt
});
form_field
/ form_dropdown)
pushas en gång per checkout, vid första fokus – "givaren började fylla i fältet".
form_button
/ form_link
/ form_radio)
pushas vid varje klick. Betalmetod-radion skickar vald metod som
click_value
(autogiro, swish, swish_onetime, card, apple_pay, google_pay, sepa_direct_debit).
GTM-setup:
skapa en Custom Event-trigger med eventnamnet
repejo_click
samt Data Layer-variabler för
click_classes
och click_id.
Filtrera sedan per element, t.ex. click_id equals to_payment_method.
| click_classes | click_id | Element |
|---|---|---|
form_field
|
custom_amount
|
fältet "Annat belopp" |
form_field
|
phone
|
mobilnummer |
form_field
|
email
|
e-postadress |
form_field
|
pnr
|
personnummer |
form_button
|
fetch_address
|
"Hämta adress" (adress från personnummer) |
form_link
|
manual_contact_info
|
"Jag vill fylla i adress själv" |
form_button
|
to_payment_method
|
knappen vidare till betalmetod-steget |
| click_classes | click_id | Element |
|---|---|---|
form_radio
|
payment_method
|
betalmetod-radioknapp; click_value = vald metod |
form_button
|
choose_payment_method
|
"Fortsätt med …" (bekräftar vald metod) |
| click_classes | click_id | Element |
|---|---|---|
form_button
|
fetch_account_details
|
"Hämta bankuppgifter" (open banking) |
form_field
|
clearing_number
|
clearingnummer |
form_field
|
account_number
|
kontonummer |
form_dropdown
|
bank
|
bank-dropdown |
form_button
|
start_payment
|
"Godkänn med BankID" (skickar medgivandet) |
form_button
|
complete_donation
|
"Öppna BankID på denna enhet" på signeringsskärmen |
Varför inte GTM:s inbyggda klick-triggers?
Checkoutens gränssnitt renderas i shadow DOM i alla inbäddningslägen (modal-
och sticky-inbäddningarna lägger dessutom till ytterligare en shadow-gräns).
Webbläsaren döljer element innanför en shadow-gräns för GTM:s inbyggda Click
Classes/Click ID-variabler – de ser bara det yttre värdelementet, aldrig det
klickade elementet.
repejo_click
pushas av Repejo själv inifrån komponenten och fungerar därför i alla
inbäddningslägen – använd den. (Spårade element bär även kategoriklassen och ett
id, t.ex. class="form_button" id="start_payment",
som egna lyssnare med composedPath kan läsa.) Agent-vänlig Markdown-version av
hela referensen finns på /docs/gtm-datalayer.md.
Byggs en gång på servern (samma källa som serverside-reläet) och
skickas endast
när betalningen är bekräftad på tacksidan. De fyra valfria nycklarna
(repejo_metadata, user_data, gclid, fbclid)
tas bara med när det finns ett värde.
window.dataLayer.push({ ecommerce: null });
window.dataLayer.push({
event: "purchase",
donation_type: "recurring", // se tabell nedan
ecommerce: {
transaction_id: "rec_…", // receivable-id, annars subscription-id, annars token
value: 205.0,
currency: "SEK",
items: [{
item_name: "Monthly donation", // se tabell nedan
item_category: "recurring", // samma värde som donation_type
price: 205.0,
quantity: 1
}]
},
repejo_metadata: { … }, // publik metadata, om icke-tom
gclid: "…", // Google Ads-klick, om fångat
fbclid: "…", // Meta-klick, om fångat
user_data: { // se nedan – avstängt som standard
email: "donor@example.com", // gemener + trimmad
email_sha256: "…",
phone_number_plus: "+46701234567", // svensk 0… → 46…
phone_number_plus_sha256: "…",
phone_number_noplus: "46701234567",
phone_number_noplus_sha256: "…"
}
});
donation_type
ligger på toppnivå så att en GTM-trigger som purchase + donation_type
finns
kan särskilja Repejos köp från en befintlig butiks-/shopcheckout som också
använder GA4-standardeventet purchase.
För separata Google Ads-konverteringar (t.ex. månadsgivare vs engångsgåvor):
dela på värdet enligt tabellen nedan.
donation_type,
item_name
och item_category
beror på checkout-typen.
donation_type
och item_category
har alltid samma värde:
"recurring"
/ "Monthly donation"
"onetime"
/ "Donation"
"gift_card"
/ "Gift card"
"membership"
/ "Membership"
"p2p"
/ "P2P donation"
"product"
/ "Product"
"lottery"
/ "Lottery ticket"
user_data
är avstängt som standard
och måste aktiveras per integration
(include_user_data).
Även påslaget skickas det bara med marknadsföringssamtycke, och varje
nyckel tas bara med när motsvarande värde finns. Rå e-post/telefon
ingår tillsammans med SHA-256 (telefon i två format).
Skickas enbart om Measurement ID
och API Secret
är ifyllda. Repejo POST:ar nedanstående body till
https://www.google-analytics.com/mp/collect
(eller er sGTM-endpoint) med
measurement_id
och api_secret
som query-parametrar. Samma
transaction_id
som klient-pushen, så GA4 dedupliserar. Nil-värden i
params
tas bort innan sändning.
{
"client_id": "111.222", // GA4 _ga-cookie, annars härlett från e-post
"non_personalized_ads": false,
"user_id": "sha256(e-post)", // när e-post finns
"user_data": { // endast om include_user_data=true
"sha256_email_address": ["…"],
"sha256_phone_number": ["…"] // telefon i +46-format, hashad
},
"events": [{
"name": "purchase",
"params": {
"transaction_id": "rec_…",
"value": 205.0,
"currency": "SEK",
"items": [{ item_name: "Monthly donation", item_category: "recurring",
price: 205.0, quantity: 1 }],
"donation_type": "recurring", // se tabell — samma värde som dataLayer-pushen ovan
"payment_method": "swish", // vald betalmetod, valfri
"repejo_reference": "…", // kampanj-/checkout-referens, valfri
"session_id": "…", // GA4 _ga_<MID>-cookie, valfri
"page_location": "https://…", // URL där köpet skedde, valfri
"gclid": "…", // valfri
"fbclid": "…", // valfri
"engagement_time_msec": 100
}
}]
}
?gtm_debug=1
i checkout-URL:en. Varje push loggas i DevTools-konsolen med prefixet [Repejo GTM].