> ## Documentation Index
> Fetch the complete documentation index at: https://foliant-help.iforiti.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhooks naar je eigen systeem sturen

> De integratie Webhooks stuurt een ondertekend JSON-event naar je eigen endpoint wanneer Foliant een document maakt of een export afrondt.

De integratie **Webhooks** is bedoeld voor developers. Ze stuurt een JSON-event naar een HTTPS-adres dat je zelf kiest wanneer er iets gebeurt in Foliant. Zo kan je eigen systeem reageren, bijvoorbeeld door elke factuur-pdf te archiveren of een afgeronde export op te halen.

Webhooks is in bèta. Zie je het niet in **Instellingen › Integraties**? Dan is het nog niet beschikbaar voor je winkel. Neem contact op met support om toegang te vragen.

## Events

| Event | Verzonden wanneer |
| - | - |
| `document.generated` (**Document generated**) | Foliant een document voor een bestelling maakt: een download, een export of een e-mail met een pdf. |
| `export.completed` (**Export completed**) | Een bulkexport klaar is. |

## Webhooks koppelen

1. Ga in Foliant naar **Instellingen › Integraties**.

2. Klik bij **Webhooks** op **Koppelen**.

3. Vul de instellingen in:

   | Veld | Wat je invult |
   | - | - |
   | **Endpoint URL** | Het adres waar Foliant events naartoe stuurt. Het moet HTTPS gebruiken, zoals `https://example.com/webhooks/foliant`. |
   | **Signing secret** | Optioneel. Met een secret wordt elk verzoek ondertekend, zodat je kunt controleren dat het van Foliant komt. |
   | **Events** | De events die je wilt laten versturen. Standaard zijn ze allebei geselecteerd. |

4. Klik op **Koppelen**.

Je kunt de URL, het secret en de events later wijzigen via **Instellingen** op de pagina van de integratie.

## Wat elk verzoek bevat

Foliant stuurt een `POST`-verzoek met een JSON-body:

```json theme={null}
{
  "id": "a unique delivery id",
  "event": "document.generated",
  "created_at": "2026-10-11T09:30:00+00:00",
  "shop": "your-store.myshopify.com",
  "data": { }
}
```

### Data van `document.generated`

* `template`: de `uuid` en `name` van de template.
* `document_type`: `invoice`, `credit_note`, `quote`, of leeg voor andere documenten.
* `order`: de `id`, `name` en `type` (bestellingen of conceptbestellingen).
* `refund_id` en `fulfillment_id`, als het document bij een terugbetaling of een zending hoort.
* `document_number` en `issued_at`, voor genummerde documenten.
* `source`: hoe het document is gemaakt, zoals `download`, `admin_download`, `export` of `email`.
* `export`: de ID van de export, als het document deel is van een export.
* `generated_at`.

### Data van `export.completed`

* `export`: de `uuid`, `order_type`, `template_uuids`, het aantal `orders`, `orders_skipped` (verwijderd nadat ze waren gekozen) en `documents`, `requested_by` (`merchant` of `customer`) en `completed_at`.
* `download_url`: een link om de export te downloaden, en `download_url_expires_at`, het moment waarop die link niet meer werkt.
* `download_expires_at`: het moment waarop de export zelf verloopt.

Events bevatten ID's en aantallen, geen e-mailadressen van klanten.

### Headers

| Header | Bevat |
| - | - |
| `X-Foliant-Event` | Het event, zoals `document.generated`. |
| `X-Foliant-Delivery` | De unieke ID van de levering (dezelfde als `id` in de body). |
| `X-Foliant-Timestamp` | Wanneer het is verzonden, in Unix-seconden. |
| `X-Foliant-Signature` | `sha256=` gevolgd door de handtekening. Alleen als je een signing secret hebt ingesteld. |

## De handtekening controleren

De handtekening is een hex HMAC-SHA256 van de timestamp, een punt en de ruwe request-body (`<timestamp>.<body>`), met je signing secret als sleutel. Bereken hem zelf en vergelijk hem met de waarde na `sha256=` in `X-Foliant-Signature`. Gebruik de ruwe body precies zoals je die hebt ontvangen.

## Responses en nieuwe pogingen

* Elke 2xx-response telt als afgeleverd.
* Geeft je endpoint een 5xx-fout, 408 of 429, of antwoordt het niet binnen 10 seconden? Dan probeert Foliant het later opnieuw. Het wacht elke keer langer, tot maximaal 5 pogingen.
* Andere 4xx-responses zijn definitief: Foliant probeert die niet opnieuw.
* Elk event wordt één keer per document of export afgeleverd. Na een geslaagde levering wordt het nooit nog eens verstuurd.

Elke levering staat in **Activiteit** op de pagina van de integratie. Daar kun je een mislukte levering **Opnieuw proberen**. Zie [Activiteit van integraties](https://foliant-help.iforiti.com/nl/integrations/integration-activity.md).

## Gerelateerde artikelen

* [Een integratie koppelen en beheren](https://foliant-help.iforiti.com/nl/integrations/connect-an-integration.md)
* [Activiteit van integraties](https://foliant-help.iforiti.com/nl/integrations/integration-activity.md)
* [Automatiseren met Shopify Flow](https://foliant-help.iforiti.com/nl/integrations/shopify-flow.md)
* [Pdf's exporteren](https://foliant-help.iforiti.com/nl/exports/export-pdfs.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.