NB EN

Google Tag Manager — dataLayer og sporingsoppsett

Referanse for GTM-spesialister: hvordan Entrii storefronts sender GA4-kompatible dataLayer-events, hvilke felter som følger med, og hvordan du konfigurerer triggere og variabler i GTM.

Entrii sender GA4-kompatible e-handelshendelser fra storefront til window.dataLayer via Google Tag Manager-pluginet. Artikkelen er skrevet for GTM- og GA4-spesialister som konfigurerer containere, triggere og tags — ikke for generelt backoffice-oppsett alene.

Steg av 9
  1. I Entrii er produktet den enheten som selges og havner i handlekurv og ordre. Programmer, arrangementer og programøkter er navigasjons- og innholdslag — de hjelper kunden å finne frem, men er ikke det GA4 e-handel skal måle som items i kjøpsfunnelen.

    Kontekst

    Hva det gjelder

    item_id i dataLayer

    Sidekontekst

    CMS-sider (page_view), arrangementlister, program-/dagvisninger med view_item_list

    Ikke produkt-UUID — bruk page_location / page_title, eller arrangements-/programøkt-ID ved item_list_name: events / sessions

    Produktkontekst

    Alle salgshendelser og produktlister der kunden faktisk velger billetter/varer

    Alltid Entrii product.id (produkt-UUID)

    Du har gått gjennom alle steg

  2. Sporing skjer i to lag:

    1. Plattformlag (entrii-storefront-support) — storefront pakker bygger hendelser og sender dem som entrii-analytics CustomEvents i nettleseren.

    2. GTM-plugin — lytter på entrii-analytics og mapper til dataLayer.push() for GA4 via GTM.

    Én aktiv GTM-integrasjon per tenant gjelder for alle salgskanaler på den tenanten (v1).

    Du har gått gjennom alle steg

  3. Opprett integrasjon under Konfigurasjon → Integrasjoner → Google Tag Manager:

    Felt

    Effekt

    GTM container-ID

    Lastes som GTM-XXXXXXX i storefront (<head> og noscript-iframe).

    Aktivert

    Må være på og container-ID satt for at GTM og dataLayer-mapping skal lastes.

    Consent Mode (Entrii-banner)

    Setter gtag('consent', 'default', …) med denied og viser Entrii sitt samtykkebanner (entrii_analytics_consent i localStorage).

    Ekstern CMP via GTM

    For Cookiebot, Cookie Information m.m. Skjuler Entrii-banner og gtag consent default — CMP-en i GTM styrer Consent Mode. Entrii laster kun GTM-container og dataLayer.

    Feilsøkingsmodus

    Logger [entrii-gtm] med hendelsesnavn og payload i nettleserens konsoll.

    Du har gått gjennom alle steg

  4. GTM-pluginet mapper entrii-analytics slik:

    • page_view — payload pushes direkte til dataLayer (uten event-nøkkel og uten ecommerce-objekt).

    • Alle andre hendelser — først { ecommerce: null } (tømmer forrige e-handelskontekst), deretter:

    {
      "event": "<hendelsesnavn>",
      "ecommerce": {
        "currency": "NOK",
        "...": "felter fra payload"
      }
    }
    

    Valuta settes alltid til NOK i ecommerce.currency (kan overstyres fra hendelsen hvis angitt).

    Du har gått gjennom alle steg

  5. Kolonnen Kontekst viser om hendelsen hører til side- eller produktkontekst (se steg 1).

    dataLayer event

    Kontekst

    Når

    page_view

    Side

    CMS / statiske sider i storefront

    view_item_list

    Side eller produkt

    Arrangement-/programliste (events, sessions) = sidekontekst. Produktkatalog eller billetter på arrangementside = produktkontekst

    add_to_cart

    Produkt

    Antall økes i handlekurv (etter bekreftet endring, ikke debounced wire-sync)

    remove_from_cart

    Produkt

    Linje fjernes fra handlekurv

    view_cart

    Produkt

    Checkout-skjema / handlekurvvisning åpnes

    begin_checkout

    Produkt

    Navigasjon til checkout

    add_payment_info

    Produkt

    Før redirect til betalingsløsning

    purchase

    Produkt

    Kvitteringsside — dedupliseres per ordre (se steg 9)

    Du har gått gjennom alle steg

  6. Eksemplene under for items[] gjelder produktkontekst. I sidekontekst (item_list_name: events / sessions) er item_id arrangements- eller programøkt-ID — ikke produkt-UUID. I produktkontekst sendes også product_number (Entrii produktnummer) når det er satt på produktet — nyttig som lesbar SKU i GTM utover UUID i item_id.

    Alle value, price og tax er hele kroner (avrundet fra øre internt). transaction_idpurchase er ordre-UUID (order.id).

    page_view

    {
      "page_location": "https://eksempel.no/nb/events",
      "page_title": "Arrangementer"
    }
    

    view_item_list

    Sidekontekst — arrangementsliste (item_id er arrangement-ID, ikke produkt):

    {
      "event": "view_item_list",
      "ecommerce": {
        "currency": "NOK",
        "item_list_name": "events",
        "items": [
          {
            "item_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
            "item_name": "Sommerkonsert 2026"
          }
        ]
      }
    }
    

    Produktkontekst — billetter/varer som kan kjøpes (item_id er produkt-UUID):

    {
      "event": "view_item_list",
      "ecommerce": {
        "currency": "NOK",
        "items": [
          {
            "item_id": "550e8400-e29b-41d4-a716-446655440000",
            "item_name": "Konsert — Voksen",
            "product_number": "KONSERT-VOKSEN",
            "price": 450,
            "quantity": 1
          }
        ]
      }
    }
    

    add_to_cart / remove_from_cart

    {
      "event": "add_to_cart",
      "ecommerce": {
        "currency": "NOK",
        "value": 900,
        "items": [
          {
            "item_id": "550e8400-e29b-41d4-a716-446655440000",
            "item_name": "Konsert — Voksen",
            "product_number": "KONSERT-VOKSEN",
            "price": 450,
            "quantity": 2
          }
        ]
      }
    }
    

    view_cart / begin_checkout

    {
      "event": "begin_checkout",
      "ecommerce": {
        "currency": "NOK",
        "value": 1350,
        "items": [
          {
            "item_id": "550e8400-e29b-41d4-a716-446655440000",
            "item_name": "Konsert — Voksen",
            "product_number": "KONSERT-VOKSEN",
            "price": 450,
            "quantity": 3
          }
        ]
      }
    }
    

    add_payment_info

    {
      "event": "add_payment_info",
      "ecommerce": {
        "currency": "NOK",
        "payment_type": "vipps",
        "value": 1350,
        "items": [
          {
            "item_id": "550e8400-e29b-41d4-a716-446655440000",
            "item_name": "Konsert — Voksen",
            "product_number": "KONSERT-VOKSEN",
            "price": 450,
            "quantity": 3
          }
        ]
      }
    }
    

    payment_type er slug for betalingsgateway (f.eks. vipps, stripe).

    purchase

    {
      "event": "purchase",
      "ecommerce": {
        "currency": "NOK",
        "transaction_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
        "value": 1350,
        "tax": 270,
        "items": [
          {
            "item_id": "550e8400-e29b-41d4-a716-446655440000",
            "item_name": "Konsert — Voksen",
            "product_number": "KONSERT-VOKSEN",
            "price": 450,
            "quantity": 3
          }
        ]
      }
    }
    

    items[] — felter

    Felt

    Innhold

    item_id

    Produkt-UUID (product.id) i produktkontekst. Arrangements- eller programøkt-ID i sidekontekst — se item_list_name

    item_name

    public_name eller name på produktet

    product_number

    Entrii product_number — kun produktkontekst, utelates hvis tom. Map i GTM til GA4 item-scoped custom parameter eller bruk som alternativ SKU ved rapportering

    price

    Enhetspris i hele kroner

    quantity

    Antall

    Du har gått gjennom alle steg

  7. Bruk Custom Event-triggere i GTM med Event name lik dataLayer-hendelsen (purchase, add_to_cart, osv.). Alle Entrii-hendelser inkl. page_view pushes med event-nøkkel og kan bruke Custom Event-triggere.

    Anbefalte Data Layer Variables (DLV):

    • ecommerce.transaction_id

    • ecommerce.value

    • ecommerce.tax

    • ecommerce.currency

    • ecommerce.items (inkl. product_number per vare i produktkontekst — bruk item-scoped custom parameter i GA4)

    • ecommerce.payment_type

    • ecommerce.item_list_name

    Entrii leverer en GTM-container-mal (gtm-container-template.json) med GA4 Configuration, Custom Event-triggere og GA4 Event-tags for alle storefront-hendelser (page_view gjennom purchase). E-handelstags leser hele ecommerce-objektet fra dataLayer (inkl. items, product_number, tax, payment_type og item_list_name). DLV for transaction_id, value m.m. følger med for feilsøking og egne tags. Importer malen i GTM og sett GA4 Measurement ID i variabelen Const - GA4 Measurement ID.

    Du har gått gjennom alle steg

  8. Alternativ A — Entrii-banner

    La Consent Mode (Entrii-banner) stå på og Ekstern CMP via GTM av. Da settes default consent før GTM lastes:

    gtag('consent', 'default', {
      analytics_storage: 'denied',
      ad_storage: 'denied',
      wait_for_update: 500
    });
    

    Entrii-banneret lagrer valg i localStorage (entrii_analytics_consent) og kaller gtag('consent', 'update', …).

    Alternativ B — Cookiebot / ekstern CMP i GTM

    Mange kunder har allerede Cookiebot, Cookie Information eller tilsvarende som tag i GTM-containeren. Da skal du ikke få dobbelt banner:

    1. Slå på Ekstern CMP via GTM på GTM-integrasjonen i Entrii backoffice.

    2. Entrii injiserer da kun GTM-snippet og dataLayer-mapping — ikke eget banner og ikke gtag('consent', 'default') fra Entrii.

    3. Konfigurer Cookiebot/CMP-taggen i GTM til å sette Consent Mode v2 (analytics_storage, ad_storage, ev. ad_user_data / ad_personalization). Bruk CMP-ens anbefalte GTM-mal og Consent Initialization-trigger der det støttes.'

    4. Sørg for at GA4-tags i GTM har Built-in consent checks (krever analytics storage) — da fires de først når Cookiebot har gitt samtykke.

    5. dataLayer-hendelser fra Entrii (purchase, add_to_cart, osv.) pushes fortsatt til dataLayer; GA4-tags som respekterer consent venter til CMP-en tillater det.

    Du har gått gjennom alle steg

    1. Slå på Feilsøkingsmodus på integrasjonen og se etter [entrii-gtm] i konsollen.

    2. Bruk GTM Preview og inspiser dataLayer i Tag Assistant.

    3. I GA4: aktiver DebugView og gå gjennom funnelen: liste → add_to_cart → begin_checkout → add_payment_info → purchase.

    4. purchase dedupliseres med sessionStorage (nøkkel entrii_purchase_{transaction_id}) — oppdater kvitteringssiden skal ikke sende duplikat purchase.

    Sjekkliste før produksjon:

    av 6 punkter fullført