Tot ce face Elido
Pro & Business

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
Livrare webhook
Sursa evenimentuluilink.clickedlink.createdElidoHMAC-SHA256semnare + punere în coadăEndpoint-ul tăuPOST /webhooksapi.acme.com010203
Cerere de ieșire
POSThttps://api.acme.com/webhooks
X-Elido-Signature: sha256=3c4d2e1f8a...
Content-Type: application/json
X-Elido-Event: link.clicked
{
"event": "link.clicked",
"event_id": "evt_01hw...",
"data": { link_id, url, country, device, ts }
}
Latență mediană <2s Semnat HMAC-SHA256
<2s
Latență medie de livrare a evenimentelor
72h
Fereastră de reîncercare înainte de eșec final
HMAC-SHA256
Algoritm de semnare a cererilor
10+
Tipuri de evenimente suportate

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.

Peste 10 tipuri de evenimente
  • 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 secunde
    Returnează 200 imediat; procesează asincron dacă handler-ul tău este lent.
  • 8 tentative de reîncercare pe durata a 72 de ore
    Backoff exponențial - fără efect de avalanșă la reluare.
  • Pauză automată după 30 de eșecuri consecutive
    Administratorul workspace-ului este notificat prin email. Reactivare din dashboard.
  • Replay cu un clic din jurnal
    Payload original, același event_id - receptorul trebuie să fie idempotent.
Cronologia reîncercărilor de livrare
Fereastră de reîncercare de 72 de ore
Tentativă 1
14:02:01
500 Internal Server Error
backoff de 30sexponențial × 1
Tentativă 2
14:02:31
timeout (30s)
backoff de 2 minexponențial × 4
Tentativă 3
14:04:31
200 OK
Timeout de răspuns
30 de secunde
Tentative maxime
8 reîncercări
Fereastră
72 de ore
Jurnal de livrare a webhook-urilor
Mod SIEM
EvenimentEndpointStareLatențăOra
link.clickedapi.acme.com/wh200142ms14:04:31
link.createdapi.acme.com/wh20088ms14:03:19
conversion.attributedlogs.acme.com50030001ms14:02:01
domain.verifiedapi.acme.com/wh20067ms13:58:44
link.deletedlogs.acme.comtimeout30000ms13:55:12
Se afișează 5 din 1.284 de livrări · Ultimele 24 de oreEndpoint activ

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.

Tipuri de evenimente
01

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.

Verificarea semnăturii
02

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.

Comportament de reîncercare
03

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ă.

Mod SIEM
04

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
05

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ă.

P
Platform engineering, B2B SaaS, Amsterdam
Senior Platform Engineer

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.

S
Security engineering, fintech, München
Information Security Engineer

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.

I
Integration engineering, logistics SaaS, Riga
Integration Engineer

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ță.

FeatureElidoBitlyShort.io
Webhook-uri de ieșireDa - endpoint-uri per workspace, abonare per tip de evenimentIndisponibilDa - webhook de bază la clic
Semnare HMAC-SHA256Da - fiecare livrare este semnată, cu exemple de cod furnizateNu se aplicăParțial - header de semnătură prezent, nedocumentat
Reîncercări automateDa - backoff exponențial, fereastră de 72 de oreNu se aplicăFără reîncercări - fire and forget
Jurnal de livrare cu replayDa - 30 de zile pe Pro, 90 de zile pe Business, replay cu un clicNu se aplicăFără jurnal de livrare
Mod SIEM pentru evenimente de auditDa - Business, JSON structurat pentru ingestie SIEMIndisponibilIndisponibil
Pauză automată a endpoint-ului la eșecDa - pus pe pauză după 30 de eșecuri consecutive, admin notificatNu se aplicăIndisponibil
Tipuri de evenimenteEvenimente de clic, conversie, ciclu de viață al linkului, domeniu, auditNu 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.

Ești pregătit să încerci?

Începe cu planul gratuit, fă upgrade când ai nevoie de un domeniu personalizat.