data es idéntico.
Esta página documenta los 6 tipos: message.exchange, message.status, call.update, group.flow, instance.state y label.update.
Envoltorio
event en el campo events de la configuración. Vacío = todos los tipos.
Filtrado y enrutamiento
byEvents=true (solo webhook), el nombre del evento se agrega a la URL:
- Configuración:
url: "https://app/wh",byEvents: true - Entrega:
POST https://app/wh/message.exchange
message.exchange
Mensajes enviados y recibidos (texto, media, sticker, documento, audio, encuesta, contacto, ubicación, etc.), ediciones y revocaciones.
Payload
Campos condicionales
Solo se completan los campos relevantes para el tipo de mensaje. Las ediciones tienenedit poblado; las revocaciones llegan con type: "message_revoke" en data.message.type.
chat.isCommunity aparece solo cuando es true, indicando que el chat es el canal de anuncios (parent / announcement channel) de una comunidad de WhatsApp. Los subgrupos vinculados a una comunidad mantienen type: "group" y no incluyen el campo isCommunity. En grupos regulares y DMs el campo también se omite.adOrigin — atribución de origen (Click-to-WhatsApp)
Presente solo en el primer mensaje recibido de una conversación iniciada por un anuncio de Meta o por un punto de entrada (enlace wa.me, búsqueda, QR). Permite enrutar el lead por campaña sin consultar la base de datos. Dos escenarios:
- Anuncio nativo (Click-to-WhatsApp / Call Ads) —
entryPointSourceesctwa_ade incluye el bloque completo:sourceId(ID del anuncio — agrupa leads por campaña),ctwaClid(clave de atribución de Meta, úsala en la Conversions API),sourceApp,sourceUrl,title,body,mediaType,greetingMessageBody, además deconversionSource,entryPointExternalSource,ctwaPayload(token base64 para la Conversions API),originalImageUrlyclickToWhatsappCall. - Punto de entrada sin anuncio — enlace wa.me (
click_to_chat_link), búsqueda de WhatsApp (global_search_new_chat), código QR, etc. Viene soloentryPointSource(y, cuando está disponible,entryPointApp/entryPointDelaySeconds), sinsourceId/ctwaClid— Meta no adjunta datos de anuncio a estos.
Los mensajes orgánicos — y cualquier mensaje que no sea el primero de la conversación — no incluyen
adOrigin. El texto predefinido de un anuncio no es prueba de origen: la atribución confiable viene de sourceId / ctwaClid.Ejemplo (imagen recibida)
message.status
Acuses de entrega: delivered, read, played, etc.
Payload
Enum status
messageSenderen grupos: JID del autor original del mensaje (relevante cuando alguien lee un mensaje de otro participante).chat.isCommunitysigue la misma regla quemessage.exchange: presente ytruesolo cuando el chat es el canal de anuncios de una comunidad.
call.update
Eventos de llamadas: offer, accepted, rejected, terminated, latency.
Payload
Enum type
group.flow
Cambios de grupo: miembros, metadatos, configuraciones.
Payload, cambio de participante
Subtipos de metadatos
instance.state
Cambios en el estado de la propia instancia (conexión, QR, ban, emparejamiento).
Payload
Enum state
label.update
Ediciones/asociaciones de etiquetas (etiquetas de WhatsApp Business).
Payload
Combinaciones type × action
Eventos no emitidos (internos)
Capturados por el handler dewhatsmeow pero no propagados vía webhook/WS:
*events.Picture, cambio de foto de perfil (solo registrado en log).*events.FBMessage, Facebook Business (solo registrado en log).*events.HistorySync, sincronización de historial (procesado y almacenado en BD).
Referencias
Configurar webhook
Filtra eventos vía
events[] en la configuración.Configurar WebSocket
Misma sintaxis de filtro que el webhook.
Conectar vía WebSocket
Recibe eventos en tiempo real.
Resumen de eventos
Comparación webhook vs WebSocket.