Kort svar: En webhook er systemernes dørklokke: Når noget sker i ét system – fx når en ordre oprettes i WooCommerce – sender det straks en lille HTTP-besked (typisk JSON) til en URL, du har valgt. Modtageren gør så sit: bogfører, sender besked eller opdaterer lager. Forskellen fra et API-kald er retningen: Med et API spørger du selv med jævne mellemrum; med en webhook får du besked, når det sker. WooCommerce har webhooks indbygget, og med en modtager som n8n kan du bygge dit første flow uden at skrive kode.
Fagligt gennemgået: 2. oktober 2026
Webhooks er en undervurderet byggeklods i webshop-automatisering. Mange færdige integrationer bruger dem under motorhjelmen, men få shopejere ved, at de også selv kan bruge dem direkte – og dermed bygge præcis de små broer mellem systemer, som ingen har lavet et plugin til.
Denne guide forklarer mekanikken uden omsvøb, viser hvordan WooCommerce sender og signerer beskederne, og bygger et konkret første flow.
1. Hvad en webhook er – og ikke er
Tænk på forskellen mellem selv at gå ned og tjekke postkassen hvert kvarter – og at have en dørklokke, posten ringer på, når der er noget.
Det første er et API-kald: pull, hvor du spørger, og systemet svarer (se WordPress REST API i praksis). Det andet er en webhook: push, hvor systemet selv sender besked, når hændelsen sker.
Fordelene ved push er hastighed – ingen ventetid til næste tjek – og økonomi: ingen tusind tomme forespørgsler i døgnet for at fange tre hændelser. Begrænsningen er, at webhooken kun fortæller om det, der lige er sket. Skal du bruge historik eller slå ekstra data op, kombinerer du: Webhooken vækker flowet, og et API-kald henter resten. De to teknologier er ikke konkurrenter, men makkerpar.
| Egenskab | API-kald (pull) | Webhook (push) |
|---|---|---|
| Hvem tager initiativet? | Dit system spørger | Afsendersystemet sender |
| Hvornår får du data? | Ved næste forespørgsel | Når hændelsen sker |
| Historik og opslag | Ja – du kan hente det, du vil | Nej – kun den aktuelle hændelse |
| Hvis modtageren er nede | Du spørger bare igen senere | Beskeden kan fejle og skal fanges op |
2. Anatomien: URL, payload, headers og signatur
En webhook består af fire dele:
- Modtager-URL’en: adressen, beskeden sendes til – i praksis et endpoint hos din integrationsplatform eller dit eget system.
- Payloaden: selve indholdet, næsten altid JSON. For en WooCommerce-ordre fx ordrenummer, varelinjer, beløb og kundeoplysninger.
- Headers: metadata om beskeden, bl.a. hvilken hændelse der udløste den.
- Signaturen: en værdi beregnet ud fra beskeden og en fælles hemmelighed, så modtageren kan bekræfte, at beskeden er ægte – og ikke en forfalskning fra en, der har gættet URL’en.
WooCommerce sender blandt andet disse headers med hver levering:
| Header | Indhold |
|---|---|
| X-WC-Webhook-Topic | Hændelsen, fx order.created |
| X-WC-Webhook-Resource / X-WC-Webhook-Event | Ressourcen (fx order) og handlingen (fx created) |
| X-WC-Webhook-Source | Shoppens adresse |
| X-WC-Webhook-ID og X-WC-Webhook-Delivery-ID | Webhookens id og et unikt id for den enkelte levering |
| X-WC-Webhook-Signature | Base64-kodet HMAC-SHA256 af payloaden, beregnet med hemmeligheden |
Når du fejlsøger, er værktøjet at logge payloads. De fleste platforme viser hver modtaget besked råt, så du kan se præcis, hvad der kom – og hvorfor flowet reagerede, som det gjorde.
3. Webhooks i WooCommerce
WooCommerce har webhooks indbygget – der skal ingen plugins til. Under WooCommerce → Indstillinger → Avanceret → Webhooks opretter du en webhook, vælger emnet (fx ordre oprettet, ordre opdateret, produkt opdateret eller kunde oprettet), indsætter modtager-URL’en og en hemmelighed og gemmer. Fra det øjeblik sender shoppen en besked ved hver hændelse.
For webshops er „ordre oprettet“ og „ordre opdateret“ arbejdshestene. De dækker en stor del af automatiseringsbehovene – fra bogføring i e-conomic over pakkeri til interne notifikationer. WordPress selv kan tilsvarende sende webhooks via plugins eller egne kodekroge.
Bemærk leveringsmåden: WooCommerce afsender som udgangspunkt beskederne i baggrunden via shoppens kø for planlagte handlinger. En sund server og pålidelige planlagte jobs er derfor en del af fundamentet (se planlagte opgaver, der bare kører).
4. Byg dit første flow på en time

Et godt første flow til at lære mekanikken: „Når en ordre over 1.000 kr. oprettes, så send besked i teamets chat.“
- Opret et workflow i din automatiseringsplatform med en webhook-trigger. Platformen giver dig en modtager-URL.
- Opret webhooken i WooCommerce på emnet „ordre oprettet“ med den URL og en hemmelighed.
- Lav et testkøb, og se payloaden lande i platformen. Nu kan du se ordredata strømme ind.
- Tilføj et filter (ordretotal over 1.000) og en handling (chatbesked med ordrenummer og beløb).
- Aktivér flowet.
Fra nu af har du skabelonen til alt andet: Skift filteret og handlingen, og samme mønster driver lagerbeskeder, fragtbestilling, kundelister og rapporter.
Et forkortet udsnit af en ordre-payload kan se sådan ud (felterne afhænger af din opsætning):
{
"id": 1234,
"status": "processing",
"currency": "DKK",
"total": "1249.00",
"billing": { "first_name": "Anna", "email": "[email protected]" },
"line_items": [ { "name": "Vandflaske", "quantity": 2, "total": "999.20" } ]
}
5. Validér signaturen
Bygger du selv modtageren, skal den beregne signaturen af den rå request-body med den fælles hemmelighed og sammenligne med headeren. Et minimalt PHP-eksempel:
$payload = file_get_contents('php://input');
$received = $_SERVER['HTTP_X_WC_WEBHOOK_SIGNATURE'] ?? '';
$expected = base64_encode(hash_hmac('sha256', $payload, $secret, true));
if (!hash_equals($expected, $received)) {
http_response_code(401);
exit;
}
// Beskeden er ægte – behandl den, og svar hurtigt med 200
Brug den rå body – ikke en afkodet og genkodet version – ellers passer signaturen ikke. Hent hemmeligheden fra en miljøvariabel eller konfiguration, ikke fra koden i et delt repository. Bruger du n8n, Make eller Zapier, så tjek i platformens dokumentation, hvordan signaturvalidering sættes op dér.
6. Pålidelighed: når beskeder fejler
Beskeder kan gå tabt, fx hvis modtageren var nede i to minutter. Flows med økonomisk betydning skal derfor kunne tåle det:
- Overvåg leveringsstatus. WooCommerce forsøger ikke selv at gensende en fejlet levering, og en webhook deaktiveres automatisk, når den har fejlet mere end fem gange i træk (standardværdien).
- Byg et opsamlingstjek. Hent dagligt dagens ordrer via API, og sammenlign med de behandlede, så intet falder mellem to stole.
- Gør modtageren idempotent. Samme besked leveret to gange må ikke give dobbelt handling – tjek på ordrenummer eller levérings-id, før du opretter noget.
- Svar hurtigt. Modtageren bør kvittere med en 2xx-statuskode med det samme og lave det tunge arbejde bagefter, så leveringen ikke timer ud.
Holder en webhook op med at virke, så gennemgå status, signatur og leveringslog som beskrevet i WooCommerce webhook virker ikke.
7. Sikkerhed
Validér altid signaturen, brug kun HTTPS, og behandl modtager-URL’er og hemmeligheder som adgangskoder. Send kun de data, modtageren har brug for, og husk, at ordredata er persondata. Principperne er foldet ud i integrationssikkerhed: API-nøgler, tokens og mindste privilegium.
Med pålidelighed og sikkerhed på plads er webhooks både robuste og sikre – og du har fået systemernes dørklokke til at arbejde for dig døgnet rundt.
Læs også
- Hub: Automatisering og integrationer
- n8n, Make eller Zapier: vælg automatiseringsplatform
- WordPress REST API i praksis: hent og opdatér data udefra
- WooCommerce webhook virker ikke: status, signatur og leveringslog
- Integrationssikkerhed: API-nøgler, tokens og mindste privilegium
- WooCommerce hosting – LiteSpeed og NVMe til din shop hos Hostious
Ofte stillede spørgsmål om webhooks
Hvad er forskellen på en webhook og et API?
Retningen: Med et API spørger du selv og får svar (pull); en webhook sender selv besked til dig, når hændelsen sker (push). I praksis kombineres de: Webhooken vækker flowet, og API’et henter detaljerne.
Kan webhooks gå tabt?
Ja. Hvis modtageren er nede, kan leveringen fejle, og WooCommerce gensender ikke selv – efter mere end fem fejl i træk deaktiveres webhooken som standard. Overvåg leveringsstatus, og byg et dagligt opsamlingstjek via API for kritiske flows.
Er webhooks sikre nok til ordredata?
Ja, når de bruges rigtigt: HTTPS, validering af signaturen med hemmeligheden og modtager-URL’er behandlet som adgangskoder. Uden signaturtjek kan enhver, der kender URL’en, sende falske beskeder.
Skal jeg kunne programmere for at bruge webhooks?
Nej. Med en platform som n8n, Make eller Zapier får du en modtager-URL og bygger flowet visuelt. Kode bliver først nødvendig, hvis du selv vil bygge modtageren.
Udgivet 2. september 2026Opdateret 3. oktober 2026Fagligt gennemgået 2. oktober 2026
