somejuan

Tracking

Server-side tracking: Hvad det er, hvad det koster, og sådan sætter du det op med Stape

Indhold

Server-side tracking betyder, at din hjemmeside sender tracking-data til din egen server i stedet for direkte til Google, Meta og TikTok. Serveren (typisk en server-side Google Tag Manager container på et subdomæne som ss.dinside.dk) tager imod data og sender dem videre til de platforme, du bruger.

Resultatet er mere komplette data, færre events tabt til adblockers og Safari, og fuld kontrol over, hvad der deles med hvem. I den her guide får du det korte svar på, hvad det er, hvad det koster, og en trin-for-trin opsætning med Stape, som er den vej, jeg selv anbefaler (og bruger på den her blog).

Om erfaringen bag: Jeg er Engagement Partner hos Obsidian, som er officiel Stape-partner. Vi har sat server-side tracking op for danske virksomheder som Ecooking, Onyx Cookware, Workwear Group, Scandinavian Biolabs og Handyhand, og flere af projekterne er udgivet som cases hos Stape. Senest har jeg selv skrevet casen om, hvordan vi fik styr på attribueringen for Sengesnedkeren, der kører en AI-bygget storefront med Shopify-checkout.

Hvad er server-side tracking?

Den tracking, de fleste kender, er client-side. Når en side loader, kører en række JavaScript-snippets i brugerens browser (GA4, Meta Pixel, TikTok Pixel osv.), og hver af dem sender data direkte til sin egen platform.

Problemet er, at browseren bestemmer meget. Safaris ITP kapper levetiden på cookies sat med JavaScript til 7 dage (og ned til 24 timer, når brugeren kommer fra en annonce). Adblockers blokerer kendte domæner som googletagmanager.com og connect.facebook.net. Og hver ekstra pixel gør siden tungere.

Med server-side sender browseren i stedet én strøm af data til din egen server. Serveren fordeler data videre til GA4, Meta Conversions API, Google Ads og så videre.

Hvordan virker server-side tracking?

Helt konkret sker der det her, når en bruger fx køber noget i din webshop:

  1. Browseren sender købs-eventet til dit eget subdomæne (fx ss.dinside.dk), ikke til Google eller Meta.
  2. Din server-container modtager det via en client (fx GA4-clienten), som oversætter requesten til et fælles event-format.
  3. Tags i server-containeren sender eventet videre til hver platform: GA4, Meta Conversions API, Google Ads, TikTok.
  4. Undervejs bestemmer du, hvad hver platform får. Du kan fjerne IP-adresser, berige med data fra dit CRM eller lade være med at sende bot-trafik videre.

Browseren taler altså kun med dig. Det er hele pointen.

Server-side tracking illustration Overblik over en server-side opsætning. Kilde: Stape

Client-side vs. server-side

Client-sideServer-side
Hvem sender data til platformeneBrugerens browserDin egen server
CookiesSat med JavaScript, kappes af Safari ITPKan sættes som HTTP-cookies fra dit eget domæne
AdblockersBlokerer kendte tracking-domænerScripts og requests går til dit eget subdomæne
Kontrol over dataPlatformen tager det, scriptet samlerDu bestemmer, hvad der sendes videre
SidehastighedÉn tung pixel pr. platformFærre scripts i browseren
PrisGratisHosting, fra 0 kr. hos Stape

Tre måder at lave server-side tracking på

“Server-side tracking” dækker i praksis over tre forskellige løsninger:

  • Server-side Google Tag Manager (sGTM): en GTM-container på din egen server, hostet hos Stape eller Google Cloud. Mest fleksibel, fordi én container kan sende til alle platforme. Det er den, denne guide handler om.
  • Direkte server-til-server (S2S): din webshop eller dit CMS sender selv events direkte til fx Meta Conversions API via et plugin eller en app, helt uden om browseren. Mange danske webshop-platforme tilbyder det som et tilvalg. Nemt, men du er låst til de platforme og events, pluginnet understøtter.
  • Færdige managed løsninger: tredjepartsværktøjer, hvor du installerer ét script, og leverandøren klarer resten mod en fast månedlig pris. Hurtigt, men dyrere og mindre gennemsigtigt end sGTM.

En vigtig afklaring, fordi der er meget forvirring om emnet: Google endte med ikke at fjerne tredjeparts-cookies i Chrome, og Privacy Sandbox blev lukket i oktober 2025. Presset på client-side tracking kommer fra Safari, Firefox, adblockers og samtykke, ikke fra en Chrome-deadline. Vil du forstå det store billede, så læs hvad er cookieless tracking.

Hvad er fordelene ved server-side tracking?

  • Mere komplette data. Færre events går tabt til adblockers og Safaris ITP, så dine tal kommer tættere på virkeligheden.
  • Længere cookie-levetid. Cookies sat af din egen server holder længere end JavaScript-cookies, som Safari sletter efter 7 dage. Det giver bedre attribuering og færre falske “nye” brugere.
  • Bedre signaler til annonceplatformene. Meta og Google optimerer på de konverteringer, de kan se. Flere konverteringer ind betyder bedre optimering ud.
  • Kontrol over data. Du bestemmer, hvilke felter der sendes til hvem, og kan fjerne persondata, før de forlader din server.
  • Hurtigere side. Færre tunge tredjeparts-scripts i browseren, fordi én datastrøm afløser mange pixels.
  • Mindre afhængighed af browseren. Din måling er ikke længere prisgivet hver ny version af Safari eller Firefox.

Hvor meget data mister du uden?

Mere end man tror. Omkring 30 % af internetbrugerne globalt bruger en adblocker i 2026. Men adblockers er faktisk den mindste del af problemet. I en større måling på over 7 millioner requests over 10 dage kom kun ca. 3 % af de genvundne requests fra adblockers, mens ca. 21 % kom fra browsernes tracking-beskyttelse (Safari ITP og lignende).

Det rammer danske sites hårdt, fordi en stor del af trafikken kommer fra iPhone og Safari. Hos Handyhand og HappyHelper stod Safari fx for godt en fjerdedel af brugerne, og på mobil-tunge webshops er andelen ofte langt højere.

Det samme mønster ser vi i vores egne setups. Her er 10 dage fra en af de server-containere, vi drifter: af ca. 362.000 requests blev kun 0,6 % reddet fra adblockers, mens 18,1 % blev reddet fra browsernes tracking-beskyttelse. Uden server-side ville næsten hver femte request være gået tabt eller have mistet sin cookie.

Stape Analytics: 18 % af requests reddet fra tracking-beskyttelse over 10 dage Stape Analytics for en af vores containere over 10 dage. Den orange del er requests, der er reddet fra tracking-beskyttelse.

Hvad det giver i praksis

Med en god opsætning måler du typisk markant flere konverteringer end med ren client-side. Offentliggjorte cases fra hele markedet ligger typisk på 15 til 60 % flere målte konverteringer, og i ekstreme tilfælde (sites med over 80 % Safari-trafik eller meget aggressive adblockere) mere end en fordobling. Her er resultaterne fra nogle af de danske projekter, vi har lavet hos Obsidian:

KundeHvad vi satte opResultat
Ecooking (skønhed, webshop)sGTM med GA4, Google Ads og Klaviyo+53 % målt omsætning og +57 % konverteringer i Google Ads over 30 dage
Onyx Cookware (køkkenudstyr, flere lande)sGTM og Enhanced Conversions+115 % målt konverteringsværdi i Google Ads
Workwear Group (arbejdstøj)Custom Loader, Cookie Keeper, Consent Mode og Enhanced Conversions+17 % målt omsætning, svarende til et syvcifret beløb i euro om året
Scandinavian Biolabs (hårpleje, abonnement)sGTM med Klaviyo+92 % målte produktvisninger og +49 % “læg i kurv”, så flere flows i Klaviyo blev udløst
Handyhand og HappyHelper (markedspladser)sGTM, webhooks og Stape Store på tværs af enheder+50 % målte events og attribuering hele vejen til betaling

Og to ældre eksempler fra mine egne kunder, som viser det samme mønster.

Meta Events Manager, med 21,87 % flere målte hændelser efter server-side via Conversions API:

Meta Events Manager: flere hændelser med server-side

Google Ads, med 85 % højere målt konverteringsværdi med server-side GTM og Enhanced Conversions, sammenlignet med importerede transaktioner fra GA i samme periode:

Google Ads: højere konverteringsværdi med server-side

Flere og bedre signaler betyder, at algoritmerne hos Meta og Google har mere at optimere på. Det er der, pengene ligger. Det ses også på prisen pr. konvertering: i offentliggjorte cases falder CPA typisk med 15 % eller mere, og i flere tilfælde med over 40 %, når platformene får flere konverteringer at optimere på.

Ulemperne

  • Det koster en månedlig hostingpris, også selvom den kan være lav.
  • Det kræver teknisk forståelse. Du skal kunne GTM, og fejl i server-containeren er sværere at opdage end i en almindelig pixel.
  • Det er en kat-og-mus-leg. Det virker rigtig godt i dag, men Apple og adblocker-udviklerne strammer løbende op.

Hvad koster server-side tracking?

Prisen består af to dele: hosting af din server-container (løbende) og opsætningen (engang). Hosting afhænger af antallet af requests (cirka: sidevisninger plus events, der sendes igennem).

Stape (anbefalet)

PlanPris pr. måned (årlig betaling)Requests pr. månedVærd at vide
Free0 kr.10.000Custom Loader, Global CDN. Fint til test
Proca. 17 USD (ca. 115 kr.)500.000Cookie Keeper, Bot Detection, 3 dages logs
Businessca. 83 USD (ca. 560 kr.)5 mio.Multi-zone, 10 dages logs, op til 20 domæner
Enterpriseca. 167 USD (ca. 1.130 kr.)20 mio.Op til 50 domæner, account manager

Priserne er fra Stapes prisside i oktober 2026. Betaler du månedligt i stedet for årligt, er det ca. 20 % dyrere. For de fleste små og mellemstore danske sites er Pro rigeligt.

Google Cloud Run (gør det selv)

Kører du selv containeren på Google Cloud, anbefaler Google 2 til 3 instanser i produktion. Regn med ca. 45 USD pr. instans, altså ca. 90 til 135 USD om måneden. Hertil kommer logging, som let kan løbe op, hvis du ikke skruer ned for den. Det giver mest kontrol, men kræver, at du selv holder øje med drift og regning. En offentliggjort sammenligning af samme trafik viste, at Cloud Run endte omkring 3 gange så dyrt som Stape, når logging og ekstra instanser er regnet med.

Gratis mellemvej: Google Tag Gateway

Google Tag Gateway serverer Googles egne scripts (gtag.js og gtm.js) fra dit eget domæne, typisk via Cloudflare. Det er gratis og hjælper mod adblockers, men det gælder kun Googles tags. Det er ikke en server-container, og du kan ikke sende data videre til Meta eller TikTok. Brug det, hvis du kun har Google-produkter og et lille budget. Ellers er server-side GTM den fulde løsning.

Hvad koster opsætningen?

Hosting er sjældent den store udgift. Det er opsætningen. På det danske marked ser priserne cirka sådan ud i 2026:

LøsningTypisk pris
Gør det selv med Stape (denne guide)Hosting fra 0 til ca. 115 kr./md plus din egen tid
Tilvalg i din webshop-platformFra ca. 90 kr./md
Bureau, enkel opsætning (GA4 og Meta)Ca. 4.500 til 10.000 kr. engang
Bureau, fuld opsætning (flere platforme, e-commerce, consent)Ca. 15.000 til 50.000 kr. engang
Managed “alt-i-en”-abonnementCa. 650 til 1.000 kr./md

Tallene er cirka-priser fra danske udbyderes egne prissider i efteråret 2026, ekskl. moms. Det, der driver prisen, er antallet af platforme (GA4, Meta, Google Ads, TikTok), om du har e-commerce med et datalag, og hvor meget test og consent-arbejde der skal til.

Hvor mange timer tager det? Til Ecooking brugte vi ca. 10 timer på en fuld opsætning med GA4, Google Ads og Klaviyo, inklusive subdomæne, test og go-live. Det er et realistisk niveau for en standard-webshop med et ordentligt datalag. Komplekse setups, fx markedspladser med flere enheder eller en headless storefront med separat checkout, tager markant længere tid.

Mit råd: kan du selv arbejde i Google Tag Manager, kan du komme langt med guiden nedenfor og Stapes Pro-plan. Har du en stor webshop med mange platforme, er en erfaren specialist pengene værd.

Sådan sætter du server-side tracking op med Stape

Den største tekniske barriere ved server-side GTM har altid været selve serveren. Stape fjerner den del: du opretter en container, peger et subdomæne på den, og så er du i gang. Her er hele flowet, fra tom konto til GA4 kørende server-side.

Inden du starter, skal du have:

  • En almindelig (web) Google Tag Manager container på dit site. Er du ny i GTM, så start med min GTM-guide.
  • En GA4-property. Se min GA4-guide, hvis du mangler den.
  • Adgang til dit domænes DNS (hos din webhost, Cloudflare, Simply eller lignende).

Trin 1: Opret en server-container i Google Tag Manager

I GTM går du til Admin, klikker på + ved siden af Container og giver den et navn (fx “dinside.dk server”). Under Target platform vælger du Server og klikker Create.

Opret server-container i GTM

Når GTM spørger, hvordan du vil hoste den, vælger du Manually provision tagging server. Kopiér strengen under Container Config. Den skal du bruge i Stape om lidt.

Container Config i GTM

Trin 2: Opret en container i Stape

Opret en konto på stape.io og klik på Create container under sGTM. Udfyld:

  • Container name: brug gerne samme navn som i GTM.
  • Container configuration: indsæt den Container Config, du lige kopierede.
  • Server location: vælg en EU-placering (fx Europe/Frankfurt). Det er det enkleste i forhold til GDPR. Har du trafik fra hele verden, findes der også en global multi-zone-mulighed på Business-planen.
  • Plan: start med Free for at teste, og opgradér til Pro, før du går live med rigtig trafik.

Efter ca. 5 minutter skifter status fra Deploying til Running.

Trin 3: Forbind dit eget subdomæne

Det her er det vigtigste trin, og det er der, mange sjusker. Uden et eget domæne kører din container på en Stape-adresse, og så mister du det meste af gevinsten (first-party cookies og beskyttelse mod adblockers).

Under Domains i din Stape-container klikker du Add custom domain. Du har tre valg:

DomænetypeEksempelHvornår
Subdomainss.dinside.dkStandardvalget for de fleste
Same origindinside.dk/metricsBedst mulig cookie-levetid, men kræver opsætning i din CDN eller server (fx Cloudflare)
Default domainStapes egen adresseKun til test

Vælg derefter CDN:

  • Stape Global CDN (gratis): scripts serveres fra en server tæt på brugeren. Kræver to CNAME-records.
  • Own CDN: trafikken går gennem din egen DNS-udbyder (typisk Cloudflare), så dit site og dit tracking-subdomæne deler IP-adresse. Det er det, Stape anbefaler for den længste cookie-levetid.

DNS-records kan du tilføje automatisk (Stape logger ind hos din DNS-udbyder via Entri) eller manuelt ved at kopiere CNAME-records over. Klik Verify, og vent. Det tager typisk 2 til 3 timer, før status står på Ready.

Trin 4: Fortæl GTM, hvor serveren bor

Tilbage i din server-container i GTM: gå til Admin, derefter Container Settings, og indsæt dit subdomæne (fx https://ss.dinside.dk) i feltet Tagging server URL.

Tagging server URL i GTM

Trin 5: Send GA4 til serveren fra din web-container

Nu skal browseren sende data til din server i stedet for direkte til Google. I din web-container åbner du dit Google Tag (det, der tidligere hed GA4 Configuration tag) med dit GA4 Measurement ID.

Under Configuration settings tilføjer du parameteren:

server_container_url = https://ss.dinside.dk

Triggeren er fortsat Initialization eller All Pages. Dine GA4 Event-tags (fx purchase eller generate_lead) behøver du ikke røre. De arver indstillingen fra Google Tag og sendes automatisk samme vej.

Trin 6: Tag imod data i server-containeren

I server-containeren skal du bruge to ting: en client, der modtager data, og et tag, der sender dem videre.

  1. Client: Gå til Clients og tjek, at der findes en GA4-client. Hvis ikke, så klik New og vælg GA4.
  2. Tag: Gå til Tags, klik New og vælg Google Analytics: GA4. Sæt Event Name til variablen {{Event Name}}, så alle events sendes med deres eget navn.
  3. Trigger: Lav en Custom trigger, der fyrer på Some Events, hvor Client Name er lig med GA4.

GA4 client i server-GTM

GA4 tag i server-GTM

Trigger: Client Name er lig med GA4

En detalje, der forvirrer mange: GA4-clients oprettet efter juni 2025 serverer ikke længere selve gtag.js-scriptet. Det klarer Web Container-clienten nu. Bruger du Stapes Custom Loader (trin 8), skal du ikke tænke mere over det.

Trin 7: Test i Preview

Start Preview i både web- og server-containeren. Preview i server-GTM åbner et tomt vindue, så du skal selv besøge dit site i en ny fane for at se requests komme ind.

Preview mode i server-GTM

Tjek, at GA4-requests går til dit subdomæne, at din GA4-client modtager dem, og at dit GA4-tag fyrer. Bekræft derefter i GA4 under Realtid eller DebugView. Når det hele virker, publicerer du begge containere.

Trin 8: Slå de vigtigste Stape power-ups til

Her bliver Stape mere end bare hosting. Under Power-ups i din container er der især tre, du skal kende:

  • Custom Loader (alle planer): serverer selve GTM-scriptet fra dit eget subdomæne under en anonym sti, så adblockers ikke kan genkende det. Vælg din platform, indtast dit web-GTM-ID, klik Generate, og udskift din normale GTM-snippet med den nye kode. Kør ikke begge snippets samtidig, det giver konflikter. Den her blog loader netop GTM på den måde.
  • Cookie Keeper (Pro og op): gemmer og genskaber dine first-party cookies, så Safari ikke sletter dem efter 7 dage. Det giver længere attribueringsvinduer og færre “nye” brugere, der i virkeligheden er tilbagevendende.
  • Bot Detection (Pro og op): markerer trafik fra bots, så du kan lade være med at sende den videre til GA4 og annonceplatformene.

Hos Workwear Group var det netop kombinationen af Custom Loader og Cookie Keeper, plus Consent Mode og hashede e-mails til Enhanced Conversions, der gav de 17 % ekstra målt omsætning.

Når det bliver mere komplekst

Guiden ovenfor dækker en klassisk webshop på ét domæne. Men mange setups er mere rodede end det. Hos Sengesnedkeren lå selve butikken på en React-storefront bygget i Lovable, mens checkout kørte i Shopify på et subdomæne. Resultatet var, at klik-ID’er fra annoncerne aldrig nåede frem til købet, at samtykket ikke fulgte med over til checkout, og at produkt-ID’er ikke matchede produktfeedet.

Løsningen var stadig Stape, men med flere værktøjer i spil: Custom Loader på et first-party endpoint, Cookie Keeper til at bære data på tværs af domæner, Stapes Shopify-app til købs-webhooks, Stape Store til deduplikering og Request Delay til at løse et kapløb mellem browser og webhook. Hele forløbet kan du læse i min case hos Stape.

Pointen er: er dit setup mere end “ét domæne, én checkout”, så planlæg ekstra tid, og test hele kunderejsen fra annonceklik til købskvittering.

Stape Power-ups med Custom Loader og Cookie Keeper slået til Power-ups i Stape. Custom Loader og Cookie Keeper er slået til (grøn prik), og Stape markerer selv Custom Loader som anbefalet.

Genvej: Stapes Setup Wizard og platform-apps

Kører du Shopify, WooCommerce, Magento eller BigCommerce, kan du springe meget af det manuelle arbejde over. Stapes Setup Wizard genererer færdige web- og server-containere med tags, triggers og variabler til GA4, Meta, Google Ads, TikTok, Pinterest og Klaviyo, og importerer dem direkte i GTM. Til Shopify findes der desuden en Stape-app, der opretter de typiske e-commerce-events automatisk.

Det er en god start, men gennemgå altid, hvad der bliver importeret. Du skal stadig kunne forklare, hvad hvert tag gør.

Næste skridt: Meta, Google Ads og resten

Når GA4 kører server-side, står infrastrukturen. Nu kan du sende data videre til andre platforme fra samme container, typisk med færdige skabeloner fra Stape eller GTM’s Community Template Gallery:

  • Meta Conversions API (CAPI): for mange den vigtigste grund til overhovedet at gå server-side. Læs mere i min guide til Facebook Conversions API.
  • Google Ads konverteringer og Enhanced Conversions.
  • TikTok Events API, Pinterest, Snapchat og LinkedIn CAPI.
  • OpenAI Conversions API til ChatGPT Ads, hvis du er begyndt at annoncere i ChatGPT.
  • Databerigelse: slå data op i fx BigQuery eller Firestore, eller send offline-konverteringer fra dit CRM.

Den vigtigste regel, når du sender det samme event både fra browseren (pixel) og serveren (CAPI), er deduplikering. Giv begge versioner samme event_id, så platformen tæller hændelsen én gang. Ellers får du dobbelte konverteringer og algoritmer, der optimerer på forkerte tal.

Server-side tracking gør ikke i sig selv din tracking lovlig. Det flytter, hvor data behandles, men du skal stadig have samtykke.

  • Consent Mode v2 er et krav, når du bruger Google Ads eller GA4 på trafik fra EU/EØS. Signalerne ad_storage, analytics_storage, ad_user_data og ad_personalization sendes med til server-containeren, og Googles tags i serveren respekterer dem automatisk. Tags til andre platforme (fx Meta) skal du selv sørge for kun fyrer med samtykke.
  • Fordelen ved server-side er kontrol: du kan hoste i EU, fjerne IP-adresser og andre persondata, før de sendes videre, og bestemme præcis, hvilke felter hver platform får.

Det vigtigste er stadig et lovligt grundlag, gyldigt samtykke og dataminimering. Vil du dykke ned i den juridiske side af GA4, så læs sådan lovliggør du Google Analytics 4.

Er det besværet værd?

Server-side er ikke for alle. En simpel tommelfingerregel:

  • Ja, sandsynligvis: du bruger reelle penge på Meta, Google eller TikTok, og/eller en stor del af din trafik kommer fra Safari og iOS. Så tjener bedre data typisk de ca. 115 kr. om måneden hjem mange gange.
  • Måske ikke endnu: du har et lille annoncebudget og få konverteringer. Så er en solid client-side opsætning med Consent Mode, eventuelt suppleret med gratis Google Tag Gateway, nok til at starte med.

Kort opsummeret

  • Server-side tracking sender data fra browseren til din egen server, som fordeler det videre. Det giver mere komplette data og mere kontrol.
  • Prisen starter ved 0 kr. hos Stape. Pro til ca. 115 kr. om måneden dækker de fleste. En standardopsætning tager ca. 10 timer.
  • Effekten ligger typisk på 15 til 60 % flere målte konverteringer. Hos danske webshops har vi set alt fra +17 % til +115 % målt værdi i Google Ads.
  • Opsætningen med Stape: server-container i GTM, container i Stape (EU), eget subdomæne, server_container_url i dit Google Tag, GA4-client og tag i serveren, test, og slå Custom Loader og Cookie Keeper til.
  • Derefter: Meta CAPI og Google Ads Enhanced Conversions, med deduplikering.

Videre læsning