---
title: "Udviklerintegration til sporbare links på eget domæne"
url: https://uselinkpilot.com/da/blog/developer-integration-for-creating-trackable-branded-links
description: "Sådan bygger du oprettelse af links ind i dit produkt: API-nøgler, oprettelseskaldet, idempotens, UTM, særtilfælde ved omdirigering, webhooks og test."
lang: da
---

Linksporing (https://uselinkpilot.com/da/blog/category/link-tracking)

# Udviklerintegration til oprettelse af sporbare links på eget domæne: en praktisk guide

Sådan bygger du oprettelse af links ind i dit produkt: API-nøgler, oprettelseskaldet, idempotens, UTM, særtilfælde ved omdirigering, webhooks og test.

LinkPilot Team (https://uselinkpilot.com/da/author/linkpilot-team) · Holdet, der udvikler og driver LinkPilot hos TetraCore, LLC 26. oktober 2026 · Om LinkPilot (https://uselinkpilot.com/da/about)

På et tidspunkt holder et team op med at lave links i hånden. Produktet skal have et delingslink pr. bruger, CMS'et skal lave en kort URL, når et indlæg bliver udgivet, og kampagneværktøjet vil have et sporet link pr. annoncemateriale. En udviklerintegration til oprettelse af sporbare links på eget domæne gør linkforkorteren til en funktion, som dine systemer kalder.

Denne guide gennemgår integrationen fra start til slut: hvad du skal beslutte, før du skriver kode, hvordan godkendelse og oprettelseskaldet virker, hvordan du gør links sporbare uden at ødelægge attributionen, de særtilfælde ved omdirigering, der giver problemer, hvor webhooks passer ind, og hvordan du tester det hele. LinkPilots API er det gennemgående eksempel, men opbygningen gælder for de fleste platforme.

## Beslut arkitekturen først

Fire beslutninger, truffet én gang, sparer det meste af omarbejdet.

- **Hvilke systemer der opretter links**, og hvad der udløser det: en udgivelse, en handling fra en bruger, en kampagnepost, der bliver gemt.
- **Hvilke felter kalderen styrer.** Som regel destinationen og tags, nogle gange en slug. Sjældent domænet, som bør være en indstilling pr. arbejdsområde eller pr. kunde.
- **Hvordan kampagnedata oversættes til sporing.** Kampagnen, kanalen og placeringen i dit system bliver til tags på linket og UTM-parametre på destinationen. Beslut koblingen, og læg den i én funktion.
- **Direkte link, deep link eller reserveside.** Et link ind i en mobilapp skal have en reserveside på nettet til folk, der ikke har appen. Beslut, om linkforkorteren tager sig af det, eller om din destination gør.

Skriv beslutningerne ned. Integrationen er mest limkode, og limkoden bør være kedelig.

## Godkend med afgrænsede nøgler

LinkPilots API godkender med bearer-nøgler, der starter med `lp_live_`, oprettes i dashboardet og findes på alle planer, også Free. Hver nøgle hører til ét arbejdsområde, så en bureauintegration bruger én nøgle pr. kundes arbejdsområde, og linkene havner automatisk det rigtige sted.

```bash
curl https://uselinkpilot.com/api/v1/me \
  -H "Authorization: Bearer lp_live_..."
```

`GET /me` returnerer arbejdsområdet, planen, grænserne, det aktuelle forbrug og nøglens budget for antal kald. Kald det ved opstart, og vis grænserne i dine egne logs, så du opdager et loft, før en kampagne gør det.

Behandl nøglen som loginoplysninger til produktion: gem den i en hemmelighedsadministrator, aldrig i et repository eller i en frontend-pakke, og når du skal give den til den, der bygger integrationen, så send den via et hemmeligt engangslink (https://uselinkpilot.com/da/tools/free-secret-link-generator). Guiden til API-nøgler (https://uselinkpilot.com/da/blog/how-to-share-api-keys-securely) gennemgår overdragelsen og rotationen.

## Opret linket

Oprettelseskaldet tager destinationen og nogle få valgfrie felter.

```bash
curl -X POST https://uselinkpilot.com/api/v1/links \
  -H "Authorization: Bearer lp_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/launch?utm_source=newsletter&utm_medium=email&utm_campaign=oct-launch",
    "slug": "oct-launch-email",
    "domain": "go.example.com",
    "title": "October launch, newsletter",
    "tags": ["oct-launch", "email"]
  }'
```

Svaret indeholder linkets ID, den korte URL og de metadata, du sendte. Gem ID'et ved siden af din egen post. Det er det, du bruger til at læse, opdatere eller slette linket senere. `GET /links` viser links med de nyeste først og cursor-paginering (`{ data, next_cursor }`), og `GET /links/{id}` og `DELETE /links/{id}` handler på ét link.

Nogle få regler holder integrationen ærlig:

- **Byg destinationens URL i koden**, inklusive UTM-tags, ud fra dine kampagnefelter. Tags, der tastes i hånden, glider fra hinanden. UTM-playbooken (https://uselinkpilot.com/da/blog/utm-parameters-complete-playbook) fastlægger konventionerne.
- **Lad platformen generere slugs**, medmindre et menneske skal læse dem. Når du selv sætter slugs, så afled dem af kampagne, kanal og placering, med små bogstaver og bindestreger, og håndter en konflikt ved at tilføje et kort suffiks og prøve igen én gang.
- **Gør oprettelsen idempotent.** Knyt hver oprettelse til dit eget post-ID, så et nyt forsøg efter en timeout finder det eksisterende link i stedet for at lave et nyt. Tilbyder platformen ikke en idempotensnøgle, så tjek `GET /links` for dit tag eller din slug, før du opretter.
- **Masseoprettelse er en løkke med backoff.** Overhold budgettet for antal kald fra `/me`, vent og prøv igen ved 429, og log hver fejl sammen med den post, den hørte til.

Til scripts og lokale værktøjer pakker CLI'en `linkpilot` på npm de samme kald ind, og serveren `@uselinkpilot/mcp` gør dem tilgængelige for AI-agenter. Begge er open source på GitHub under TetraCoreHQ.

## Gør links sporbare uden at ødelægge attributionen

Hvert klik på et link, der er oprettet via API'et, registreres præcis som et link, der er lavet i dashboardet: tidspunkt, henviser, enhed, browser, land, region, en bot-markering og en saltet hash i stedet for IP-adressen. Det giver dig antallet på linkniveau. Attributionen på destinationen afhænger stadig af, at URL'en kommer frem i god behold.

- **Bevar forespørgselsparametrene gennem omdirigeringen.** Test et link med redirect-tjekkeren (https://uselinkpilot.com/da/tools/redirect-checker), og bekræft, at UTM-tags er med i den endelige URL.
- **Undgå kæder.** Et kortlink, der omdirigerer til en anden omdirigering, mister parametre og hastighed. Peg på den endelige side.
- **Beslut, hvad du indsamler.** Land og enhed er samlet statistik. Et link pr. bruger, der kobles til en kundepost, er personoplysninger. Den moderne guide til linksporing (https://uselinkpilot.com/da/blog/modern-link-tracking) viser, hvad der registreres, og hvad der bevidst ikke registreres.
- **Afstem forventningerne i produktet.** Et antal klik er ikke et antal konverteringer. Vis begge, tydeligt mærket.

## Håndter særtilfældene ved omdirigering

- **Validering af destinationen.** Afvis destinationer uden HTTPS, dit eget forkorterdomæne og alt, der står på en blokeringsliste, før du opretter linket. En åben omdirigering på dit brand er et phishing-værktøj.
- **Udløbne, deaktiverede eller manglende links.** Beslut reservesiden, når linket oprettes, og sæt den, så et dødt kampagnelink lander på forsiden i stedet for en fejl. For trykte links er det bedre at redigere destinationen end nogensinde at lade dem udløbe.
- **Deep links.** Brug en destination, der finder ud af, om appen er installeret, og ellers falder tilbage til nettet, eller brug en funktion i platformen til det. Test på begge styresystemer med og uden appen installeret.
- **Kodning.** URL-kod destinationen, før du lægger den ind i JSON'en, især når den har sin egen forespørgselsstreng. Dobbelt kodning er den sædvanlige fejl.
- **Lokalisering.** Hvis ét kortlink betjener flere sprog, så find sproget på destinationen, ikke i sluggen.

## Tilføj webhooks til de hændelser, der betyder noget

Med webhooks kan resten af din stak reagere på aktivitet på links uden at spørge efter ændringer igen og igen. LinkPilot signerer hver levering med en HMAC-signatur i en header og sender hændelser for linkets livscyklus (`link.created`, `link.updated`, `link.deleted`) og hemmelighedens livscyklus (`secret.created`, `secret.viewed`, `secret.burned`). Verificer signaturen, før du parser, kvitter hurtigt for modtagelsen, behandl fra en kø, og gem hændelses-ID'er, så nye forsøg ikke gør skade. Klikdata er en rapporteringsstrøm og ikke en webhook. Læs dem via statistikken og eksporterne. Guiden til webhook-integrationer (https://uselinkpilot.com/da/blog/how-to-choose-and-use-a-link-tracking-platform-with-webhook-integrations) gennemgår, hvordan du bygger modtageren.

## Test fra start til slut, og bliv ved med at holde øje

Før integrationen rører en rigtig kampagne:

1. Opret et link med dine testtags i et arbejdsområde til test.
2. Bekræft, at svaret har det ID og den korte URL, du forventer.
3. Klik på det fra en telefon og en bærbar. Bekræft omdirigeringen, UTM-tags ved ankomsten og de to klik i statistikken med de rigtige enhedstyper.
4. Opret den samme post igen, og bekræft, at du får det samme link og ikke en dublet.
5. Slet det, og bekræft, at `link.deleted` når frem til dit webhook-endpoint, hvis du bruger et.

I produktion skal du holde øje med tre ting: fejlraten i API'et fordelt på statuskode, omdirigeringens svartid målt med et syntetisk tjek og en ugentlig afstemning af antallet af links mellem dine poster og `GET /links`. Roter API-nøglen efter en fast plan, og hver gang nogen forlader det team, der har den.

Dokumenter integrationen som et internt produkt: de felter, den accepterer, reglen for slugs, opførslen med reservesider, grænserne fra `/me`, og hvem man skal ringe til, når en kampagne rapporterer nul klik. Den næste, der skal arbejde med den, bliver glad, og ofte er det dig selv.

## Mere at læse

- Sammenligning af API'er til linkforkortere: Bitly, Dub, Short.io, TinyURL: https://uselinkpilot.com/da/blog/url-shortener-api-comparison
- Sådan vælger og bruger du en platform til linksporing med webhook-integrationer: https://uselinkpilot.com/da/blog/how-to-choose-and-use-a-link-tracking-platform-with-webhook-integrations
- Sådan deler du API-nøgler sikkert: https://uselinkpilot.com/da/blog/how-to-share-api-keys-securely
- UTM-parametre: den komplette playbook for 2026: https://uselinkpilot.com/da/blog/utm-parameters-complete-playbook

## Værktøjer til denne artikel

Gratis URL-forkorter

Gør en lang URL kort med den slug, du selv vælger.
https://uselinkpilot.com/da/tools/url-shortener

Versioner: Linkforkorter til TikTok-bio (https://uselinkpilot.com/da/tools/url-shortener/tiktok-bio) · Linkforkorter til Instagram-bio (https://uselinkpilot.com/da/tools/url-shortener/instagram-bio) · Linkforkorter til LinkedIn-opslag (https://uselinkpilot.com/da/tools/url-shortener/linkedin-post) · Linkforkorter til X (Twitter) (https://uselinkpilot.com/da/tools/url-shortener/twitter)

UTM-builder

Byg URL'er med kampagnetags på få sekunder.
https://uselinkpilot.com/da/tools/utm-builder

Versioner: UTM-builder til LinkedIn (https://uselinkpilot.com/da/tools/utm-builder/linkedin) · UTM-builder til Facebook (https://uselinkpilot.com/da/tools/utm-builder/facebook) · UTM-builder til e-mail (https://uselinkpilot.com/da/tools/utm-builder/email) · UTM-builder til Instagram (https://uselinkpilot.com/da/tools/utm-builder/instagram) · UTM-builder til TikTok (https://uselinkpilot.com/da/tools/utm-builder/tiktok) · UTM-builder til YouTube (https://uselinkpilot.com/da/tools/utm-builder/youtube) · UTM-builder til Google Ads (https://uselinkpilot.com/da/tools/utm-builder/google-ads) · UTM-builder til X (Twitter) (https://uselinkpilot.com/da/tools/utm-builder/twitter) · UTM-builder til Reddit (https://uselinkpilot.com/da/tools/utm-builder/reddit) · UTM-builder til Pinterest (https://uselinkpilot.com/da/tools/utm-builder/pinterest)

Tjek af omdirigeringer

Følg hele kæden af omdirigeringer for en URL.
https://uselinkpilot.com/da/tools/redirect-checker

Versioner: Omdirigeringstjek til affiliatelinks (https://uselinkpilot.com/da/tools/redirect-checker/affiliate-links) · SEO-tjek af omdirigeringer (https://uselinkpilot.com/da/tools/redirect-checker/seo-audit)

Tjek klik på links

Se klik, henvisende sider og placeringer for et kortlink.
https://uselinkpilot.com/da/tools/link-analytics

Forslag til intelligente links

Forslag fra AI til navngivning, UTM-orden og domæner med dit brand.
https://uselinkpilot.com/da/tools/smart-link-suggestions

## Ofte stillede spørgsmål

### Hvad er et sporbart link på eget domæne?

### Hvilke felter skal et API til oprettelse af links tage imod?

### Hvordan skal en integration håndtere dublerede slugs?

### Hvorfor teste forespørgselsparametre efter omdirigeringen?

### Hvad skal der ske, når et link udløber eller bliver slettet?

### Beviser klik på links, at en kampagne førte til en konvertering?

## Styr dine links bedre med LinkPilot

Sporing, UTM-parametre, QR-koder, AI-indsigter og white label-rapporter i ét arbejdsområde. Gratis at komme i gang.

Opret din gratis konto (https://uselinkpilot.com/signup)

## Læs videre

Linksporing

### Linksporing for customer success-teams: en praktisk guide

Hvor CS-teamets links findes, sporing pr. kunde uden personoplysninger i URL'en, klik læst ved siden af ibrugtagning og reglerne for privatliv.
https://uselinkpilot.com/da/blog/custom-link-tracking-for-customer-success-teams

Linksporing

### Linkforkorter med eget domæne og klikrapporter: valg og opsætning

Hvad du skal se efter i en linkforkorter med eget domæne og klikrapporter, hvordan du forbinder domænet med en CNAME, og hvordan du læser statistikken.
https://uselinkpilot.com/da/blog/custom-domain-link-shortener-with-click-reports

Linksporing

### Sådan integrerer du en linkforkorter med eget domæne i Slack

Sæt dit eget domæne op, installer en Slack-app, der forkorter links og gør indsatte adgangskoder til engangslinks, ret forhåndsvisninger, og se klikkene.
https://uselinkpilot.com/da/blog/how-to-integrate-a-branded-link-shortener-with-slack

## Structured data

```json
[
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [
      {
        "@type": "ListItem",
        "position": 1,
        "name": "Forside",
        "item": "https://uselinkpilot.com/da"
      },
      {
        "@type": "ListItem",
        "position": 2,
        "name": "Blog",
        "item": "https://uselinkpilot.com/da/blog"
      },
      {
        "@type": "ListItem",
        "position": 3,
        "name": "Udviklerintegration til sporbare links på eget domæne",
        "item": "https://uselinkpilot.com/da/blog/developer-integration-for-creating-trackable-branded-links"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    "@id": "https://uselinkpilot.com/da/blog/developer-integration-for-creating-trackable-branded-links#article",
    "headline": "Udviklerintegration til sporbare links på eget domæne",
    "description": "Sådan bygger du oprettelse af links ind i dit produkt: API-nøgler, oprettelseskaldet, idempotens, UTM, særtilfælde ved omdirigering, webhooks og test.",
    "inLanguage": "da",
    "datePublished": "2026-10-26",
    "dateModified": "2026-10-26",
    "image": "https://uselinkpilot.com/logo-512.png",
    "author": {
      "@type": "Organization",
      "@id": "https://uselinkpilot.com/author/linkpilot-team#organization",
      "name": "LinkPilot Team",
      "url": "https://uselinkpilot.com/da/author/linkpilot-team"
    },
    "publisher": {
      "@type": "Organization",
      "name": "LinkPilot",
      "url": "https://uselinkpilot.com",
      "logo": {
        "@type": "ImageObject",
        "url": "https://uselinkpilot.com/logo-512.png",
        "width": 512,
        "height": 512
      }
    },
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://uselinkpilot.com/da/blog/developer-integration-for-creating-trackable-branded-links"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Hvad er et sporbart link på eget domæne?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "En kort URL på et domæne, du styrer, som omdirigerer til en destination og registrerer hvert klik undervejs: tidspunkt, henviser, enhed, land og en bot-markering. Oprettet via API'et er det det samme objekt som et link, der er lavet i dashboardet."
        }
      },
      {
        "@type": "Question",
        "name": "Hvilke felter skal et API til oprettelse af links tage imod?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Destinationens URL, en valgfri slug, det domæne, linket skal ligge på, en titel og tags. Alt andet, fx UTM-parametre, hører hjemme i den destinations-URL, du sender med. LinkPilots POST /links tager præcis de felter."
        }
      },
      {
        "@type": "Question",
        "name": "Hvordan skal en integration håndtere dublerede slugs?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Behandl en konflikt om en slug som et normalt svar og ikke som en fejl, der får koden til at gå ned. Lad enten platformen generere sluggen, eller tilføj ved en konflikt et kort suffiks, og prøv igen én gang. Overskriv aldrig et eksisterende link i det stille."
        }
      },
      {
        "@type": "Question",
        "name": "Hvorfor teste forespørgselsparametre efter omdirigeringen?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Fordi en kæde af omdirigeringer, en destination, der normaliserer URL'er, eller en platform, der fjerner ukendte parametre, kan tabe dine UTM-tags, og så bliver hvert klik tilskrevet ingenting. Én test med en redirect-tjekker fanger det."
        }
      },
      {
        "@type": "Question",
        "name": "Hvad skal der ske, når et link udløber eller bliver slettet?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Den korte URL skal lande på en fornuftig reserveside og ikke på en nøgen fejlmeddelelse. Beslut reservesiden, når du opretter linket, og for links i trykt materiale er det bedre at redigere destinationen end nogensinde at lade linket udløbe."
        }
      },
      {
        "@type": "Question",
        "name": "Beviser klik på links, at en kampagne førte til en konvertering?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nej. Et klik viser, at nogen blev sendt til en destination. Konverteringer måles på destinationen og kobles via kampagnenavnet eller et signeret id. Rapporter de to ved siden af hinanden."
        }
      }
    ],
    "inLanguage": "da"
  },
  {
    "@context": "https://schema.org",
    "@type": "SoftwareApplication",
    "@id": "https://uselinkpilot.com/#software",
    "name": "LinkPilot",
    "applicationCategory": "BusinessApplication",
    "operatingSystem": "Web",
    "description": "LinkPilot is a secure link management platform for creating branded short links, tracking engagement, and sharing secrets with expiring, protected, self-destructing links.",
    "url": "https://uselinkpilot.com",
    "offers": [
      {
        "@type": "Offer",
        "name": "Free",
        "price": "0",
        "priceCurrency": "USD",
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Pro",
        "price": "29",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "29",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency",
        "price": "299",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "299",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency Plus",
        "price": "799",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "799",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Pro (yearly)",
        "price": "288",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "288",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency (yearly)",
        "price": "2988",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "2988",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency Plus (yearly)",
        "price": "7980",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "7980",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Enterprise",
        "priceSpecification": {
          "@type": "PriceSpecification",
          "priceCurrency": "USD"
        },
        "url": "https://uselinkpilot.com/pricing"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Organization",
    "@id": "https://uselinkpilot.com/#organization",
    "name": "LinkPilot",
    "alternateName": "LinkPilot by TetraCore",
    "url": "https://uselinkpilot.com",
    "contactPoint": {
      "@type": "ContactPoint",
      "contactType": "customer support",
      "email": "support@uselinkpilot.com",
      "url": "https://uselinkpilot.com/support"
    },
    "parentOrganization": {
      "@type": "Organization",
      "@id": "https://tetracorehq.com/#organization",
      "name": "TetraCore",
      "url": "https://tetracorehq.com/"
    },
    "logo": {
      "@type": "ImageObject",
      "url": "https://uselinkpilot.com/logo-512.png",
      "width": 512,
      "height": 512
    },
    "description": "LinkPilot is a secure link management platform for creating branded short links, tracking engagement, and sharing secrets with expiring, protected, self-destructing links.",
    "sameAs": [
      "https://x.com/uselinkpilot",
      "https://www.linkedin.com/company/uselinkpilot",
      "https://facebook.com/uselinkpilot",
      "https://github.com/TetraCoreHQ/linkpilot-cli",
      "https://github.com/TetraCoreHQ/linkpilot-mcp",
      "https://www.npmjs.com/package/linkpilot",
      "https://www.npmjs.com/package/@uselinkpilot/sdk",
      "https://www.npmjs.com/package/@uselinkpilot/mcp",
      "https://chromewebstore.google.com/detail/linkpilot-short-links-and/mnmppadihpcncicldpkmgknhnjkondad",
      "https://addons.mozilla.org/en-US/firefox/addon/uselinkpilot/"
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebSite",
    "name": "LinkPilot",
    "url": "https://uselinkpilot.com",
    "potentialAction": {
      "@type": "SearchAction",
      "target": "https://uselinkpilot.com/blog?q={search_term_string}",
      "query-input": "required name=search_term_string"
    }
  }
]
```