Webhooks

Mensajes, estados y duplicados

Separá los eventos recibidos y procesá cada uno sin repetir acciones.

Revisado el 28 de septiembre de 2026 · WhatsAut

Recorré todos los eventos

Un webhook puede contener varias entradas y cambios. No asumas que entry[0] y changes[0] son los únicos elementos. Separá mensajes, estados y campos de gestión antes de ejecutar reglas.

Este ejemplo ilustrativo muestra la estructura de un mensaje de texto; los identificadores y el contenido son ficticios. Otros tipos no tienen text.body.

{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "WABA_ID",
      "changes": [
        {
          "field": "messages",
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "phone_number_id": "PHONE_NUMBER_ID"
            },
            "messages": [
              {
                "id": "wamid.EJEMPLO",
                "from": "DESTINATARIO_DE_EJEMPLO",
                "timestamp": "1790596800",
                "type": "text",
                "text": {
                  "body": "Mensaje ficticio"
                }
              }
            ]
          }
        }
      ]
    }
  ]
}

Una respuesta aceptada no es entrega

Diferenciá sent, delivered, read y failed. Los estados llegan por webhook y pueden aparecer fuera de orden. Guardá el timestamp del evento; no retrocedas una entrega confirmada porque llegó tarde un estado anterior.

Un mensaje aceptado para envío no garantiza lectura. Cuando recibas failed, conservá el código de error para investigar sin guardar innecesariamente el contenido.

Diseño recomendado del receptor

Para mensajes, usá una clave durable que combine la conexión o número y el ID del mensaje. Para estados, agregá el estado a esa clave. Usá una restricción única o una operación atómica; una variable en memoria no alcanza tras un reinicio.

Validá y guardá en una cola durable antes de responder éxito. Procesá el trabajo lento por separado. Si el mismo evento vuelve, confirmá la recepción sin repetir efectos. Estas medidas corresponden a tu receptor; WhatsAut no incorpora una cola en el endpoint del cliente.

Eventos que no son mensajes

Las notificaciones de plantillas, cuenta o calidad deben actualizar información administrativa. No todas las suscripciones están garantizadas para cada conexión. Comprobá los campos habilitados en tu integración.

Ignorá de forma controlada los campos desconocidos y registrá sólo metadatos útiles. No trates un eco del celular como un pedido nuevo.

¿Necesitás ayuda? Prepará tu consulta para soporte →