Le client de l’API WhatsApp Business envoie des notifications concernant le statut (status
) du message entre les utilisateur·trices et vous-même. Ces notifications sont transmises via l’objet statuses
.
Pour chaque message que votre entreprise envoie, vous recevez une notification de statut. Pour connaître l’équivalent dans l’application WhatsApp de chaque statut (si un tel équivalent existe), rendez-vous dans le tableau ci-dessous et cliquez sur la flèche dans la colonne de gauche.
Nom | Description |
---|---|
| L’utilisateur·ice a envoyé un message et l’a supprimé ensuite. À réception de cette notification, vous devez vous assurer que le message est bien supprimé de votre système s’il a été téléchargé depuis le serveur. |
| Un message envoyé par votre entreprise a été distribué sur l’appareil de l’utilisateur·ice. |
| Un message envoyé par votre entreprise n’a pas été distribué. Le motif de cet échec figurera dans le rappel. Vérifiez la documentation du message d’erreur pour faciliter le débogage :
|
| Un message envoyé par votre entreprise a été lu par l’utilisateur·ice. Les notifications |
| Un message envoyé à votre entreprise est en cours de réception dans nos systèmes. Pour les utilisateurs de l'API On-Premises : pour recevoir des notifications pour les messages au statut |
| Un message envoyé par votre entreprise contient un article d’un catalogue qui n’est pas disponible ou qui n’existe pas. |
L’ordre de ces notifications dans votre application peut ne pas correspondre au statut du message en temps réel. Il est parfois nécessaire de s’en assurer en vérifiant l’horodatage.
Pour qu’un statut soit lu (statut read
), il doit avoir été distribué (statut delivered
). Dans certains cas, par exemple lorsqu’un utilisateur ou une utilisatrice se sert de l’écran de discussion instantanée et qu’un message arrive, ce dernier présente les statuts delivered
et read
presque simultanément. Dans ce cas ou pour d’autres scénarios similaires, la notification delivered
ne sera pas renvoyée, car la lecture d’un message implique nécessairement que celui-ci a été distribué. Ce comportement est appliqué à des fins d’optimisation interne.
Depuis le 1er février 2022, l’objetstatuses
de vos notifications sortantes inclut deux objets imbriqués : conversation
et pricing
. Les composants d’objet de conversation et de tarification peuvent varier en fonction de l’origine de la conversation. Les conversations peuvent être lancées par l’utilisateur·trice, par l’entreprise ou commencées à partir d’un point d’entrée gratuit. Vous trouverez plus d’informations ci-dessous :
Dans les exemples suivants, le champ recipient_id
peut être remplacé par un champ group_id
. Cela dépend si le message est envoyé à un individu ou à un groupe.
Vous recevez le webhook ci-dessous lorsqu’une entreprise envoie un message dans le cadre d’une conversation lancée par l’utilisateur·trice (si cette conversation n’a pas démarré dans un point d’entrée gratuit) :
{ "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" } }] }
Vous recevez le webhook ci-dessous lorsqu’une entreprise envoie un message dans le cadre d’une conversation lancée par l’utilisateur·trice pour un message multimédia (si cette conversation n’a pas démarré dans un point d’entrée gratuit) :
{ "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" } }] }
Vous recevez le webhook ci-dessous lorsqu’une entreprise envoie un message dans le cadre d’une conversation lancée par l’entreprise :
{ "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" } }] }
Vous recevez le webhook ci-dessous lorsqu’une entreprise envoie un message en réponse à une conversation lancée par l’utilisateur·trice depuis un point d’entrée gratuit :
{ "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" } }] }
Vous recevez le webhook ci-dessous lorsqu’un message d’entreprise est distribué et fait partie d’une conversation lancée par l’utilisateur·trice (si cette conversation n’a pas démarré dans un point d’entrée gratuit) :
{ "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" } }] }
Vous recevez le webhook ci-dessous lorsqu’un message d’entreprise est distribué et fait partie d’une conversation lancée par l’entreprise :
{ "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" } }] }
Vous recevez le webhook ci-dessous lorsqu’un message d’entreprise est distribué et fait partie d’une conversation lancée par l’utilisateur·trice depuis un point d’entrée gratuit :
{ "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" } }] }
Rappel standard pour un message lu :
{ "statuses":[{ "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "read", "timestamp": "TIMESTAMP", "type": "message", "message": { "recipient_id": "WHATSAPP_ID" } }] }
{ "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" }] }
{ "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 sous-section conversation n’est pas incluse dans le rappel si un message n’a pas été envoyé. Dans ce cas, aucune activation de facturation ou de conversation n’est appliquée.
Rappel standard pour un message supprimé :
{ "statuses": [{ "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "deleted", "timestamp": "TIMESTAMP", "type": "message", "message": { "recipient_id": "WHATSAPP_ID" } }] }
La sous-section conversation n’est pas incluse dans le rappel si un message a été supprimé. Dans ce cas, aucune activation de facturation ou de conversation n’est appliquée.
Pour en savoir plus, voir la page Vue d’ensemble des messages.
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:
Scenario | When 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. |