Actualizado: 5/6/2025

Formatos ejemplo de Webhooks

En este artículo podrás ver ejemplos de Webhooks para realizar la implementación en Botmaker.



Notificación de mensajes enviados/recibidos

Nombre

Tipo

Descripción

Ejemplos

v

string

Versión del formato de la notificación.

"1.1"

type

string

Tipo de notificación.

"message"

chatPlatform

string

Plataforma de chat.

"webchat", "whatsapp", "messenger", "telegram", "twitter"

contactId

string

Identificador del contacto en la plataforma de chat. 

WhatsApp: Número de teléfono del usuario. 

Messenger, Telegram, Twitter: ID de usuario en la plataforma.

"+5511999999999", "1234567890"

whatsappNumber

string

Número de teléfono de la línea del bot (sólo para WhatsApp).

"+551149331774"

chatIdInChatPlatform

string

ID del chat en la plataforma de chat (excepto WhatsApp).

"AR4Q1S3P1U"

chatChannelId

string

ID del canal de chat en Botmaker.

"canal123"

customerId

string

ID del usuario en Botmaker.

"user456"

firstName

string

Nombre del usuario.

"Juan"

lastName

string

Apellido del usuario.

"Pérez"

customerCreationTime

string

Fecha y hora de creación del usuario (formato ISO 8601).

"2021-02-28T23:59:00.147Z"

sessionCreationTime

string

Fecha y hora de inicio de la sesión (formato ISO 8601).

"2021-03-08T19:28:45.147Z"

whatsappNickName

string

Apodo del usuario en WhatsApp.

"Juanito"

txId

string

ID de la transacción cuando se envían plantillas por la API Botmaker. Coincide con webhookNotificationId.

"tx789"

messages

array

Array de mensajes.

[{ "_id": "PHW3S2KV4...", ... }]

messages[]._id

string

ID del mensaje en Botmaker.

"PHW3S2KV4VRWL17BBM1U"

messages[].date

string

Fecha y hora del mensaje (formato ISO 8601).

"2021-03-08T19:44:14.388Z"

messages[].message

string

Texto del mensaje.

"Hola, cómo estás?"

messages[].fromName

string

Nombre de quien envió el mensaje ("Bot", nombre de usuario u operador).

"Ignacio Ferrari", "Bot"

messages[].from

string

Categoría del remitente.

"bot", "user", "operator"

messages[].fromCustomer

boolean

true si el mensaje es del usuario, undefined si no.

true, undefined

messages[].isButton

boolean

true si el mensaje es un botón, undefined si no.

true, undefined

messages[].hasAttachment

boolean

true si el mensaje tiene un archivo adjunto, undefined si no.

true, undefined

messages[].image

string

URL de la imagen (si aplica).

"https://..."

messages[].audio

string

URL del audio (si aplica).

"https://..."

messages[].video

string

URL del video (si aplica).

"https://..."

messages[].file

string

URL del archivo (si aplica).

"https://..."

messages[].operatorId

string

ID del operador en Botmaker (si from es "operator").

"bxj99dyfxEsdopib9ZuboIG5Tqr3"

messages[].operatorName

string

Nombre del operador (si from es "operator").

"Pepe"

messages[].operatorEmail

string

Email del operador (si from es "operator").

"pepe@domain.com"

messages[].operatorRole

string

Rol del operador (si from es "operator").

"ADMIN", "CONFIGURATOR", "SUPERVISOR", "OPERATOR", nombreRolCustom

messages[].queue

string

ID de la cola de atención (si aplica).

"idColaAtencion"

messages[].intentName

string

Nombre de la intención (si from es "bot").

"Nombre de una Intención"

messages[].location

string

Latitud y longitud (para geolocalización en WhatsApp).

"lat & long"

messages[].caption

string

Texto que acompaña a una imagen (WhatsApp).

"Descripción de la imagen"

messages[].payload

string

Payload configurado por el usuario (para HSM/templates con botones).

"payload_data"

messages[].button

string

Etiqueta del botón HSM.

"Botón 1"

messages[].templateName

string

Nombre del template con botón.

"Nombre del template"

messages[].clientPayload

string

Payload enviado a través de la API Botmaker.

"client_payload_data"

messages[].whatsappReferral

object

Información de referencia de WhatsApp.

{ "sourceId": "...", ... }

messages[].whatsappReferral.sourceId

string

ID de la fuente de referencia.

"source123"

messages[].whatsappReferral.sourceURL

string

URL de la fuente de referencia.

"https://..."

messages[].whatsappReferral.headline

string

Titular de la referencia.

"Título de la referencia"

messages[].whatsappReferral.body

string

Cuerpo de la referencia.

"Texto de la referencia"

messages[].cart

object

Información del carrito de compra.

{ "products": [...] }

messages[].cart.products

array

Array de productos en el carrito.

[{ "sku": "sku123", "quantity": 2 }]

messages[].cart.products[].sku

string

SKU del producto.

"sku123"

messages[].cart.products[].quantity

number

Cantidad del producto.

2

variables

object

Mapa de variables y sus nuevos valores.

{ "varName1": "new val 1", "varName2": "new val 2" }

Ejemplo de JSON:

{
"lastName": "Gonzales",
"chatPlatform": "whatsapp",
"customerCreationTime": "2025-06-02T16:35:14.169Z",
"contactId": "551150392540",
"sessionId": "PRQICKLCR18TSUEXWVQ7_2025-06-05T15:35:14.169Z",
"type": "message",
"whatsappNumber": "551150392540",
"firstName": "Juan",
"sessionCreationTime": "2025-06-05T15:35:14.169Z",
"v": "1.1",
"customerId": "PRQICKLCR18TSUEXWVQ7",
"messages": [
{
"date": "2025-06-05T16:35:14.170Z",
"fromName": "Bot",
"_id_": "QEAH2V4UTOAQI48I688P",
"from": "bot",
"clientPayload": "",
"message": "Test message (from bot)",
"operatorId": null
}
],
"chatChannelId": "demo-whatsapp-551149331774",
"variables": {
"varName1": "new val 1",
"varName2": "new val 2"
}
}

Notificación de cambio de estados de mensajes 


Nombre

Tipo

Descripción

Ejemplos

v *

string

Versión del formato del webhook.

"1.1"

businessId

string

ID del bot en Botmaker. Permite diferenciar entre varios bots que apuntan al mismo webhook.

"12345"

customerId*

string

ID del usuario en Botmaker.

"67890"

contactId

string

ID del contacto en la plataforma de chat. <br> - WhatsApp: Número de teléfono del usuario. <br> - Messenger, Telegram, Twitter: ID de usuario en la plataforma.

WhatsApp: "+5491155556666" <br> Telegram: "123456789"

chatChannelId*

string

ID del canal de chat en Botmaker.

"11121314"

chatPlatform*

string

Plataforma de chat.

"whatsapp", "messenger", "telegram", "twitter", "webchat"

status*

string

Estado del mensaje.

"sent", "delivered", "read"

statusChangeTime*

string

Fecha y hora del cambio de estado en formato ISO 8601 (YYYY-MM-DDThh:mm:ss.sssZ).

"2024-07-20T14:30:00.000Z"

messageId*

string

ID del mensaje en Botmaker que cambió de estado. Este ID hace referencia a un mensaje de salida, ya sea del bot o de un operador.

"abc123def456"

clientPayload

string

Dato arbitrario enviado originalmente con el mensaje a través de la API Botmaker (v1 o v2). Permite al usuario del API hacer seguimiento del envío. Equivalente a webhookPayload en la v2 de la API.

"{\"orderId\":\"789\"}"

intentTxId

string

ID de la transacción de la intención. Coincide con webhookNotificationId devuelto por la API Botmaker al enviar templates.

"ghi789jkl012"

error

array de objetos

Contiene información de errores, si los hubiera.

[{"message": "Error al enviar el mensaje", "code": "400"}]

error[].message

string

Descripción del error.

"Error al enviar el mensaje"

error[].code

string

Código de error.

"400"

Ejemplo de JSON:

{
  "v": "1.0",
  "businessId": "12345",
  "customerId": "67890",
  "contactId": "+5491155556666",
  "chatChannelId": "11121314",
  "chatPlatform": "whatsapp",
  "status": "delivered",
  "statusChangeTime": "2024-07-20T15:00:00.000Z",
  "messageId": "abc123def456",
  "clientPayload": "idSendInTheApi",
  "intentTxId": "ghi789jkl012",
  "error": []
}


Ejemplo con error:

{
  "v": "1.0",
  "businessId": "12345",
  "customerId": "67890",
  "contactId": "+5491155556666",
  "chatChannelId": "11121314",
  "chatPlatform": "whatsapp",
  "status": "sent",  // Note that status may or may not be related to the error. It depends on the specific implementation.
  "statusChangeTime": "2024-07-20T15:05:00.000Z",
  "messageId": "abc123def456",
  "clientPayload": null,
  "intentTxId": null,
  "error": [
    {
      "message": "Error al enviar el mensaje: Destinatario no encontrado",
      "code": "404"
    }
  ]
}



Para la correspondencia entre el envío de un mensaje por api y el status validar

- webhookPayload enviado por la api corresponde al clientPayload recibido en el webhook - webhookNotificationId devuelto por el API corresponde al intentTxId recibido en el webhook.


Notificacion de eventos

Lista de nombres de eventos:

  • user-locked Se asignó a un agente
  • user-unlocked Se des-asignó a un agente
  • user-clicked-url Se hizo click en un link
  • conversation-close Se cerró la conversación 
  • user-waiting-lock En espera de ser asignado
  • user-note Se agrego una nota
  • user-ban Se marco como spam
  • change-bot Se cambio de bot
  • bot-unmuted Se encendio el bot
  • bot-muted Se apago el bot
  • queue-assigned Se asignó a una cola de atencion



Nombre

Tipo

Descripción

Ejemplo

chatPlatform*

string

Plataforma de chat utilizada.

webchat

customerCreationTime

string

Fecha y hora de creación del cliente (ISO 8601).

2023-06-15T18:00:00.000Z

contactId*

string

ID del contacto.

1234567890

v*

string

Versión del evento.

1.1

customerId*

string

ID del cliente.

CUST-12345

chatIdInChatPlatform

string

ID del chat en la plataforma de chat.

CHAT-67890

type*

string

Tipo de dato principal.

event

chatChannelId*

string

ID del canal de chat.

webchat-channel-123

events

array

Array de eventos. Contiene información detallada sobre eventos específicos dentro de la interacción.


events.name

string

Nombre del evento específico. Ver Lista de nombres de eventos

conversation-close

events.info

array

Array de información adicional del evento. Contiene pares clave-valor para detalles específicos del evento.

[

  {

    "name": "typification",

    "value": "resolved"

  },

  {

    "name": "agentName",

    "value": "Jane Doe"

  }

]


Ejemplo JSON:

{
  "chatPlatform": "webchat",
  "customerCreationTime": "2023-06-15T18:00:00.000Z",
  "contactId": "1234567890",
  "v": "1.1",
  "customerId": "CUST-12345",
  "chatIdInChatPlatform": "CHAT-67890",
  "type": "event",
  "chatChannelId": "webchat-channel-123",
  "events": [
    {
      "name": "conversation-close",
      "info": [
        {
          "name": "typification",
          "value": "resolved"
        },
        {
          "name": "agentName",
          "value": "Jane Doe"
        }
      ]
    }
  ]
}