Aller au contenu principal

WhatsApp pour la confirmation de commande via l'API : tutoriel pour les éditeurs

Tutoriel pas à pas pour envoyer une confirmation de commande WhatsApp via l'API Business : appel REST, template Utility, variables et gestion des statuts.

Envoyer une confirmation de commande via WhatsApp Business API demande trois prérequis : un numéro activé, un template Utility approuvé par Meta, et un appel REST depuis votre backend. Ce tutoriel détaille chaque étape, du template jusqu'à la gestion des statuts de délivrance.

Prérequis avant de commencer

Avant d'écrire la première ligne de code, vérifiez que vous disposez de :

  • Un WABA actif (WhatsApp Business Account) associé à votre numéro — configuré via l'embedded signup Whakup
  • Un template Utility approuvé avec les variables nécessaires (prénom, numéro de commande, montant, lien de suivi)
  • Votre token d'accès API Whakup et le phone_number_id du numéro expéditeur
  • Un endpoint webhook capable de recevoir les événements de statut (sent, delivered, read, failed)

Si votre template n'est pas encore créé, consultez d'abord le guide de création de template HSM WhatsApp avant de poursuivre.

Étape 1 : structurer le template de confirmation

Créez votre template dans le gestionnaire Meta Business ou via l'API Whakup. Voici la structure recommandée pour une confirmation de commande :

Nom du template : order_confirmation_v1 Catégorie : UTILITY Langue : fr

Corps du template :

Bonjour {{1}},

Votre commande n°{{2}} a bien été enregistrée.
Montant : {{3}} €
Livraison prévue : {{4}}

Suivez votre colis : {{5}}

Une question ? Répondez directement à ce message.

Bouton (optionnel) : Bouton URL dynamique vers la page de suivi

Suivre ma commande → {{1}}

Soumettez le template et attendez l'approbation Meta (généralement quelques minutes à quelques heures). Le statut passe de PENDING à APPROVED dans votre dashboard.

Pour comprendre les règles de catégorisation qui influencent l'approbation, lisez notre article sur les catégories de templates WhatsApp.

Étape 2 : appel API pour envoyer la confirmation

Une fois le template approuvé, voici l'appel REST pour envoyer la confirmation au client :

Endpoint : POST https://api.whakup.com/v1/messages

Headers :

Authorization: Bearer {votre_token}
Content-Type: application/json

Body :

{
  "messaging_product": "whatsapp",
  "to": "33612345678",
  "type": "template",
  "template": {
    "name": "order_confirmation_v1",
    "language": { "code": "fr" },
    "components": [
      {
        "type": "body",
        "parameters": [
          { "type": "text", "text": "Marie" },
          { "type": "text", "text": "CMD-20260814-4892" },
          { "type": "text", "text": "89,90" },
          { "type": "text", "text": "17 août 2026" },
          { "type": "text", "text": "https://suivi.exemple.com/CMD-20260814-4892" }
        ]
      }
    ]
  }
}

Réponse en succès :

{
  "messages": [{ "id": "wamid.XXXXXXXXXXXXX" }]
}

Conservez le wamid (WhatsApp Message ID) dans votre base de données — c'est cet identifiant que vous retrouverez dans les webhooks de statut pour tracker la délivrance.

Étape 3 : recevoir et traiter les webhooks de statut

Configurez un endpoint webhook sur votre serveur pour recevoir les mises à jour de statut. Meta envoie un événement pour chaque transition :

Payload delivered (message reçu sur le téléphone) :

{
  "statuses": [{
    "id": "wamid.XXXXXXXXXXXXX",
    "status": "delivered",
    "timestamp": "1755129600",
    "recipient_id": "33612345678"
  }]
}

Payload read (message ouvert par le client) :

{
  "statuses": [{
    "id": "wamid.XXXXXXXXXXXXX",
    "status": "read",
    "timestamp": "1755129900",
    "recipient_id": "33612345678"
  }]
}

Payload failed (numéro invalide ou hors réseau) :

{
  "statuses": [{
    "id": "wamid.XXXXXXXXXXXXX",
    "status": "failed",
    "errors": [{ "code": 131047, "title": "Re-engagement message" }]
  }]
}

Sur un statut failed, déclenchez votre fallback email ou SMS. La configuration complète des webhooks est détaillée dans notre guide webhooks WhatsApp API.

Étape 4 : implémenter le fallback

Voici la logique de fallback recommandée :

def send_order_confirmation(order, customer):
    # Tentative WhatsApp
    response = whakup_client.send_template(
        to=customer.phone,
        template="order_confirmation_v1",
        variables=[customer.first_name, order.id, order.total, order.eta, order.tracking_url]
    )
    
    if response.status == "accepted":
        # Attendre le webhook delivered (max 2 min via queue)
        schedule_fallback_check(order.id, delay=120)
    else:
        # Fallback immédiat
        email_client.send_order_confirmation(order, customer)

def on_status_webhook(message_id, status):
    if status == "delivered":
        cancel_fallback_check(message_id)
    elif status == "failed":
        order = get_order_by_message_id(message_id)
        email_client.send_order_confirmation(order, order.customer)

Ce pattern garantit que chaque client reçoit sa confirmation, quel que soit son opérateur ou son équipement.

Statut webhook Action recommandée
sent Aucune action, attendre delivered
delivered Annuler le fallback planifié
read Logger, mettre à jour le CRM
failed Déclencher le fallback email/SMS

FAQ

Peut-on personnaliser l'expéditeur affiché (nom de la marque) ?

Oui. Le nom affiché dans WhatsApp est le Display Name de votre WABA, pas votre numéro de téléphone. Vous définissez ce nom lors de l'onboarding. Les règles de validation du display name sont précisées dans notre article dédié.

Le numéro du client doit-il être préenregistré quelque part ?

Non. Vous envoyez directement vers le numéro E.164 du client. Si le numéro n'est pas enregistré sur WhatsApp, l'API renvoie une erreur et vous routez vers le fallback.

Combien de variables peut-on mettre dans un template Utility ?

Meta n'impose pas de limite stricte sur le nombre de variables, mais recommande de garder les templates lisibles. En pratique, 5 à 7 variables dans le body est un maximum raisonnable. Au-delà, découpez en plusieurs messages ou utilisez un document PDF joint.

Faut-il revalider un template si on change une variable ?

Non. Les variables sont des placeholders remplacés à l'envoi — vous pouvez passer n'importe quelle valeur sans revalidation. En revanche, modifier le texte statique du template (les parties hors {{n}}) nécessite de soumettre une nouvelle version à l'approbation Meta.


Pour accéder à l'API REST Whakup et déployer ce flux en production pour vos clients, consultez la page API WhatsApp Business Whakup : onboarding en moins d'un jour, hébergement EU, support technique éditeur.

#intégration whatsapp#confirmation commande whatsapp#tutoriel
Pablo Lenormand
Pablo LenormandCo-fondateur & CPO

Co-fondateur et Chief Product Officer de Whakup, Pablo conçoit les fonctionnalités qui permettent aux marques africaines de maximiser leur impact sur WhatsApp.

🚀

Prêt à passer à l'action ?

Essayez Whakup gratuitement pendant 15 jours. Aucune carte bancaire requise.

Démarrer l'essai gratuit