Webhookit käytännössä: miten ne toimivat ja milloin käyttää
Webhook on "käänteinen API": sen sijaan että kyselisit dataa jatkuvasti, järjestelmä ilmoittaa sinulle kun jotain tapahtuu. Esimerkki: verkkokauppa lähettää webhookin kun tilaus tulee, ja varastojärjestelmä reagoi heti. Webhookit ovat nopeampia ja tehokkaampia kuin polling (kyselysilmukka).
Webhook vs polling vs API
| Tapa | Miten toimii | Plussat | Miinukset |
|---|---|---|---|
| Webhook | Lähde lähettää datan kun tapahtuma sattuu | Reaaliaikainen, tehokas | Vaatii endpointin, virheenkäsittely |
| Polling | Kysyt dataa säännöllisin väliajoin | Helppo toteuttaa | Viive, kuormittaa molempia |
| API-kutsu | Haet dataa tarvittaessa | Joustava, hallittu | Ei reaaliaikainen |
Miten webhook toimii käytännössä?
- Rekisteröit URL:n: Kerrot lähdejärjestelmälle mihin osoitteeseen se lähettää datan
- Tapahtuma sattuu: Esim. uusi tilaus, päivitetty asiakas, lähetetty lasku
- Lähdejärjestelmä lähettää HTTP POST -pyynnön: JSON-muotoinen data sinun URL:iin
- Sinun järjestelmäsi käsittelee datan: Tallentaa, lähettää eteenpäin, tekee toimenpiteitä
- Palautat vastauksen: 200 OK = vastaanotettu, muu = yritä uudelleen
Esimerkkejä webhook-käytöstä
- Verkkokauppa → varasto: Uusi tilaus laukaisee varastopäivityksen
- Lomake → CRM: Yhteydenotto menee suoraan Pipedriveen/HubSpotiin
- Maksu → kirjanpito: Stripe-maksu laukaisee kirjanpitokirjauksen
- Kalenterinvaraus → SMS: Varauksen vahvistus tekstiviestillä
- GitHub → Slack: Koodi pushataan → ilmoitus tiimikanavalle
Webhookin vastaanottaminen (endpoint)
Tarvitset palvelimen joka vastaanottaa HTTP POST -pyyntöjä. Yksinkertainen esimerkki Node.js:llä:
// Express.js esimerkki
app.post('/webhook/tilaus', (req, res) => {
const tilaus = req.body;
// Käsittele tilaus
console.log('Uusi tilaus:', tilaus.id);
// Palauta 200 OK
res.status(200).send('OK');
});
Webhookien turvallisuus
Kuka tahansa voi lähettää POST-pyynnön URL:iisi. Varmista että pyyntö tulee oikeasta lähteestä:
- Signature-tarkistus: Monet palvelut lähettävät HMAC-allekirjoituksen headerissa. Laske itse ja vertaa.
- Salainen token URL:ssa: /webhook/abc123secret – vaikea arvata, mutta ei paras käytäntö
- IP-rajoitus: Salli vain tietyt IP-osoitteet (jos palvelu dokumentoi ne)
- HTTPS: Aina. Älä koskaan vastaanota webhookia HTTP:llä.
Virheenkäsittely ja retry
Mitä tapahtuu kun endpoint ei vastaa?
- Useimmat palvelut yrittävät uudelleen (retry) muutaman kerran
- Tyypillinen retry-malli: heti, 5 min, 30 min, 2 h, 24 h
- Jos kaikki epäonnistuu, webhook merkitään failed ja se pitää käsitellä manuaalisesti
- Suositus: Vastaa heti 200 OK ja käsittele taustalla (queue) – näin et timeout
Webhookien testaaminen
- webhook.site: Ilmainen työkalu joka näyttää vastaanotetut webhookit
- ngrok: Paljastaa localhost-palvelimen internetiin testausta varten
- Postman: Lähetä testipyyntöjä manuaalisesti
- Palvelun testityökalu: Monet palvelut (Stripe, Shopify) tarjoavat "Send test webhook" -toiminnon
Yleiset virheet webhookeissa
- Ei signature-tarkistusta: Kuka tahansa voi lähettää väärennettyjä pyyntöjä.
- Liian hidas käsittely: Jos käsittely kestää >30s, timeout → retry → duplikaatteja.
- Ei idempotenssia: Sama webhook voi tulla monta kertaa (retry). Käsittele vain kerran.
- Ei logitusta: Kun jokin menee pieleen, et tiedä mitä tapahtui.
- HTTP ilman S:ää: Data kulkee salaamattomana.
Usein kysytyt kysymykset
Voiko webhookin tehdä ilman koodausta?
Kyllä. Zapier, Make (Integromat) ja n8n vastaanottavat webhookeja ja tekevät toimenpiteitä ilman koodausta.
Miten tiedän mitä dataa webhook lähettää?
Lue palvelun API-dokumentaatio. Voit myös käyttää webhook.site -palvelua nähdäksesi mitä oikeasti tulee.
Mitä jos menetän webhookeja?
Tee varmuusmekanismi: tallenna webhookit ensin jonoon/tietokantaan, käsittele sitten. Näin voit käsitellä uudelleen jos jotain menee pieleen.
Lue myös
- Zapier vs Make vs n8n: vertailu
- Integraatioprojektin speksi
- API-autentikointi: OAuth vs API key
- Integraatiot ja automaatio palveluna →
Tarvitsetko apua webhook-integraatioon?
Toteutamme webhook-pohjaiset integraatiot avaimet käteen. Kerro mitä haluat automatisoida.
Pyydä arvio