---
title: Webhooks
image: /images/docs/getting-started/webhooks.png
info: Opdag hvordan du bruger vores Webhooks.
---

<Frame>
  <img src="/images/docs/getting-started/webhooks.png" alt="Header" />
</Frame>

## Oversigt

Webhooks i Twenty supplerer API'en ved at muliggøre **realtidsnotifikationer** til dine egne applikationer, når bestemte begivenheder sker i dit CRM. I stedet for kontinuerligt at polle API'en for ændringer, kan du konfigurere webhooks, så Twenty **sender** data til dit system, når specifikke begivenheder opstår (for eksempel når en ny post oprettes, eller en eksisterende post opdateres). Dette hjælper med at holde eksterne systemer synkroniseret med Twenty øjeblikkeligt og effektivt.

Med webhooks vil Twenty sende en HTTP POST-begæring til en URL, du angiver, som indeholder detaljer om begivenheden. You can then handle that data in your application (e.g., to update your external database, trigger workflows, or send alerts).

## Opsætning af en Webhook

For at oprette en webhook i Twenty skal du bruge **APIs & Webhooks** indstillingerne i din Twenty app:

1. **Naviger til Indstillinger:** I din Twenty applikation, gå til **Indstillinger → APIs & Webhooks**.
2. **Opret en Webhook:** Under **Webhooks** klik på **+ Opret webhook**.
3. **Indtast URL:** Angiv endpoint URL'en på din server, hvor du ønsker, at Twenty skal sende webhook-begæringer. Dette skal være en offentligt tilgængelig URL, der kan håndtere POST-begæringer.
4. **Gem:** Klik på **Gem** for at oprette webhooken. Den nye webhook vil være aktiv med det samme.

Du kan oprette flere webhooks, hvis du har behov for at sende forskellige begivenheder til forskellige endpoints. Each webhook is essentially a subscription for all relevant events (at this time, Twenty sends all event types to the given URL; filtering specific event types may be configurable in the UI). Hvis du nogensinde har brug for at fjerne en webhook, kan du slette den fra den samme indstillingsside (vælg webhooken og vælg slet).

## Events and Payloads

Når en webhook er sat op, vil Twenty sende en HTTP POST-begæring til din specificerede URL, når en triggerevent opstår i dine CRM-data. Almindelige begivenheder, der udløser webhooks, inkluderer:

- **Record Created:** e.g. a new person is added (`person.created`), a new company is created (`company.created`), a note is created (`note.created`), etc.
- **Post Opdateret:** eksempelvis opdateres en eksisterende persons information (`person.updated`), en firmapost redigeres (`company.updated`), osv.
- **Post Slettet:** eksempelvis slettes en person eller virksomhed (`person.deleted`, `company.deleted`).
- **Andre Begivenheder:** Hvis relevant, andre objektbegivenheder eller brugerdefinerede triggere (for eksempel, hvis opgaver eller andre objekter opdateres, ville lignende begivenhedstyper blive brugt som `task.created`, `note.updated`, osv.).

Webhook POST-begæringen indeholder en JSON-payload i sin krop. Payload'en vil generelt indeholde mindst to ting: typen af begivenhed, og dataene relateret til den begivenhed (ofte posten, der blev oprettet/opdateret). For eksempel, en webhook for en nyligt oprettet person kunne sende en payload som:

```
{
  "event": "person.created",
  "data": {
    "id": "abc12345",
    "firstName": "Alice",
    "lastName": "Doe",
    "email": "alice@example.com",
    "createdAt": "2025-02-10T15:30:45Z",
    "createdBy": "user_123"
  },
  "timestamp": "2025-02-10T15:30:50Z"
}
```

I dette eksempel:

- `"begivenhed"` specificerer, hvad der skete (`person.created`).
- `"data"` indeholder detaljerne om den nye post (samme information du ville få, hvis du forespurgte den person via API).
- `"tidsstempel"` er, når begivenheden fandt sted (i UTC).

Dit endpoint skal være forberedt på at modtage sådanne JSON-data via POST. Typisk vil du parse JSON'en, se på `"begivenhed"` type for at forstå, hvad der skete, og derefter bruge `"data"` i overensstemmelse hermed (f.eks., opret en ny kontakt i dit system, eller opdater en eksisterende).

**Bemærk:** Det er vigtigt at svare med en **2xx HTTP status** fra din webhook endpoint for at anerkende vellykket modtagelse. Hvis Twenty webhook afsenderen ikke får et 2xx svar, kan det betragte leverancen som mislykket. (I fremtiden kan retry-logik forsøge at gensende mislykkede webhooks, så stræb altid efter at returnere en 200 OK så hurtigt som muligt efter behandling af dataene.)

## Webhook Validering

For at sikre sikkerheden af dine webhook endepunkter, inkluderer Twenty en signatur i `X-Twenty-Webhook-Signature` headeren.

Denne signatur er en HMAC SHA256 hash af begæringens payload, beregnet ved brug af din webhook-hemmelighed.

For at validere signaturen skal du:

1. Konkatenér tidsstemplet (fra `X-Twenty-Webhook-Timestamp` headeren), et kolon og JSON-strengen af payload'en
2. Beregne HMAC SHA256 hash ved brug af din webhook-hemmelighed som nøgle ()
3. Sammenligne den resulterende heksadecimale digerering med signatur-headeren

Her er et eksempel i Node.js:

```javascript
const crypto = require("crypto");
const timestamp = "1735066639761";
const payload = JSON.stringify({...});
const secret = "your-secret";
const stringToSign = `${timestamp}:${JSON.stringify(payload)}`;
const signature = crypto.createHmac("sha256", secret)
  .update(stringToSign)
  .digest("hex");
```