Sådan tracker jeg mit eget site server-side (og de konverteringer, jeg mistede)

Jeg auditerede mit eget website i denne uge, på samme måde som jeg auditerer en kundes. Og jeg fandt noget pinligt: min vigtigste konvertering, kontaktformularen, havde ikke registreret noget i flere måneder.

Ikke fordi ingen skrev til mig. Fordi min egen tracking var i stykker, og intet sagde det til mig.

Så her er hele historien: hvordan jeg tracker phillipstemann.com, hvad der gik i stykker, hvordan jeg fiksede det, og den tjekliste, jeg nu kører efter hvert redesign. Har du et WordPress-site med formularer, er der en god chance for, at det samme sker for dig.

Min opsætning i ét afsnit

Ingen Google Analytics, ingen Google Tag Manager og ingen annoncepixels i browseren. I stedet bruger jeg Traculo, et server-side tracking-plugin til WordPress. Fuld åbenhed: Jeg har selv bygget det. Events går fra browseren til et endpoint på mit eget domæne, og fra min server videre derhen, hvor de skal bruges. iubenda håndterer cookiesamtykke. Sidevisninger, scrolldybde, udgående klik, downloads og formularindsendelser trackes automatisk. Oven på det definerer jeg navngivne konverteringer: de handlinger, der rent faktisk betyder noget for min forretning.

Hvorfor server-side og ikke bare GA4?

Client-side tracking, hvor hvert script kører i den besøgendes browser, tæller for lavt. Adblockere blokerer det. Safari begrænser det. Besøgende afviser cookiebanneret. Med et teknisk publikum som mit (SEO-folk, udviklere, marketingfolk) er der mange adblockere, så en ren browseropsætning ville gå glip af en stor del af mine besøgende.

Server-side tracking sender først events til mit eget domæne. Det er first-party, så langt mindre bliver blokeret, og siden indlæser færre tredjepartsscripts, hvilket hjælper Core Web Vitals. Samtykke gælder stadig: Marketingdata sendes kun videre, hvis den besøgende har sagt ja.

Hvad gik i stykker

Traculo lader dig definere en konvertering ved at pege på et element på siden, for eksempel “en formularindsendelse i elementet med ID b4d8d1f“. Det var præcis sådan, jeg havde sat min kontaktformular og min bookingknap op.

Så redesignede jeg sitet i april. Jeg byggede formularerne om til genbrugelige Elementor-skabeloner, så de kunne bruges på flere sider. Elementor gav hvert ombygget element et nyt ID. Mine konverteringsregler pegede stadig på de gamle ID’er, som ikke længere fandtes nogen steder på sitet.

Resultatet:

  • Kontaktformular: Konverteringen matchede ingenting, så hver eneste rigtige henvendelse siden redesignet blev registreret som nul konverteringer.
  • Bookingknap: Samme problem, nul klik registreret.
  • Nyhedsbrev vs. downloads: Nyhedsbrevet og alle tre af mine gratis guides sendte folk til den samme /thank-you/-side, og den side var konverteringen. Så hver download af en tjekliste blev talt som en nyhedsbrevstilmelding.
  • Det danske site: De danske formularer brugte /da/tak/, som slet ikke blev tracket.
  • Bonus-fejl: Min kontaktformular har et “hold mig opdateret”-flueben til nyhedsbrevet. Det var ikke koblet til noget, så folk, der satte det, kom aldrig på min mailliste.

Intet af det gav en fejl. Sitet virkede, formularerne sendte mig mails, og dashboardet viste bare færre konverteringer. Det er sagen med tracking: Den fejler i stilhed.

Sådan fiksede jeg det

Jeg skrev konverteringerne om, så hvert mål har sit eget event, forankret i noget, der ikke ændrer sig ved næste redesign:

Event Hvad udløser det Hvordan det opdages
contact_form Kontaktformular sendt (EN og DA) Formular-widgettens ID i den genbrugelige skabelon
newsletter_signup En af de tre nyhedsbrevsformularer Formular-ID’er, ikke takkesiden
download_technical_seo_checklist Formularen til den tekniske SEO-tjekliste Popup-skabelonens ID
download_geo_readiness_checklist Formularen til GEO-tjeklisten Popup-skabelonens ID
download_wordpress_speed_playbook Formularen til WordPress-hastighedsguiden Popup-skabelonens ID
book_call_click Enhver “Book et møde”-knap Knapper, der linker til kontaktsiden

To detaljer, der betyder mere, end de ser ud til:

  • Tæl gennemførte indsendelser, ikke klik på Send. Traculo lytter efter Elementors eget “sendt”-event, så en formular, der fejler validering, tælles ikke med.
  • Popups matches på skabelon. Alle tre download-popups bruger en kopi af samme formular, så formular-ID’et alene kan ikke skelne dem fra hinanden. Popup-skabelonens ID kan.

Og nyhedsbrevs-fluebenet sender nu tilmeldingen videre til min mailplatform, men kun når det er sat.

Tjeklisten jeg nu kører efter hvert redesign

  1. Send hver formular én gang, på hvert sprog, og tjek at eventet kommer frem.
  2. Kig på hver konverterings antal for de seneste 7 dage. Nul er ikke en stille uge, det er en defekt opsætning, indtil det modsatte er bevist.
  3. Ét event per mål. Lad aldrig to mål dele en takkeside.
  4. Tjek at cookiebanneret stadig blokerer marketing-tags indtil samtykke.
  5. Hav måleplanen skrevet ned: eventnavn, hvad der udløser det, og hvordan det opdages. Når noget ændrer sig på sitet, ved du, hvad der skal gentestes.

Hvad jeg ville tilføje på et kundesite

Mit eget site er simpelt: Jeg kører ikke annoncer. På et kundesite ville jeg typisk tilføje conversion API’er til Meta og Google Ads, så annonceplatformene får de konverteringer, browseren misser, plus GA4, hvis teamet bruger det til analyse, og et Looker Studio-dashboard, der stiller SEO, GEO og betalt trafik op ved siden af de leads, de giver. Jeg ville også skille trafik fra ChatGPT, Perplexity og andre AI-assistenter ud som sin egen kanal, så GEO-arbejdet kan ses i leads og ikke kun på screenshots.

Vil du have mig til at kigge på din, er det nu en af mine ydelser: tracking og analytics.

Den korte version

Din tracking er kun så god som sidste gang, du testede den. Min var i stykker i flere måneder, og jeg bygger bogstaveligt talt tracking-software. Test dine formularer efter hvert redesign, giv hvert mål sit eget event, og behandl et nul som en alarm, ikke en stille uge.

Picture of Phillip Stemann
Phillip Stemann
Phillip Stemann er selvstændig konsulent inden for teknisk SEO, GEO og WordPress, baseret i Danmark. Han arbejder praktisk med site audits, crawl-optimering, Core Web Vitals og struktureret data, og hjælper brands med at ranke højere i Google og blive citeret af AI-søgeværktøjer som ChatGPT og Perplexity. Ud over konsulentarbejdet bygger Phillip SaaS-produkter inden for det samme felt, han rådgiver i. Han er grundlægger af Planzer (en daglig planlægningsapp), Traculo (server-side tracking og attribution) og Mailnaptic (email marketing med AI-drevne abonnentprofiler). At bygge og drive sine egne produkter betyder, at de strategier han anbefaler, er de samme han tester på rigtige projekter hver uge. Phillip skriver om det han rent faktisk implementerer. Hans blog dækker teknisk SEO, Generative Engine Optimization og WordPress-performance med fokus på konkrete metoder, rigtige data og resultater du kan genskabe. Ingen fyld, ingen teori uden bevis. Han sender et ugentligt nyhedsbrev hver mandag med det nyeste fra hans eksperimenter og kundearbejde.

Relaterede indlæg

download pdf cloud

Download the blog post as a PDF

I’ve made all my blog posts as PDFs so you can easily download them and read them later or share them with a colleague or friend.

Sådan tracker jeg mit eget site server-side (og de konverteringer, jeg mistede)