Se connecterCommencer l’essai gratuit
Meta Tech Provider

Enregistrez les messages WhatsApp dans Airtable et envoyez depuis une base

Le déclencheur webhook entrant d'Airtable n'accepte que les requêtes POST : il ne peut donc pas répondre au GET de vérification de Meta ni servir lui-même de destination webhook pour un numéro. Pointez la destination vers un workflow n8n qui ajoute chaque message dans une table. L'envoi se fait depuis Airtable : une automatisation Run a script peut appeler la Cloud API avec fetch, le token du numéro étant stocké comme secret.

POST only

Le déclencheur When webhook received d'Airtable n'accepte aucune autre méthode : il ne peut pas répondre à un GET de vérification.

5 per second

Limite de requêtes du déclencheur webhook entrant d'Airtable, avec un payload plafonné à 100 KB.

50 fetches

Requêtes qu'une action Airtable Run a script peut effectuer, chacune expirant au bout de 30 secondes.

Pourquoi Airtable ne peut-il pas recevoir directement les webhooks WhatsApp ?

Parce que Meta contrôle une destination avant de lui livrer quoi que ce soit. Meta envoie une requête GET contenant une valeur de challenge et attend cette même valeur dans le corps de la réponse. Le déclencheur When webhook received d'Airtable n'accepte que les requêtes POST et répond avec son propre JSON fixe : le contrôle ne peut donc pas aboutir, et Meta ne commence jamais la livraison.

La solution tient en une étape intermédiaire. Un nœud Webhook n8n gère la vérification et reçoit chaque message, puis le nœud Airtable de n8n ajoute une ligne : expéditeur, nom de profil, texte, identifiant du message, horodatage et identifiant du numéro récepteur. Le même schéma fonctionne avec Make ou Zapier.

Cette étape intermédiaire a un second avantage. Le déclencheur webhook d'Airtable autorise cinq requêtes par seconde, alors qu'un outil de workflow peut mettre en file d'attente une rafale qui serait sinon refusée.

Comment envoyer un template WhatsApp depuis une base Airtable ?

Avec une automatisation dont l'action est Run a script. Le déclencheur peut être un enregistrement qui entre dans une vue, un champ qui change ou un clic sur un bouton. Le script lit le téléphone et les champs de l'enregistrement via input.config(), puis appelle l'endpoint messages de la Cloud API avec fetch. Les scripts d'automatisation Airtable s'exécutent côté serveur : aucune restriction de navigateur ne s'applique.

Stockez le token d'accès comme secret dans l'éditeur de script plutôt que dans le code. Airtable masque les secrets dans la sortie de la console et ne laisse modifier un script qu'aux personnes ayant accès à tous ses secrets.

Utilisez un template pour toute prise de contact que le client n'a pas provoquée dans les dernières 24 heures, car le texte libre n'est livré que dans cette fenêtre. Le script peut réécrire dans l'enregistrement l'identifiant du message renvoyé, ce qui relie l'envoi à la ligne.

Run a script action: send an approved template
const { phone, name } = input.config();
const token = input.secret("WHATSAPP_TOKEN");
const res = await fetch(
  "https://graph.facebook.com/v23.0/<PHONE_NUMBER_ID>/messages",
  {
    method: "POST",
    headers: { Authorization: "Bearer " + token, "Content-Type": "application/json" },
    body: JSON.stringify({
      messaging_product: "whatsapp",
      to: phone,
      type: "template",
      template: {
        name: "order_ready",
        language: { code: "en" },
        components: [{ type: "body", parameters: [{ type: "text", text: name }] }],
      },
    }),
  },
);
output.set("result", await res.json());

À quoi doit ressembler la table des messages ?

Une ligne par message, avec l'identifiant du message WhatsApp comme champ principal. Meta renvoie les livraisons qu'il croit échouées, et un workflow qui cherche l'identifiant avant d'ajouter la ligne n'écrit jamais deux fois le même message.

Gardez un champ de direction avec inbound et outbound. Sur un numéro Coexistence, les réponses que l'équipe saisit dans l'application WhatsApp Business arrivent sur le même webhook sous forme d'événements smb_message_echoes ; les enregistrer comme lignes outbound donne à la base la conversation complète, et non un seul côté.

Liez chaque message à une table Contacts indexée sur le numéro de téléphone en chiffres uniquement, qui est le format envoyé par Meta. Un champ de synthèse affiche alors l'heure du dernier message entrant par contact, et c'est ce champ unique dont une automatisation a besoin pour choisir entre texte libre et template.

Erreurs courantes

  • Définir une URL de webhook Airtable comme destination du numéro. Elle n'accepte que POST, le GET de vérification de Meta échoue et rien n'est jamais livré.
  • Coller le token d'accès dans le corps du script. Stockez-le comme secret de script pour qu'il reste hors du code et des journaux.
  • Envoyer du texte libre depuis une automatisation d'enregistrement à quelqu'un qui n'a pas écrit depuis 24 heures. Seul un template approuvé est livré.
Faire cela avec EasyCoexistence

Connectez le numéro sur easycoexistence.com, pointez sa destination webhook vers le workflow n8n qui écrit dans Airtable, puis lisez l'identifiant du numéro et le token dans le dashboard. À partir de US$ 9 par numéro et par mois, jusqu'à US$ 1 à mesure que vous ajoutez des numéros, avec les 3 premiers jours gratuits.

Questions fréquemment posées

Run a script est-il disponible sur le plan gratuit d'Airtable ?

Airtable indique que l'action est proposée sur tous les types de plans avec des limites variables, et précise qu'elle n'est pas disponible pendant l'essai d'un plan Team.

Puis-je me passer de n8n et utiliser Make ou Zapier ?

Oui. Chacun des trois peut recevoir le webhook, répondre à la vérification et ajouter la ligne. Airtable est la seule pièce qui ne peut pas être la destination.

Un bouton Airtable peut-il envoyer un message WhatsApp ?

Oui. Utilisez le déclencheur When a button is clicked avec une action Run a script qui appelle la Cloud API, et les données de la ligne alimentent le template.

EasyCoexistence stocke-t-il les messages ?

Non. Meta livre chaque webhook à l'URL de votre n8n, et la seule copie est celle que votre workflow écrit dans Airtable.

Poursuivre la lecture

Prêt à commencer ?

Configurez WhatsApp Coexistence en quelques minutes, pas en quelques mois. L’application continue de fonctionner sur le téléphone.

Commencer l'essai gratuit

Vérifié le

WhatsApp et Airtable sur la Cloud API