Les messages entrants WhatsApp n'arrivent pas à n8n malgré le webhook vérifié et l'abonnement WABA confirmé

Je configure une intégration WhatsApp Business Cloud dans n8n Cloud (version visible dans le panneau Executions) et les messages entrants ne déclenchent jamais une exécution de workflow, malgré chaque vérification qui réussit :

Décrivez le problème/l’erreur/la question

Les messages WhatsApp entrants ne déclenchent aucune exécution de workflow, malgré le webhook vérifié par Meta et l’application confirmée comme abonnée au WABA. Le propre panneau de test webhook en temps réel de Meta confirme qu’IL envoie les événements de message, mais n8n n’enregistre jamais une exécution pour eux — seule la demande GET de vérification initiale apparaît jamais dans Executions.
J’ai d’abord essayé le nœud natif « WhatsApp Trigger », mais ses identifiants « WhatsApp OAuth account » échouent systématiquement avec « Bad request - please check your parameters » / « Error validating client secret » même avec Client ID/Secret correct (correspond à d’autres threads signalés). En tant que solution de contournement, j’ai basculé vers un nœud Webhook générique (GET+POST via « Allow Multiple HTTP Methods ») + un nœud « Respond to Webhook » renvoyant {{ $json.query[“hub.challenge”] }} pour la poignée de main de vérification. La vérification réussit et l’abonnement WABA (POST /{WABA_ID}/subscribed_apps) retourne success:true, mais les vrais messages entrants ne parviennent jamais à n8n.

Quel est le message d’erreur (le cas échéant) ?

Aucune erreur n’est affichée — le workflow ne s’exécute simplement jamais pour les messages entrants. Aucune nouvelle entrée n’apparaît dans Executions après l’envoi d’un vrai message WhatsApp, même si le panneau de test de Meta confirme que l’événement a été envoyé.

Veuillez partager votre workflow

Partagez la sortie retournée par le dernier nœud

Informations sur votre configuration n8n

  • Version n8n :
  • Base de données (par défaut : SQLite) :
  • Paramètre n8n EXECUTIONS_PROCESS (par défaut : own, main) :
  • Exécution de n8n via (Docker, npm, n8n cloud, application de bureau) :
  • Système d’exploitation :

Salut @FAOR_Beauty_Skin, en attendant une réponse, voici quelques ressources qui pourraient vous aider :

Ressources suggérées

Automatiquement mises en correspondance avec votre question.

Documentation :

Forum :

@fahmiiireza, @tridi, @LogeshwariV - vous avez déjà aidé pour des problèmes similaires, pouvez-vous y jeter un coup d’œil ?

Suggéré automatiquement par le bot communautaire de n8n. C’est un projet pilote - veuillez partager vos retours ici.

Bonjour @FAOR_Beauty_Skin Bienvenue !
Une vérification GET qui arrive sans rien après est la signature de l’URL de test. n8n enregistre l’URL de test uniquement pendant que le canvas écoute et la supprime après 120 secondes. La poignée de main de Meta tombe donc dans cette fenêtre et tout message ultérieur accède à un chemin que n8n ne sert plus. L’URL de production n’existe qu’une fois le workflow publié.
Publiez le workflow, puis définissez le callback Meta sur le chemin de production /webhook/1490d3bd-a1f9-476b-9e03-c14c2ab22743 plutôt que le formulaire /webhook-test/, puis reverifiez. Prouvez-le de votre côté avant de retourner à Meta :

curl -X POST https://<your-instance>.app.n8n.cloud/webhook/1490d3bd-a1f9-476b-9e03-c14c2ab22743 -H "Content-Type: application/json" -d '{"ping":true}'

Si cet appel crée bien une exécution et que les vrais messages n’arrivent toujours pas, l’URL est correcte et le problème est l’abonnement au champ messages sous Webhook fields dans la configuration WhatsApp de l’application, ce qui est distinct de l’appel subscribed_apps que vous avez déjà lancé contre le WABA.

Votre nœud Webhook est enregistré pour GET uniquement, donc la vérification de Meta réussit et chaque POST de message réel reçoit un 404. C’est pourquoi la livraison semble confirmée du côté de Meta et rien n’apparaît jamais dans vos Executions.

C’est visible dans le JSON que vous avez posté — le nœud Webhook n’a pas de httpMethod :

"parameters": {
  "path": "1490d3bd-a1f9-476b-9e03-c14c2ab22743",
  "responseMode": "responseNode",
  "options": {}
}

n8n supprime les paramètres d’option laissés à leur valeur par défaut lors de l’enregistrement, et la valeur par défaut pour httpMethod est GET. Vous mentionnez que vous avez basculé vers GET+POST via « Allow Multiple HTTP Methods » — mais ce paramètre n’est pas dans l’export, et j’ai vérifié qu’il y serait s’il était activé. L’export du même workflow avec ce paramètre activé vous donne :

"parameters": {
  "multipleMethods": true,
  "httpMethod": ["GET", "POST"],
  "path": "wa-multi",
  "responseMode": "responseNode",
  "options": {}
}

Donc au moment où vous avez fait cet export, le nœud était GET uniquement. Soit le changement n’a pas été enregistré, soit l’export le précède. Cela vaut la peine de rouvrir le nœud pour vérifier — et si l’interface utilisateur le montre effectivement activé, réenregistrez et réexportez, car alors le paramètre ne persiste pas et c’est un bug séparé qui vaut la peine d’être signalé.

Je l’ai reproduit sur 2.32.7 plutôt que de supposer. Deux workflows, identiques sauf pour ce paramètre, tous deux actifs :

webhook_entity
reprowh01  wa-default  GET     <- votre config : pas de httpMethod
reprowh02  wa-multi    GET     <- multipleMethods: true
reprowh02  wa-multi    POST

Et en direct :

GET  /webhook/wa-default  ->  200
POST /webhook/wa-default  ->  404   <- où les messages de Meta arrivent
GET  /webhook/wa-multi    ->  200
POST /webhook/wa-multi    ->  200

La solution est Allow Multiple HTTP Methods avec GET et POST, ou deux webhooks séparés sur le même chemin — un GET pour la poignée de main hub.challenge, un POST pour les messages. La seconde est plus propre, car votre nœud Respond retourne $json.query["hub.challenge"], ce qui n’a de sens que sur la branche GET. En l’état, si un POST arrivait jamais, vous répondriez à Meta avec un corps vide.

L’échec du déclencheur WhatsApp natif avec « Error validating client secret » est un problème séparé — celui-ci est dans les identifiants, pas le routage. Cela vaut probablement la peine d’ouvrir son propre fil une fois celui-ci débloqué, pour que les deux ne s’emmêlent pas.

@FAOR_Beauty_Skin

Dans n8n, il existe une différence massive entre l’environnement Éditeur et l’environnement Production.

  • Le Problème : Lorsque vous testez dans l’éditeur (en cliquant sur « Execute Workflow »), n8n écoute sur l’URL de Test. Lorsque vous cliquez sur « Verify » dans Meta, Meta utilise probablement l’URL de Production.
  • Le Symptôme : Si vous n’avez pas activé le commutateur en haut à droite de n8n en le mettant sur « Active », n8n recevra la requête POST de Meta, verra qu’aucun workflow n’« écoute » en mode production, et la supprimera simplement. Elle n’apparaîtra pas dans votre liste d’exécutions.
  • La Solution :
    1. Assurez-vous d’utiliser l’URL de Production (sans /test/ dans le chemin) dans la Meta Developer Console.
    2. Activez le workflow (le commutateur en haut à droite doit être ON).
    3. Consultez l’onglet « Executions » (pas l’éditeur) pour vérifier si les POST arrivent.

Meta dispose de deux emplacements différents pour configurer les Webhooks, et ils se comportent différemment.

  • Le Problème : Si vous avez configuré l’URL du Webhook dans la section générale « Webhooks » de la barre latérale gauche de votre Application Meta, vous dites à Meta : « Envoyez-moi des mises à jour concernant l’Application (comme les modifications des paramètres de l’Application ou des permissions utilisateur). »
  • La Solution : Vous devez configurer l’URL du Webhook à l’intérieur de la section de produit spécifique WhatsApp :
    1. Allez sur votre Tableau de Bord Meta App.
    2. Regardez la barre latérale sous « Products ».
    3. Cliquez sur « WhatsApp » $\rightarrow$ « Configuration ».
    4. C’est là que votre URL de Webhook et votre Verify Token doivent être saisis. Si vous les mettez dans l’onglet « Webhooks » général, vous réussirez la poignée de main, mais vous ne recevrez jamais les messages WhatsApp.

Même si l’URL est correcte et la poignée de main vérifiée, Meta n’enverra pas de données à moins que vous ne le demandiez explicitement.

  • Le Problème : Vous avez vérifié la connexion, mais vous ne vous êtes pas abonné au contenu.
  • La Solution :
    1. Sur la page WhatsApp $\rightarrow$ Configuration (où vous avez mis votre URL), recherchez une section appelée « Webhook fields ».
    2. Vous devez cliquer sur « Manage ».
    3. Recherchez la ligne nommée messages.
    4. Assurez-vous qu’elle est marquée comme « Subscribed ». Si vous ne voyez pas « Subscribed » à côté de messages, Meta restera silencieux même si le webhook est « vérifié ».

Bien que vous ayez mentionné l’activation de « Allow Multiple HTTP Methods », vérifiez à nouveau la configuration spécifique de ce nœud Webhook.

  • Le Problème : Si le nœud est explicitement défini sur GET uniquement, il ignorera le POST de Meta.
  • La Solution :
    • Ouvrez votre nœud Webhook.
    • Sous HTTP Method, assurez-vous qu’il dit GET, POST (ou que vous avez sélectionné les deux).
    • Remarque : Certaines versions du nœud vous obligent à sélectionner la méthode dans une liste déroulante. Si vous n’en voyez qu’une, assurez-vous que vous ne filtrez pas accidentellement les requêtes POST.

Cela vous aide-t-il ?