Notificaciones de estado y precios

El cliente de la API de WhatsApp Business envía notificaciones sobre el parámetro status del mensaje que intercambias con los usuarios. Estas notificaciones se envían mediante el objeto statuses.

Actualizaciones de estado

Para cada mensaje que envíe tu empresa, recibirás una notificación acerca del estado del mensaje. En la tabla siguiente, haz clic en la flecha de la columna izquierda de la aplicación de WhatsApp equivalente a cada estado, si está disponible.

NombreDescripción

deleted

El usuario ha eliminado un mensaje que ha enviado el usuario. Tras recibir esta notificación, deberías asegurarte de que el mensaje se ha eliminado del sistema si se descargó del servidor.

Equivalente de la aplicación de WhatsApp

El mensaje se sustituye en WhatsApp móvil con la nota “Este mensaje se ha eliminado”.

delivered

Un mensaje que ha enviado tu empresa se ha entregado al dispositivo del usuario.

Equivalente de la aplicación de WhatsApp

Dos marcas de verificación

failed

Un mensaje que ha enviado tu empresa no se ha podido entregar. El motivo del error se incluirá en la devolución de llamada. Consulta la documentación sobre mensajes de error con el fin de obtener ayudar para depurar:

Equivalente de la aplicación de WhatsApp

Triángulo de error rojo

read

El usuario ha leído un mensaje que ha enviado tu empresa. Las notificaciones read solo están disponibles para los usuarios que hayan activado las confirmaciones de lectura. En el caso de los usuarios que no las tengan activadas, solo recibes la notificación delivered.

Equivalente de la aplicación de WhatsApp

Dos marcas de verificación azules

sent

Un mensaje que ha enviado tu empresa se encuentra en tránsito en nuestros sistemas.


En el caso de los usuarios de la API local: para recibir notificaciones por los mensajes sent, define la opción sent_status como true en la configuración de la aplicación. La notificación de estado sent está desactivada de forma predeterminada.

Equivalente de la aplicación de WhatsApp

Una marca de verificación

warning

Un mensaje que ha enviado tu empresa contiene un artículo de un catálogo que no está disponible o no existe.

El orden de las notificaciones en la aplicación podría no reflejar el momento justo de cada estado del mensaje. Consulta la marca de tiempo para determinarlo, si es necesario.

Para que el estado sea read, antes tiene que ser delivered. En algunas situaciones, como, por ejemplo, cuando un usuario se encuentra en la pantalla del chat y llega un mensaje, el mensaje pasa a delivered y read casi simultáneamente. En estas situaciones u otras parecidas, la notificación delivered no se enviará, dado que se sobreentiende que el mensaje se ha entregado si se ha leído. El motivo de este comportamiento es la optimización interna.

Actualizaciones de precios

Desde el 1 de febrero de 2022, en el objeto statuses de las notificaciones salientes se incluyen dos nuevos objetos anidados: conversation y pricing. Los componentes de estos objetos varían en función de dónde se inicia la conversación. Los usuarios y las empresas pueden iniciar conversaciones, pero también se pueden iniciar desde un punto de entrada gratuito. Puedes obtener más información a continuación:

Ejemplos

En los ejemplos siguientes, el valor de recipient_id podría ser un campo group_id. Depende de si el mensaje se envía a una persona o a un grupo.

Estado: mensaje enviado

El webhook que se incluye a continuación se recibe cuando una empresa envía un mensaje como parte de una conversación iniciada por el usuario (si dicha conversación no se originó en un punto de acceso gratuito):

{
   "statuses": [{
     "id": "ID",
     "recipient_id": "WHATSAPP_ID",
     "status": "sent",
     "timestamp": "TIMESTAMP",
     "type": "message",
     "message": {         
        "recipient_id":"WHATSAPP_ID"   
     },
     "conversation": {
       "id": "CONVERSATION_ID",
       "expiration_timestamp": TIMESTAMP,
       "origin": {
         "type": "user_initiated"
       }
      },
    "pricing": {
      "pricing_model": "CBP",
      "billable": true,
      "category": "user_initiated"
    }
   }]
}

El webhook que se incluye a continuación se recibe cuando una empresa envía un mensaje como parte de una conversación iniciada por el usuario en el caso de un mensaje multimedia (si dicha conversación no se originó en un punto de acceso gratuito):

{
   "statuses": [{
     "id": "ID",
     "recipient_id": "WHATSAPP_ID",
     "status": "sent",
     "timestamp": "TIMESTAMP",
     "type": "message",
     "message": {   
       "media_id": "98d14c8e-0310-4061-8f99-2d148274c286",
       "recipient_id":"WHATSAPP_ID"  
     },
     "conversation": {
       "id": "CONVERSATION_ID",
       "expiration_timestamp": TIMESTAMP,
       "origin": {
         "type": "user_initiated"
       }
      },
    "pricing": {
      "pricing_model": "CBP",
      "billable": true,
      "category": "user_initiated"
    }
   }]
}

El webhook que se incluye a continuación se recibe cuando una empresa envía un mensaje como parte de una conversación iniciada por la empresa:

{
  "statuses": [{
    "id": "ID",
    "recipient_id": "WHATSAPP_ID",
    "status": "sent",
    "timestamp": "TIMESTAMP",
    "type": "message",         
    "message": {
        "recipient_id":"WHATSAPP_ID" 
    },
    "conversation": {
      "id": "CONVERSATION_ID",
      "expiration_timestamp": TIMESTAMP,
      "origin": {
         "type": "business_initiated"
      }
    },
    "pricing": {
      "pricing_model": "CBP",
      "billable": true,
      "category": "business_initiated"
    }
   }]
}

El webhook que se incluye a continuación se recibe cuando una empresa envía un mensaje en respuesta a una conversación iniciada por el usuario que se origina en un punto de acceso gratuito:

{
  "statuses": [{
    "id": "ID",
    "recipient_id": "WHATSAPP_ID",
    "status": "sent",
    "timestamp": "TIMESTAMP",
    "type": "message",
    "message": {
        "recipient_id":"WHATSAPP_ID"   
    },
    "conversation": {
      "id": "CONVERSATION_ID",
      "expiration_timestamp": TIMESTAMP,
      "origin": {
         "type": "referral_conversion",
      }
    },
    "pricing": {
      "pricing_model": "CBP",
      "billable": false,
      "category": "referral_conversion"
    }
   }]
}

Estado: mensaje entregado

El webhook que se incluye a continuación se recibe cuando se entrega un mensaje de una empresa y dicho mensaje forma parte de una conversación iniciada por el usuario (si dicha conversación no se originó en un punto de acceso gratuito):

{
  "statuses": [{
    "id": "ID",
    "recipient_id": "WHATSAPP_ID",
    "status": "delivered",
    "timestamp": "TIMESTAMP",
    "type": "message",
    "message": {
        "recipient_id":"WHATSAPP_ID" 
      },
    "conversation": {
      "id": "CONVERSATION_ID",
      "origin": {
         "type": "user_initiated"
      }
    },
    "pricing": {
      "pricing_model": "CBP",
      "billable": true,
      "category": "user_initiated"
    }
  }]
}

El webhook que se incluye a continuación se recibe cuando se entrega un mensaje de una empresa y dicho mensaje forma parte de una conversación iniciada por la empresa:

{
  "statuses": [{
    "id": "ID",
    "recipient_id": "WHATSAPP_ID",
    "status": "delivered",
    "timestamp": "TIMESTAMP",
    "type": "message",
    "message": {
        "recipient_id": "WHATSAPP_ID" 
    },
    "conversation": {
      "id": "CONVERSATION_ID",
      "origin": {
         "type": "business_initiated"
      }
    },
    "pricing": {
      "pricing_model": "CBP",
      "billable": true,
      "category": "business_initiated"
    }
  }]
}

El webhook que se incluye a continuación se recibe cuando se entrega un mensaje de una empresa y dicho mensaje forma parte de una conversación iniciada por el usuario que se origina en un punto de acceso gratuito:

{
  "statuses": [{
    "id": "ID",
    "recipient_id": "WHATSAPP_ID",
    "status": "delivered",
    "timestamp": "TIMESTAMP",
    "type": "message",  
    "message": {
        "recipient_id": "WHATSAPP_ID" 
    },
    "conversation": {
      "id": "CONVERSATION_ID",
      "origin": {
         "type": "referral_conversion",
      }
    },
    "pricing": {
      "pricing_model": "CBP",
      "billable": false,
      "category": "referral_conversion"
    }
  }]
}

Estado: mensaje leído

Devolución de llamada estándar para un mensaje leído:

{
  "statuses":[{
    "id": "ID",
    "recipient_id": "WHATSAPP_ID",
    "status": "read",
    "timestamp": "TIMESTAMP",
    "type": "message",  
    "message": {
        "recipient_id": "WHATSAPP_ID" 
    }
  }]
}

Estado: se ha producido un error en el mensaje

Código de error 470

{
  "statuses": [{
    "errors": [{
      "code": 470,
      "title": "Failed to send message because you are outside the support window for freeform messages to this user. Please use a valid HSM notification or reconsider." 
    }],
    "id": "ID",
    "recipient_id": "WHATSAPP_ID",
    "status": "failed",
    "timestamp": "TIMESTAMP"
  }]
}

Código de error 480

{
  "statuses": [{
      "errors": [{
          "code": 480,
          "title": "Failed to send message since we detect an identity change of the contact"
      }],
      "id": "ID",
      "recipient_id": "WHATSAPP_ID",
      "status": "failed",
      "timestamp": "TIMESTAMP"
   }]
}

La subsección de la conversación no se incluye en la devolución de llamada si se produce un error en el mensaje. En este caso, no se produce la activación de la facturación ni de la conversación.

Estado: mensaje eliminado

Devolución de llamada estándar para un mensaje eliminado:

{
  "statuses": [{
        "id": "ID",
        "recipient_id": "WHATSAPP_ID",
        "status": "deleted",
        "timestamp": "TIMESTAMP",
        "type": "message",
        "message": {
           "recipient_id": "WHATSAPP_ID" 
      }
    }]
}

La subsección de la conversación no se incluye en la devolución de llamada si se ha eliminado un mensaje. En este caso, no se produce la activación de la facturación ni de la conversación.

Todos los estados de mensaje posibles

Consulta Información general, Mensajes para obtener información al respecto.

Preguntas frecuentes

Yes, there is a specific scenario where you can get pricing information on your webhook alert for read messages. For each sent message, there can be 3 scenarios:

ScenarioWhen it Happens
You get a webhook alert when the message is delivered (including pricing information) and another webhook alert when the message is read (not including pricing information).This is the most common scenario.
You get a webhook alert when the message is delivered (including pricing information). You do not get a webhook alert that the message has been read. Common when a customer has turned off the feature that lets people know they have read a message.
You get a webhook alert when the message is read (including pricing information). You do not get a webhook alert that the message has been delivered. Only triggered when the user is already reading the thread with the business when the message comes in.