Webhookit käytännössä: miten ne toimivat ja milloin käyttää

TL;DR – Tiivistelmä

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ä?

  1. Rekisteröit URL:n: Kerrot lähdejärjestelmälle mihin osoitteeseen se lähettää datan
  2. Tapahtuma sattuu: Esim. uusi tilaus, päivitetty asiakas, lähetetty lasku
  3. Lähdejärjestelmä lähettää HTTP POST -pyynnön: JSON-muotoinen data sinun URL:iin
  4. Sinun järjestelmäsi käsittelee datan: Tallentaa, lähettää eteenpäin, tekee toimenpiteitä
  5. 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

  1. Ei signature-tarkistusta: Kuka tahansa voi lähettää väärennettyjä pyyntöjä.
  2. Liian hidas käsittely: Jos käsittely kestää >30s, timeout → retry → duplikaatteja.
  3. Ei idempotenssia: Sama webhook voi tulla monta kertaa (retry). Käsittele vain kerran.
  4. Ei logitusta: Kun jokin menee pieleen, et tiedä mitä tapahtui.
  5. 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

Tarvitsetko apua webhook-integraatioon?

Toteutamme webhook-pohjaiset integraatiot avaimet käteen. Kerro mitä haluat automatisoida.

Pyydä arvio