Co je webhook? Webhook je automatická zpráva, kterou jedna služba pošle na adresu Vašeho webu ve chvíli, kdy nastane nějaká událost. Nemusíte se tedy pořád dokola ptát „už se to stalo?“ – ono se to ozve samo. Adrese, kam zpráva chodí, se říká cílový bod webhooku a zadáváte ji v nastavení té druhé služby.
Přirovnání je jednoduché: je to rozdíl mezi tím, jestli každých pět minut běháte k poštovní schránce, nebo jestli máte zvonek. U zvonku se dozvíte o zásilce přesně v okamžik, kdy dorazí, a mezitím děláte něco užitečnějšího. Webhook je ten zvonek.
Kde se s webhooky potkáte v běžném provozu:
- Platební brána – jakmile zákazník zaplatí, brána pošle na Váš e-shop zprávu a objednávka se sama označí jako uhrazená.
- Dopravce – při předání balíku dorazí zpráva a zákazníkovi se odešle sledovací číslo.
- Newsletterová služba – když se někdo odhlásí, dá Vám o tom vědět a záznam se srovná i u Vás.
- Týmové nástroje – nová objednávka se rovnou objeví jako zpráva v chatu.
Technicky je webhook obyčejný HTTP požadavek, který přijde na Váš web zvenčí, obvykle s daty ve formátu JSON. Tím se liší od API, kde se ptáte Vy: u API voláte cizí službu, u webhooku volá cizí služba Vás. Obojí se často používá zároveň – webhook Vám oznámí, že se něco stalo, a přes API si pak doptáte podrobnosti.
Praktická otázka: musím kvůli webhookům něco nastavovat na hostingu? Zpravidla ne. Doplňky platebních bran a dopravců si adresu nastaví samy a Váš web na ní jen naslouchá. Podmínkou je, aby web byl dostupný z internetu na HTTPS a aby ta adresa nebyla schovaná za přihlášením. Certifikát od Let's Encrypt je u nás vyřešený automaticky.
Pozor na bezpečnost. Adresa webhooku je veřejně dostupná, takže na ni může poslat požadavek kdokoli. Seriózní služby proto zprávu podepisují tajným klíčem a Váš web si podpis ověří – bez toho by šlo podvrhnout třeba zaplacení objednávky. Klíč patří do nastavení doplňku, nikdy ne do veřejně čitelného souboru, a chová se k němu stejně opatrně jako k heslu.
Když webhook nefunguje, hledejte postupně. Většina služeb má přehled odeslaných zpráv i s odpovědí, kterou dostaly – tam poznáte, jestli požadavek vůbec dorazil. Pokud dorazil a skončil chybou, ohlédněte se do chybového logu. A pokud nedorazil vůbec, bývá příčinou překlep v adrese nebo přesměrování z verze bez www na verzi s www, které si některé služby nepřepošlou.