VodičPlan Ultimate

Postavljanje webhookova

Šalji ažuriranja o terminima, klijentima, računima i ostalom u stvarnom vremenu svom sustavu i provjeri dolazi li svaki zahtjev od Softalona.

4 min čitanjaUloga: Super administrator ili višaIntegracije i programeriAžurirano 25. listopada 2026.
Otvori u aplikaciji

Webhook šalje HTTP zahtjev na URL koji odabereš kad god se nešto dogodi u tvom salonu, na primjer kad se stvori termin ili ažurira klijent. Koristi ga kako bi drugi sustav bio usklađen sa Softalonom.

Prije nego što počneš

  • Tvoj salon je na planu Ultimate.
  • Imaš ulogu Super administrator ili Vlasnik.
  • Imaš URL koji prihvaća POST zahtjeve s JSON tijelom i počinje s https:// ili http://.

Stvaranje webhooka

  1. 1

    Korak 1 od 4

    Otvori Webhookove

    Idi na Postavke › Programeri › Webhookovi i klikni Stvori webhook.

  2. 2

    Korak 2 od 4

    Unesi odredište

    Ispuni Odredišni URL, na primjer https://example.com/webhook, i po želji Opis kako bi ga kasnije prepoznao.

  3. 3

    Korak 3 od 4

    Odaberi teme

    Pod Teme odaberi događaje koje želiš. Kartica Sve teme navodi svaku dostupnu temu, a Odabrane teme prikazuje ono što si odabrao. Tvoj URL prima samo teme koje odabereš.

  4. 4

    Korak 4 od 4

    Spremi

    Klikni Stvori webhook.

    Vidjet ćeš:

    Webhook stvoren, a webhook se pojavljuje u tablici s uključenim prekidačem statusa.

Teme

Teme se zovu resource.action. Dostupne su ove:

PodručjeTeme
Zaposlenicisalons/member.created, .updated, .deleted
Lokacijelocations/location.created, .updated, .deleted
Uslugeservices/service.created, .updated, .deleted
Klijenticlients/client.created, .updated, .deleted, .birthday, .lapsed
Kodovi za prijavu klijenataclients/session_request.code_generated
Terminibooking/appointment.created, .updated, .deleted, .upcoming, .started
Konverzacijeconversations/conversation.created, .updated, .deleted
Računifinances/invoice.created, .updated, .deleted

Što znači svaki okidač pogledaj u Okidači automatizacija – objašnjenje.

Što Softalon šalje

Svaki događaj je POST zahtjev s JSON tijelom:

{
  "topic": "booking/appointment.created",
  "event": {
    "id": "...",
    "type": "booking/appointment.created",
    "resource": "booking/appointment",
    "resourceId": "...",
    "salonId": "...",
    "data": {
      "object": { "...": "the full object" },
      "previousAttributes": { "...": "changed fields, for updates" }
    }
  }
}

Zahtjev ima ova zaglavlja:

ZaglavljeVrijednost
X-Webhook-Signaturesha256= nakon čega slijedi potpis
X-Webhook-TopicTema, na primjer booking/appointment.created
X-Webhook-Endpoint-IdID tvog webhooka
X-Webhook-Delivery-IdID ove dostave. Ostaje isti kad se dostava ponovno pokušava.
User-AgentSoftalon API

Provjera potpisa

Svaki webhook ima tajnu. Softalon njome potpisuje tijelo zahtjeva pomoću HMAC-SHA256 i šalje heksadecimalni rezultat u X-Webhook-Signature. Izračunaj istu vrijednost iz neobrađenog tijela zahtjeva i usporedi. Ako se ne podudaraju, zanemari zahtjev.

const crypto = require("crypto");

function isValid(rawBody, header, secret) {
  const expected = "sha256=" + crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(header));
}

Za upravljanje tajnom koristi gumbe u stupcu Tajna:

  • Gumb s okom prikazuje cijelu tajnu, a gumb za kopiranje je kopira.
  • Gumb za ponovno generiranje odmah stvara novu tajnu. Stara tajna odmah prestaje raditi, pa istovremeno ažuriraj svoj sustav.

Dostave i ponovni pokušaji

  • Tvoj URL mora odgovoriti statusnim kodom 2xx unutar 10 sekundi. Sve ostalo računa se kao neuspjeh.
  • Neuspjela dostava ponovno se pokušava, najviše 5 pokušaja ukupno. Čekanja između pokušaja rastu: otprilike 30 sekundi, 1 minuta, 2 minute i 4 minute.
  • Koristi X-Webhook-Delivery-Id kako bi zanemario dostavu koju si već obradio.

Svaka dostava ima jedan od ovih statusa:

StatusŠto znači
pendingČeka slanje.
deliveredTvoj URL odgovorio je statusom 2xx.
failedPosljednji pokušaj nije uspio. Ako je ostalo pokušaja, ponovno se pokušava.
exhaustedSvih 5 pokušaja nije uspjelo. Više se neće pokušavati.

Aplikacija još ne prikazuje zapisnik dostava. Dostave možeš čitati putem API-ja na GET /v1/salons/:salonId/webhook-endpoints/:webhookEndpointId/deliveries. Pogledaj Stvaranje API aplikacije.

Ako je svih posljednjih 5 dostava na webhook iscrpljeno, Softalon isključuje webhook. Popravi svoju krajnju točku, a zatim ponovno uključi prekidač statusa. Događaji koji se dogode dok je webhook isključen ne šalju se naknadno.

Uređivanje, pauziranje ili brisanje webhooka

  • Pauziranje: isključi prekidač u stupcu Status.
  • Uređivanje: otvori izbornik retka i odaberi Ažuriraj.
  • Brisanje: otvori izbornik retka i odaberi Izbriši.

Webhookovi šalju samo dok tvoj salon ima aktivnu pretplatu, pretplatu u probnom razdoblju ili u kašnjenju, na planu koji uključuje webhookove.

Česta pitanja

Svaka dostava šalje se zasebno i ponovno pokušava po vlastitom rasporedu, pa se ne oslanjaj na redoslijed kojim zahtjevi stižu. Umjesto toga koristi vremenske oznake samog objekta.