Webhook za kontakte

Kontakti sa Instagrama, u Zapier,
Make, n8n ili Google Sheets.

Kad neko napiše ključnu reč ili ti pošalje DM, Chat33 u razgovoru traži imejl. Svaki prikupljen imejl za nekoliko sekundi stiže kao JSON na webhook URL, a tvoj alat za automatizaciju ga stavlja gde želiš: u red u Google Sheets, Airtable, Notion, Slack ili tvoj CRM.

Dostupno na svakom paketu, uključujući Free. Povezati mogu vlasnici radnog prostora i admini.

Šta se dešava

  1. 1Neko napiše VODIČ ispod tvoje objave
  2. 2Chat33 šalje DM i traži imejl
  3. 3Osoba odgovara svojom imejl adresom
  4. 4Chat33 šalje kontakt POST zahtevom na tvoj webhook URL
  5. 5Tvoj Zap, scenario ili workflow ga dodaje u Google Sheets
Pre nego što počneš

Šta ti treba

Tri stvari. U alatu za automatizaciju ne treba ti Chat33 aplikacija: ovo je običan webhook.

Povezan nalog na Instagramu ili Facebooku

Profesionalni Instagram nalog (poslovni nalog ili nalog kreatora) ili Facebook stranica, povezani u Chat33 pod Kanali.

Automatizacija sa korakom Prikupi imejl

Korak traži imejl u DM-u i čeka odgovor do 24 sata. Radi sa okidačima na ključnu reč u DM-u na Instagramu i Facebooku, i sa okidačima na komentar na Instagramu. Traženje imejla posle komentara na Facebooku još nije dostupno.

Alat koji može da primi webhook

Zapier (za Webhooks by Zapier treba plaćeni Zapier paket), Make, n8n ili tvoj server. Adresa mora biti javna i počinjati sa https://. U Chat33 webhook mogu da podese vlasnici radnog prostora i admini.

Podešavanje

Podesi u šest koraka

Drži alat za automatizaciju i Chat33 otvorene u dva taba. Kopiraš jedan URL iz jednog u drugi.

  1. 1

    Uzmi webhook URL u svom alatu

    Napravi novu automatizaciju koja počinje webhookom, pa kopiraj URL koji dobiješ.

    • Zapier: napravi Zap, izaberi Webhooks by Zapier kao okidač i Catch Hook kao događaj, pa kopiraj webhook URL.
    • Make: napravi scenario, dodaj Webhooks modul Custom webhook, klikni Add, daj mu ime i kopiraj adresu.
    • n8n: dodaj Webhook čvor i postavi HTTP Method na POST. Za sada kopiraj Test URL. Za prave kontakte koristi Production URL i aktiviraj workflow.
  2. 2

    Nalepi ga u Chat33

    U Chat33 idi na Podešavanja, API ključevi i nađi karticu Webhook za poruke. Nalepi URL u polje za adresu.

  3. 3

    Izaberi Novi kontakti

    Pod Šalji označi Novi kontakti. Isključi Novi DM-ovi ako želiš samo kontakte, inače svaki DM koji ti ljudi pošalju ide na isti URL. Ostavi izabrano Svi nalozi u ovom radnom prostoru ili izaberi naloge čije kontakte želiš. Klikni Sačuvaj.

  4. 4

    Pošalji probni kontakt

    Klikni Pošalji probni kontakt. Chat33 šalje izmišljen kontakt (Ana Lopez, ana@example.com) sa "test": true, a kartica prikazuje HTTP status kojim je tvoj alat odgovorio. U Zapieru klikni Test trigger, u Make-u sačekaj da modul javi da je odredio strukturu podataka, a u n8n-u pre slanja pokreni slušanje test događaja dugmetom Listen.

  5. 5

    Mapiraj polja

    Dodaj sledeći korak i mapiraj polja kontakta u njega. Za Google Sheets: u Zapieru koristi Create Spreadsheet Row, u Make-u Add a Row, u n8n-u Google Sheets čvor sa Append Row. Stavi data.email, data.name, data.username, data.flow.name i data.capturedAt u posebne kolone, ili šta ti već treba. Preskoči ili filtriraj zahteve gde je test true.

  6. 6

    Uključi i proveri pravi kontakt

    Objavi Zap, uključi scenario ili aktiviraj n8n workflow, pa uključi svoju Chat33 automatizaciju. Testiraj automatizaciju sa drugog Instagram naloga. Kartica Zapier, Make, n8n, Google Sheets u Podešavanja, Integracije pokazuje koliko je kontakata poslato, koliko čeka i koliko nije uspelo, a Evidencija isporuke prikazuje poslednjih 50.

Primer zahteva

Šta tvoj alat prima

Jedan POST po kontaktu, sa JSON telom. Ovo je pravi zahtev iz Pošalji probni kontakt, od reči do reči.

Headers
content-type: application/json
user-agent: Chat33-Webhooks/1.0
x-chat33-event: lead.captured
x-chat33-signature: t=1793009626,v1=0decb33a96de935324152cb242ec33c3c45849853d59e1ff330b20cb89ded992
Body
{
  "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
}
Šta se šalje

Sva polja

Ugnežđena su pod data, osim prva četiri. Polja se samo dodaju, nikad se ne preimenuju i ne uklanjaju, a data.version pokazuje oblik.

event
Za kontakt uvek lead.captured. Ista vrednost je u headeru X-Chat33-Event.
id
ID događaja, evt_lead_ pa capture key. Ostaje isti ako se isti kontakt isporuči ponovo (ponovni pokušaj ili Pošalji postojeće kontakte), pa ga koristi za preskakanje duplikata.
createdAt
Kada je ovaj zahtev napravljen. Ponovni pokušaj dobija novi createdAt, a id ostaje.
test
true kod Pošalji probni kontakt. Pravi kontakti nemaju ovo polje.
data.version
Verzija payloada, danas 1.
data.captureKey
Jedan ključ po osobi, imejl adresi i automatizaciji. Ako osoba ponovo da istu adresu istoj automatizaciji, ne šalje se opet. Probni kontakti imaju ključ koji počinje sa test_.
data.email
Adresa koju je osoba napisala u DM-u.
data.name, data.firstName, data.lastName
Ime osobe na Instagramu ili Facebooku, i isto ime podeljeno na dva dela. Ime i prezime ostaju null kad znamo samo korisničko ime.
data.username
Korisničko ime, bez @. null kad ga platforma ne daje.
data.platform, data.platformId
Odakle je kontakt došao (instagram ili facebook) i ID osobe tamo, onaj koji joj Meta dodeljuje za tvoj nalog.
data.contactId
ID kontakta u Chat33, isti koji koristi REST API.
data.channel
Povezani nalog kome je kontakt pisao: id i name.
data.flow
Automatizacija koja je tražila imejl: id i name, kakvi su bili kad je imejl stigao.
data.keyword
Ključna reč koja je pokrenula automatizaciju, ili null.
data.postId, data.postUrl
Objava koju je osoba komentarisala, kad je komentar pokrenuo automatizaciju. postUrl se popunjava samo za objave objavljene preko Chat33, inače je null.
data.tags
Chat33 oznake kontakta u trenutku kad je imejl stigao. Često prazna lista.
data.question
Pitanje koje je poslao korak Prikupi imejl, onako kako ga je osoba videla.
data.capturedAt, data.firstSeenAt
Kada je osoba dala imejl i kada se kontakt prvi put pojavio u Chat33. ISO 8601, UTC.

Chat33 nikad ne šalje imejlove tvojim kontaktima. Šta se dalje dešava zavisi od automatizacije koju napraviš.

Bezbednost

Proveri da li je zahtev stigao od Chat33

Svaki zahtev je potpisan tajnim ključem za potpisivanje tvog webhooka, prikazanim na kartici Webhook za poruke u Podešavanja, API ključevi. No-code alati mogu da preskoče ovaj korak i čuvaju webhook URL privatnim. Na svom serveru proveri potpis pre nego što poveruješ telu zahteva.

X-Chat33-Event

lead.captured za kontakt, message.received za DM.

X-Chat33-Signature

Izgleda kao t=1793009626,v1=0decb33a..., gde je t Unix vreme u sekundama, a v1 je HMAC-SHA256 od vremenske oznake, tačke i sirovog tela zahteva, sa celim tajnim ključem za potpisivanje (whsec_...) kao ključem. Svaki pokušaj se potpisuje iznova, sa novom vremenskom oznakom.

User-Agent

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

Novi tajni ključ

Uklanjanje webhooka i ponovno čuvanje pravi novi tajni ključ. Kad se to desi, ažuriraj svoj 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);
Opcije

Kako radi isporuka

Šta Chat33 radi sa svakim kontaktom i šta tvoj endpoint treba da odgovori.

Odgovori sa 2xx u roku od 10 sekundi

Svaki 2xx status se računa kao isporučeno. Sve ostalo, timeout posle 10 sekundi ili mrežna greška, računa se kao neuspeh. Redirecti se ne prate, pa sačuvaj konačnu adresu.

Neuspeli kontakti se šalju ponovo

Neuspeo kontakt se ponovo šalje posle oko 1 minuta, 5 minuta, 30 minuta, 2 sata i 12 sati. Posle toga ima status Neuspešno, a Ponovi neuspele na kartici ga šalje još jednom. Odgovor 429 znači čekaj: Chat33 pokušava ponovo minut kasnije, bez trošenja ponovnog pokušaja.

Probni kontakti se šalju jednom

Pošalji probni kontakt pravi jedan pokušaj, ne ponavlja se i ne pojavljuje se u evidenciji isporuke. Šalje se i kad Novi kontakti nije označeno, pa to označi pre nego što se osloniš na prave kontakte.

Isti webhook može da šalje i DM-ove

Kad je Novi DM-ovi označeno, isti URL dobija i message.received za svaki DM koji ljudi pošalju tvojim povezanim nalozima, da tvoj bot može da im odgovori. API referenca opisuje taj događaj i webhook endpointe.

Kontakti koje već imaš

Pošalji postojeće kontakte

Kontakti prikupljeni pre uključivanja Novi kontakti ne šalju se sami. Klikni Pošalji postojeće kontakte na kartici Zapier, Make, n8n, Google Sheets u Podešavanja, Integracije i otići će u narednih nekoliko minuta, sa istim id vrednostima kao ranije, pa tvoj alat može da preskoči one koje već ima.

Rešavanje problema

Kad ništa ne stiže

Chat33 čuva svaki kontakt, pa je dovoljno popraviti webhook. Ništa ne mora ponovo da se prikuplja.

Proveri karticu Webhook za poruke

URL mora biti sačuvan, a Novi kontakti označeno. Kartica prikazuje poslednju isporuku sa HTTP statusom ili greškom. Klikni Pošalji probni kontakt da odmah vidiš odgovor.

Zapier kaže da aplikacija traži nadogradnju

Webhooks by Zapier nije na besplatnom Zapier paketu. Nadogradi ili koristi Make ili n8n, koji mogu da primaju webhookove na besplatnim paketima.

Tvoj alat odgovara greškom

Odgovor 4xx ili 5xx je neuspeh i kontakt se šalje ponovo. U n8n-u Test URL radi samo dok slušaš test događaj: koristi Production URL sa aktivnim workflow-om. U Make-u scenario mora biti uključen.

Adresa nije prihvaćena

Chat33 šalje samo na javne https:// adrese. Self-hosted n8n na localhostu ili privatnoj mreži ne može da prima kontakte. Ukloni sve posle # u URL-u.

Kontakti su u Chat33, ali ne i u tvom alatu

Otvori Evidenciju isporuke na kartici Zapier, Make, n8n, Google Sheets. Za svaki kontakt piše status i razlog. Kontakti sa naloga koje webhook ne pokriva se preskaču, a za kontakte prikupljene pre uključivanja Novi kontakti treba Pošalji postojeće kontakte.

Niko nije dobio pitanje za imejl

Proveri automatizaciju. Mora biti uključena, a kad kreće od komentara na Instagramu, korak Prikupi imejl mora da dođe pre prvog DM-a. Traženje imejla posle komentara na Facebooku još nije dostupno.

Pitanja o webhooku za kontakte

Da li postoji Chat33 aplikacija u Zapieru ili Make-u?
Još ne. Koristiš webhook okidač koji ima svaki alat za automatizaciju: Webhooks by Zapier, Catch Hook u Zapieru, Custom webhook u Make-u, Webhook čvor u n8n-u. Za n8n postoji i zvanični Chat33 čvor za objavljivanje i druge API radnje.
Koji Chat33 paketi uključuju webhook za kontakte?
Svi paketi, uključujući Free. Tvom alatu za automatizaciju može da treba njegov plaćeni paket, kao što Zapier traži za webhookove.
Koliko brzo kontakti stižu?
Obično za nekoliko sekundi pošto osoba pošalje imejl. Ako tvoj endpoint ne radi, Chat33 čuva kontakt i pokušava ponovo.
Mogu li da šaljem kontakte u Google Sheets bez Zapiera ili Make-a?
Ne direktno. Google Sheets sam ne može da primi webhook, pa je između alat kao Zapier, Make ili n8n koji dodaje red.
Da li isti kontakt može da stigne dvaput?
Kontakt koji istoj automatizaciji da istu adresu šalje se jednom. Ponovni pokušaj ili Pošalji postojeće kontakte može ponovo da isporuči kontakt, sa istim id, pa uklanjaj duplikate po id ili po data.email.
Mogu li da koristim webhook i Mailchimp ili HubSpot u isto vreme?
Da. Svaki novi kontakt ide na svako povezano odredište.
Kako da razlikujem probni kontakt od pravog?
Probni kontakti imaju "test": true na najvišem nivou i adresu ana@example.com. Pravi kontakti nemaju polje test.
Chat33 maskota drži dugme Preuzmi ovde

Pretvori komentare u
redove, zapise i obaveštenja.

Napravi besplatan nalog, poveži Instagram, dodaj korak Prikupi imejl i nalepi svoj webhook URL.