Catálogo de eventos
Cada evento de webhook con el momento en que se envía, los campos de data y un ejemplo de carga.
En esta página
Eventos que Chainlink envía a las suscripciones. Todos llegan en el mismo sobre (event, version, data, timestamp) y firmados con X-Chainlink-Signature. La suscripción y la verificación de la firma se describen en Recepción y verificación.
Recepciones
Se creó una recepción para un documento de entrada.
Campos de data
-
idinteger obligatorio -
conceptstring | null -
statusstring obligatorio -
documentobjeto | null2 campos de
document-
typestring | null -
doc_numstring | integer | null
-
-
operatorobjeto | nullLa persona que hizo el trabajo.
2 campos de
operator-
idinteger obligatorio -
namestring | null obligatorio
-
-
started_atstring (date-time) | null -
finalized_atstring (date-time) | null -
linesarray de objetos obligatorio4 campos de
lines-
item_codestring | null -
qtynumber -
batchstring | null -
serialsarray de textos
-
{
"event": "receipt.created",
"version": 1,
"data": {
"id": 5531,
"concept": "purchase_order",
"status": "pending",
"document": {
"type": "App\\Models\\DeliveryGood",
"doc_num": "OC-000318"
},
"operator": {
"id": 12,
"name": "Juan Pérez"
},
"started_at": null,
"finalized_at": null,
"lines": []
},
"timestamp": 1791302400
}
El operador finalizó la recepción; lines trae lo recibido.
Campos de data
-
idinteger obligatorio -
conceptstring | null -
statusstring obligatorio -
documentobjeto | null2 campos de
document-
typestring | null -
doc_numstring | integer | null
-
-
operatorobjeto | nullLa persona que hizo el trabajo.
2 campos de
operator-
idinteger obligatorio -
namestring | null obligatorio
-
-
started_atstring (date-time) | null -
finalized_atstring (date-time) | null -
linesarray de objetos obligatorio4 campos de
lines-
item_codestring | null -
qtynumber -
batchstring | null -
serialsarray de textos
-
{
"event": "receipt.completed",
"version": 1,
"data": {
"id": 5531,
"concept": "purchase_order",
"status": "finalized",
"document": {
"type": "App\\Models\\DeliveryGood",
"doc_num": "OC-000318"
},
"operator": {
"id": 12,
"name": "Juan Pérez"
},
"started_at": "2026-10-06T11:01:00-06:00",
"finalized_at": "2026-10-06T11:12:44-06:00",
"lines": [
{
"item_code": "P-1001",
"qty": 48,
"batch": "L2610",
"serials": []
}
]
},
"timestamp": 1791302400
}
Surtidos
Se creó un surtido para un documento de salida.
Campos de data
-
idinteger obligatorio -
conceptstring | null -
statusstring obligatorio -
documentobjeto | null2 campos de
document-
typestring | null -
doc_numstring | integer | null
-
-
operatorobjeto | nullLa persona que hizo el trabajo.
2 campos de
operator-
idinteger obligatorio -
namestring | null obligatorio
-
-
started_atstring (date-time) | null -
finalized_atstring (date-time) | null -
linesarray de objetos obligatorio4 campos de
lines-
item_codestring | null -
qtynumber -
batchstring | null -
serialsarray de textos
-
-
codestring obligatorio
{
"event": "picking.created",
"version": 1,
"data": {
"id": 6120,
"code": "PKG-6120",
"concept": "sale_order",
"status": "pending",
"document": {
"type": "App\\Models\\DispatchGood",
"doc_num": "OV-000977"
},
"operator": null,
"started_at": null,
"finalized_at": null,
"lines": []
},
"timestamp": 1791302400
}
El surtido terminó; lines trae lo surtido con lotes y series.
Campos de data
-
idinteger obligatorio -
conceptstring | null -
statusstring obligatorio -
documentobjeto | null2 campos de
document-
typestring | null -
doc_numstring | integer | null
-
-
operatorobjeto | nullLa persona que hizo el trabajo.
2 campos de
operator-
idinteger obligatorio -
namestring | null obligatorio
-
-
started_atstring (date-time) | null -
finalized_atstring (date-time) | null -
linesarray de objetos obligatorio4 campos de
lines-
item_codestring | null -
qtynumber -
batchstring | null -
serialsarray de textos
-
-
codestring obligatorio
{
"event": "picking.completed",
"version": 1,
"data": {
"id": 6120,
"code": "PKG-6120",
"concept": "sale_order",
"status": "finalized",
"document": {
"type": "App\\Models\\DispatchGood",
"doc_num": "OV-000977"
},
"operator": {
"id": 14,
"name": "Ana Ruiz"
},
"started_at": "2026-10-06T12:00:00-06:00",
"finalized_at": "2026-10-06T12:09:30-06:00",
"lines": [
{
"item_code": "P-1001",
"qty": 6,
"batch": "L2610",
"serials": []
}
]
},
"timestamp": 1791302400
}
Traspasos
Se registró un movimiento entre ubicaciones o almacenes.
Campos de data
-
idinteger obligatorio -
statusstring obligatorio -
from_whs_codestring | null -
to_whs_codestring | null -
operatorobjeto | nullLa persona que hizo el trabajo.
2 campos de
operator-
idinteger obligatorio -
namestring | null obligatorio
-
-
linesarray de objetos obligatorio6 campos de
lines-
item_codestring | null -
qtynumber -
from_positionstring | null -
to_positionstring | null -
batchstring | null -
serialstring | null
-
{
"event": "transfer.created",
"version": 1,
"data": {
"id": 880,
"status": "pending",
"from_whs_code": "CEDIS-GDL",
"to_whs_code": "CEDIS-GDL",
"operator": {
"id": 12,
"name": "Juan Pérez"
},
"lines": [
{
"item_code": "P-1001",
"qty": 12,
"from_position": "RECEPCION",
"to_position": "A-01-01-1",
"batch": "L2610",
"serial": null
}
]
},
"timestamp": 1791302400
}
El movimiento se aplicó a las existencias.
Campos de data
-
idinteger obligatorio -
statusstring obligatorio -
from_whs_codestring | null -
to_whs_codestring | null -
operatorobjeto | nullLa persona que hizo el trabajo.
2 campos de
operator-
idinteger obligatorio -
namestring | null obligatorio
-
-
linesarray de objetos obligatorio6 campos de
lines-
item_codestring | null -
qtynumber -
from_positionstring | null -
to_positionstring | null -
batchstring | null -
serialstring | null
-
{
"event": "transfer.completed",
"version": 1,
"data": {
"id": 880,
"status": "transferred",
"from_whs_code": "CEDIS-GDL",
"to_whs_code": "CEDIS-GDL",
"operator": {
"id": 12,
"name": "Juan Pérez"
},
"lines": [
{
"item_code": "P-1001",
"qty": 12,
"from_position": "RECEPCION",
"to_position": "A-01-01-1",
"batch": "L2610",
"serial": null
}
]
},
"timestamp": 1791302400
}
Órdenes de transferencia
La mercancía salió del almacén de origen.
Campos de data
-
objectstring «transfer_order» obligatorio -
idinteger obligatorio -
codestring obligatorio -
statusstring obligatorioValores:draft,released,picking,picked,in_transit,receiving,received,closed,cancelled -
status_labelstring -
headlinestring | null -
has_discrepancybooleanLo recibido no coincide con lo despachado.
-
fromobjeto obligatorio3 campos de
from-
idinteger | null -
codestring | null -
namestring | null
-
-
toobjeto obligatorio3 campos de
to-
idinteger | null -
codestring | null -
namestring | null
-
-
priorityinteger -
reasonstring | null -
due_atstring (date-time) | null -
lines_countinteger -
unitsobjeto obligatorio4 campos de
units-
requestednumber -
pickednumber -
dispatchednumber -
receivednumber
-
-
dispatched_atstring (date-time) | null -
received_atstring (date-time) | null -
closed_atstring (date-time) | null -
seal_numberstring | null -
vehicle_platestring | null -
carrier_idinteger | null -
external_refstring | null -
sourcestringValores:web,api,import,sap -
picking_idinteger | null -
receipt_idinteger | null -
sapobjeto | nullEstado del envío al ERP cuando aplica.
-
linesarray de objetos | nullnullen el listado; en el detalle, las líneas.11 campos de
lines-
idinteger -
line_numinteger -
product_idinteger | null -
item_codestring | null -
qtynumber -
picked_qtynumber -
dispatched_qtynumber -
received_qtynumber -
batch_numstring | null -
serial_numbersarray de textos -
statusstring
-
{
"event": "transfer.dispatched",
"version": 1,
"data": {
"object": "transfer_order",
"id": 41,
"code": "TR-000041",
"status": "in_transit",
"status_label": "En tránsito",
"headline": "CEDIS-GDL → TDA-MTY",
"has_discrepancy": false,
"from": {
"id": 1,
"code": "CEDIS-GDL",
"name": "CEDIS Guadalajara"
},
"to": {
"id": 2,
"code": "TDA-MTY",
"name": "Tienda Monterrey"
},
"priority": 50,
"reason": "Reabasto semanal",
"due_at": "2026-10-08T18:00:00-06:00",
"lines_count": 1,
"units": {
"requested": 24,
"picked": 24,
"dispatched": 24,
"received": 0
},
"dispatched_at": "2026-10-07T09:30:00-06:00",
"received_at": null,
"closed_at": null,
"seal_number": "S-99812",
"vehicle_plate": "JAL-123-A",
"carrier_id": 3,
"external_ref": "TR-2026-0107",
"source": "api",
"picking_id": 6120,
"receipt_id": null,
"sap": null,
"lines": [
{
"id": 77,
"line_num": 0,
"product_id": 101,
"item_code": "P-1001",
"qty": 24,
"picked_qty": 24,
"dispatched_qty": 24,
"received_qty": 0,
"batch_num": null,
"serial_numbers": [],
"status": "dispatched"
}
]
},
"timestamp": 1791302400
}
El almacén de destino recibió la mercancía; has_discrepancy indica diferencias.
Campos de data
-
objectstring «transfer_order» obligatorio -
idinteger obligatorio -
codestring obligatorio -
statusstring obligatorioValores:draft,released,picking,picked,in_transit,receiving,received,closed,cancelled -
status_labelstring -
headlinestring | null -
has_discrepancybooleanLo recibido no coincide con lo despachado.
-
fromobjeto obligatorio3 campos de
from-
idinteger | null -
codestring | null -
namestring | null
-
-
toobjeto obligatorio3 campos de
to-
idinteger | null -
codestring | null -
namestring | null
-
-
priorityinteger -
reasonstring | null -
due_atstring (date-time) | null -
lines_countinteger -
unitsobjeto obligatorio4 campos de
units-
requestednumber -
pickednumber -
dispatchednumber -
receivednumber
-
-
dispatched_atstring (date-time) | null -
received_atstring (date-time) | null -
closed_atstring (date-time) | null -
seal_numberstring | null -
vehicle_platestring | null -
carrier_idinteger | null -
external_refstring | null -
sourcestringValores:web,api,import,sap -
picking_idinteger | null -
receipt_idinteger | null -
sapobjeto | nullEstado del envío al ERP cuando aplica.
-
linesarray de objetos | nullnullen el listado; en el detalle, las líneas.11 campos de
lines-
idinteger -
line_numinteger -
product_idinteger | null -
item_codestring | null -
qtynumber -
picked_qtynumber -
dispatched_qtynumber -
received_qtynumber -
batch_numstring | null -
serial_numbersarray de textos -
statusstring
-
{
"event": "transfer.received",
"version": 1,
"data": {
"object": "transfer_order",
"id": 41,
"code": "TR-000041",
"status": "received",
"status_label": "En tránsito",
"headline": "CEDIS-GDL → TDA-MTY",
"has_discrepancy": false,
"from": {
"id": 1,
"code": "CEDIS-GDL",
"name": "CEDIS Guadalajara"
},
"to": {
"id": 2,
"code": "TDA-MTY",
"name": "Tienda Monterrey"
},
"priority": 50,
"reason": "Reabasto semanal",
"due_at": "2026-10-08T18:00:00-06:00",
"lines_count": 1,
"units": {
"requested": 24,
"picked": 24,
"dispatched": 24,
"received": 0
},
"dispatched_at": "2026-10-07T09:30:00-06:00",
"received_at": null,
"closed_at": null,
"seal_number": "S-99812",
"vehicle_plate": "JAL-123-A",
"carrier_id": 3,
"external_ref": "TR-2026-0107",
"source": "api",
"picking_id": 6120,
"receipt_id": null,
"sap": null,
"lines": [
{
"id": 77,
"line_num": 0,
"product_id": 101,
"item_code": "P-1001",
"qty": 24,
"picked_qty": 24,
"dispatched_qty": 24,
"received_qty": 0,
"batch_num": null,
"serial_numbers": [],
"status": "dispatched"
}
]
},
"timestamp": 1791302400
}
Embarques
Un embarque salió del andén con su transportista, sello y paquetes.
Campos de data
-
objectstring «shipment» obligatorio -
idinteger obligatorio -
codestring obligatorio -
statusstring obligatorio -
status_labelstring -
warehouseobjeto3 campos de
warehouse-
idinteger | null -
codestring | null -
namestring | null
-
-
carrierobjeto | null -
vehicle_platestring | null -
seal_numbersarray de textos | null -
dispatched_atstring (date-time) | null
{
"event": "shipment.dispatched",
"version": 1,
"data": {
"object": "shipment",
"id": 31,
"code": "EMB-000031",
"status": "dispatched",
"status_label": "Despachado",
"warehouse": {
"id": 1,
"code": "CEDIS-GDL",
"name": "CEDIS Guadalajara"
},
"carrier": {
"id": 3,
"code": "DHL",
"name": "DHL Express"
},
"vehicle_plate": "JAL-123-A",
"seal_numbers": [
"S-99812"
],
"dispatched_at": "2026-10-06T18:00:00-06:00"
},
"timestamp": 1791302400
}
Devoluciones
Llegó mercancía devuelta por un cliente.
Campos de data
-
objectstring «return_order» obligatorio -
idinteger obligatorio -
codestring obligatorio -
typestring -
statusstring obligatorio -
status_labelstring -
card_codestring | null -
card_namestring | null -
rma_numberstring | null -
unitsobjeto
{
"event": "return.received",
"version": 1,
"data": {
"object": "return_order",
"id": 12,
"code": "DEV-000012",
"type": "customer",
"status": "received",
"status_label": "Recibida",
"card_code": "CLI-001",
"card_name": "Abarrotes del Norte",
"rma_number": "RMA-5521",
"units": {
"expected": 6,
"received": 6,
"inspected": 0
}
},
"timestamp": 1791302400
}
Se decidió el destino de la mercancía devuelta (reacomodo, merma, proveedor).
Campos de data
-
objectstring «return_order» obligatorio -
idinteger obligatorio -
codestring obligatorio -
typestring -
statusstring obligatorio -
status_labelstring -
card_codestring | null -
card_namestring | null -
rma_numberstring | null -
unitsobjeto
{
"event": "return.dispositioned",
"version": 1,
"data": {
"object": "return_order",
"id": 12,
"code": "DEV-000012",
"type": "customer",
"status": "dispositioned",
"status_label": "Con destino",
"card_code": "CLI-001",
"card_name": "Abarrotes del Norte",
"rma_number": "RMA-5521",
"units": {
"expected": 6,
"received": 6,
"inspected": 6
}
},
"timestamp": 1791302400
}
Empaque
Una orden de empaque pasó de un estado a otro (from, to).
Campos de data
-
objectstring «packing_order» obligatorio -
idinteger obligatorio -
codestring obligatorio -
statusstring obligatorio -
stepstring | null -
doc_numstring | null -
card_codestring | null -
units_countinteger | null -
weight_kgnumber | null -
fromstring | null obligatorio -
tostring obligatorio
{
"event": "packing_order.transitioned",
"version": 1,
"data": {
"object": "packing_order",
"id": 55,
"code": "EMP-000055",
"status": "packed",
"step": "label",
"doc_num": "OV-000977",
"card_code": "CLI-001",
"units_count": 6,
"weight_kg": 7.2,
"from": "packing",
"to": "packed"
},
"timestamp": 1791302400
}
RFID
Terminó una lectura RFID contra un documento, con sus conteos.
Campos de data
-
objectstring «rfid_session» obligatorio -
codestring obligatorio -
modestring obligatorio -
contextobjeto2 campos de
context-
typestring | null -
codestring | null
-
-
resultstring | null -
countsobjeto obligatorio -
closed_atstring (date-time) | null
{
"event": "rfid_validation.completed",
"version": 1,
"data": {
"object": "rfid_session",
"code": "RFID-000201",
"mode": "validation",
"context": {
"type": "picking",
"code": "PKG-6120"
},
"result": "matched",
"counts": {
"expected": 6,
"matched": 6,
"missing": 0,
"unexpected": 0,
"foreign": 0,
"unknown": 0
},
"closed_at": "2026-10-06T12:10:02-06:00"
},
"timestamp": 1791302400
}
Catálogo
Se dio de alta un producto (por la web, la API o una carga).
Campos de data
-
idinteger obligatorio -
item_codestring obligatorio -
namestring obligatorio -
barcodestring | null -
tracks_serialsboolean -
tracks_lotsboolean -
updated_atstring (date-time) | null
{
"event": "product.created",
"version": 1,
"data": {
"id": 101,
"item_code": "P-1001",
"name": "Aceite comestible 1 L",
"barcode": "7501234567890",
"tracks_serials": false,
"tracks_lots": true,
"updated_at": "2026-10-06T10:20:11-06:00"
},
"timestamp": 1791302400
}
Cambió un dato del producto.
Campos de data
-
idinteger obligatorio -
item_codestring obligatorio -
namestring obligatorio -
barcodestring | null -
tracks_serialsboolean -
tracks_lotsboolean -
updated_atstring (date-time) | null
{
"event": "product.updated",
"version": 1,
"data": {
"id": 101,
"item_code": "P-1001",
"name": "Aceite comestible 1 L (caja 12)",
"barcode": "7501234567891",
"tracks_serials": false,
"tracks_lots": true,
"updated_at": "2026-10-06T10:31:40-06:00"
},
"timestamp": 1791302400
}
Existencias
Una transacción movió existencias. Llega un evento por transacción con los productos que tocó, con lo disponible y lo que hay a la mano en ese momento.
Campos de data
-
productsarray de objetos obligatorio4 campos de
products-
idinteger obligatorio -
item_codestring obligatorio -
availablenumber obligatorio -
on_handnumber obligatorio
-
{
"event": "stock.updated",
"version": 1,
"data": {
"products": [
{
"id": 101,
"item_code": "P-1001",
"available": 46,
"on_hand": 48
}
]
},
"timestamp": 1791302400
}
Mapas
Se publicó una versión nueva del mapa de un almacén.
Campos de data
-
warehouse_codestring | null obligatorio -
layout_versioninteger obligatorio -
published_atstring (date-time) | null -
summaryobjeto3 campos de
summary-
addedinteger -
relocatedinteger -
removedinteger
-
{
"event": "layout.published",
"version": 1,
"data": {
"warehouse_code": "CEDIS-GDL",
"layout_version": 4,
"published_at": "2026-10-06T09:00:00-06:00",
"summary": {
"added": 12,
"relocated": 3,
"removed": 0
}
},
"timestamp": 1791302400
}
Olas
Se planeó una ola.
Campos de data
-
idinteger obligatorio -
codestring obligatorio -
warehouse_codestring | null -
strategystring obligatorioValores:discrete,by_customer,batch,cluster,zone,pick_and_pass -
statusstring obligatorioValores:draft,planned,released,in_progress,picked,completed,closed,cancelled -
carrier_codestring | null -
cutoff_atstring (date-time) | null -
released_atstring (date-time) | null -
metricsobjetoPedidos, líneas, unidades y avance de la ola.
-
created_atstring (date-time) | null -
updated_atstring (date-time) | null -
ordersarray de objetosSolo en el detalle.
2 campos de
orders-
picking_idinteger obligatorio -
statusstring obligatorio
-
{
"event": "wave.planned",
"version": 1,
"data": {
"id": 9,
"code": "OLA-000009",
"warehouse_code": "CEDIS-GDL",
"strategy": "batch",
"status": "planned",
"carrier_code": null,
"cutoff_at": null,
"released_at": null,
"metrics": {
"orders": 2,
"lines": 3,
"units": 18
},
"created_at": "2026-10-06T10:20:11-06:00",
"updated_at": "2026-10-06T11:00:00-06:00"
},
"timestamp": 1791302400
}
Un supervisor liberó la ola al piso.
Campos de data
-
idinteger obligatorio -
codestring obligatorio -
warehouse_codestring | null -
strategystring obligatorioValores:discrete,by_customer,batch,cluster,zone,pick_and_pass -
statusstring obligatorioValores:draft,planned,released,in_progress,picked,completed,closed,cancelled -
carrier_codestring | null -
cutoff_atstring (date-time) | null -
released_atstring (date-time) | null -
metricsobjetoPedidos, líneas, unidades y avance de la ola.
-
created_atstring (date-time) | null -
updated_atstring (date-time) | null -
ordersarray de objetosSolo en el detalle.
2 campos de
orders-
picking_idinteger obligatorio -
statusstring obligatorio
-
{
"event": "wave.released",
"version": 1,
"data": {
"id": 9,
"code": "OLA-000009",
"warehouse_code": "CEDIS-GDL",
"strategy": "batch",
"status": "released",
"carrier_code": null,
"cutoff_at": null,
"released_at": "2026-10-06T11:00:00-06:00",
"metrics": {
"orders": 2,
"lines": 3,
"units": 18
},
"created_at": "2026-10-06T10:20:11-06:00",
"updated_at": "2026-10-06T11:00:00-06:00"
},
"timestamp": 1791302400
}
Todos los pedidos de la ola se surtieron.
Campos de data
-
idinteger obligatorio -
codestring obligatorio -
warehouse_codestring | null -
strategystring obligatorioValores:discrete,by_customer,batch,cluster,zone,pick_and_pass -
statusstring obligatorioValores:draft,planned,released,in_progress,picked,completed,closed,cancelled -
carrier_codestring | null -
cutoff_atstring (date-time) | null -
released_atstring (date-time) | null -
metricsobjetoPedidos, líneas, unidades y avance de la ola.
-
created_atstring (date-time) | null -
updated_atstring (date-time) | null -
ordersarray de objetosSolo en el detalle.
2 campos de
orders-
picking_idinteger obligatorio -
statusstring obligatorio
-
{
"event": "wave.completed",
"version": 1,
"data": {
"id": 9,
"code": "OLA-000009",
"warehouse_code": "CEDIS-GDL",
"strategy": "batch",
"status": "completed",
"carrier_code": null,
"cutoff_at": null,
"released_at": "2026-10-06T11:00:00-06:00",
"metrics": {
"orders": 2,
"lines": 3,
"units": 18
},
"created_at": "2026-10-06T10:20:11-06:00",
"updated_at": "2026-10-06T11:00:00-06:00"
},
"timestamp": 1791302400
}
La ola se canceló.
Campos de data
-
idinteger obligatorio -
codestring obligatorio -
warehouse_codestring | null -
strategystring obligatorioValores:discrete,by_customer,batch,cluster,zone,pick_and_pass -
statusstring obligatorioValores:draft,planned,released,in_progress,picked,completed,closed,cancelled -
carrier_codestring | null -
cutoff_atstring (date-time) | null -
released_atstring (date-time) | null -
metricsobjetoPedidos, líneas, unidades y avance de la ola.
-
created_atstring (date-time) | null -
updated_atstring (date-time) | null -
ordersarray de objetosSolo en el detalle.
2 campos de
orders-
picking_idinteger obligatorio -
statusstring obligatorio
-
{
"event": "wave.cancelled",
"version": 1,
"data": {
"id": 9,
"code": "OLA-000009",
"warehouse_code": "CEDIS-GDL",
"strategy": "batch",
"status": "cancelled",
"carrier_code": null,
"cutoff_at": null,
"released_at": null,
"metrics": {
"orders": 2,
"lines": 3,
"units": 18
},
"created_at": "2026-10-06T10:20:11-06:00",
"updated_at": "2026-10-06T11:00:00-06:00"
},
"timestamp": 1791302400
}