Closer
sr
Počni besplatno
Dokumentacija

Closer centar za pomoć

Uputstva za pravljenje, objavljivanje i prodaju uz Closer.

Integracije: webhookovi i Google Sheets

Na ovoj stranici

Integracije u meniju sajta šalju ono što se dešava na sajtu u druge alate u trenutku kad se desi:

  • Webhookovi šalju nove upite, nove pretplatnike i plaćene porudžbine u bilo koju aplikaciju koja ih prima: Zapier, Make, n8n, Pabbly, tvoj CRM ili tvoj server.
  • Google Sheets dodaje svaki novi upit kao red u tabeli, bez povezivanja Google naloga sa Closer-om.

Svaki sajt ima svoje integracije. Možeš da dodaš najviše 5 adresa po sajtu (webhookovi i tabele zajedno).

Webhookovi

Webhook je adresa (URL) koju Closer poziva sa podacima o nekom događaju. Većina alata za automatizaciju ti daje jednu: u Zapieru je to okidač Webhooks by Zapier → Catch Hook, u Make-u modul Webhooks → Custom webhook, u n8n-u čvor Webhook.

Dodaj webhook

  1. Otvori Integracije.
  2. Nalepi adresu pod Adresa webhooka. Mora da počinje sa https://.
  3. Označi događaje koje želiš:
    • Novi upit: posetilac je poslao kontakt formu (ili kviz sa formom).
    • Novi pretplatnik: neko se prijavio preko forme za newsletter.
    • Nova porudžbina: porudžbina u tvojoj prodavnici je plaćena.
  4. Klikni Dodaj webhook.
  5. Closer jednom prikazuje tajni ključ za potpis (whsec_…). Kopiraj ga i čuvaj u aplikaciji koja prima podatke ako želiš da proveravaš da zahtevi zaista dolaze od Closer-a. Ako ga izgubiš, klikni Novi ključ; stari odmah prestaje da važi.
  6. Klikni Pošalji test. Aplikacija koja prima podatke dobija probni događaj (sa "test": true), a rezultat se pojavljuje u Dnevnik slanja.

Kasnije možeš da uključiš i isključiš događaje klikom na njih, da pauziraš webhook prekidačem ili da ga Ukloniš.

Iz bezbednosnih razloga Closer poziva samo javne internet adrese. Adrese u privatnim ili internim mrežama (kao localhost, 10.x.x.x, 192.168.x.x) se odbijaju.

Šta Closer šalje

Svaki zahtev je POST sa JSON telom:

{
  "id": "1f6c2a9e-…",
  "event": "inquiry.created",
  "created_at": "2026-10-22T09:30:00+00:00",
  "test": false,
  "site": { "id": 12, "name": "My site", "url": "https://mysite.closer.li" },
  "data": { … }
}

event je inquiry.created, subscriber.created ili order.paid. Šta je u data:

Događaj Polja u data
inquiry.created id, created_at, language, page (odakle je forma poslata, npr. /contact), name, email, fields (lista sa key, label, value za svako polje forme), quiz (odgovori i rezultat, ili null)
subscriber.created id, email, name, language, source (forma), created_at
order.paid id, code, email, name, language, items (id, name, price), subtotal, discount, coupon_code, total, currency, mode (test, live ili free), paid_at

Iznosi su u centima (najmanjoj jedinici valute): 4500 uz "currency": "EUR" znači 45,00 €.

Zaglavlja koja se šalju uz svaki zahtev:

  • X-Closer-Event: naziv događaja.
  • X-Closer-Delivery: jedinstveni id događaja. Ponovni pokušaji istog događaja zadržavaju isti id, pa duplikate možeš da ignorišeš.
  • X-Closer-Signature: t=1761125400,v1=5d41…, gde je t vreme slanja (Unix sekunde), a v1 HMAC-SHA256 od t + "." + sirovo telo, napravljen tvojim tajnim ključem za potpis.

Da proveriš zahtev, izračunaj isti HMAC svojim ključem i uporedi ga sa v1, a odbij zahteve čiji je t stariji od nekoliko minuta. U PHP-u:

[$t, $v1] = sscanf($_SERVER['HTTP_X_CLOSER_SIGNATURE'], 't=%d,v1=%s');
$body = file_get_contents('php://input');
$valid = hash_equals(hash_hmac('sha256', $t.'.'.$body, $secret), $v1) && abs(time() - $t) < 300;

Ponovni pokušaji i dnevnik slanja

Adresa koja prima mora da odgovori statusom 2xx u roku od 15 sekundi. Ako ne odgovori (greška, isteklo vreme, 500), Closer pokušava još dva puta: posle oko 30 sekundi i posle oko 5 minuta. Preusmerenja se ne prate, zato koristi konačnu adresu.

Dnevnik slanja prikazuje poslednjih 50 zahteva sajta: vreme, događaj, adresu, koji je to pokušaj (1/3, 2/3, 3/3), statusni kod kojim je adresa odgovorila i grešku, ako je ima.

Google Sheets

Svaki novi upit postaje red u Google tabeli: Datum, Stranica, Ime, Email, pa po kolona za svako drugo polje forme (po njegovom nazivu). Nova polja automatski dobijaju novu kolonu. Radi preko male Google Apps Script skripte koju dodaješ u svoju tabelu, tako da Closer-u nikad nije potreban pristup tvom Google nalogu.

Podesi (oko 3 minuta)

  1. Napravi novu tabelu u Google Sheets (najbrže je da otvoriš sheets.new). Upiti idu na njen prvi tab.
  2. U tabeli otvori Ekstenzije → Apps Script (Extensions → Apps Script).
  3. Obriši probni kod u editoru. U Closer-u, pod Google Sheets, klikni Kopiraj skriptu i nalepi je u Apps Script editor. Klikni Sačuvaj (ikonica diska).
  4. Klikni Primeni → Nova primena (Deploy → New deployment). Klikni zupčanik pored Izaberite tip (Select type) i izaberi Veb-aplikacija (Web app). Podesi:
    • Izvrši kao (Execute as): Ja (Me)
    • Ko ima pristup (Who has access): Bilo ko (Anyone)
  5. Klikni Primeni (Deploy). Google traži da odobriš skriptu: izaberi svoj nalog. Ako vidiš „Google nije verifikovao ovu aplikaciju”, klikni Napredno → Idi na (tvoj projekat) (Advanced → Go to …) i Dozvoli (Allow). To je tvoja skripta, koja radi na tvom nalogu.
  6. Kopiraj URL veb-aplikacije (Web app URL). Izgleda kao https://script.google.com/macros/s/…/exec.
  7. U Closer-u ga nalepi pod Web app URL i klikni Poveži. Closer odmah šalje probni red; proveri da li se pojavio u tabeli (možeš da ga obrišeš).

Pošalji test red koristi bilo kad da proveriš vezu. Prekidač pauzira tabelu, a dugme sa kantom je isključuje.

Čuvaj Web app URL u tajnosti: svako ko ga ima može da dodaje redove u tu tabelu. Ako procuri, napravi novu primenu u Apps Scriptu i poveži novi URL.

Dobro je da znaš

  • U tabelu idu samo upiti. Za pretplatnike i porudžbine koristi webhook (na primer ka Zapieru ili Make-u, koji takođe mogu da upisuju u Google Sheets).
  • Ako kasnije izmeniš skriptu, koristi Primeni → Upravljaj primenama → Izmeni → Nova verzija (Deploy → Manage deployments → Edit → New version), da URL ostane isti.
  • Tekst koji počinje kao formula (=, +, -, @) upisuje se kao običan tekst, tako da unos iz forme ne može da pokrene formulu u tvojoj tabeli.
  • Svaki red se dodaje u trenutku kad upit stigne. Neuspeli pokušaji se ponavljaju kao kod webhookova i prikazuju se u Dnevnik slanja.
  • Upiti preko mesečnog limita tvog plana čuvaju se u Inbox, ali se ne šalju integracijama.

Nisi našao odgovor?

Piši nam i javljamo se u roku od jednog radnog dana.

Kontakt