Sign inGet Started

Templates WhatsApp

Les envois WhatsApp initiés par l'entreprise utilisent un template pré-approuvé. Un template contient du texte fixe et des variables : un envoi ne fournit donc que des valeurs telles qu'un code OTP ou un numéro de commande.
Bird fournit un catalogue géré, enregistre son contenu auprès de WhatsApp et l'envoie depuis les propres numéros de Bird ; ses slugs commencent par bird_. Un espace de travail qui a connecté un numéro à lui peut aussi créer des templates sur son propre WhatsApp Business Account. La page Templates affiche tous les templates que l'espace de travail peut envoyer et le rendu de chacun.
La page WhatsApp Templates dans le tableau de bord Bird, affichant la liste des modèles. Un champ de recherche avec des filtres de statut et de catégorie se trouve au-dessus du tableau. Chaque ligne indique le statut d'un modèle (Draft ou Active), puis son nom et son slug, sa catégorie, ses langues disponibles, le WABA qui le détient et sa dernière date de modification.

Parcourir les templates dans le tableau de bord

Ouvrez Templates dans WhatsApp > Templates. Your templates contient les templates créés par cet espace de travail ; All templates y ajoute le catalogue géré par Bird. Recherchez par nom ou filtrez par statut et catégorie, et basculez entre la grille de cartes et la vue liste avec le bouton à côté des filtres.
En vue liste, chaque ligne affiche les champs nécessaires pour choisir et envoyer un template :
  • Status : indique si le template est globalement envoyable. Les templates du catalogue géré affichent active ; un template que vous avez créé indique l'état de sa propre approbation. Vérifiez la liste des langues pour confirmer que la langue requise est disponible.
  • Name : le libellé d'affichage, avec le slug du template en dessous. Envoyez avec le slug.
  • Languages : les langues dans lesquelles le template est enregistré, par exemple anglais et néerlandais.
  • Category : authentication, utility ou marketing. La catégorie détermine comment WhatsApp traite le message, depuis quel numéro Bird un template géré est envoyé, et, combinée au pays de destination, le prix.
  • WABA : Bird-managed pour les templates du catalogue. Un template que vous avez créé affiche le WhatsApp Business Account qui le détient, et n'envoie que depuis un numéro rattaché à ce même compte.
  • Updated : date de la dernière modification du template.
Cliquez sur une ligne pour ouvrir le détail du template.

Contenu d'un template

La vue détaillée affiche le corps du message, les variables et les boutons dans un aperçu au style WhatsApp.
Le détail fournit aussi un exemple cURL pour POST /v1/whatsapp/messages, utilisant l'hôte régional et les valeurs d'exemple du template. Remplacez la clé API, le destinataire et les valeurs des variables avant d'envoyer.
L'exemple est le moyen le plus rapide de voir la structure qu'un envoi doit respecter. Via l'API, le même contenu provient de la version du template (Lire le contenu d'un template).

Lister les templates depuis l'API

GET /v1/whatsapp/templates renvoie un catalogue paginé par curseur. La requête nécessite un accès en lecture whatsapp_management. Utilisez HTTP ou une méthode de requête brute SDK.
type Templates = { data: Array<{ slug: string; status: string }> };

const templates = await bird.request<Templates>({
  method: "GET",
  path: "/v1/whatsapp/templates",
});
Chaque entrée identifie le template, sa catégorie et ses langues disponibles. Lisez la version active séparément pour obtenir le contenu du message.
Exemple de code
{
  "available_languages": ["en", "es", "pt-BR", "..."],
  "category": "authentication",
  "default_language": "en",
  "description": "One-time passcode",
  "id": "wat_01ky4x8e4genzb7way45txfkm1",
  "languages": {
    "en": { "status": "approved" },
    "es": { "status": "approved" },
    "pt-BR": { "status": "approved" },
    "...": "..."
  },
  "name": "bird_otp",
  "on_missing_language": "fail",
  "scope": "system",
  "slug": "bird_otp",
  "status": "active"
}
La réponse d'exemple abrège les listes de langues bird_otp.
Les champs dont dépend un envoi :
  • slug : l'identifiant utilisé lors d'un envoi. Les slugs des templates gérés commencent par bird_, un préfixe qui leur est réservé.
  • waba : le WhatsApp Business Account qui détient les langues du template chez Meta, et le compte auquel un numéro expéditeur doit appartenir. Absent sur un template géré, car Bird gère son compte.
  • available_languages : les langues qui peuvent être envoyées. Une langue en pause, désactivée, archivée ou restreinte quitte cette liste.
  • on_missing_language : ce qui se passe lorsque la langue demandée n'est pas disponible. Les templates WhatsApp gérés par Bird utilisent fail, qui rejette l'envoi au lieu de substituer une autre langue.

Statut et statut de langue

Les templates gérés par Bird affichent status: active. languages.<tag>.status indique l'état WhatsApp pour une langue, par exemple approved, paused ou disabled.
Un template actif peut tout de même avoir une langue indisponible. Utilisez available_languages pour déterminer si une langue est envoyable.

Lire le contenu d'un template

Le contenu du message appartient à une langue dans la version active. Lisez live_version_id depuis le template, puis demandez la langue requise :
const language = await bird.request({
  method: "GET",
  path: "/v1/whatsapp/templates/bird_order_confirmation/versions/{version_id}/languages/en",
});
La référence du template accepte un slug ou un ID wat_. GET …/versions/{version_id}/languages liste les langues de la version sans leur contenu.
Exemple de code
{
  "category": "utility",
  "components": [
    {
      "example_parameters": [
        { "name": "ref", "text": "A1B2C3D4", "type": "text" },
        { "name": "amount", "text": "USD 49.99", "type": "text" }
      ],
      "text": "Your order {{ref}} has been confirmed for a total of {{amount}}. Thanks for shopping with us.",
      "type": "body"
    }
  ],
  "language": "en",
  "status": "approved"
}
Le components de l'envoi doit correspondre au template. example_parameters identifie chaque espace réservé. Dans cet exemple, les paramètres du corps utilisent name: "ref" et name: "amount". Un template positionnel omet name et prend les valeurs dans l'ordre {{n}}. Les boutons paramétrés ont leur propre example_parameters.
Le category de la langue est la catégorie Meta utilisée pour la tarification. Il peut différer de la catégorie enregistrée du template si Meta reclasse la langue.
La liste variables de la version résume chaque espace réservé avec sa clé, son type, son indicateur obligatoire et sa contrainte. Les espaces réservés nommés utilisent leurs noms comme clés. Les espaces réservés positionnels utilisent leur numéro.

Envoyer avec un template

Nommez le template dans l'objet template de l'envoi et remplissez ses variables via components ; consultez Envoyer des messages WhatsApp pour le payload complet :
const msg = await bird.whatsapp.send({
  to: "+15551234567",
  template: {
    slug: "bird_otp",
    components: [{ type: "body", parameters: [{ type: "text", text: "123456" }] }],
  },
});
console.log(msg.id, msg.status);

Envoyer par catégorie

Chaque template porte l'une des trois catégories de Meta, et la catégorie modifie ce que vous devez faire avant qu'un envoi aboutisse ainsi que son coût. Créer ou copier un template d'authentification nécessite une entreprise vérifiée, mais l'envoyer ne le nécessite pas : le bird_otp géré par Bird se trouve sur le propre WhatsApp Business Account de Bird et s'envoie sans vérification de votre part. Les templates marketing s'envoient toujours depuis un WhatsApp Business Account qui vous appartient, via un second API Meta vers lequel Bird route automatiquement. Les templates utilitaires ont le moins de prérequis des trois.

Étapes suivantes