> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.laposta.org/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.laposta.org/_mcp/server.

# Webhooks gebruiken voor wijzigingen in een lijst

> Met een webhook geeft Laposta een seintje aan jouw systeem zodra iemand zich aanmeldt, afmeldt of zijn gegevens wijzigt.

Met een webhook stuurt Laposta een bericht naar jouw server zodra er iets verandert in een lijst. Zo houd je jouw eigen bestand gelijk zonder dat je Laposta continu hoeft te bevragen of er iets nieuws is.

## Wanneer gebruik je een webhook?

Je gebruikt een webhook voor wijzigingen die in Laposta plaatsvinden: iemand meldt zich aan via een aanmeldformulier, past zijn gegevens aan in het voorkeurencentrum of meldt zich af via de afmeldlink. Voor wijzigingen die vanuit jouw eigen systeem komen, kun je kijken bij [relaties synchroniseren](/relaties-synchroniseren-via-de-api).

Je kunt een webhook instellen voor drie gebeurtenissen:

| Gebeurtenis   | Wanneer wordt het bericht verstuurd?              |
| ------------- | ------------------------------------------------- |
| `subscribed`  | Er komt een relatie bij in de lijst.              |
| `modified`    | De gegevens van een bestaande relatie veranderen. |
| `deactivated` | Een relatie meldt zich af of wordt verwijderd.    |

## Een webhook instellen

#### Bouw een URL die berichten kan ontvangen

Maak op je eigen server een adres dat een POST met JSON accepteert. Antwoord snel met een `200` en verwerk het bericht daarna op de achtergrond.

#### Registreer de webhook

Registreer je URL en de gewenste gebeurtenis bij Laposta:

**`curl`**

```bash title="curl"
curl https://api.laposta.nl/v2/webhook \
  -u JOUW_API_SLEUTEL: \
  -d list_id=BaImMu3JZA \
  -d event=subscribed \
  -d url=https://example.net/laposta-webhook \
  -d blocked=false
```

**`PHP`**

```php title="PHP"
$laposta = new Laposta('JOUW_API_SLEUTEL');
$webhook = $laposta->webhookApi()->create('BaImMu3JZA', [
    'event' => 'subscribed',
    'url' => 'https://example.net/laposta-webhook',
    'blocked' => false,
]);
```

Bewaar het `secret` dat in het antwoord staat. Daarmee kun je later controleren of een binnenkomend bericht echt van Laposta komt.

#### Controleer de handtekening bij elk bericht

Laposta ondertekent elk bericht met dat secret. Vergelijk de handtekening voordat je iets met de inhoud doet, anders kan iedereen die je URL kent gegevens in je systeem zetten.

## Waar je op moet letten

* Verwerk het bericht op de achtergrond, dus nadat je op het verzoek hebt geantwoord. Duurt het aan jouw kant te lang, dan loopt de aanroep in een time-out en weet je niet zeker of je alles hebt ontvangen.
* Reken op dubbele berichten. Bij twijfel stuurt Laposta een bericht opnieuw. Zorg er dus voor dat je systeem hetzelfde bericht twee keer kan verwerken zonder dat er bijvoorbeeld een dubbele relatie ontstaat.
* Zet een webhook tijdelijk uit in plaats van hem te verwijderen. Ga je onderhoud doen aan je server, zet dan `blocked` op `true` met [Webhook wijzigen](/webhooks/webhook-wijzigen). De registratie en het secret blijven dan behouden.
* Wijzigingen via de API activeren de webhook ook. Werk je zelf een relatie bij via de API, dan gaat de `modified`-webhook ook af. Houd daar rekening mee in je eigen code, anders stuur je dezelfde wijziging meteen weer terug naar Laposta.

## Gerelateerde artikelen

#### [Relaties synchroniseren via de API](/relaties-synchroniseren-via-de-api)

Houd je lijst gelijk aan je webshop of CRM: toevoegen, bijwerken, afmelden en fouten…

#### [Webhook toevoegen](/webhooks/webhook-toevoegen)

Alle parameters van het webhook-object, inclusief het signing secret.

#### [Wat zijn veelgemaakte fouten met de API?](/veelgemaakte-fouten-met-de-api)

Valkuilen bij koppelingen met de Laposta API, met de foutmelding die je krijgt en de…