# Webhook

<figure><img src="/files/bf0ed350b9dbfbfd2467a703805360dfa16c4af8" alt=""><figcaption></figcaption></figure>

***

## Registro

Puede registrar un webhook en <mark style="color:azul;">**`Configuración`**</mark> **>** <mark style="color:azul;">**`Integraciones y API`**</mark> en su equipo BoxHero.

## Comportamiento de entrega y reintento

Cuando ocurre un evento, BoxHero envía una solicitud HTTP `POST` a su endpoint de webhook registrado. El cuerpo de la solicitud contiene un payload JSON que describe el evento.

* Si su servidor responde con **HTTP 200 OK**, el evento se considera entregado correctamente.
* Si su servidor responde con **cualquier código de estado distinto de 200**, BoxHero lo trata como un fallo temporal y reintenta la entrega hasta 3 veces.

## Estructura del payload del webhook

Todos los eventos de webhook se entregan con la siguiente estructura JSON en el cuerpo de la solicitud:

```json
{
  "id": "1234", // ID único del evento
  "topic": "txs/new", // Tema del evento
  "version": 1, // Versión del esquema del payload
  "payload": { // Datos específicos del evento
    ...
  },
  "created_time": "2025-08-06T09:20:48.623Z" // Marca de tiempo de ocurrencia del evento (ISO 8601)
}
```

***

## Orden de los eventos

BoxHero **no** garantiza el orden de entrega de los eventos. Por ejemplo, un evento `item/new` puede llegar después de un evento `item/delete` del mismo elemento.

La `created_time` el campo en el payload del evento representa la hora real del evento. Implemente lógica idempotente y tolerante al orden en su manejador de webhook para procesar los eventos de forma fiable.

## Temas de evento

{% hint style="info" %}
Si necesita soporte para temas de evento adicionales, póngase en contacto con [Soporte](/docs/documentation/es/recursos/contact.md).
{% endhint %}

### `txs/new`

Se activa cuando ocurre una transacción de inventario (Entrada de stock / Salida de stock / Ajustar stock / Mover stock).

{% hint style="warning" %}
**Nota:** Este evento *no* se activa para ajustes creados mediante ediciones masivas o importaciones (por ejemplo, al agregar o actualizar artículos mediante Excel).
{% endhint %}

<table><thead><tr><th width="207">Campo</th><th width="100" data-type="checkbox">Requerido</th><th>Descripción</th><th data-hidden data-type="checkbox">필수여부</th><th data-hidden>설명</th><th data-hidden>팀모드</th></tr></thead><tbody><tr><td>id</td><td>true</td><td>ID único de la transacción</td><td>true</td><td>히스토리의 고유한 ID</td><td>전체</td></tr><tr><td>type</td><td>true</td><td>Tipo de transacción<br>(in, out, adjust, move)</td><td>true</td><td><p>히스토리의 유형.</p><ul><li>입고 : in</li><li>출고 : out</li><li>조정 : adjust</li><li>이동 : move</li></ul></td><td>전체</td></tr><tr><td>socio</td><td>false</td><td>Partner</td><td>false</td><td></td><td></td></tr><tr><td>partner.id</td><td>false</td><td>ID único del socio</td><td>false</td><td></td><td></td></tr><tr><td>partner.name</td><td>false</td><td>Nombre del socio</td><td>false</td><td></td><td></td></tr><tr><td>partner.deleted</td><td>false</td><td>Si el socio está eliminado</td><td>false</td><td></td><td></td></tr><tr><td>from_location</td><td>false</td><td>Ubicación de origen</td><td>false</td><td></td><td></td></tr><tr><td>from_location.id</td><td>false</td><td>ID único de la ubicación de origen</td><td>false</td><td></td><td></td></tr><tr><td>from_location.name</td><td>false</td><td>Nombre de la ubicación de origen</td><td>false</td><td></td><td></td></tr><tr><td>from_location.deleted</td><td>false</td><td>Si la ubicación de origen está eliminada</td><td>false</td><td></td><td></td></tr><tr><td>to_location</td><td>true</td><td>Ubicación de destino</td><td>false</td><td></td><td></td></tr><tr><td>to_location.id</td><td>true</td><td>ID único de la ubicación de destino</td><td>false</td><td></td><td></td></tr><tr><td>to_location.name</td><td>true</td><td>Nombre de la ubicación de destino</td><td>false</td><td></td><td></td></tr><tr><td>to_location.deleted</td><td>true</td><td>Si la ubicación de destino está eliminada</td><td>false</td><td></td><td></td></tr><tr><td>items</td><td>true</td><td>Líneas de artículos en la transacción</td><td>true</td><td>히스토리를 구성하는 제품별 항목</td><td>모든 모드</td></tr><tr><td>items.id</td><td>true</td><td>ID único del artículo</td><td>true</td><td>제품의 고유 ID</td><td>모든 모드</td></tr><tr><td>items.name</td><td>true</td><td>Nombre del artículo</td><td>true</td><td>제품의 이름</td><td>모든 모드</td></tr><tr><td>items.quantity</td><td>true</td><td>Cambio de inventario debido a entrada/salida/ajuste/movimiento de stock</td><td>true</td><td>해당 제품의 입고/출고/조정/이동 수량</td><td>모든 모드</td></tr><tr><td>items.deleted</td><td>true</td><td>Si el artículo está eliminado</td><td>true</td><td>삭제된 제품 여부</td><td></td></tr><tr><td>items.from_location_new_stock_level</td><td>false</td><td>Nivel de stock en la ubicación de origen después de la transacción</td><td>false</td><td></td><td></td></tr><tr><td>items.to_location_new_stock_level</td><td>true</td><td>Nivel de stock en la ubicación de destino después de la transacción</td><td>false</td><td></td><td></td></tr><tr><td>transaction_time</td><td>true</td><td>Hora de la transacción (p. ej., hora de entrada/salida de stock)</td><td>false</td><td></td><td></td></tr><tr><td>created_at</td><td>true</td><td>La hora en que se creó la transacción</td><td>false</td><td></td><td></td></tr><tr><td>created_by</td><td>true</td><td>Miembro que creó la transacción</td><td>false</td><td></td><td></td></tr><tr><td>created_by.id</td><td>true</td><td>ID único del miembro</td><td>false</td><td></td><td></td></tr><tr><td>created_by.name</td><td>true</td><td>Nombre del miembro</td><td>false</td><td></td><td></td></tr><tr><td>created_by.deleted</td><td>true</td><td>Si el miembro está eliminado</td><td>false</td><td></td><td></td></tr><tr><td>count_of_items</td><td>true</td><td>La cantidad de artículos</td><td>false</td><td></td><td></td></tr><tr><td>total_quantity</td><td>true</td><td>La cantidad total de cambio de inventario</td><td>false</td><td></td><td></td></tr><tr><td>url</td><td>true</td><td>Dirección URL para ver la página de detalles de la transacción</td><td>false</td><td></td><td></td></tr><tr><td>memo</td><td>false</td><td>Notas relacionadas con la transacción</td><td>false</td><td></td><td></td></tr></tbody></table>

#### Ejemplo de payload del webhook – `Entrada de stock` Evento

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

#### Ejemplo de payload del webhook – `Mover stock` Evento

<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`

Se envía cuando una transacción de inventario existente (Entrada de stock / Salida de stock / Ajustar stock / Mover stock) es **editada**.

<table><thead><tr><th>Campo</th><th width="100" data-type="checkbox">Requerido</th><th>Descripción</th><th data-hidden data-type="checkbox">필수여부</th><th data-hidden>설명</th><th data-hidden>팀모드</th></tr></thead><tbody><tr><td>id</td><td>true</td><td>ID único de la transacción</td><td>true</td><td>히스토리의 고유한 ID</td><td>전체</td></tr><tr><td>type</td><td>true</td><td>Tipo de transacción<br>(in, out, adjust, move)</td><td>true</td><td><p>히스토리의 유형.</p><ul><li>입고 : in</li><li>출고 : out</li><li>조정 : adjust</li><li>이동 : move</li></ul></td><td>전체</td></tr><tr><td>socio</td><td>false</td><td>Partner</td><td>false</td><td></td><td></td></tr><tr><td>partner.id</td><td>false</td><td>ID único del socio</td><td>false</td><td></td><td></td></tr><tr><td>partner.name</td><td>false</td><td>Nombre del socio</td><td>false</td><td></td><td></td></tr><tr><td>partner.deleted</td><td>false</td><td>Si el socio está eliminado</td><td>false</td><td></td><td></td></tr><tr><td>from_location</td><td>false</td><td>Ubicación de origen</td><td>false</td><td></td><td></td></tr><tr><td>from_location.id</td><td>false</td><td>ID único de la ubicación de origen</td><td>false</td><td></td><td></td></tr><tr><td>from_location.name</td><td>false</td><td>Nombre de la ubicación de origen</td><td>false</td><td></td><td></td></tr><tr><td>from_location.deleted</td><td>false</td><td>Si la ubicación de origen está eliminada</td><td>false</td><td></td><td></td></tr><tr><td>to_location</td><td>true</td><td>Ubicación de destino</td><td>false</td><td></td><td></td></tr><tr><td>to_location.id</td><td>true</td><td>ID único de la ubicación de destino</td><td>false</td><td></td><td></td></tr><tr><td>to_location.name</td><td>true</td><td>Nombre de la ubicación de destino</td><td>false</td><td></td><td></td></tr><tr><td>to_location.deleted</td><td>true</td><td>Si la ubicación de destino está eliminada</td><td>false</td><td></td><td></td></tr><tr><td>items</td><td>true</td><td>Líneas de artículos en la transacción</td><td>true</td><td>히스토리를 구성하는 제품별 항목</td><td>모든 모드</td></tr><tr><td>items.id</td><td>true</td><td>ID único del artículo</td><td>true</td><td>제품의 고유 ID</td><td>모든 모드</td></tr><tr><td>items.name</td><td>true</td><td>Nombre del artículo</td><td>true</td><td>제품의 이름</td><td>모든 모드</td></tr><tr><td>items.quantity</td><td>true</td><td>Cambio de cantidad debido a la transacción (in/out/adjust/move)</td><td>true</td><td>해당 제품의 입고/출고/조정/이동 수량</td><td>모든 모드</td></tr><tr><td>items.deleted</td><td>true</td><td>Si el artículo está eliminado</td><td>true</td><td>삭제된 제품 여부</td><td></td></tr><tr><td>items.from_location_new_stock_level</td><td>false</td><td>Nivel de stock en la ubicación de origen después de la transacción</td><td>false</td><td></td><td></td></tr><tr><td>items.to_location_new_stock_level</td><td>true</td><td>Nivel de stock en la ubicación de destino después de la transacción</td><td>false</td><td></td><td></td></tr><tr><td>transaction_time</td><td>true</td><td>Hora de la transacción (p. ej., hora de entrada/salida de stock)</td><td>false</td><td></td><td></td></tr><tr><td>created_at</td><td>true</td><td>La hora en que se creó la transacción</td><td>false</td><td></td><td></td></tr><tr><td>created_by</td><td>true</td><td>Miembro que creó la transacción</td><td>false</td><td></td><td></td></tr><tr><td>created_by.id</td><td>true</td><td>ID único del miembro</td><td>false</td><td></td><td></td></tr><tr><td>created_by.name</td><td>true</td><td>Nombre del miembro</td><td>false</td><td></td><td></td></tr><tr><td>created_by.deleted</td><td>true</td><td>Si el miembro está eliminado</td><td>false</td><td></td><td></td></tr><tr><td>count_of_items</td><td>true</td><td>La cantidad de artículos</td><td>false</td><td></td><td></td></tr><tr><td>total_quantity</td><td>true</td><td>La cantidad total de cambio de inventario</td><td>false</td><td></td><td></td></tr><tr><td>url</td><td>true</td><td>Dirección URL para ver la página de detalles de la transacción</td><td>false</td><td></td><td></td></tr><tr><td>memo</td><td>false</td><td>Notas relacionadas con la transacción</td><td>false</td><td></td><td></td></tr><tr><td>revision</td><td>true</td><td>Número de versión actual de la transacción, comenzando desde 1</td><td>false</td><td></td><td></td></tr></tbody></table>

#### Ejemplo de payload del webhook – Editado `Entrada de stock` Transacción

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

```

#### Ejemplo de payload del webhook – Editado `Mover stock` Transacción

```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`

Se envía cuando una transacción de inventario es **eliminada**.

| Campo    | Descripción                                                    |
| -------- | -------------------------------------------------------------- |
| id       | ID único de la transacción                                     |
| revision | Número de versión actual de la transacción, comenzando desde 1 |

#### Ejemplo de payload del webhook – Transacción eliminada

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

### `item/new`

Se envía cuando se agrega un nuevo artículo al inventario del equipo.

{% hint style="warning" %}
**Nota**: Este evento se *no* activa al usar la función <mark style="color:azul;">**`Agregar variantes de artículo`**</mark> o al importar artículos mediante <mark style="color:azul;">**`Importar Excel`**</mark>.
{% endhint %}

<table><thead><tr><th width="318">Campo</th><th>Descripción</th><th data-hidden data-type="checkbox">필수여부</th><th data-hidden>설명</th><th data-hidden>팀모드</th></tr></thead><tbody><tr><td>id</td><td>ID del artículo</td><td>true</td><td>히스토리의 고유한 ID</td><td>전체</td></tr><tr><td>nombre</td><td>Nombre del artículo</td><td>true</td><td><p>히스토리의 유형.</p><ul><li>입고 : in</li><li>출고 : out</li><li>조정 : adjust</li><li>이동 : move</li></ul></td><td>전체</td></tr><tr><td>sku</td><td>SKU</td><td>false</td><td></td><td></td></tr><tr><td>código de barras</td><td>Código de barras</td><td>false</td><td></td><td></td></tr><tr><td>photo_url</td><td>URL de la foto</td><td>false</td><td></td><td></td></tr><tr><td>cost</td><td>Costo</td><td>false</td><td></td><td></td></tr><tr><td>price</td><td>Precio</td><td>false</td><td></td><td></td></tr><tr><td>attrs</td><td>Atributos</td><td>false</td><td></td><td></td></tr></tbody></table>

#### **Ejemplo de payload – Artículo creado**

```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": "Categoría",
      "type": "text",
      "value": "Base"
    },
    {
      "id": 459264,
      "name": "Fecha de vencimiento",
      "type": "date",
      "value": "2027-08-07"
    },
    {
      "id": 668272,
      "name": "Stock de seguridad",
      "type": "number",
      "value": 33
    }
  ]
}
```

### `item/edit`

Se envía cuando se edita un artículo existente.

{% hint style="warning" %}
**Nota**: Este evento se *no* activado *f*or ediciones masivas realizadas a través de <mark style="color:azul;">**`Centro de datos`**</mark>**&#x20;>&#x20;**<mark style="color:azul;">**`Artículo`**</mark> o mediante la función <mark style="color:azul;">**`Importar Excel`**</mark> .
{% endhint %}

<table><thead><tr><th width="318">Campo</th><th>Descripción</th><th data-hidden data-type="checkbox">필수여부</th><th data-hidden>설명</th><th data-hidden>팀모드</th></tr></thead><tbody><tr><td>id</td><td>ID del artículo</td><td>true</td><td>히스토리의 고유한 ID</td><td>전체</td></tr><tr><td>nombre</td><td>Nombre del artículo</td><td>true</td><td><p>히스토리의 유형.</p><ul><li>입고 : in</li><li>출고 : out</li><li>조정 : adjust</li><li>이동 : move</li></ul></td><td>전체</td></tr><tr><td>sku</td><td>SKU</td><td>false</td><td></td><td></td></tr><tr><td>código de barras</td><td>Código de barras</td><td>false</td><td></td><td></td></tr><tr><td>photo_url</td><td>URL de la foto</td><td>false</td><td></td><td></td></tr><tr><td>cost</td><td>Costo</td><td>false</td><td></td><td></td></tr><tr><td>price</td><td>Precio</td><td>false</td><td></td><td></td></tr><tr><td>attrs</td><td>Atributos</td><td>false</td><td></td><td></td></tr></tbody></table>

#### **Ejemplo de payload – Artículo actualizado**

```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": "Categoría",
      "type": "text",
      "value": "Base"
    },
    {
      "id": 459264,
      "name": "Fecha de vencimiento",
      "type": "date",
      "value": "2027-08-07"
    },
    {
      "id": 668272,
      "name": "Stock de seguridad",
      "type": "number",
      "value": 33
    }
  ]
}
```

### `item/delete`

Se envía cuando un artículo se elimina del inventario del equipo.

{% hint style="warning" %}
**Nota**: Este evento se *no* activado para eliminaciones masivas realizadas a través de <mark style="color:azul;">**`Centro de datos`**</mark>**&#x20;>&#x20;**<mark style="color:azul;">**`Artículo`**</mark>.
{% endhint %}

<table><thead><tr><th width="318">Campo</th><th>Descripción</th><th data-hidden data-type="checkbox">필수여부</th><th data-hidden>설명</th><th data-hidden>팀모드</th></tr></thead><tbody><tr><td>id</td><td>ID del artículo</td><td>true</td><td>히스토리의 고유한 ID</td><td>전체</td></tr></tbody></table>

#### Ejemplo de payload **– Artículo eliminado**

```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/es/integraciones/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.
