> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.hodi.host/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Comment recevoir une notification (webhook) après chaque déploiement ?

Hodiploy peut appeler une URL à vous après chaque déploiement d'une instance, réussi ou non. Ce webhook sortant est fait pour l'automatisation : alimenter un outil de supervision, publier dans Slack ou Teams via un relais comme Zapier, Make ou n8n, déclencher une suite de tests, ou tout ce qu'une requête HTTP peut lancer.

|| À ne pas confondre avec le webhook Git *entrant*, l'URL que vous ajoutez à votre dépôt pour qu'un push déploie votre code. Celui-ci fait le chemin inverse : c'est Hodiploy qui **vous** appelle une fois le déploiement terminé.

## Quand part-il ?

Une requête est envoyée après chaque déploiement **terminé**, qu'il ait réussi ou échoué :

* **Déploiement Git** : un push sur la branche connectée a redéployé votre code (voir [Hodiploy gère-t-il le déploiement via Git ?](https://help.hodi.host/fr/article/hodiploy-gere-t-il-le-deploiement-via-git-14yny4j/))
* **Mise à jour d'Odoo** : l'image Odoo de votre instance a été mise à jour, que vous l'ayez déclenchée à la main ou qu'elle soit planifiée (voir [Puis-je planifier les mises à jour de mon instance Odoo ?](https://help.hodi.host/fr/article/puis-je-planifier-les-mises-a-jour-de-mon-instance-odoo-kp1cmb/)). Une vérification planifiée qui ne trouve **aucune mise à jour n'envoie rien** : le webhook ne parle que quand votre instance a réellement changé, ou a essayé

Le webhook est totalement indépendant du réglage **« Alerte Email »** : vous pouvez activer l'un, l'autre, les deux ou aucun.

## Comment l'activer ?

1. Ouvrez la **page de modification** de votre instance
2. Dans la section **« Paramètres de l'instance »**, repérez **« Webhook de déploiement »**
3. Collez l'URL à appeler. Elle doit être une **adresse publique en http:// ou https://**, joignable depuis internet : les adresses locales ou de réseau privé sont refusées
4. Au besoin, définissez une **clé de signature** pour pouvoir vérifier que les requêtes viennent bien de Hodiploy (voir plus bas)
5. Enregistrez

Pour le désactiver, videz l'URL et enregistrez.

## Qu'est-ce qui est envoyé ?

Une requête **POST** en JSON, avec ces en-têtes :

* `Content-Type: application/json`
* `X-Hodiploy-Event` : l'évènement et son issue, parmi `git_deploy.success`, `git_deploy.failed`, `erp_update.success`, `erp_update.failed`
* `X-Hodiploy-Signature` : seulement si une clé de signature est définie, voir plus bas

Le corps a toujours la même forme ; les champs qui ne concernent pas l'évènement valent `null`. Par exemple, après un déploiement Git réussi :

```json
{
  "event": "git_deploy",
  "state": "success",
  "instance_id": "0b6e2f7a-9c1d-4a52-8f3e-1d2c3b4a5e6f",
  "name": "my-odoo",
  "url": "https://my-odoo.example.com",
  "tool": "odoo",
  "version": "19.0",
  "repo": "git@github.com:acme/odoo-addons.git",
  "branch": "main",
  "commit_ref": "4f2a1c9e8b7d6a5f4e3d2c1b0a9f8e7d6c5b4a39",
  "commit_message": "Fix invoice report",
  "version_from": null,
  "version_to": null,
  "image_from": null,
  "image_to": null,
  "error_message": null,
  "finished_at": "2026-08-25T14:03:07.000Z"
}
```

* `state` vaut `success` ou `error` ; en cas d'`error`, `error_message` dit ce qui a échoué
* Pour une **mise à jour d'Odoo** (`event: "erp_update"`), les champs de commit valent `null` et `version_from` / `version_to` portent la version complète avant et après (par exemple de `19.0-20260801` à `19.0-20260817`), `image_from` / `image_to` les empreintes des images

Votre point de réception doit répondre avec un statut 2xx en moins de **10 secondes**. Une livraison échouée ou trop lente est journalisée de notre côté mais n'est **jamais retentée**, et elle ne retarde ni ne fait échouer le déploiement qu'elle décrit. Les redirections ne sont pas suivies.

## Vérifier la signature

Si vous définissez une clé de signature, chaque requête porte un en-tête `X-Hodiploy-Signature` de la forme `sha256=<hexadécimal>` : le **HMAC-SHA256** du corps brut de la requête, calculé avec votre clé. Recalculez-le de votre côté et rejetez tout ce qui ne correspond pas. Par exemple en Node.js :

```js
const crypto = require("crypto");

function isFromHodiploy(rawBody, signatureHeader, key) {
  const expected = "sha256=" +
    crypto.createHmac("sha256", key).update(rawBody).digest("hex");
  return signatureHeader === expected;
}
```

Calculez le HMAC sur le corps **brut**, tel que reçu, avant tout parsing ou re-sérialisation JSON.

## Une question sur le webhook ?

Si vous souhaitez voir [Hodiploy en action](https://hodiploy.app/api/demo) avant de vous lancer, ou si vous avez une question pour brancher le webhook sur vos outils, [contactez-nous](https://hodi.host/contact/), notre équipe se fera un plaisir de vous accompagner.