data.
message.received
Un cliente te escribió. Llega por cada mensaje, de WhatsApp o de Instagram. Las reacciones (👍, ❤️) no lo disparan.- WhatsApp
- Instagram
string
Id del mensaje en eltick.
string
Id del mensaje en WhatsApp. No viene en Instagram.
string
Solo en Instagram:
"instagram".string
La conversación en el chat de eltick.
string
Tu número de WhatsApp que recibió el mensaje (útil si tienes varios).
object
id, name (el nombre de perfil) y phone (WhatsApp) o instagram (usuario de Instagram).string
El tipo de mensaje:
text, image, video, audio, document, sticker, location, contacts, button (tocó un botón de una plantilla), interactive (eligió una opción), entre otros.string | null
El texto del mensaje. En adjuntos, el pie de foto o una descripción (por ejemplo “📷 Imagen”); en botones, el texto del botón.
string
Cuándo lo mandó el cliente.
message.status
Cambió el estado de un mensaje que mandaste, ya sea por la API, desde el chat o en una campaña.string
El id de WhatsApp del mensaje: el mismo
wamid que te devolvió POST /messages. Úsalo para encontrar el mensaje en tu sistema.string
sent, delivered, read o failed.string | null
Si el mensaje salió de una campaña, su id.
number | null
Con
failed, el código de Meta. Por ejemplo 131026 (no se pudo entregar). Mira la tabla en Errores.El estado solo avanza:
sent → delivered → read. Si WhatsApp nos informa varios cambios juntos, te mandamos solo el más avanzado, así que puedes recibir read sin haber recibido delivered. Nunca vas a recibir un estado “hacia atrás”.contact.created
Se sumó un contacto nuevo a tu cuenta.string
De dónde vino:
inbound: te escribió por WhatsApp por primera vez.instagram: te escribió por Instagram por primera vez (en lugar dephonetraeinstagram, el usuario).api: lo creaste conPOST /contacts.
Los contactos que sumas desde la app (importando una planilla o a mano) y los que se crean al mandar un mensaje con
POST /messages a un teléfono nuevo no disparan este evento.contact.opted_out
Un contacto pidió no recibir más mensajes: tocó el botón de baja de una plantilla o escribió algo como “baja”, “stop”, “no recibir más” o “darme de baja”.campaign.completed
Una campaña terminó de enviarse.GET /campaigns.
Evento de prueba
El botón Probar de Ajustes › API y webhooks manda estemessage.received, con "test": true y datos de ejemplo:

