Webhooks — Publicidad de Facebook
message_facebook_advertising — mensajes que llegan desde un anuncio Click to WhatsApp.
message_facebook_advertising se dispara cuando alguien le escribe desde un anuncio de
Facebook o Instagram (Click to WhatsApp). Sirve para atribuir la conversación a la
campaña que la generó.
Se filtra por línea.
Este evento no reemplaza a
receive_message: el mismo mensaje dispara los dos si tiene ambos activos. Este trae la atribución publicitaria; el otro, el mensaje completo.
Campos garantizados
| Campo | Tipo | Notas |
|---|---|---|
contact_phone | string | null | ⚠️ null si el contacto oculta su número de teléfono |
bsuid | string | null | Ver Identidad del contacto |
wa_username | string | null | Username público de WhatsApp |
message | string | El texto que escribió la persona |
version | int | 1 |
Campos del anuncio
Además, el payload trae los datos del referral tal como los manda Meta. Estos campos
no los define Wasapi, así que su presencia y su nombre dependen de Meta y del tipo de
anuncio:
| Campo | Qué es |
|---|---|
source_url | URL del anuncio |
source_id | Id del anuncio |
source_type | ad o post |
headline | Titular del anuncio |
body | Cuerpo del anuncio |
media_type | image o video |
image_url / video_url | Media del anuncio |
thumbnail_url | Miniatura |
ctwa_clid | Identificador de clic Click to WhatsApp, para atribución |
Trátelos todos como opcionales.
Ejemplo
{
"event": "message_facebook_advertising",
"data": {
"contact_phone": "573001234567",
"bsuid": null,
"wa_username": null,
"message": "Hola, vi el anuncio de la promo",
"source_url": "https://fb.me/2xK9pQrS",
"source_id": "120210987654320123",
"source_type": "ad",
"headline": "Envío gratis este mes",
"body": "Envíos a todo el país",
"media_type": "image",
"image_url": "https://scontent.xx.fbcdn.net/…",
"ctwa_clid": "ARBxK9…",
"version": 1
}
}⚠️ contact_phone puede ser null
contact_phone puede ser nullSi la persona que hizo clic en el anuncio oculta su número de teléfono, este campo llega
en null. No es un error ni un dato faltante: es un contacto que se identifica por bsuid.
$identificador = $data['contact_phone'] ?? $data['bsuid'] ?? null;
if ($identificador === null) {
// no se pudo resolver el contacto: registre y siga
return;
}Si su integración usa este evento para dar de alta un lead con el teléfono como llave, ese
alta va a fallar para estos contactos. Use bsuid como alternativa, o cruce contra
receive_message, que llega con el mismo wa_id.
Ver también
- Identidad del contacto
- Eventos de mensaje —
receive_messagepara el mensaje completo
Updated 17 days ago
