> ## 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.

# Envoyer des webhooks vers votre propre système

> L'intégration Webhooks envoie un événement JSON signé vers votre propre endpoint quand Foliant génère un document ou termine un export.

L'intégration **Webhooks** s'adresse aux développeurs. Elle envoie un événement JSON vers l'adresse HTTPS de votre choix chaque fois qu'il se passe quelque chose dans Foliant. Votre propre système peut ainsi réagir, par exemple en archivant chaque facture PDF ou en récupérant un export terminé.

Webhooks est en bêta. Si vous ne le voyez pas dans **Paramètres › Intégrations**, il n'est pas encore proposé à votre boutique. Contactez le support pour demander l'accès.

## Événements

| Événement | Envoyé quand |
| - | - |
| `document.generated` (**Document généré**) | Foliant crée un document pour une commande : un téléchargement, un export ou un e-mail d'envoi de PDF. |
| `export.completed` (**Export terminé**) | Un export groupé est prêt. |

## Connecter les webhooks

1. Dans Foliant, allez dans **Paramètres › Intégrations**.

2. Sur **Webhooks**, cliquez sur **Connecter**.

3. Renseignez les paramètres :

   | Champ | Que saisir |
   | - | - |
   | **URL de l'endpoint** | L'adresse à laquelle Foliant envoie les événements. Elle doit utiliser HTTPS, par exemple `https://example.com/webhooks/foliant`. |
   | **Secret de signature** | Facultatif. Avec un secret, chaque requête est signée pour que vous puissiez vérifier qu'elle provient de Foliant. |
   | **Événements** | Les événements à envoyer. Les deux sont sélectionnés par défaut. |

4. Cliquez sur **Connecter**.

Vous pouvez modifier l'URL, le secret et les événements plus tard dans **Paramètres** sur la page de l'intégration.

## Contenu de chaque requête

Foliant envoie une requête `POST` avec un corps JSON :

```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": { }
}
```

### Données de `document.generated`

* `template` : l'`uuid` et le `name` du modèle.
* `document_type` : `invoice`, `credit_note`, `quote`, ou vide pour les autres documents.
* `order` : son `id`, son `name` et son `type` (commandes ou commandes provisoires).
* `refund_id` et `fulfillment_id`, quand le document concerne un remboursement ou une expédition.
* `document_number` et `issued_at`, pour les documents numérotés.
* `source` : la façon dont il a été créé, par exemple `download`, `admin_download`, `export` ou `email`.
* `export` : l'ID de l'export, quand le document fait partie d'un export.
* `generated_at`.

### Données de `export.completed`

* `export` : son `uuid`, `order_type`, `template_uuids`, le nombre de commandes (`orders`), `orders_skipped` (supprimées après avoir été choisies) et `documents`, `requested_by` (`merchant` ou `customer`) et `completed_at`.
* `download_url` : un lien pour télécharger l'export, et `download_url_expires_at`, le moment où ce lien cesse de fonctionner.
* `download_expires_at` : le moment où l'export lui-même expire.

Les événements contiennent des ID et des nombres, pas d'adresses e-mail de clients.

### En-têtes

| En-tête | Contient |
| - | - |
| `X-Foliant-Event` | L'événement, par exemple `document.generated`. |
| `X-Foliant-Delivery` | L'ID unique de l'envoi (le même que `id` dans le corps). |
| `X-Foliant-Timestamp` | Le moment de l'envoi, en secondes Unix. |
| `X-Foliant-Signature` | `sha256=` suivi de la signature. Uniquement si vous avez défini un secret de signature. |

## Vérifier la signature

La signature est un HMAC-SHA256 hexadécimal du timestamp, d'un point et du corps brut de la requête (`<timestamp>.<body>`), avec votre secret de signature comme clé. Calculez-la de votre côté et comparez-la à la valeur qui suit `sha256=` dans `X-Foliant-Signature`. Utilisez le corps brut exactement tel que reçu.

## Réponses et nouvelles tentatives

* Toute réponse 2xx compte comme livrée.
* Si votre endpoint renvoie une erreur 5xx, 408 ou 429, ou ne répond pas dans les 10 secondes, Foliant réessaie plus tard, en attendant plus longtemps à chaque fois, jusqu'à 5 tentatives.
* Les autres réponses 4xx sont définitives : Foliant ne réessaie pas.
* Chaque événement est envoyé une fois par document ou par export. Les nouvelles tentatives ne l'envoient jamais deux fois après un succès.

Chaque envoi apparaît dans **Activité** sur la page de l'intégration, où vous pouvez cliquer sur **Réessayer** pour un envoi en échec. Consultez [Activité des intégrations](https://foliant-help.iforiti.com/fr/integrations/integration-activity.md).

## Articles associés

* [Connecter et gérer une intégration](https://foliant-help.iforiti.com/fr/integrations/connect-an-integration.md)
* [Activité des intégrations](https://foliant-help.iforiti.com/fr/integrations/integration-activity.md)
* [Automatiser avec Shopify Flow](https://foliant-help.iforiti.com/fr/integrations/shopify-flow.md)
* [Exporter des PDF](https://foliant-help.iforiti.com/fr/exports/export-pdfs.md)


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