Webhook de leads

Les leads Instagram vers Zapier,
Make, n8n ou Google Sheets.

Quand quelqu’un commente un mot-clé ou vous envoie un DM, Chat33 lui demande son e-mail dans la conversation. Chaque e-mail collecté est envoyé en JSON à une URL de webhook en quelques secondes, et votre outil d’automatisation le range où vous voulez : une ligne Google Sheets, Airtable, Notion, Slack ou votre CRM.

Disponible sur tous les forfaits, y compris le forfait gratuit. Les propriétaires et administrateurs de l’espace de travail peuvent le connecter.

Ce qui se passe

  1. 1Quelqu’un commente GUIDE sous votre publication
  2. 2Chat33 lui envoie un DM pour demander son e-mail
  3. 3La personne répond avec son adresse e-mail
  4. 4Chat33 envoie le lead en POST à l’URL de votre webhook
  5. 5Votre Zap, scénario ou workflow l’ajoute à Google Sheets
Avant de commencer

Ce qu’il vous faut

Trois choses. Aucune app Chat33 n’est nécessaire dans votre outil d’automatisation : c’est un simple webhook.

Un compte Instagram ou Facebook connecté

Un compte professionnel Instagram (entreprise ou créateur) ou une Page Facebook, connecté dans Chat33 sous Canaux.

Une automatisation avec une étape Collecter l’e-mail

L’étape demande l’e-mail dans un DM et attend la réponse jusqu’à 24 heures. Elle fonctionne avec les déclencheurs de mot-clé en DM sur Instagram et Facebook, et avec les déclencheurs de commentaire sur Instagram. Demander l’e-mail après un commentaire Facebook n’est pas encore disponible.

Un outil capable de recevoir un webhook

Zapier (Webhooks by Zapier nécessite un forfait Zapier payant), Make, n8n, ou votre propre serveur. L’adresse doit être publique et commencer par https://. Dans Chat33, les propriétaires et administrateurs de l’espace de travail peuvent définir le webhook.

Configuration

Configurez-le en six étapes

Gardez votre outil d’automatisation et Chat33 ouverts dans deux onglets. Vous copiez une URL de l’un vers l’autre.

  1. 1

    Récupérez une URL de webhook dans votre outil

    Créez une nouvelle automatisation qui démarre par un webhook, puis copiez l’URL qu’il vous donne.

    • Zapier : créez un Zap, choisissez Webhooks by Zapier comme app de déclenchement et Catch Hook comme événement, puis copiez l’URL du webhook.
    • Make : créez un scénario, ajoutez le module Webhooks Custom webhook, cliquez sur Add, nommez-le et copiez l’adresse.
    • n8n : ajoutez un node Webhook et réglez HTTP Method sur POST. Copiez pour l’instant la Test URL. Pour les vrais leads, utilisez la Production URL et activez le workflow.
  2. 2

    Collez-la dans Chat33

    Dans Chat33, allez dans Réglages, Clés API et trouvez la carte Webhook de messages. Collez l’URL dans le champ d’adresse.

  3. 3

    Choisissez Nouveaux leads

    Sous Envoyer, cochez Nouveaux leads. Décochez Nouveaux DM si vous ne voulez que les leads, sinon chaque DM que les gens vous envoient part vers la même URL. Laissez Tous les comptes de cet espace de travail sélectionné, ou choisissez les comptes dont vous voulez les leads. Cliquez sur Enregistrer.

  4. 4

    Envoyez un lead de test

    Cliquez sur Envoyer un lead de test. Chat33 envoie un lead fictif (Ana Lopez, ana@example.com) avec "test": true, et la carte affiche le statut HTTP avec lequel votre outil a répondu. Dans Zapier, cliquez sur Test trigger ; dans Make, attendez que le module indique qu’il a déterminé la structure des données ; dans n8n, cliquez sur Listen for test event avant l’envoi.

  5. 5

    Associez les champs

    Ajoutez l’étape suivante et associez-y les champs du lead. Pour Google Sheets : dans Zapier, utilisez Create Spreadsheet Row ; dans Make, Add a Row ; dans n8n, le node Google Sheets avec Append Row. Mettez data.email, data.name, data.username, data.flow.name et data.capturedAt dans leurs propres colonnes, ou ce dont vous avez besoin. Ignorez ou filtrez les requêtes où test vaut true.

  6. 6

    Activez et vérifiez un vrai lead

    Publiez le Zap, activez le scénario ou le workflow n8n, et activez votre automatisation Chat33. Testez l’automatisation depuis un second compte Instagram. La carte Zapier, Make, n8n, Google Sheets dans Réglages, Intégrations indique combien de leads ont été envoyés, sont en attente ou ont échoué, et le Journal d’envoi liste les 50 derniers.

Exemple de requête

Ce que reçoit votre outil

Un POST par lead, avec un corps JSON. C’est une vraie requête issue de Envoyer un lead de test, mot pour mot.

En-têtes
content-type: application/json
user-agent: Chat33-Webhooks/1.0
x-chat33-event: lead.captured
x-chat33-signature: t=1793009626,v1=0decb33a96de935324152cb242ec33c3c45849853d59e1ff330b20cb89ded992
Corps
{
  "event": "lead.captured",
  "id": "evt_lead_test_1793009626943",
  "createdAt": "2026-10-26T10:13:46.944Z",
  "data": {
    "version": 1,
    "captureKey": "test_1793009626943",
    "email": "ana@example.com",
    "name": "Ana Lopez",
    "firstName": "Ana",
    "lastName": "Lopez",
    "username": "ana.lopez",
    "platform": "instagram",
    "platformId": "test_platform_id",
    "contactId": "test_contact",
    "channel": {
      "id": "test_channel",
      "name": "Test account"
    },
    "flow": {
      "id": "test_flow",
      "name": "Test flow"
    },
    "keyword": "guide",
    "postId": null,
    "postUrl": null,
    "tags": [],
    "question": "What is your email?",
    "capturedAt": "2026-10-26T10:13:46.943Z",
    "firstSeenAt": "2026-10-26T10:13:46.943Z"
  },
  "test": true
}
Ce qui est envoyé

Tous les champs

Imbriqués sous data, sauf les quatre premiers. Les champs sont seulement ajoutés, jamais renommés ni supprimés, et data.version indique la forme.

event
Toujours lead.captured pour un lead. La même valeur figure dans l’en-tête X-Chat33-Event.
id
L’ID de l’événement, evt_lead_ suivi de la clé de capture. Il reste le même si le même lead est livré de nouveau (nouvel essai ou Envoyer les leads existants) : utilisez-le pour ignorer les doublons.
createdAt
Le moment où cette requête a été faite. Un nouvel essai reçoit un nouveau createdAt, l’id reste le même.
test
true pour Envoyer un lead de test. Les vrais leads n’ont pas ce champ.
data.version
La version du payload, 1 aujourd’hui.
data.captureKey
Une clé par personne, adresse e-mail et automatisation. Une personne qui donne la même adresse à la même automatisation n’est pas envoyée de nouveau. Les leads de test ont une clé qui commence par test_.
data.email
L’adresse qu’elle a écrite dans le DM.
data.name, data.firstName, data.lastName
Son nom sur Instagram ou Facebook, et ce même nom séparé en deux. Le prénom et le nom restent null quand on ne connaît que son pseudo.
data.username
Son pseudo, sans le @. null quand la plateforme n’en donne pas.
data.platform, data.platformId
D’où vient le lead (instagram ou facebook) et l’ID de la personne sur la plateforme, celui que Meta lui attribue pour votre compte.
data.contactId
L’ID du contact dans Chat33, le même que celui utilisé par l’API REST.
data.channel
Le compte connecté auquel le lead a écrit : id et nom.
data.flow
L’automatisation qui a demandé l’e-mail : id et nom, tels qu’ils étaient à la réception de l’e-mail.
data.keyword
Le mot-clé qui a lancé l’automatisation, ou null.
data.postId, data.postUrl
La publication commentée, quand un commentaire a lancé l’automatisation. postUrl n’est renseigné que pour les publications faites via Chat33, sinon null.
data.tags
Les étiquettes Chat33 du contact à la réception de l’e-mail. Souvent une liste vide.
data.question
La question envoyée par l’étape Collecter l’e-mail, telle que la personne l’a vue.
data.capturedAt, data.firstSeenAt
Le moment où la personne a donné son e-mail, et celui où le contact est apparu pour la première fois dans Chat33. ISO 8601, UTC.

Chat33 n’envoie jamais d’e-mail à vos leads. Ce qui se passe ensuite dépend de l’automatisation que vous construisez.

Sécurité

Vérifiez qu’une requête vient bien de Chat33

Chaque requête est signée avec le secret de signature de votre webhook, affiché sur la carte Webhook de messages dans Réglages, Clés API. Les outils no-code peuvent sauter cette étape et garder l’URL du webhook privée. Sur votre propre serveur, vérifiez la signature avant de faire confiance au corps de la requête.

X-Chat33-Event

lead.captured pour un lead, message.received pour un DM.

X-Chat33-Signature

Ressemble à t=1793009626,v1=0decb33a..., où t est l’heure Unix en secondes et v1 le HMAC-SHA256 de l’horodatage, d’un point et du corps brut de la requête, avec le secret de signature complet comme clé (whsec_...). Chaque tentative est signée de nouveau avec un nouvel horodatage.

User-Agent

Chat33-Webhooks/1.0, avec Content-Type application/json.

Un nouveau secret

Supprimer le webhook puis l’enregistrer de nouveau génère un nouveau secret. Mettez alors votre serveur à jour.

Node.js (Express)
const crypto = require("crypto");
const express = require("express");

// Settings, API Keys, Message webhook, Signing secret (whsec_...)
const SECRET = process.env.CHAT33_WEBHOOK_SECRET;

function verifyChat33(rawBody, header, toleranceSeconds = 300) {
  const parts = {};
  for (const piece of String(header || "").split(",")) {
    const i = piece.indexOf("=");
    if (i > 0) parts[piece.slice(0, i)] = piece.slice(i + 1);
  }
  if (!parts.t || !parts.v1) return false;
  if (Math.abs(Date.now() / 1000 - Number(parts.t)) > toleranceSeconds) return false;
  const expected = crypto
    .createHmac("sha256", SECRET)
    .update(`${parts.t}.${rawBody}`)
    .digest("hex");
  const a = Buffer.from(expected, "hex");
  const b = Buffer.from(parts.v1, "hex");
  return a.length === b.length && crypto.timingSafeEqual(a, b);
}

const app = express();

// The raw body: the signature covers the exact bytes Chat33 sent.
app.post("/chat33-webhook", express.raw({ type: "application/json" }), (req, res) => {
  const rawBody = req.body.toString("utf8");
  if (!verifyChat33(rawBody, req.get("X-Chat33-Signature"))) return res.sendStatus(401);

  const event = JSON.parse(rawBody);
  if (event.event === "lead.captured" && !event.test) {
    // Save event.data.email, skip event.id values you already have.
  }
  res.sendStatus(200);
});

app.listen(3000);
Options

Comment fonctionne la livraison

Ce que Chat33 fait de chaque lead, et ce que votre endpoint doit répondre.

Répondez par un 2xx en moins de 10 secondes

Tout statut 2xx compte comme livré. Tout le reste, un délai dépassé après 10 secondes ou une erreur réseau compte comme un échec. Les redirections ne sont pas suivies : enregistrez donc l’adresse finale.

Les leads en échec sont retentés

Un lead en échec est retenté après environ 1 minute, 5 minutes, 30 minutes, 2 heures et 12 heures. Ensuite, il s’affiche en échec, et Réessayer les échecs sur la carte le renvoie. Une réponse 429 signifie d’attendre : Chat33 réessaie une minute plus tard sans consommer d’essai.

Les leads de test sont envoyés une seule fois

Envoyer un lead de test fait une seule tentative, n’est pas retenté et n’apparaît pas dans le journal d’envoi. Il est envoyé même quand Nouveaux leads n’est pas coché : cochez-le donc avant de compter sur de vrais leads.

Le même webhook peut envoyer des DM

Avec Nouveaux DM coché, la même URL reçoit aussi message.received pour chaque DM que les gens envoient à vos comptes connectés, pour que votre propre bot puisse y répondre. La référence de l’API décrit cet événement et les endpoints de webhook.

Les leads que vous avez déjà

Envoyer les leads existants

Les leads collectés avant l’activation de Nouveaux leads ne sont pas envoyés d’eux-mêmes. Cliquez sur Envoyer les leads existants sur la carte Zapier, Make, n8n, Google Sheets dans Réglages, Intégrations et ils partent dans les prochaines minutes, avec les mêmes id qu’avant : votre outil peut donc ignorer ceux qu’il a déjà.

Dépannage

Quand rien n’arrive

Chat33 garde chaque lead : il suffit donc de réparer le webhook. Rien n’est à collecter de nouveau.

Vérifiez la carte Webhook de messages

L’URL doit être enregistrée et Nouveaux leads coché. La carte affiche la dernière livraison avec son statut HTTP ou l’erreur. Utilisez Envoyer un lead de test pour voir la réponse tout de suite.

Zapier indique que l’app nécessite une mise à niveau

Webhooks by Zapier n’est pas inclus dans le forfait Zapier gratuit. Passez à un forfait supérieur, ou utilisez Make ou n8n, qui peuvent recevoir des webhooks dans leurs forfaits gratuits.

Votre outil répond par une erreur

Une réponse 4xx ou 5xx est un échec et le lead est retenté. Dans n8n, la Test URL ne fonctionne que pendant que vous écoutez un événement de test : utilisez la Production URL avec le workflow actif. Dans Make, le scénario doit être activé.

L’adresse n’a pas été acceptée

Chat33 n’envoie qu’à des adresses https:// publiques. Un n8n auto-hébergé sur localhost ou sur un réseau privé ne peut pas recevoir de leads. Supprimez tout ce qui suit un # dans l’URL.

Les leads sont dans Chat33 mais pas dans votre outil

Ouvrez le Journal d’envoi sur la carte Zapier, Make, n8n, Google Sheets. Chaque lead indique son statut et la raison. Les leads des comptes que le webhook ne couvre pas sont ignorés, et les leads collectés avant l’activation de Nouveaux leads nécessitent Envoyer les leads existants.

Personne n’a reçu de demande d’e-mail

Vérifiez l’automatisation. Elle doit être activée, et quand elle démarre sur un commentaire Instagram, l’étape Collecter l’e-mail doit venir avant le premier DM. Demander l’e-mail après un commentaire Facebook n’est pas encore disponible.

Questions sur le webhook de leads

Y a-t-il une app Chat33 dans Zapier ou Make ?
Pas encore. Vous utilisez le déclencheur webhook que possède chaque outil d’automatisation : Webhooks by Zapier, Catch Hook dans Zapier, Custom webhook dans Make, le node Webhook dans n8n. Pour n8n, il existe aussi un node Chat33 officiel pour publier et pour d’autres actions de l’API.
Quels forfaits Chat33 incluent le webhook de leads ?
Tous, y compris le forfait gratuit. Votre outil d’automatisation peut exiger son propre forfait payant, comme Zapier pour les webhooks.
En combien de temps les leads arrivent-ils ?
En général en quelques secondes après l’envoi de l’e-mail par la personne. Si votre endpoint est en panne, Chat33 garde le lead et réessaie.
Puis-je envoyer des leads vers Google Sheets sans Zapier ni Make ?
Pas directement. Google Sheets ne peut pas recevoir un webhook seul : un outil comme Zapier, Make ou n8n s’intercale donc et ajoute la ligne.
Le même lead peut-il arriver deux fois ?
Une personne qui donne la même adresse à la même automatisation n’est envoyée qu’une fois. Un nouvel essai ou Envoyer les leads existants peut livrer de nouveau un lead, avec le même id : dédoublonnez donc sur id ou sur data.email.
Puis-je utiliser le webhook et Mailchimp ou HubSpot en même temps ?
Oui. Chaque nouveau lead va vers chaque destination connectée.
Comment distinguer un lead de test d’un vrai lead ?
Les leads de test ont "test": true au premier niveau et l’adresse ana@example.com. Les vrais leads n’ont pas de champ test.
Mascotte Chat33 tenant un bouton « Get it here »

Transformez vos commentaires en
lignes, fiches et alertes.

Créez un compte gratuit, connectez Instagram, ajoutez une étape Collecter l’e-mail et collez l’URL de votre webhook.