> For the complete documentation index, see [llms.txt](https://www.boxhero.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.boxhero.io/docs/documentation/es/integraciones/webhook.md).

# Webhook

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

***

## Registro

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

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

## Comportamiento de entrega y reintento

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

* Si tu servidor responde con **HTTP 200 OK**, el evento se considera entregado correctamente.
* Si tu 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 de la carga útil 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 de la carga útil
  "payload": { // Datos específicos del evento
    ...
  },
  "created_time": "2025-08-06T09:20:48.623Z" // Marca temporal de la ocurrencia del evento (ISO 8601)
}
```

***

## Orden de eventos

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

El `created_time` campo en la carga útil del evento representa la hora real del evento. Implementa una lógica idempotente y tolerante al orden en tu controlador de webhook para manejar los eventos de forma fiable.

## Temas de eventos

{% hint style="info" %}
Si necesitas soporte para temas de eventos adicionales, ponte 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 / Ajuste de stock / Movimiento de stock).

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

<table><thead><tr><th width="207">Campo</th><th width="100" data-type="checkbox">Obligatorio</th><th>Descripción</th><th data-hidden data-type="checkbox">Obligatorio</th><th data-hidden>Descripción</th><th data-hidden>Modo de equipo</th></tr></thead><tbody><tr><td>id</td><td>true</td><td>ID único de la transacción</td><td>true</td><td>ID único del historial</td><td>Todo</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>Tipo del historial.</p><ul><li>Entrada : in</li><li>Salida : out</li><li>Ajuste : adjust</li><li>Movimiento : move</li></ul></td><td>Todo</td></tr><tr><td>socio</td><td>false</td><td>Socio</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>Elementos por producto que componen el historial</td><td>Todos los modos</td></tr><tr><td>items.id</td><td>true</td><td>ID único del artículo</td><td>true</td><td>ID único del producto</td><td>Todos los modos</td></tr><tr><td>items.name</td><td>true</td><td>Nombre del artículo</td><td>true</td><td>Nombre del producto</td><td>Todos los modos</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>Cantidad de entrada/salida/ajuste/movimiento del producto</td><td>Todos los modos</td></tr><tr><td>items.deleted</td><td>true</td><td>Si el artículo está eliminado</td><td>true</td><td>Si el producto está eliminado</td><td></td></tr><tr><td>items.from_location_new_stock_level</td><td>false</td><td>El 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>El 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>El número 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>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 carga útil del webhook – `Entrada de stock` Evento

```json
{
  "id": 16160911,
  "type": "in",
  "to_location": {
    "id": 52766,
    "name": "Almacén 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 carga útil del webhook – `Mover stock` Evento

<pre class="language-json"><code class="lang-json">{
  "id": 3692714,
  "type": "move",
  "from_location": {
    "id": 52765,
    "name": "Almacén 2",
    "deleted": false
  },
  "to_location": {
    "id": 52766,
    "name": "Almacén 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 / Ajuste de stock / Movimiento de stock) es **editada**.

<table><thead><tr><th>Campo</th><th width="100" data-type="checkbox">Obligatorio</th><th>Descripción</th><th data-hidden data-type="checkbox">Obligatorio</th><th data-hidden>Descripción</th><th data-hidden>Modo de equipo</th></tr></thead><tbody><tr><td>id</td><td>true</td><td>ID único de la transacción</td><td>true</td><td>ID único del historial</td><td>Todo</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>Tipo del historial.</p><ul><li>Entrada : in</li><li>Salida : out</li><li>Ajuste : adjust</li><li>Movimiento : move</li></ul></td><td>Todo</td></tr><tr><td>socio</td><td>false</td><td>Socio</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>Elementos por producto que componen el historial</td><td>Todos los modos</td></tr><tr><td>items.id</td><td>true</td><td>ID único del artículo</td><td>true</td><td>ID único del producto</td><td>Todos los modos</td></tr><tr><td>items.name</td><td>true</td><td>Nombre del artículo</td><td>true</td><td>Nombre del producto</td><td>Todos los modos</td></tr><tr><td>items.quantity</td><td>true</td><td>Cambio de cantidad debido a la transacción (entrada/salida/ajuste/movimiento)</td><td>true</td><td>Cantidad de entrada/salida/ajuste/movimiento del producto</td><td>Todos los modos</td></tr><tr><td>items.deleted</td><td>true</td><td>Si el artículo está eliminado</td><td>true</td><td>Si el producto está eliminado</td><td></td></tr><tr><td>items.from_location_new_stock_level</td><td>false</td><td>El 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>El 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>El número 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>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>revisión</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 carga útil del webhook – Transacción editada `Entrada de stock` Transacción

```json
{
  "id": 16160911,
  "type": "in",
  "to_location": {
    "id": 52766,
    "name": "Almacén 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 carga útil del webhook – Transacción editada `Mover stock` Transacción

```json
{
  "id": 3692714,
  "type": "move",
  "from_location": {
    "id": 52765,
    "name": "Almacén 2",
    "deleted": false
  },
  "to_location": {
    "id": 52766,
    "name": "Almacén 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                                     |
| revisión | Número de versión actual de la transacción, comenzando desde 1 |

#### Ejemplo de carga útil 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 es *no* activado al usar la <mark style="color:azul;">**`Agregar variantes de artículo`**</mark> función 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">Obligatorio</th><th data-hidden>Descripción</th><th data-hidden>Modo de equipo</th></tr></thead><tbody><tr><td>id</td><td>ID del artículo</td><td>true</td><td>ID único del historial</td><td>Todo</td></tr><tr><td>nombre</td><td>Nombre del artículo</td><td>true</td><td><p>Tipo del historial.</p><ul><li>Entrada : in</li><li>Salida : out</li><li>Ajuste : adjust</li><li>Movimiento : move</li></ul></td><td>Todo</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>costo</td><td>Costo</td><td>false</td><td></td><td></td></tr><tr><td>precio</td><td>Precio</td><td>false</td><td></td><td></td></tr><tr><td>atributos</td><td>Atributos</td><td>false</td><td></td><td></td></tr></tbody></table>

#### **Ejemplo de carga útil – 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 caducidad",
      "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 es *no* activado *f*o mediante 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 <mark style="color:azul;">**`Importar Excel`**</mark> función.
{% endhint %}

<table><thead><tr><th width="318">Campo</th><th>Descripción</th><th data-hidden data-type="checkbox">Obligatorio</th><th data-hidden>Descripción</th><th data-hidden>Modo de equipo</th></tr></thead><tbody><tr><td>id</td><td>ID del artículo</td><td>true</td><td>ID único del historial</td><td>Todo</td></tr><tr><td>nombre</td><td>Nombre del artículo</td><td>true</td><td><p>Tipo del historial.</p><ul><li>Entrada : in</li><li>Salida : out</li><li>Ajuste : adjust</li><li>Movimiento : move</li></ul></td><td>Todo</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>costo</td><td>Costo</td><td>false</td><td></td><td></td></tr><tr><td>precio</td><td>Precio</td><td>false</td><td></td><td></td></tr><tr><td>atributos</td><td>Atributos</td><td>false</td><td></td><td></td></tr></tbody></table>

#### **Ejemplo de carga útil – 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 caducidad",
      "type": "date",
      "value": "2027-08-07"
    },
    {
      "id": 668272,
      "name": "Stock de seguridad",
      "type": "number",
      "value": 33
    }
  ]
}
```

### `item/delete`

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

{% hint style="warning" %}
**Nota**: Este evento es *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">Obligatorio</th><th data-hidden>Descripción</th><th data-hidden>Modo de equipo</th></tr></thead><tbody><tr><td>id</td><td>ID del artículo</td><td>true</td><td>ID único del historial</td><td>Todo</td></tr></tbody></table>

#### Ejemplo de carga útil **– Artículo eliminado**

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