Webhooks. Evenimente în timp real, livrate fiabil.
Endpoint-urile de webhook per workspace primesc evenimente de clic, conversie și gestionare a linkurilor, cu semnături HMAC-SHA256. Reîncercări automate cu backoff exponențial. Modul SIEM transmite evenimente către platforma ta de securitate.
- Peste 10 tipuri de evenimente - clicuri, conversii, schimbări de domeniu
- Semnătură HMAC-SHA256 la fiecare livrare
- Reîncercare cu backoff exponențial de 72 de ore
- Jurnal de livrare cu replay cu un clic
Tipuri de evenimente
Peste 10 tipuri de evenimente, din start
Abonează-te per endpoint - primești doar evenimentele care te interesează. Evenimentele de clic la volum ridicat sunt livrate implicit într-o fereastră de agregare de 5 secunde; modul raw-click livrează per clic, pentru procesoarele de flux.
- link.clicked
Fiecare clic de redirecționare. Mod batch (fereastră de 5s) sau raw-click.
- link.created
A fost creat un link scurt nou în workspace.
- link.updated
S-au schimbat metadatele, URL-ul țintă sau regulile linkului.
- link.deleted
Link eliminat - actualizează orice referințe în aval.
- domain.verified
Domeniul personalizat a trecut verificarea DNS.
- conversion.attributed
Eveniment de venit corelat cu un clic, prin Stripe sau Shopify.
- campaign.completed
Campania a atins data de final sau plafonul de clicuri.
- member.invited
Membru de workspace adăugat sau provizionat prin SCIM.
Plus link.expired, link.click_cap_reached, domain.ssl_issued, și altele - vezi catalogul complet de evenimente.
Garanții de livrare
Backoff exponențial. Fereastră de 72 de ore.
Un răspuns non-2xx sau un timeout de 30 de secunde declanșează reîncercări automate: 30 s → 2 min → 10 min → 30 min → 2 h → 8 h → 24 h → 48 h. După 72 de ore, livrarea este marcată permanent eșuată și eliminată din coadă - dar rămâne în jurnalul de livrare, pentru replay manual.
- Timeout de răspuns de 30 de secundeReturnează 200 imediat; procesează asincron dacă handler-ul tău este lent.
- 8 tentative de reîncercare pe durata a 72 de oreBackoff exponențial - fără efect de avalanșă la reluare.
- Pauză automată după 30 de eșecuri consecutiveAdministratorul workspace-ului este notificat prin email. Reactivare din dashboard.
- Replay cu un clic din jurnalPayload original, același event_id - receptorul trebuie să fie idempotent.
| Eveniment | Endpoint | Stare | Latență | Ora | |
|---|---|---|---|---|---|
link.clicked | api.acme.com/wh | 200 | 142ms | 14:04:31 | |
link.created | api.acme.com/wh | 200 | 88ms | 14:03:19 | |
conversion.attributed | logs.acme.com | 500 | 30001ms | 14:02:01 | |
domain.verified | api.acme.com/wh | 200 | 67ms | 13:58:44 | |
link.deleted | logs.acme.com | timeout | 30000ms | 13:55:12 |
Jurnal de livrare
Jurnal complet. Filtrează, inspectează, refă.
Fiecare tentativă este înregistrată: ID-ul evenimentului, tipul evenimentului, URL-ul endpoint-ului, starea HTTP, corpul răspunsului (până la 4 KB) și latența. Retenția este de 30 de zile pe Pro, 90 de zile pe Business.
- Filtrează după tipul evenimentului, endpoint, stare și interval de date
- Intrările eșuate arată corpul complet al cererii, pentru depanare
- Replay trimite payload-ul original - același event_id
- API: POST /v1/webhooks/deliveries/:id/replay
- Mod SIEM: JSON structurat, cu garanție de reîncercare de 7 zile
Ce poți face
- Evenimente de clic, conversie, link și domeniu
- Semnare a cererilor cu HMAC-SHA256
- Reîncercări automate - până la 72 de ore
- Mod SIEM pentru retransmiterea evenimentelor de securitate
- Filtrare pe subiect, per tip de eveniment
- Jurnal de livrare a webhook-urilor, cu replay
Ce livrează webhook-urile Elido și cum funcționează livrarea
Webhook-urile sunt utile doar în măsura în care sunt fiabile. Secțiunile de mai jos acoperă garanțiile de livrare, verificarea semnăturii, comportamentul de reîncercare și modul SIEM.
Evenimente de clic, evenimente de conversie, evenimente de ciclu de viață al linkului și evenimente de domeniu - configurabile per endpoint
Fiecare endpoint de webhook se poate abona la unul sau mai multe tipuri de evenimente: click.created (fiecare clic de redirecționare), conversion.created (eveniment de conversie primit din Stripe, Shopify sau un endpoint personalizat), link.created, link.updated, link.deleted, link.expired, link.click_cap_reached, domain.verified, domain.ssl_issued, domain.ssl_error, workspace.member.added, workspace.member.removed. Evenimentele de clic la volum ridicat pot fi zgomotoase - implicit, webhook-urile click.created sunt trimise cu o fereastră de agregare de 5 secunde (livrare în batch, până la 100 de evenimente per payload). Dacă ai nevoie de livrare în timp real per clic (de ex., pentru a alimenta un procesor de flux), activează modul raw-click pe endpoint; reține că acest lucru poate produce mii de cereri pe minut pentru workspace-uri active și ar trebui activat doar pentru endpoint-uri care pot gestiona acest debit.
Fiecare cerere este semnată cu HMAC-SHA256 - verifică header-ul X-Elido-Signature înainte de procesare
Elido semnează corpul fiecărei cereri de webhook cu HMAC-SHA256, folosind secretul partajat configurat pe endpoint. Semnătura este inclusă în header-ul X-Elido-Signature, ca „sha256=<hex_digest>”. Pentru verificare: calculează HMAC-SHA256 peste corpul brut al cererii, folosind secretul partajat, și compară rezultatul cu valoarea din header, folosind o funcție de comparație cu timp constant (pentru a preveni atacurile de tip timing). Nu procesa niciodată un payload de webhook înainte de a verifica semnătura. Secretul este afișat o singură dată, la crearea endpoint-ului; rotește-l din dashboard, cu o fereastră de suprapunere fără downtime (secretul vechi rămâne valid timp de 15 minute după generarea unui secret nou). Exemple de cod pentru verificarea semnăturii în Node.js, Python și Go se află în ghidul webhook-urilor, la /docs/guides/webhooks.
Reîncercări automate cu backoff exponențial - până la 72 de ore înainte ca o livrare să fie marcată drept eșuată
Dacă un endpoint returnează un cod de stare non-2xx sau expiră (timeout de răspuns de 30 de secunde), Elido reîncearcă livrarea cu backoff exponențial: 30 de secunde, 2 minute, 10 minute, 30 de minute, 2 ore, 8 ore, 24 de ore, 48 de ore. După fereastra de 72 de ore, livrarea este marcată drept permanent eșuată și eliminată din coada de reîncercare. Livrările eșuate apar în jurnalul de livrare a webhook-urilor, cu codul HTTP final (sau „timeout”). Poți reface (replay) orice livrare eșuată din dashboard sau prin API (POST /v1/webhooks/deliveries/:id/replay) - util pentru recuperarea unui lot de evenimente după o întrerupere în aval. Endpoint-urile care returnează 5xx pentru mai mult de 30 de livrări consecutive sunt puse automat pe pauză, iar administratorul workspace-ului este notificat prin email. Reactivează endpoint-ul din dashboard, odată ce problema de bază este remediată.
Modul SIEM transmite evenimentele de audit ale workspace-ului către Splunk, Datadog sau orice endpoint de ingestie de log-uri HTTPS
Modul SIEM este o configurație specială de webhook pentru retransmiterea evenimentelor de securitate. În loc de evenimente ale aplicației (clicuri, conversii), modul SIEM livrează evenimente de audit ale workspace-ului: autentificări SSO, autentificări eșuate, creare/rotație/ștergere de chei API, evenimente de provizionare SCIM, schimbări de rol, rotații de secrete de webhook și acțiuni de admin (ștergere de linkuri, exporturi în masă). Formatul payload-ului este JSON structurat, cu o schemă standard (timestamp, actor, action, target, workspace_id, ip_address, user_agent), conceput pentru ingestie în platformele SIEM comune. Webhook-urile SIEM au livrare garantată, cu reîncercare de până la 7 zile, și sunt semnate separat de webhook-urile aplicației. Integrări testate: Splunk HTTP Event Collector (HEC), Datadog Logs API, Elastic Logstash HTTP input și orice endpoint generic de log HTTPS. Modul SIEM este o funcție exclusivă planului Business.
Jurnal de livrare complet, cu corpul cererii, codul de răspuns și replay cu un singur clic pentru livrările eșuate
Fiecare tentativă de livrare de webhook este înregistrată: ID-ul evenimentului, tipul evenimentului, URL-ul endpoint-ului, marca de timp a livrării, codul de stare HTTP, corpul răspunsului (până la 4KB) și latența. Jurnalul de livrare poate fi interogat după tipul evenimentului, endpoint, interval de date și stare (livrat, în reîncercare, eșuat). Livrările eșuate includ corpul complet al cererii, astfel încât poți inspecta evenimentul care a eșuat fără să faci replay. Replay: POST /v1/webhooks/deliveries/:id/replay trimite payload-ul original (nu un eveniment nou) către endpoint - este necesară idempotență la nivelul receptorului tău. Retenția jurnalului de livrare este de 30 de zile pe Pro, 90 de zile pe Business. Pentru audit permanent al evenimentelor de webhook, configurează un endpoint SIEM sau activează exportul programat al jurnalului de audit.
Echipe de inginerie care folosesc webhook-urile Elido în producție
Numele sunt substituenți - studiile de caz reale ale clienților vor apărea aici pe măsură ce sunt publicate.
“Consumăm webhook-uri click.created în modul batch pentru a alimenta propriul nostru pipeline de analitice. Verificarea semnăturii HMAC și jurnalul de livrare cu replay ne-au economisit ore de depanare a unei întreruperi parțiale - am refăcut (replay) lotul de evenimente pierdute din dashboard, fără să reconstruim evenimentul din sursă.”
“Modul SIEM, care transmite evenimentele de audit ale workspace-ului către Splunk HEC-ul nostru, a fost funcția enterprise cerută de echipa noastră InfoSec. Evenimentele de autentificare SSO și rotațiile de chei API în Splunk, cu schema corectă, au însemnat că am putut corela evenimentele de acces Elido cu regulile noastre de alertă SIEM în cel mult o zi de la configurare.”
“Webhook-urile link.expired declanșează fluxul nostru intern de actualizare a bazei de date cu materiale printate - când un link cu cod QR expiră, echipa noastră de operațiuni primește automat o sarcină de actualizare a etichetei fizice. Zero monitorizare manuală a stărilor de expirare a linkurilor.”
Webhook-urile Elido vs Bitly vs Short.io
Nici Bitly, nici Short.io nu oferă webhook-uri de ieșire cu semnare HMAC și garanții de reîncercare. Această comparație este sinceră despre această diferență.
| Feature | Elido | Bitly | Short.io |
|---|---|---|---|
| Webhook-uri de ieșire | Da - endpoint-uri per workspace, abonare per tip de eveniment | Indisponibil | Da - webhook de bază la clic |
| Semnare HMAC-SHA256 | Da - fiecare livrare este semnată, cu exemple de cod furnizate | Nu se aplică | Parțial - header de semnătură prezent, nedocumentat |
| Reîncercări automate | Da - backoff exponențial, fereastră de 72 de ore | Nu se aplică | Fără reîncercări - fire and forget |
| Jurnal de livrare cu replay | Da - 30 de zile pe Pro, 90 de zile pe Business, replay cu un clic | Nu se aplică | Fără jurnal de livrare |
| Mod SIEM pentru evenimente de audit | Da - Business, JSON structurat pentru ingestie SIEM | Indisponibil | Indisponibil |
| Pauză automată a endpoint-ului la eșec | Da - pus pe pauză după 30 de eșecuri consecutive, admin notificat | Nu se aplică | Indisponibil |
| Tipuri de evenimente | Evenimente de clic, conversie, ciclu de viață al linkului, domeniu, audit | Nu se aplică | Doar clic |
Întrebări despre webhook-uri
Cum verific semnătura HMAC-SHA256?
Citește corpul brut al cererii ca bytes (înainte de orice parsare JSON), calculează HMAC-SHA256 peste bytes-urile brute, folosind secretul partajat al endpoint-ului tău, codifică rezultatul base16 (hex) și compară-l cu valoarea din header-ul X-Elido-Signature, după eliminarea prefixului „sha256=”. Folosește o funcție de comparație cu timp constant (de ex., hmac.compare_digest în Python, crypto.timingSafeEqual în Node.js) pentru a preveni atacurile de tip timing. Nu compara niciodată semnătura cu un operator standard de egalitate de string-uri. Exemple de cod pentru Node.js, Python și Go se află la /docs/guides/webhooks#verification.
Ce ar trebui să returneze receptorul meu de webhook?
Returnează HTTP 200 (sau orice cod de stare 2xx) în cel mult 30 de secunde. Corpul răspunsului este ignorat - poți returna un corp vid sau { ok: true }. Dacă procesarea ta durează mai mult de 30 de secunde, returnează 200 imediat și procesează evenimentul asincron (pune-l în coadă internă, returnează 200, procesează în afara traseului cererii). Returnarea 4xx este tratată la fel ca 5xx în scopuri de reîncercare - amândouă declanșează o reîncercare. Returnează 200 chiar dacă evenimentul nu este relevant pentru integrarea ta (de ex., un eveniment link.created de care nu ai nevoie), pentru a evita reîncercări nejustificate.
Cum funcționează idempotența pentru evenimentele de webhook?
Fiecare payload de webhook include un câmp event_id (UUID). Folosește-l ca cheie de idempotență pe receptorul tău: dacă primești același event_id de două ori (din cauza unei reîncercări după un eșec parțial), procesează-l o singură dată. Stochează ID-urile de eveniment primite într-un tabel de deduplicare, cu un TTL de cel puțin 72 de ore (fereastra de reîncercare). Payload-ul de reîncercare este identic cu cel original - același event_id, același corp - astfel încât o simplă verificare „am mai văzut acest event_id?” este suficientă.
De ce este endpoint-ul meu pus automat pe pauză?
Endpoint-urile sunt puse automat pe pauză după 30 de eșecuri de livrare consecutive (non-2xx sau timeout). Acest lucru previne bombardarea la nesfârșit a unui endpoint defect de către Elido. Remediază problema de bază (de obicei: URL-ul endpoint-ului s-a schimbat, serverul este indisponibil, sau timeout-ul de 30 de secunde este depășit din cauza procesării lente), apoi reactivează endpoint-ul din dashboard. Odată reactivat, Elido nu reface (replay) automat evenimentele omise pe durata pauzei - refă-le manual din jurnalul de livrare, dacă trebuie să recuperezi acele evenimente.
Pot primi evenimente de clic în timp real, pentru fiecare clic în parte?
Da - activează modul raw-click pe endpoint. În modul raw-click, Elido livrează evenimente click.created individual, fără fereastră de agregare, în cel mult 2 secunde de la clic. Reține că un workspace activ poate produce mii de evenimente pe minut în modul raw-click; asigură-te că receptorul tău poate gestiona acest debit. Pentru majoritatea cazurilor de utilizare de analitice, agregarea implicită în batch de 5 secunde (până la 100 de clicuri per payload) este suficientă și produce mult mai puține cereri HTTP.
Care este limita de dimensiune a payload-ului pentru evenimentele de webhook?
Payload-urile de evenimente individuale sunt sub 10KB. Payload-urile de clic în batch (mod implicit) pot avea până la 100 de evenimente per batch, cu un plafon total de dimensiune a payload-ului de 100KB. Dacă un batch ar depăși 100KB, este împărțit automat în mai multe livrări. Câmpurile de metadate mari de pe clicuri (de ex., URL-uri de referer lungi) sunt trunchiate la 2KB per câmp. Dacă receptorul tău impune o limită strictă de dimensiune a payload-ului, configurează modul raw-click (un eveniment per livrare), în loc de modul în batch.
Există o modalitate de a testa webhook-uri local, în timpul dezvoltării?
Folosește un instrument precum ngrok, Cloudflare Tunnel sau localtunnel pentru a expune serverul tău local cu un URL HTTPS public, apoi înregistrează acel URL ca endpoint de webhook în workspace-ul tău de test. Alternativ, folosește butonul de test-fire pentru webhook-uri din dashboard, pentru a trimite un payload eșantion pentru orice tip de eveniment către un endpoint înregistrat, fără a declanșa un eveniment real. CLI-ul Elido (elido webhook test --event click.created --endpoint https://...) funcționează și el pentru testare locală scriptată.
Ce se întâmplă cu evenimentele de webhook în timpul unei ferestre de mentenanță planificate?
Evenimentele generate în timpul unei ferestre de mentenanță sunt puse în coadă în fluxul nostru de evenimente și livrate după terminarea ferestrei de mentenanță. Pagina de status Elido (status.elido.app) anunță din timp ferestrele de mentenanță planificate. SLA-ul de livrare a webhook-urilor exclude ferestrele de mentenanță anunțate. Pentru fereastra tipică de mentenanță de 30–60 de minute, fereastra de reîncercare de 72 de ore înseamnă că niciun eveniment nu este pierdut definitiv - acestea sunt livrate în ordinea în care au fost generate, odată ce endpoint-ul devine din nou accesibil.
Continuă lectura
Complementul API sincron al webhook-urilor asincrone - creează și interoghează linkuri programatic.
Primește evenimente de conversie prin webhook-uri de la Stripe și Shopify - latura de webhook-uri de intrare.
Modul SIEM livrează evenimente de audit ale workspace-ului - autentificări SSO, provizionare SCIM, schimbări de rol.
Evenimente de clic în magazinul tău de analitice - alternativa de interogare la primirea clicurilor prin webhook.
Ești pregătit să încerci?
Începe cu planul gratuit, fă upgrade când ai nevoie de un domeniu personalizat.