# Webhook

<figure><img src="/files/465239f2b29fc1fc74a867ec25efcc48890f5ce0" alt=""><figcaption></figcaption></figure>

***

## Inscription

Vous pouvez enregistrer un webhook dans <mark style="color:bleue;">**`Paramètres`**</mark> **>** <mark style="color:bleue;">**`Intégrations et API`**</mark> dans votre équipe BoxHero.

## Comportement de livraison et de nouvelle tentative

Lorsqu’un événement se produit, BoxHero envoie une requête HTTP `POST` à votre point de terminaison webhook enregistré. Le corps de la requête contient une charge utile JSON décrivant l’événement.

* Si votre serveur répond avec **HTTP 200 OK**, l’événement est considéré comme livré avec succès.
* Si votre serveur répond avec **tout code d’état différent de 200**, BoxHero le considère comme un échec temporaire et réessaie la livraison jusqu’à 3 fois.

## Structure de la charge utile du webhook

Tous les événements webhook sont livrés avec la structure JSON suivante dans le corps de la requête :

```json
{
  "id": "1234", // ID unique de l’événement
  "topic": "txs/new", // Sujet de l’événement
  "version": 1, // Version du schéma de la charge utile
  "payload": { // Données spécifiques à l’événement
    ...
  },
  "created_time": "2025-08-06T09:20:48.623Z" // Horodatage du moment où l’événement s’est produit (ISO 8601)
}
```

***

## Ordre des événements

BoxHero **ne** garantit pas l’ordre de livraison des événements. Par exemple, un événement `item/new` peut arriver après un événement `item/delete` pour le même article.

La fonctionnalité `created_time` le champ dans la charge utile de l’événement représente l’heure réelle de l’événement. Implémentez une logique idempotente et tolérante à l’ordre dans votre gestionnaire de webhook pour traiter les événements de manière fiable.

## Sujets des événements

{% hint style="info" %}
Si vous avez besoin de prise en charge pour des sujets d’événements supplémentaires, veuillez contacter [l’assistance](/docs/documentation/fr/ressources/contact.md).
{% endhint %}

### `txs/new`

Déclenché lorsqu’une transaction de stock se produit (Entrée de stock / Sortie de stock / Ajustement de stock / Transfert de stock).

{% hint style="warning" %}
**Remarque :** Cet événement est *ne* déclenché pour les ajustements créés via des modifications groupées ou des importations (par exemple, lors de l’ajout ou de la mise à jour d’articles via Excel).
{% endhint %}

<table><thead><tr><th width="207">Champ</th><th width="100" data-type="checkbox">Obligatoire</th><th>Description</th><th data-hidden data-type="checkbox">Obligation</th><th data-hidden>Description</th><th data-hidden>Mode équipe</th></tr></thead><tbody><tr><td>id</td><td>true</td><td>ID unique de la transaction</td><td>true</td><td>ID unique de l’historique</td><td>Tous</td></tr><tr><td>type</td><td>true</td><td>Type de transaction<br>(in, out, adjust, move)</td><td>true</td><td><p>Type de l’historique.</p><ul><li>Entrée : in</li><li>Sortie : out</li><li>Ajustement : adjust</li><li>Transfert : move</li></ul></td><td>Tous</td></tr><tr><td>partenaire</td><td>false</td><td>Partenaire</td><td>false</td><td></td><td></td></tr><tr><td>partner.id</td><td>false</td><td>ID unique du partenaire</td><td>false</td><td></td><td></td></tr><tr><td>partner.name</td><td>false</td><td>Nom du partenaire</td><td>false</td><td></td><td></td></tr><tr><td>partner.deleted</td><td>false</td><td>Indique si le partenaire est supprimé</td><td>false</td><td></td><td></td></tr><tr><td>from_location</td><td>false</td><td>Emplacement source</td><td>false</td><td></td><td></td></tr><tr><td>from_location.id</td><td>false</td><td>ID unique de l’emplacement source</td><td>false</td><td></td><td></td></tr><tr><td>from_location.name</td><td>false</td><td>Nom de l’emplacement source</td><td>false</td><td></td><td></td></tr><tr><td>from_location.deleted</td><td>false</td><td>Indique si l’emplacement source est supprimé</td><td>false</td><td></td><td></td></tr><tr><td>to_location</td><td>true</td><td>Emplacement de destination</td><td>false</td><td></td><td></td></tr><tr><td>to_location.id</td><td>true</td><td>ID unique de l’emplacement de destination</td><td>false</td><td></td><td></td></tr><tr><td>to_location.name</td><td>true</td><td>Nom de l’emplacement de destination</td><td>false</td><td></td><td></td></tr><tr><td>to_location.deleted</td><td>true</td><td>Indique si l’emplacement de destination est supprimé</td><td>false</td><td></td><td></td></tr><tr><td>items</td><td>true</td><td>Lignes d’articles dans la transaction</td><td>true</td><td>Articles par produit composant l’historique</td><td>Tous les modes</td></tr><tr><td>items.id</td><td>true</td><td>ID unique de l’article</td><td>true</td><td>ID unique du produit</td><td>Tous les modes</td></tr><tr><td>items.name</td><td>true</td><td>Nom de l’article</td><td>true</td><td>Nom du produit</td><td>Tous les modes</td></tr><tr><td>items.quantity</td><td>true</td><td>Variation de stock due à une entrée/sortie/ajustement/transfert</td><td>true</td><td>Quantité d’entrée/sortie/ajustement/transfert pour ce produit</td><td>Tous les modes</td></tr><tr><td>items.deleted</td><td>true</td><td>Indique si l’article est supprimé</td><td>true</td><td>Indique si le produit est supprimé</td><td></td></tr><tr><td>items.from_location_new_stock_level</td><td>false</td><td>Niveau de stock à l’emplacement source après la transaction</td><td>false</td><td></td><td></td></tr><tr><td>items.to_location_new_stock_level</td><td>true</td><td>Niveau de stock à l’emplacement de destination après la transaction</td><td>false</td><td></td><td></td></tr><tr><td>transaction_time</td><td>true</td><td>Heure de la transaction (par ex. heure d’entrée/sortie de stock)</td><td>false</td><td></td><td></td></tr><tr><td>created_at</td><td>true</td><td>Heure à laquelle la transaction a été créée</td><td>false</td><td></td><td></td></tr><tr><td>created_by</td><td>true</td><td>Membre qui a créé la transaction</td><td>false</td><td></td><td></td></tr><tr><td>created_by.id</td><td>true</td><td>ID unique du membre</td><td>false</td><td></td><td></td></tr><tr><td>created_by.name</td><td>true</td><td>Nom du membre</td><td>false</td><td></td><td></td></tr><tr><td>created_by.deleted</td><td>true</td><td>Indique si le membre est supprimé</td><td>false</td><td></td><td></td></tr><tr><td>count_of_items</td><td>true</td><td>Nombre d’articles</td><td>false</td><td></td><td></td></tr><tr><td>total_quantity</td><td>true</td><td>Quantité totale de variation de stock</td><td>false</td><td></td><td></td></tr><tr><td>url</td><td>true</td><td>Adresse URL pour consulter la page de détails de la transaction</td><td>false</td><td></td><td></td></tr><tr><td>memo</td><td>false</td><td>Notes liées à la transaction</td><td>false</td><td></td><td></td></tr></tbody></table>

#### Exemple de charge utile Webhook – `Entrée de stock` Événement

```json
{
  "id": 16160911,
  "type": "in",
  "to_location": {
    "id": 52766,
    "name": "Warehouse 3",
    "deleted": false
  },
  "items": [
    {
      "id": 14277699,
      "name": "belif Cleansing Gel Oil Enriched",
      "quantity": 2,
      "deleted": false,
      "to_location_new_stock_level": 3
    },
    {
      "id": 14277698,
      "name": "belif Aqua Bomb Jelly Cleanser",
      "quantity": 2,
      "deleted": false,
      "to_location_new_stock_level": 5
    }
  ],
  "transaction_time": "2023-04-25T05:42:27.545Z",
  "created_at": "2023-08-14T05:14:29.499Z",
  "created_by": {
    "id": 201345,
    "name": "corp",
    "deleted": false
  },
  "count_of_items": 2,
  "total_quantity": 4,
  "url": "https://web.boxhero-app.com/team/149058/mode/0#/tx/16160911"
}
```

#### Exemple de charge utile Webhook – `Déplacer le stock` Événement

<pre class="language-json"><code class="lang-json">{
  "id": 3692714,
  "type": "move",
  "from_location": {
    "id": 52765,
    "name": "Warehouse 2",
    "deleted": false
  },
  "to_location": {
    "id": 52766,
    "name": "Warehouse 3",
<strong>    "deleted": false
</strong>  },
  "items": [
    {
      "id": 14873303,
      "name": "Auto liner 3.5mm",
      "quantity": 1,
      "deleted": false,
      "from_location_new_stock_level": -1,
      "to_location_new_stock_level": 1
    }
  ],
  "transaction_time": "2025-04-25T05:42:27.545Z",
  "created_at": "2025-04-25T05:42:27.545Z",
  "created_by": {
    "id": 176829,
    "name": "Tony Lee",
    "deleted": false
  },
  "count_of_items": 1,
  "total_quantity": 1,
  "url": "https://web.boxhero-app.com/team/150581/mode/2#/ltx/3692714"
}
</code></pre>

### `txs/edit`

Envoyé lorsqu’une transaction de stock existante (Entrée de stock / Sortie de stock / Ajustement de stock / Transfert de stock) est **modifiée**.

<table><thead><tr><th>Champ</th><th width="100" data-type="checkbox">Obligatoire</th><th>Description</th><th data-hidden data-type="checkbox">Obligation</th><th data-hidden>Description</th><th data-hidden>Mode équipe</th></tr></thead><tbody><tr><td>id</td><td>true</td><td>ID unique de la transaction</td><td>true</td><td>ID unique de l’historique</td><td>Tous</td></tr><tr><td>type</td><td>true</td><td>Type de transaction<br>(in, out, adjust, move)</td><td>true</td><td><p>Type de l’historique.</p><ul><li>Entrée : in</li><li>Sortie : out</li><li>Ajustement : adjust</li><li>Transfert : move</li></ul></td><td>Tous</td></tr><tr><td>partenaire</td><td>false</td><td>Partenaire</td><td>false</td><td></td><td></td></tr><tr><td>partner.id</td><td>false</td><td>ID unique du partenaire</td><td>false</td><td></td><td></td></tr><tr><td>partner.name</td><td>false</td><td>Nom du partenaire</td><td>false</td><td></td><td></td></tr><tr><td>partner.deleted</td><td>false</td><td>Indique si le partenaire est supprimé</td><td>false</td><td></td><td></td></tr><tr><td>from_location</td><td>false</td><td>Emplacement source</td><td>false</td><td></td><td></td></tr><tr><td>from_location.id</td><td>false</td><td>ID unique de l’emplacement source</td><td>false</td><td></td><td></td></tr><tr><td>from_location.name</td><td>false</td><td>Nom de l’emplacement source</td><td>false</td><td></td><td></td></tr><tr><td>from_location.deleted</td><td>false</td><td>Indique si l’emplacement source est supprimé</td><td>false</td><td></td><td></td></tr><tr><td>to_location</td><td>true</td><td>Emplacement de destination</td><td>false</td><td></td><td></td></tr><tr><td>to_location.id</td><td>true</td><td>ID unique de l’emplacement de destination</td><td>false</td><td></td><td></td></tr><tr><td>to_location.name</td><td>true</td><td>Nom de l’emplacement de destination</td><td>false</td><td></td><td></td></tr><tr><td>to_location.deleted</td><td>true</td><td>Indique si l’emplacement de destination est supprimé</td><td>false</td><td></td><td></td></tr><tr><td>items</td><td>true</td><td>Lignes d’articles dans la transaction</td><td>true</td><td>Articles par produit composant l’historique</td><td>Tous les modes</td></tr><tr><td>items.id</td><td>true</td><td>ID unique de l’article</td><td>true</td><td>ID unique du produit</td><td>Tous les modes</td></tr><tr><td>items.name</td><td>true</td><td>Nom de l’article</td><td>true</td><td>Nom du produit</td><td>Tous les modes</td></tr><tr><td>items.quantity</td><td>true</td><td>Variation de quantité due à la transaction (in/out/adjust/move)</td><td>true</td><td>Quantité d’entrée/sortie/ajustement/transfert pour ce produit</td><td>Tous les modes</td></tr><tr><td>items.deleted</td><td>true</td><td>Indique si l’article est supprimé</td><td>true</td><td>Indique si le produit est supprimé</td><td></td></tr><tr><td>items.from_location_new_stock_level</td><td>false</td><td>Niveau de stock à l’emplacement source après la transaction</td><td>false</td><td></td><td></td></tr><tr><td>items.to_location_new_stock_level</td><td>true</td><td>Niveau de stock à l’emplacement de destination après la transaction</td><td>false</td><td></td><td></td></tr><tr><td>transaction_time</td><td>true</td><td>Heure de la transaction (par ex. heure d’entrée/sortie de stock)</td><td>false</td><td></td><td></td></tr><tr><td>created_at</td><td>true</td><td>Heure à laquelle la transaction a été créée</td><td>false</td><td></td><td></td></tr><tr><td>created_by</td><td>true</td><td>Membre qui a créé la transaction</td><td>false</td><td></td><td></td></tr><tr><td>created_by.id</td><td>true</td><td>ID unique du membre</td><td>false</td><td></td><td></td></tr><tr><td>created_by.name</td><td>true</td><td>Nom du membre</td><td>false</td><td></td><td></td></tr><tr><td>created_by.deleted</td><td>true</td><td>Indique si le membre est supprimé</td><td>false</td><td></td><td></td></tr><tr><td>count_of_items</td><td>true</td><td>Nombre d’articles</td><td>false</td><td></td><td></td></tr><tr><td>total_quantity</td><td>true</td><td>Quantité totale de variation de stock</td><td>false</td><td></td><td></td></tr><tr><td>url</td><td>true</td><td>Adresse URL pour consulter la page de détails de la transaction</td><td>false</td><td></td><td></td></tr><tr><td>memo</td><td>false</td><td>Notes liées à la transaction</td><td>false</td><td></td><td></td></tr><tr><td>révision</td><td>true</td><td>Numéro de version actuel de la transaction, à partir de 1</td><td>false</td><td></td><td></td></tr></tbody></table>

#### Exemple de charge utile Webhook – Modifiée `Entrée de stock` Transaction

```json
{
  "id": 16160911,
  "type": "in",
  "to_location": {
    "id": 52766,
    "name": "Warehouse 3",
    "deleted": false
  },
  "items": [
    {
      "id": 14277699,
      "name": "belif Cleansing Gel Oil Enriched",
      "quantity": 2,
      "deleted": false,
      "to_location_new_stock_level": 3
    },
    {
      "id": 14277698,
      "name": "belif Aqua Bomb Jelly Cleanser",
      "quantity": 2,
      "deleted": false,
      "to_location_new_stock_level": 5
    }
  ],
  "transaction_time": "2023-04-25T05:42:27.545Z",
  "created_at": "2023-08-14T05:14:29.499Z",
  "created_by": {
    "id": 201345,
    "name": "corp",
    "deleted": false
  },
  "count_of_items": 2,
  "total_quantity": 4,
  "url": "https://web.boxhero-app.com/team/149058/mode/0#/tx/16160911"
}

```

#### Exemple de charge utile Webhook – Modifiée `Déplacer le stock` Transaction

```json
{
  "id": 3692714,
  "type": "move",
  "from_location": {
    "id": 52765,
    "name": "Warehouse 2",
    "deleted": false
  },
  "to_location": {
    "id": 52766,
    "name": "Warehouse 3",
    "deleted": false
  },
  "items": [
    {
      "id": 14873303,
      "name": "Auto liner 3.5mm",
      "quantity": 1,
      "deleted": false,
      "from_location_new_stock_level": -1,
      "to_location_new_stock_level": 1
    }
  ],
  "transaction_time": "2023-04-25T05:42:27.545Z",
  "created_at": "2023-04-25T05:42:27.545Z",
  "created_by": {
    "id": 176829,
    "name": "Joy Kim",
    "deleted": false
  },
  "count_of_items": 1,
  "total_quantity": 1,
  "url": "https://web.boxhero-app.com/team/150581/mode/2#/ltx/3692714"
}

```

### `txs/delete`

Envoyé lorsqu’une transaction de stock est **supprimée**.

| Champ    | Description                                               |
| -------- | --------------------------------------------------------- |
| id       | ID unique de la transaction                               |
| révision | Numéro de version actuel de la transaction, à partir de 1 |

#### Exemple de charge utile Webhook – Transaction supprimée

```json
/{
  "id": 27036740,
  "revision": 2
}
```

### `item/new`

Envoyé lorsqu’un nouvel article est ajouté à l’inventaire de l’équipe.

{% hint style="warning" %}
**Remarque**: Cet événement est *ne* déclenché lors de l’utilisation de la fonctionnalité <mark style="color:bleue;">**`Ajouter des variantes d’article`**</mark> ou lors de l’importation d’articles via <mark style="color:bleue;">**`Importer Excel`**</mark>.
{% endhint %}

<table><thead><tr><th width="318">Champ</th><th>Description</th><th data-hidden data-type="checkbox">Obligation</th><th data-hidden>Description</th><th data-hidden>Mode équipe</th></tr></thead><tbody><tr><td>id</td><td>ID de l’article</td><td>true</td><td>ID unique de l’historique</td><td>Tous</td></tr><tr><td>nom</td><td>Nom de l’article</td><td>true</td><td><p>Type de l’historique.</p><ul><li>Entrée : in</li><li>Sortie : out</li><li>Ajustement : adjust</li><li>Transfert : move</li></ul></td><td>Tous</td></tr><tr><td>sku</td><td>SKU</td><td>false</td><td></td><td></td></tr><tr><td>code-barres</td><td>Code-barres</td><td>false</td><td></td><td></td></tr><tr><td>photo_url</td><td>URL de la photo</td><td>false</td><td></td><td></td></tr><tr><td>coût</td><td>Coût</td><td>false</td><td></td><td></td></tr><tr><td>prix</td><td>Prix</td><td>false</td><td></td><td></td></tr><tr><td>attrs</td><td>Attributs</td><td>false</td><td></td><td></td></tr></tbody></table>

#### **Exemple de charge utile – Article créé**

```json
{
  "id": 26122826,
  "name": "belif Peat Miracle Revital Cream",
  "sku": "SKU-YH2361KI",
  "barcode": "2002074321218",
  "photo_url": "https://d3l9wd8kivvlqy.cloudfront.net/ap-northeast-2/image-up-ap-northeast-2/30b0cc84-601d-493d-87fd-b7e8b5825601",
  "cost": "50000",
  "price": "65000",
  "attrs": [
    {
      "id": 413101,
      "name": "Catégorie",
      "type": "text",
      "value": "Fond de teint"
    },
    {
      "id": 459264,
      "name": "Date d’expiration",
      "type": "date",
      "value": "2027-08-07"
    },
    {
      "id": 668272,
      "name": "Stock de sécurité",
      "type": "number",
      "value": 33
    }
  ]
}
```

### `item/edit`

Envoyé lorsqu’un article existant est modifié.

{% hint style="warning" %}
**Remarque**: Cet événement est *ne* déclenché *p*our les modifications groupées effectuées via <mark style="color:bleue;">**`Centre de données`**</mark>**&#x20;>&#x20;**<mark style="color:bleue;">**`Article`**</mark> ou via la <mark style="color:bleue;">**`Importer Excel`**</mark> fonctionnalité.
{% endhint %}

<table><thead><tr><th width="318">Champ</th><th>Description</th><th data-hidden data-type="checkbox">Obligation</th><th data-hidden>Description</th><th data-hidden>Mode équipe</th></tr></thead><tbody><tr><td>id</td><td>ID de l’article</td><td>true</td><td>ID unique de l’historique</td><td>Tous</td></tr><tr><td>nom</td><td>Nom de l’article</td><td>true</td><td><p>Type de l’historique.</p><ul><li>Entrée : in</li><li>Sortie : out</li><li>Ajustement : adjust</li><li>Transfert : move</li></ul></td><td>Tous</td></tr><tr><td>sku</td><td>SKU</td><td>false</td><td></td><td></td></tr><tr><td>code-barres</td><td>Code-barres</td><td>false</td><td></td><td></td></tr><tr><td>photo_url</td><td>URL de la photo</td><td>false</td><td></td><td></td></tr><tr><td>coût</td><td>Coût</td><td>false</td><td></td><td></td></tr><tr><td>prix</td><td>Prix</td><td>false</td><td></td><td></td></tr><tr><td>attrs</td><td>Attributs</td><td>false</td><td></td><td></td></tr></tbody></table>

#### **Exemple de charge utile – Article mis à jour**

```json
{
  "id": 26122826,
  "name": "belif Peat Miracle Revital Cream",
  "sku": "SKU-YH2361KI",
  "barcode": "2002074321218",
  "photo_url": "https://d3l9wd8kivvlqy.cloudfront.net/ap-northeast-2/image-up-ap-northeast-2/30b0cc84-601d-493d-87fd-b7e8b5825601",
  "cost": "50000",
  "price": "65000",
  "attrs": [
    {
      "id": 413101,
      "name": "Catégorie",
      "type": "text",
      "value": "Fond de teint"
    },
    {
      "id": 459264,
      "name": "Date d’expiration",
      "type": "date",
      "value": "2027-08-07"
    },
    {
      "id": 668272,
      "name": "Stock de sécurité",
      "type": "number",
      "value": 33
    }
  ]
}
```

### `item/delete`

Envoyé lorsqu’un article est supprimé de l’inventaire de l’équipe.

{% hint style="warning" %}
**Remarque**: Cet événement est *ne* déclenché pour les suppressions groupées effectuées via <mark style="color:bleue;">**`Centre de données`**</mark>**&#x20;>&#x20;**<mark style="color:bleue;">**`Article`**</mark>.
{% endhint %}

<table><thead><tr><th width="318">Champ</th><th>Description</th><th data-hidden data-type="checkbox">Obligation</th><th data-hidden>Description</th><th data-hidden>Mode équipe</th></tr></thead><tbody><tr><td>id</td><td>ID de l’article</td><td>true</td><td>ID unique de l’historique</td><td>Tous</td></tr></tbody></table>

#### Exemple de charge utile **– Article supprimé**

```json
{
  "id": 26122826
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://www.boxhero.io/docs/documentation/fr/integrations/open-api/webhook.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
