Les tarifs basés sur les conversations ont changé. Voir Tarifs pour en savoir plus sur notre nouveau modèle de tarification basé sur les conversations.

En outre, la visibilité de metric_types a changé de manière effective le 1er juillet 2023. Consultez le tableau d’analyse des conversations pour plus de détails.

Messages basés sur des modèles

Les modèles de message WhatsApp sont des formats de message particuliers que les entreprises utilisent pour envoyer des notifications ou des messages de service clientèle aux personnes abonnées aux notifications. Il peut s’agir de rappels de rendez-vous, d’informations de livraison, de données relatives à la résolution d’un problème ou de notifications relatives aux paiements.

Avant d’envoyer un modèle de message, vous devez le créer. Pour plus d’informations, voir Créer des modèles de message pour votre compte WhatsApp Business. Si votre compte n’est pas encore vérifié, vous pouvez utiliser l’un de nos modèles pré-approuvés.

Actuellement, vous pouvez envoyer les types de modèles suivants :

Tous les appels d’API mentionnés dans ce guide doivent être authentifiés à l’aide d’un token d’accès. Les développeur·ses peuvent authentifier leurs appels d’API à l’aide du token d’accès généré dans le panneau Espace App > WhatsApp > Configuration de l’API. Les fournisseurs de solutions partenaires doivent s’authentifier à l’aide d’un token d’accès avec l’autorisation whatsapp_business_messaging.

Fréquence

Les modèles marketing nouvellement créés ou réactivés sont soumis à la fréquence des modèles. Voir Fréquence des modèles.

Modèles de message texte

Pour envoyer un modèle de message texte, passez un appel POST à /PHONE_NUMBER_ID/messages et joignez un objet de message avec type=template. Ajoutez ensuite un template objet.

Exemple de requête :

curl -X  POST \
 'https://graph.facebook.com/v19.0/FROM_PHONE_NUMBER_ID/messages' \
 -H 'Authorization: Bearer ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "PHONE_NUMBER",
  "type": "template",
  "template": {
    "name": "TEMPLATE_NAME",
    "language": {
      "code": "LANGUAGE_AND_LOCALE_CODE"
    },
    "components": [
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "text-string"
          },
          {
            "type": "currency",
            "currency": {
              "fallback_value": "VALUE",
              "code": "USD",
              "amount_1000": NUMBER
            }
          },
          {
            "type": "date_time",
            "date_time": {
              "fallback_value": "DATE"
            }
          }
        ]
      }
    ]
  }
}'

Une réponse positive inclut un objet avec un identifiant associé au préfixe wamid. Utilisez l’ID affiché après wamid pour suivre le statut de votre message.

{
  "messaging_product": "whatsapp",
  "contacts": [{
      "input": "PHONE_NUMBER",
      "wa_id": "WHATSAPP_ID",
    }]
  "messages": [{
      "id": "wamid.ID",
    }]
}

Modèles de message multimédia

Pour envoyer un modèle de message multimédia, passez un appel POST à /PHONE_NUMBER_ID/messages et joignez un objet de message avec type=template. Ajoutez ensuite un objet template. Prend en charge la mise en cache HTTP de contenus multimédias.

Pour envoyer un modèle de message multimédia, effectuez un appel POST vers le point de terminaison Numéro de téléphone WhatsApp Business > Messages. Définissez la propriété type sur template et utilisez la propriété template pour définir votre objet template et ses objets multimédias.

Lorsque vous définissez votre objet multimédia, vous pouvez soit importer votre élément multimédia sur nos serveurs et utiliser son ID multimédia (avec la propriété id), soit héberger l'élément sur votre serveur et utiliser son URL (avec la propriété link). Si vous utilisez link, votre élément doit se trouver sur un serveur accessible au public pour que le message soit envoyé.

Pour réduire la probabilité d’erreurs et éviter les requêtes inutiles à votre serveur public, nous recommandons d’importer vos éléments de contenu multimédia et d’utiliser leur ID lors de l’envoi de messages.

Les éléments multimédias peuvent aussi être mis en cache. Consultez la section Mise en cache HTTP de contenus multimédias.

Exemple de requête :

curl -X  POST \
 'https://graph.facebook.com/v19.0/FROM_PHONE_NUMBER_ID/messages' \
 -H 'Authorization: Bearer ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "PHONE_NUMBER",
  "type": "template",
  "template": {
    "name": "TEMPLATE_NAME",
    "language": {
      "code": "LANGUAGE_AND_LOCALE_CODE"
    },
    "components": [
      {
        "type": "header",
        "parameters": [
          {
            "type": "image",
            "image": {
              "link": "https://URL"
            }
          }
        ]
      },
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "TEXT-STRING"
          },
          {
            "type": "currency",
            "currency": {
              "fallback_value": "VALUE",
              "code": "USD",
              "amount_1000": NUMBER
            }
          },
          {
            "type": "date_time",
            "date_time": {
              "fallback_value": "MONTH DAY, YEAR"
            }
          }
        ]
      }
    ]
  }
}'

Une réponse positive inclut un objet avec un identifiant associé au préfixe wamid. Utilisez l’ID affiché après wamid pour suivre le statut de votre message.

{
  "messaging_product": "whatsapp",
  "contacts": [{
      "input": "PHONE_NUMBER",
      "wa_id": "WHATSAPP_ID",
    }]
  "messages": [{
      "id": "wamid.ID",
    }]
}

Modèles de message interactif

Les modèles de message interactif permettent d’envoyer davantage de types de contenus à vos destinataires, outre les modèles de message standard et les modèles de message multimédia, en incluant des boutons interactifs utilisant l’objet composants. Il existe deux types de boutons prédéfinis :

  • Appel à l’action : permet à votre clientèle d’appeler un numéro de téléphone et de consulter un site web.
  • Réponse rapide : permet à votre clientèle de renvoyer un simple message texte.

Ces boutons peuvent être joints à des messages texte ou à des messages multimédias. Une fois que vos modèles de message interactifs ont été créés et approuvés, vous pouvez les utiliser dans des messages de notification ainsi que dans des messages de service clientèle.

Pour envoyer un modèle de message interactif, passez un appel POST à /PHONE_NUMBER_ID/messages et joignez un objet de message avec type=template. Ajoutez ensuite un objet template avec le button que vous avez choisi.

Exemple de requête :

curl -X  POST \
 'https://graph.facebook.com/v19.0/FROM_PHONE_NUMBER_ID/messages' \
 -H 'Authorization: Bearer ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "PHONE_NUMBER",
  "type": "template",
  "template": {
    "name": "TEMPLATE_NAME",
    "language": {
      "code": "LANGUAGE_AND_LOCALE_CODE"
    },
    "components": [
      {
        "type": "header",
        "parameters": [
          {
            "type": "image",
            "image": {
              "link": "http(s)://URL"
            }
          }
        ]
      },
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "TEXT_STRING"
          },
          {
            "type": "currency",
            "currency": {
              "fallback_value": "VALUE",
              "code": "USD",
              "amount_1000": NUMBER
            }
          },
          {
            "type": "date_time",
            "date_time": {
              "fallback_value": "MONTH DAY, YEAR"
            }
          }
        ]
      },
      {
        "type": "button",
        "sub_type": "quick_reply",
        "index": "0",
        "parameters": [
          {
            "type": "payload",
            "payload": "PAYLOAD"
          }
        ]
      },
      {
        "type": "button",
        "sub_type": "quick_reply",
        "index": "1",
        "parameters": [
          {
            "type": "payload",
            "payload": "PAYLOAD"
          }
        ]
      }
    ]
  }
}'

Une réponse positive inclut un objet avec un identifiant associé au préfixe wamid. Utilisez l’ID affiché après wamid pour suivre le statut de votre message.

{
  "messaging_product": "whatsapp",
  "contacts": [{
      "input": "PHONE_NUMBER",
      "wa_id": "WHATSAPP_ID",
    }]
  "messages": [{
      "id": "wamid.ID",
    }]
}

Modèles de message basés sur le lieu

Pour envoyer un modèle qui utilise un en-tête de localisation, votre requête doit inclure un objet d’en-tête de localisation.

Syntaxe

{
  "type": "header",
  "parameters": [
    {
      "type": "location",
      "location": {
        "latitude": "<LATITUDE>",
        "longitude": "<LONGITUDE>",
        "name": "<NAME>",
        "address": "<ADDRESS>"
      }
    }
  ]
}

Propriétés

Espace réservéDescriptionExemple de valeur

<ADDRESS>

Adresse qui sera affichée après la valeur <NAME>, sous la carte générique en haut du message.

1 Hacker Way, Menlo Park, CA 94025

<LATITUDE>

Latitude du lieu.

37.483307

<LONGITUDE>

Longitude du lieu.

122.148981

<NAME>

Texte qui sera affiché juste en dessous de la carte générique en haut du message.

Pablo Morales

Exemple de requête

Voici un exemple de requête permettant d’envoyer un modèle existant avec les éléments suivants :

  • En-tête de localisation
  • Corps de texte avec une variable
  • Pied de page
  • Bouton de réponse rapide
curl -L 'https://graph.facebook.com/v16.0/106540352242922/messages' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer EAAJB...' \
-d '
{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "12245554792",
  "type": "template",
  "template": {
    "name": "order_delivery_update",
    "language": {
      "code": "en_US"
    },
    "components": [
      {
        "type": "header",
        "parameters": [
          {
            "type": "location",
            "location": {
              "latitude": "37.483307",
              "longitude": "122.148981",
              "name": "Pablo Morales",
              "address": "1 Hacker Way, Menlo Park, CA 94025"
            }
          }
        ]
      },
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "Pablo"
          },
          {
            "type": "text",
            "text": "566701"
          }
        ]
      }
    ]
  }
}'

Modèles d’authentification

La tentative d’envoi de modèles d'authentification existants (modèles sans boutons de mot de passe à usage unique) renverra le code d'erreur 100 si les valeurs variables dépassent 15 caractères ou contiennent des liens ou des emojis, ou si le composant du corps du modèle contient un lien. Il faut plutôt créer et utiliser un modèle d'authentification avec un bouton de mot de passe à usage unique.

Voir Modèles d’authentification et Envoi de modèles d’authentification.

Ordre de diffusion lorsqu’il y a plusieurs messages

Lorsque vous envoyez une série de messages, leur ordre de diffusion ne correspond pas forcément à celui de vos requêtes d’API. Pour garantir l’ordre de réception de vos messages, confirmez la réception d’un statut delivered dans un webhook de messages avant d’envoyer le message suivant de votre liste.

Limites de modèles de messages marketing par utilisateur·ice

À compter du 6 février 2024, des limites de modèles de messages marketing par utilisateur·ice s’appliqueront aux modèles de messages envoyés à un petit nombre d’utilisateur·ices WhatsApp en Inde. Elles s’appliqueront à l’ensemble des utilisateur·ices WhatsApp ayant un numéro de téléphone indien d’ici le 13 février 2024.

Nous déployons de nouvelles approches, en commençant par les consommateur·ices en Inde. Ces approches créent des expériences d’utilisation de haute qualité tout en maximisant l’interaction des modèles de message marketing. Cela peut inclure la limitation du nombre de modèles de messages marketing qu’une personne reçoit d’une entreprise au cours d’une période donnée, en commençant par un petit nombre de conversations qui sont moins susceptibles d’être lues. Notez que cette limite est déterminée par le nombre de modèles de messages marketing que la personne a déjà reçus d’une entreprise et qu’elle n’est pas liée à votre entreprise spécifiquement.

La limite ne s’applique qu’aux modèles de messages marketing qui normalement ouvrent une nouvelle conversation marketing. Si une conversation marketing est déjà en cours entre vous et un·e utilisateur·ice WhatsApp, les modèles de messages marketing envoyés à l’utilisateur·ice ne seront pas affectés.

Si un modèle de message marketing n’est pas distribué à un·e utilisateur·ice donné·e en raison de la limite, l’API Cloud retourne le code d’erreur 131026 et l’API On-Premises le code d’erreur 1026. Notez toutefois que ces codes d’erreur couvrent un large éventail de problèmes pouvant entraîner la non-diffusion d’un message. Pour des raisons de confidentialité, nous n’indiquons pas si le message n’a pas été distribué en raison d’un problème de limite. Consultez le document Dépannage de l’API Cloud et la réponse à la question « Pourquoi mon taux de distribution n’est-il pas de 100 % ? » dans les questions/réponses relatives à l’API On-Premises pour connaître les raisons de non-distribution et ce que vous pouvez faire pour déterminer la cause sous-jacente.

Si l’un de ces codes d’erreur s’affiche et que vous pensez qu’il est dû à un problème de limite, évitez de renvoyer immédiatement le modèle de message, car vous recevriez alors un autre message d’erreur. Réessayez plutôt en augmentant les incréments de temps jusqu’à ce que le message soit transmis, car la limite peut être appliquée pendant des périodes de temps différentes.

Nous allons continuer à peaufiner notre approche et travailler à rendre l’expérience WhatsApp la plus agréable possible pour votre entreprise et votre clientèle. Nous vous remercions de votre confiance.

Résolution des problèmes

Si vous rencontrez des problèmes avec la distribution des messages, consultez Message non distribué.