Webhook dei lead

I lead di Instagram, verso Zapier,
Make, n8n o Google Sheets.

Quando qualcuno commenta una parola chiave o ti scrive in DM, Chat33 gli chiede l’email nella chat. Ogni email raccolta viene inviata come JSON a un URL webhook in pochi secondi, e il tuo strumento di automazione la mette dove vuoi: una riga di Google Sheets, Airtable, Notion, Slack o il tuo CRM.

Disponibile con ogni piano, anche quello gratuito. Possono collegarla i proprietari e gli amministratori dello spazio di lavoro.

Cosa succede

  1. 1Qualcuno commenta GUIDA sotto il tuo post
  2. 2Chat33 gli manda un DM per chiedere l’email
  3. 3Risponde con il suo indirizzo email
  4. 4Chat33 invia il lead in POST al tuo URL webhook
  5. 5Il tuo Zap, scenario o workflow lo aggiunge a Google Sheets
Prima di iniziare

Cosa ti serve

Tre cose. Nel tuo strumento di automazione non serve nessuna app di Chat33: è un semplice webhook.

Un account Instagram o Facebook collegato

Un account professionale di Instagram (business o creator) o una Pagina Facebook, collegati in Chat33 in Canali.

Un’automazione con un passaggio Raccogli email

Il passaggio chiede l’email in un DM e aspetta la risposta fino a 24 ore. Funziona con i trigger con parola chiave nei DM su Instagram e Facebook e con i trigger sui commenti su Instagram. Chiedere l’email dopo un commento su Facebook non è ancora disponibile.

Uno strumento che può ricevere un webhook

Zapier (Webhooks by Zapier richiede un piano Zapier a pagamento), Make, n8n o il tuo server. L’indirizzo deve essere pubblico e iniziare con https://. In Chat33 possono impostare il webhook i proprietari e gli amministratori dello spazio di lavoro.

Configurazione

Configuralo in sei passaggi

Tieni aperti il tuo strumento di automazione e Chat33 in due schede. Copi un URL dall’una all’altra.

  1. 1

    Prendi un URL webhook nel tuo strumento

    Crea una nuova automazione che parte con un webhook, poi copia l’URL che ti dà.

    • Zapier: crea uno Zap, scegli Webhooks by Zapier come app del trigger e Catch Hook come evento, poi copia l’URL del webhook.
    • Make: crea uno scenario, aggiungi il modulo Webhooks Custom webhook, clicca Add, dagli un nome e copia l’indirizzo.
    • n8n: aggiungi un nodo Webhook e imposta HTTP Method su POST. Per ora copia il Test URL. Per i lead veri usa il Production URL e attiva il workflow.
  2. 2

    Incollalo in Chat33

    In Chat33 vai in Impostazioni, Chiavi API e trova la card Webhook dei messaggi. Incolla l’URL nel campo dell’indirizzo.

  3. 3

    Scegli Nuovi contatti

    Sotto Invia, spunta Nuovi contatti. Togli la spunta da Nuovi DM se vuoi solo i lead, altrimenti ogni DM che ti scrivono va allo stesso URL. Lascia selezionato Tutti gli account di questo spazio di lavoro, oppure scegli gli account di cui vuoi i lead. Clicca Salva.

  4. 4

    Invia un lead di prova

    Clicca Invia un contatto di prova. Chat33 invia un lead inventato (Ana Lopez, ana@example.com) con "test": true, e la card mostra lo stato HTTP con cui ha risposto il tuo strumento. In Zapier clicca Test trigger, in Make aspetta che il modulo dica di aver determinato la struttura dei dati, in n8n clicca Listen for test event prima di inviare.

  5. 5

    Associa i campi

    Aggiungi il passaggio successivo e associa i campi del lead. Per Google Sheets: in Zapier usa Create Spreadsheet Row, in Make Add a Row, in n8n il nodo Google Sheets con Append Row. Metti data.email, data.name, data.username, data.flow.name e data.capturedAt ciascuno nella sua colonna, o quello che ti serve. Salta o filtra le richieste in cui test è true.

  6. 6

    Attivalo e controlla un lead vero

    Pubblica lo Zap, attiva lo scenario o il workflow n8n, e attiva la tua automazione Chat33. Prova l’automazione da un secondo account Instagram. La card Zapier, Make, n8n, Google Sheets in Impostazioni, Integrazioni mostra quanti lead sono stati inviati, sono in attesa o non sono riusciti, e il Registro degli invii elenca gli ultimi 50.

Richiesta di esempio

Cosa riceve il tuo strumento

Una POST per ogni lead, con un corpo JSON. Questa è una richiesta vera di Invia un contatto di prova, parola per parola.

Header
content-type: application/json
user-agent: Chat33-Webhooks/1.0
x-chat33-event: lead.captured
x-chat33-signature: t=1793009626,v1=0decb33a96de935324152cb242ec33c3c45849853d59e1ff330b20cb89ded992
Corpo
{
  "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
}
Cosa viene inviato

Tutti i campi

Annidati sotto data, tranne i primi quattro. I campi vengono solo aggiunti, mai rinominati o rimossi, e data.version ti dice la struttura.

event
Sempre lead.captured per un lead. Lo stesso valore è nell’header X-Chat33-Event.
id
L’ID dell’evento, evt_lead_ seguito dalla chiave di acquisizione. Resta uguale se lo stesso lead viene consegnato di nuovo (un nuovo tentativo o Invia i contatti esistenti), quindi usalo per saltare i duplicati.
createdAt
Quando è stata fatta questa richiesta. Un nuovo tentativo riceve un nuovo createdAt, l’id resta.
test
true su Invia un contatto di prova. I lead veri non hanno questo campo.
data.version
La versione del payload, oggi 1.
data.captureKey
Una chiave per persona, indirizzo email e automazione. Una persona che dà lo stesso indirizzo alla stessa automazione non viene inviata di nuovo. I lead di prova hanno una chiave che inizia con test_.
data.email
L’indirizzo che ha scritto nel DM.
data.name, data.firstName, data.lastName
Il suo nome su Instagram o Facebook, e lo stesso nome diviso in due. Nome e cognome restano null quando conosciamo solo il suo nome utente.
data.username
Il suo nome utente, senza la @. null quando la piattaforma non ne dà uno.
data.platform, data.platformId
Da dove arriva il lead (instagram o facebook) e l’ID della persona lì, l’ID che Meta le dà per il tuo account.
data.contactId
L’ID del contatto in Chat33, lo stesso ID che usa l’API REST.
data.channel
L’account collegato a cui ha scritto il lead: id e nome.
data.flow
L’automazione che ha chiesto l’email: id e nome, com’erano quando è arrivata l’email.
data.keyword
La parola chiave che ha avviato l’automazione, oppure null.
data.postId, data.postUrl
Il post che ha commentato, quando l’automazione è partita da un commento. postUrl è compilato solo per i post pubblicati tramite Chat33, altrimenti è null.
data.tags
Le etichette Chat33 del contatto quando è arrivata l’email. Spesso è una lista vuota.
data.question
La domanda inviata dal passaggio Raccogli email, come l’ha vista la persona.
data.capturedAt, data.firstSeenAt
Quando ha dato l’email e quando il contatto è comparso per la prima volta in Chat33. ISO 8601, UTC.

Chat33 non scrive mai ai tuoi lead. Cosa succede dopo dipende dall’automazione che costruisci.

Sicurezza

Verifica che una richiesta arrivi da Chat33

Ogni richiesta è firmata con il segreto di firma del tuo webhook, che trovi sulla card Webhook dei messaggi in Impostazioni, Chiavi API. Gli strumenti no-code possono saltare questo passaggio e tenere privato l’URL del webhook. Sul tuo server, controlla la firma prima di fidarti del corpo.

X-Chat33-Event

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

X-Chat33-Signature

Ha un aspetto come t=1793009626,v1=0decb33a..., dove t è l’ora Unix in secondi e v1 è l’HMAC-SHA256 del timestamp, un punto e il corpo grezzo della richiesta, con chiave l’intero segreto di firma (whsec_...). Ogni tentativo viene firmato di nuovo con un timestamp aggiornato.

User-Agent

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

Un nuovo segreto

Rimuovere il webhook e salvarlo di nuovo genera un nuovo segreto. Quando succede, aggiorna il tuo server.

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);
Opzioni

Come funziona la consegna

Cosa fa Chat33 con ogni lead e cosa dovrebbe rispondere il tuo endpoint.

Rispondi con un 2xx entro 10 secondi

Qualsiasi stato 2xx conta come consegnato. Tutto il resto, un timeout dopo 10 secondi o un errore di rete conta come errore. I reindirizzamenti non vengono seguiti, quindi salva l’indirizzo finale.

I lead non riusciti vengono riprovati

Un lead non riuscito viene riprovato dopo circa 1 minuto, 5 minuti, 30 minuti, 2 ore e 12 ore. Dopo, risulta Non riuscito, e Riprova quelli non riusciti sulla card lo invia di nuovo. Una risposta 429 significa aspettare: Chat33 riprova un minuto dopo senza consumare un tentativo.

I lead di prova vengono inviati una volta sola

Invia un contatto di prova fa un solo tentativo, non viene riprovato e non compare nel registro degli invii. Viene inviato anche quando Nuovi contatti non è spuntato, quindi spuntalo prima di contare sui lead veri.

Lo stesso webhook può inviare i DM

Con Nuovi DM spuntato, lo stesso URL riceve anche message.received per ogni DM che le persone mandano ai tuoi account collegati, così il tuo bot può rispondere. Il riferimento API descrive questo evento e gli endpoint del webhook.

Contatti che hai già

Invia i lead esistenti

I lead raccolti prima di attivare Nuovi contatti non vengono inviati da soli. Clicca Invia i contatti esistenti sulla card Zapier, Make, n8n, Google Sheets in Impostazioni, Integrazioni e partono nei prossimi minuti, con gli stessi ID di prima, così il tuo strumento può saltare quelli che ha già.

Risoluzione dei problemi

Quando non arriva niente

Chat33 conserva ogni lead, quindi basta sistemare il webhook. Non devi raccogliere di nuovo niente.

Controlla la card Webhook dei messaggi

L’URL deve essere salvato e Nuovi contatti spuntato. La card mostra l’ultima consegna con il suo stato HTTP o l’errore. Usa Invia un contatto di prova per vedere subito la risposta.

Zapier dice che l’app richiede un upgrade

Webhooks by Zapier non è nel piano gratuito di Zapier. Passa a un piano superiore, oppure usa Make o n8n, che possono ricevere webhook anche nei piani gratuiti.

Il tuo strumento risponde con un errore

Una risposta 4xx o 5xx è un errore e il lead viene riprovato. In n8n il Test URL funziona solo mentre sei in ascolto di un evento di prova: usa il Production URL con il workflow attivo. In Make lo scenario deve essere attivo.

L’indirizzo non è stato accettato

Chat33 invia solo a indirizzi https:// pubblici. Un n8n self-hosted su localhost o su una rete privata non può ricevere i lead. Rimuovi tutto ciò che segue un # nell’URL.

I lead sono in Chat33 ma non nel tuo strumento

Apri il Registro degli invii sulla card Zapier, Make, n8n, Google Sheets. Ogni lead mostra il suo stato e il motivo. I lead degli account che il webhook non copre vengono saltati, e i lead raccolti prima di attivare Nuovi contatti richiedono Invia i contatti esistenti.

A nessuno è stata chiesta l’email

Controlla l’automazione. Deve essere attiva e, se parte da un commento su Instagram, il passaggio Raccogli email deve venire prima del primo DM. Chiedere l’email dopo un commento su Facebook non è ancora disponibile.

Domande sul webhook dei lead

Esiste un’app di Chat33 in Zapier o Make?
Non ancora. Usi il trigger webhook che ha ogni strumento di automazione: Webhooks by Zapier, Catch Hook in Zapier, Custom webhook in Make, il nodo Webhook in n8n. Per n8n esiste anche un nodo ufficiale di Chat33 per pubblicare e per altre azioni dell’API.
Quali piani di Chat33 includono il webhook dei lead?
Tutti i piani, anche quello gratuito. Il tuo strumento di automazione potrebbe richiedere un piano a pagamento, come Zapier per i webhook.
Quanto in fretta arrivano i lead?
Di solito in pochi secondi da quando la persona invia l’email. Se il tuo endpoint non funziona, Chat33 conserva il lead e riprova.
Posso inviare i lead a Google Sheets senza Zapier o Make?
Non direttamente. Google Sheets non può ricevere un webhook da solo, quindi uno strumento come Zapier, Make o n8n si mette in mezzo e aggiunge la riga.
Lo stesso lead può arrivare due volte?
Una persona che dà lo stesso indirizzo alla stessa automazione viene inviata una volta sola. Un nuovo tentativo o Invia i contatti esistenti può consegnare di nuovo un lead, con lo stesso id, quindi elimina i duplicati in base all’id o a data.email.
Posso usare il webhook e Mailchimp o HubSpot allo stesso tempo?
Sì. Ogni nuovo lead va a ciascuna destinazione collegata.
Come distinguo un lead di prova da uno vero?
I lead di prova hanno "test": true al livello principale e l’indirizzo ana@example.com. I lead veri non hanno il campo test.
Mascotte di Chat33 con in mano un pulsante Ecco il link

Trasforma i commenti in
righe, record e avvisi.

Crea un account gratuito, collega Instagram, aggiungi un passaggio Raccogli email e incolla il tuo URL webhook.