Passer au contenu principal
Une campagne envoie un même message à de nombreux contacts, sur WhatsApp (un modèle approuvé) et par e-mail. Elle est aussi disponible dans le tableau de bord, sous Marketing > Campagnes. Les endpoints ci-dessous demandent une clé avec Envoyer des messages ; la lecture du rapport et des destinataires demande Voir les messages (voir Lire le rapport d’une campagne).

La vie d’une campagne

Une campagne est créée en brouillon (draft). Elle se termine (ended) une fois sa date end_at dépassée. Une campagne qui n’a pas pu démarrer est failed, avec la raison dans failure_reason ; corrigez-la et relancez-la. Vous pouvez modifier une campagne en brouillon, échouée ou en pause ; mettez en pause une campagne programmée ou en cours avant de la modifier.

1. Créer la campagne

POST /campaigns
Les campagnes automatiques (new_conversation) acceptent aussi once_per_contact (un contact ne reçoit le message qu’une fois), send_delay_minutes (attente après le début de la conversation) et min_inactive_minutes (attente que la conversation soit calme).

Messages

WhatsApp envoie un modèle approuvé, avec une valeur pour chacune de ses variables : La source d’une variable est :
  • field:firstname, field:lastname, field:name, field:email, field:phone, field:address ou field:identifier : un champ du contact ;
  • column:<clé> : une colonne du fichier importé, associée comme var:<clé> ;
  • text, avec value : le même texte pour tous.
fallback est utilisé quand le contact n’a pas de valeur, pour qu’aucun message ne parte avec une variable vide. Une campagne automatique peut envoyer un simple { "text": "..." } au lieu d’un modèle. L’e-mail prend un subject et un corps html. Les textes acceptent @firstname, @<colonne> et @{clé|valeur par défaut}.

Audience

Un fichier de contacts

Envoyez un fichier .xlsx ou .csv avec une colonne de numéros de téléphone, puis associez ses colonnes et contrôlez-le :
1

Envoyer

La réponse donne l’identifiant de l’import (IMP-XXXXX) et ses columns, avec leur en-tête, des valeurs d’exemple et une target devinée. Les numéros sans indicatif reçoivent celui de votre entreprise.
2

Associer les colonnes

PATCH /campaign-imports/{id} avec le contenu de chaque colonne, par index : phone (une colonne, obligatoire), first_name, last_name, email, var:<clé> (une variable pour le message) ou ignore.
3

Contrôler

POST /campaign-imports/{id}/check compte les numéros valides, les doublons fusionnés, les numéros invalides (avec leur ligne), les contacts désinscrits et les nouveaux contacts. Avec "marketing": true (par défaut), les contacts désinscrits sont exclus du compte. Un gros fichier est contrôlé en arrière-plan : appelez GET /campaign-imports/{id} jusqu’à ce que son status soit checked.

2. Vérifier et estimer

Avant le lancement, GET /campaigns/{id}/checks liste ce qui doit être vrai :
Les contrôles portent sur les émetteurs (senders), les messages (messages), le modèle (template), l’audience (audience), les variables (variables), les dates (dates) et le crédit (credit). Un contrôle block empêche le lancement ; un contrôle warn, non. GET /campaigns/{id}/estimate donne le coût : les destinataires joignables par canal multipliés par le prix d’un message, qui dépend de sa catégorie (celle du modèle, sur WhatsApp) et du pays du destinataire.

3. Lancer

POST /campaigns/{id}/launch envoie maintenant, ou à start_at si cette date est future :
Le lancement est refusé, avec les contrôles bloquants, si l’un d’eux bloque. Une campagne automatique devient active et envoie à chaque nouvelle conversation.

4. Pause, reprise, duplication

GET /campaigns liste vos campagnes, les plus récentes d’abord, filtrables par status et name.