Nous utilisons des cookies de Meta, Google, Reddit, OpenAI et Whop pour mesurer comment les gens découvrent Chat33 et afficher des publicités pertinentes. Rien n’est chargé tant que vous n’avez pas choisi. Politique de confidentialité
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
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.
Gardez votre outil d’automatisation et Chat33 ouverts dans deux onglets. Vous copiez une URL de l’un vers l’autre.
Créez une nouvelle automatisation qui démarre par un webhook, puis copiez l’URL qu’il vous donne.
Dans Chat33, allez dans Réglages, Clés API et trouvez la carte Webhook de messages. Collez l’URL dans le champ d’adresse.
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.
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.
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.
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.
Un POST par lead, avec un corps JSON. C’est une vraie requête issue de Envoyer un lead de test, mot pour mot.
content-type: application/json
user-agent: Chat33-Webhooks/1.0
x-chat33-event: lead.captured
x-chat33-signature: t=1793009626,v1=0decb33a96de935324152cb242ec33c3c45849853d59e1ff330b20cb89ded992{
"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
}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.
Chat33 n’envoie jamais d’e-mail à vos leads. Ce qui se passe ensuite dépend de l’automatisation que vous construisez.
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.
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);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à.
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.

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