Webhook: jak si systémy samy pošlou zprávu
Webhook je zpráva, kterou jeden systém sám pošle druhému ve chvíli, kdy se něco stane – přišla platba, vznikla objednávka, někdo odeslal formulář. Druhý systém se nemusí neustále ptát, jestli je něco nového. Díky tomu na sebe kroky navazují okamžitě a bez ručního přepisování.
Aktualizováno
Ptát se pořád dokola, nebo počkat na zprávu
Když chce program zjistit, co je nového v jiném systému, má dvě možnosti. Může se ho pravidelně ptát přes API – každou minutu, každou hodinu. Většina dotazů přitom skončí odpovědí „nic nového“ a mezi dvěma dotazy se o změně nikdo nedozví. Tomu se říká dotazování (polling).
Druhá možnost je webhook. Příjemce jednou zaregistruje svou adresu (URL) a odesílatel na ni pošle krátký požadavek HTTP pokaždé, když nastane domluvená událost. Obsah zprávy bývá ve formátu JSON a vypadá třeba takto:
POST https://vasefirma.cz/hooks/platby
{
"event": "payment.paid",
"id": "evt_8f3a21",
"created": "2026-11-06T09:41:12Z",
"data": { "order": "2026-0153", "amount": 1290, "currency": "CZK" }
}Příjemce odpoví stavovým kódem 200, čímž potvrdí, že zprávu převzal. Webhook tedy není samostatná technologie, jen dohoda: „až se to stane, zavolej na tuhle adresu“.
Dotazování přitom má pořád své místo. Hodí se tam, kde druhá strana webhooky neumí, nebo kde stačí data jednou denně – třeba noční přenos dokladů při napojení na účetnictví. Pro všechno, na co čeká zákazník, je ale webhook rychlejší a šetří oba systémy zbytečných dotazů.
Kde webhooky potkáte
| Událost | Kdo posílá | Co se na druhé straně stane |
|---|---|---|
| Platba byla dokončena | Platební brána | Objednávka se označí jako zaplacená a uvolní se k expedici |
| Vznikla nová objednávka | E-shop | Sklad dostane úkol k vychystání, účetní program vystaví doklad |
| Někdo odeslal formulář | Web | V CRM vznikne kontakt a obchodník dostane upozornění |
| Změnil se stav zásilky | Dopravce | Zákazník dostane zprávu, že balík je na cestě |
| Zákazník zrušil předplatné | Platební systém | Přístup do členské sekce skončí k datu konce období |
U plateb je webhook prakticky nutnost. Zákazník po zaplacení nemusí dojít zpátky na web – zavře okno nebo mu spadne připojení. Spolehlivou informaci o výsledku proto e-shop dostává právě webhookem od brány, jak popisujeme u napojení platební brány.
Jak webhook zabezpečit
Adresa pro webhooky je veřejná, takže na ni může poslat požadavek kdokoli. Příjemce proto nesmí věřit každé zprávě, která přijde:
- Ověřte podpis. Služby obvykle ke zprávě přidávají podpis spočítaný ze sdíleného tajného klíče (často metodou HMAC). Příjemce podpis spočítá znovu a zprávu bez shody zahodí.
- Kontrolujte čas. Když je ve zprávě časové razítko, odmítněte staré zprávy. Útočník tak nemůže zachycený požadavek poslat znovu.
- Přijímejte jen přes HTTPS, aby obsah cestou nikdo nečetl ani neměnil.
- U citlivých věcí si stav ověřte. U platby se vyplatí po přijetí webhooku dotázat API brány, jestli je transakce opravdu zaplacená, a teprve pak objednávku uvolnit.
Tajný klíč patří do konfigurace serveru, ne do kódu v repozitáři. Jak přistupovat k heslům a klíčům obecně, shrnuje průvodce zabezpečení webu.
Co když webhook selže
Příjemce může být zrovna nedostupný, aktualizuje se nebo vrátí chybu. Dobře navržené propojení s tím počítá na obou stranách:
- Opakování. Většina odesílatelů zprávu při chybě pošle znovu, s rostoucími odstupy. Jak dlouho to zkouší, se liší službu od služby – ověřte v její dokumentaci.
- Rychlá odpověď. Příjemce má zprávu jen uložit, potvrdit a zpracovat až potom. Kdo nejdřív vystavuje fakturu a posílá e-maily, nestihne odpovědět včas a odesílatel to vyhodnotí jako chybu.
- Ochrana proti dvojímu zpracování. Podle identifikátoru události se pozná, že stejná zpráva už jednou prošla, a druhá faktura ani druhý e-mail nevzniknou.
- Záznam a upozornění. Každou přijatou zprávu je dobré zalogovat a při chybě zpracování dát vědět člověku.
- Záložní synchronizace. U důležitých dat se hodí jednou za čas porovnat stav přes API, aby se ztracená událost dohnala.
Webhooky u nás
Na podobném principu běží i náš vlastní formulář: odeslaná poptávka se založí v CRM, odejde upozornění na Telegram a zákazník dostane potvrzení e-mailem. Jak takový tok vypadá od formuláře po první odpověď, ukazuje stránka automatické zpracování poptávek.
Napojení přes webhooky nemá v ceníku pevnou částku, protože každé vypadá jinak. Rozsah popíšeme a naceníme dřív, než začneme; drobné úpravy hotového propojení účtujeme po hodinách (1 000 Kč). U nového webu bývá napojení na CRM součástí varianty Web na míru (35 000 Kč).
Časté otázky
Potřebuji pro webhook vlastní server?
Potřebujete adresu, která je dostupná z internetu a umí zprávu přijmout a zpracovat. Může to být váš web s malou serverovou částí, samostatná služba nebo nástroj na propojování aplikací. Čistě statický web bez serverové části webhook sám nezpracuje.
Jaký je rozdíl mezi webhookem a e-mailovou notifikací?
E-mail je určený člověku – přečte ho a teprve pak něco udělá. Webhook je zpráva pro program, který na ni hned zareaguje bez lidského zásahu. Často se obojí kombinuje: webhook spustí zpracování a člověk dostane jen shrnutí nebo upozornění na chybu.
Může mi webhook přijít dvakrát?
Ano, a je dobré s tím počítat. Odesílatel zprávu zopakuje, když se nedočká potvrzení, i když ji příjemce ve skutečnosti zpracoval. Proto se ukládá identifikátor události a druhá kopie se jen potvrdí, ale znovu se neprovádí.
Jak poznám, že webhook přestal fungovat?
Většina služeb vede v administraci přehled odeslaných zpráv a jejich výsledků, a když adresa dlouho neodpovídá, webhook sama vypne. Na své straně si nastavte upozornění na chyby při zpracování a občas porovnejte data v obou systémech, třeba počet objednávek za den.