Sign inGet started

Tipos de mensaje WhatsApp no compatibles

WhatsApp transporta contenido que API de Bird no modela, desde pedidos de catálogo hasta avisos del sistema sobre la conversación. En lugar de descartar ese mensaje o entregarlo vacío, Bird lo registra con un brazo unsupported que indica el tipo de contenido de WhatsApp. El mensaje es visible en el registro de WhatsApp y llega a tu webhook como cualquier otro.

Qué contiene un mensaje no compatible

unsupported.type incluye la cadena de tipo propia de WhatsApp para lo que llegó, y es el único contenido del mensaje. El envoltorio alrededor no cambia:
Ejemplo de código
{
  "id": "wam_01kyh0w4ujnz2x8p1s5dci0vlg",
  "direction": "inbound",
  "from": { "phone_number": "+14155550100" },
  "to": { "phone_number": "+13124495569" },
  "status": "received",
  "unsupported": { "type": "order" },
  "created_at": "2026-08-25T09:31:20Z"
}
typeLo que envió el contacto
interactiveContenido interactivo cuya forma de respuesta API no pudo interpretar como un toque
buttonUn toque de botón que API no pudo interpretar como respuesta
orderUn carrito o pedido realizado desde un catálogo de productos
systemUn aviso del sistema sobre la conversación, como un contacto que cambió su número de teléfono
unsupportedTipo unsupported propio de WhatsApp, para un mensaje que sus propios clientes no pueden mostrar
unsupported no es un valor de relleno en esa tabla. WhatsApp reporta un tipo de contenido propio con ese nombre cuando uno de sus clientes envía algo que los demás no pueden mostrar, y eso llega como este valor.
La lista es abierta. WhatsApp añade tipos de contenido con el tiempo, así que trata un type que no reconozcas como un tipo futuro en lugar de un error: regístralo y continúa en vez de interrumpir la lectura.

El payload del webhook

whatsapp.received también se dispara para un mensaje no compatible, con el mismo brazo:
Ejemplo de código
{
  "type": "whatsapp.received",
  "timestamp": "2026-08-25T09:31:20.774Z",
  "data": {
    "whatsapp_id": "wam_01kyh0w4ujnz2x8p1s5dci0vlg",
    "workspace_id": "ws_01ky7m235keycbnwyajabe1a6b",
    "direction": "inbound",
    "from": { "phone_number": "+14155550100" },
    "to": { "phone_number": "+13124495569" },
    "unsupported": { "type": "order" },
    "tags": null,
    "metadata": null
  }
}
Un endpoint que evalúa el campo de contenido que encuentra debería tener una rama por defecto, y este brazo es lo que cae en ella. Confirma el webhook con un 2xx en cualquier caso: reintentarlo no cambia nada, porque el contenido no pasará a ser modelado entre intentos.

Qué hace un mensaje no compatible de todos modos

El mensaje cuenta como mensaje entrante en todo lo que no dependa de su contenido:
  • Reinicia la ventana de atención al cliente a 24 horas nuevas, así que un pedido realizado desde tu catálogo reabre las respuestas de formato libre.
  • Aparece en la lista de mensajes y en el registro de WhatsApp, mostrando su tipo en lugar de una fila vacía.
  • Nunca se cobra. Ningún mensaje entrante tiene costo.
Lo que no puedes hacer es leer el contenido. Un pedido no incluye el carrito, y un aviso del sistema no dice qué cambió. Cuando ese detalle importa, pregunta al contacto con palabras o usa un botón de respuesta o menú de lista para que la respuesta llegue en un brazo modelado sobre el que puedas actuar.

Aspectos a tener en cuenta

  • No trates el brazo como un error. El mensaje se recibió correctamente; solo su contenido no está modelado. Generar alertas por esto significa alertar cada vez que un contacto hace un pedido.
  • Un tipo system puede significar que el contacto cambió de número. Meta documenta un cambio de número de teléfono como uno de los eventos que genera un mensaje del sistema, y al mismo tiempo regenera el ID de usuario con alcance de negocio del contacto. El brazo indica el tipo y nada más, así que trátalo como una señal para restablecer con quién estás hablando.
  • Una reacción con emoji no es un mensaje no compatible. No es un mensaje entrante en absoluto, así que no llega a ningún webhook ni aparece en ninguna lista de mensajes: cada cambio se registra en el registro de reacciones del propio mensaje al que se reaccionó, cubierto en eventos de WhatsApp.
  • Almacena el tipo textualmente. Un tipo futuro se resuelve a un nombre para el que aún no tienes código, y conservar el valor sin procesar es lo que te permite encontrar esos mensajes cuando lo tengas.

Próximos pasos