Mikä on webhook? Ero API:in ja käyttö
Webhook lähettää toiselle järjestelmälle automaattisen ilmoituksen heti, kun tapahtuma sattuu. Kerromme sen käytöstä tilaus-, maksu- ja toimitusintegraatioissa sekä erosta API:in.

Webhook tarkoittaa sitä, että kun järjestelmässä tapahtuu jokin tietty tapahtuma (uusi tilaus, vahvistettu maksu, muuttunut toimitustila), järjestelmä lähettää ennalta määriteltyyn osoitteeseen automaattisen HTTP-pyynnön. API:ssa kysyt dataa itse; webhookissa data tulee luoksesi heti tapahtuman sattuessa. Siksi webhookit ovat reaaliaikaisen integraation kulmakivi.
Mikä on webhook ja miten se toimii?
Webhook on yksinkertainen mekanismi, jonka avulla kaksi ohjelmistoa ilmoittaa toisilleen tapahtumista. Kun järjestelmässä tapahtuu jotain (esimerkiksi maksu vahvistetaan), se lähettää määrittämääsi URL-osoitteeseen HTTP-pyynnön, useimmiten POST-pyynnön. Pyynnön rungossa tapahtuman tiedot ovat yleensä JSON-muodossa.
Tätä rakennetta kutsutaan toisinaan myös käänteiseksi API:ksi tai tapahtumalaukaisimeksi. Viestinnän aloittaja on nimittäin dataa tuottava järjestelmä, ei sitä pyytävä. Sinä sanot vain kerran »kun tämä tapahtuu, ilmoita minulle tähän osoitteeseen»; loput hoituu automaattisesti.
Webhookin toiminnan ymmärtäminen on helpompaa, kun tiedät ensin vastauksen kysymykseen mikä on API. Webhook on osa API-maailmaa, mutta suunta kääntyy päinvastaiseksi.
- Tapahtuma sattuu: uusi tilaus, palautuspyyntö, varasto loppuu, maksu vahvistetaan.
- Lähdejärjestelmä lähettää POST-pyynnön rekisteröityyn webhook-osoitteeseen.
- Vastaanottava järjestelmä vahvistaa pyynnön, käsittelee datan ja palauttaa 200:n kaltaisen vastauksen.
- Jos vastausta ei tule, lähdejärjestelmä yrittää useimmiten pyyntöä uudelleen tietyin väliajoin.
Webhookin ja API:n ero
Perinteisessä API-käytössä asiakas kysyy palvelimelta säännöllisin väliajoin »onko jotain uutta?». Tätä menetelmää kutsutaan pollingiksi (kyselyksi). Jos uutta dataa ei ole, jokainen pyyntö menee hukkaan; jos dataa on, on odotettava seuraavaan kyselyyn asti.
Webhookin ja API:n ero tulee esiin juuri tässä: webhookissa ei ole kysyjää vaan ilmoittaja. Ilmoitus tulee tapahtuman hetkellä, eikä turhaa liikennettä synny. Webhook ei kuitenkaan korvaa kaikkea; historiatietojen listaamiseen, suodattamiseen tai tietueiden päivittämiseen tarvitaan edelleen API.
| Kriteeri | API (polling) | Webhook |
|---|---|---|
| Viestinnän aloittaja | Dataa pyytävä järjestelmä | Dataa tuottava järjestelmä |
| Ajoitus | Riippuu kyselyvälistä | Tapahtuman hetkellä |
| Turhat pyynnöt | Paljon (tyhjät kyselyt) | Lähes olemattomia |
| Sopiva käyttö | Listaus, haku, päivitys | Ilmoitus, laukaisu, synkronointi |
| Käyttöönotto | Koodi asiakaspuolella | Vaatii julkisesti saavutettavan päätepisteen |
Webhookin käyttökohteet
Webhookin käyttö tulee vastaan lähes kaikessa digitaalisessa työssä. Maksupalvelut, toimitusyhtiöt, markkinapaikat, sähköpostipalvelut, koodivarastot ja viestintätyökalut antavat tapahtumailmoitukset useimmiten webhookilla.
Verkkokauppa ja maksut
Kun asiakas on suorittanut maksunsa, maksualusta lähettää kaupallesi »maksu onnistui» -ilmoituksen ja tilaus vahvistuu automaattisesti. Tämän ansiosta tilaus ei katoa uudelleenohjausta vaativissa maksuissa, kuten 3D Securessa, vaikka selain suljettaisiin. Tilausvirta on verkkokauppaintegraation ytimessä.
Toimitus ja markkinapaikka
Kun lähetys lähtee liikkeelle tai toimitetaan, toimitusjärjestelmä voi ilmoittaa tilan; asiakkaalle lähtee automaattinen tekstiviesti tai sähköposti. Samoin toimitusintegraatio- ja markkinapaikkaintegraatio-projekteissa uudet tilaukset, peruutukset ja palautukset käsitellään heti.
Ohjelmistokehitys ja tiimityökalut
Testien ja julkaisuprosessin käynnistäminen, kun koodivarastoon työnnetään uusi commit, ilmoituksen lähettäminen tiimin viestikanavalle, kun lomake täytetään, tai kalenterin päivittäminen varauksen saapuessa ovat tyypillisiä webhook-tilanteita.
Esimerkki webhook-pyynnöstä
Webhook-pyyntö sisältää yleensä tapahtuman tyypin, ajan ja asianomaisen tietueen datan. Alla oleva esimerkki on tyypillinen runko, joka voitaisiin lähettää tilausta luotaessa. Kenttien nimet vaihtelevat palvelusta toiseen; noudata palvelun omaa dokumentaatiota.
Vastaanottopuolella riittää pieni päätepiste, joka ottaa pyynnön vastaan. Alla näet yksinkertaisen esimerkin, joka on kirjoitettu Node.js:llä ja Expressillä. Oikeassa projektissa mukaan on ehdottomasti lisättävä allekirjoituksen vahvistus ja jonorakenne.
{
"event": "order.created",
"created_at": "2026-01-15T10:24:00Z",
"data": {
"order_id": "10458",
"total": 1249.90,
"currency": "TRY",
"status": "paid"
}
}const express = require('express');
const app = express();
app.post('/webhooks/siparis', express.json(), (req, res) => {
const olay = req.body;
// 1) Tarkista allekirjoitus 2) Lisää jonoon 3) Palauta vastaus heti
console.log('Gelen olay:', olay.event);
res.sendStatus(200);
});
app.listen(3000);Miten webhookin turvallisuus varmistetaan?
Webhook-osoite on internetiin avoin päätepiste. Jokainen, joka tuntee osoitteen, voi lähettää sinne väärennetyn pyynnön. Siksi mihinkään pyyntöön, jossa ei ole allekirjoituksen vahvistusta, ei pidä luottaa.
Useimmat vakavasti otettavat palvelut allekirjoittavat pyynnön jaetulla salaisella avaimella ja lähettävät allekirjoituksen HTTP-otsakkeessa. Vastaanottava järjestelmä tekee saman laskennan ja vertaa allekirjoituksia; täsmäämätön pyyntö hylätään.
- Käytä vain HTTPS-osoitetta; älä lähetä dataa tavallisella HTTP:llä.
- Ota ehdottomasti käyttöön HMAC-allekirjoituksen kaltainen vahvistusmenetelmä.
- Estä vanhojen pyyntöjen uudelleentoisto tarkistamalla pyynnön aikaleima.
- Älä kirjoita salaista avainta koodivarastoon; säilytä se ympäristömuuttujassa.
- Tarkista saapuvan datan skeema ennen sen kirjoittamista suoraan tietokantaan.
Yleiset virheet ja ratkaisut
Webhookin pystyttäminen on helppoa, mutta sen toimintavarmuus vaatii huolellisuutta. Projekteissa yleisimmin vastaan tulevat ongelmat ovat uudelleen saapuvat pyynnöt ja hitaat vastaukset.
Saman tapahtuman käsittely kahdesti
Kun lähdejärjestelmä ei saa vastausta, se lähettää pyynnön uudelleen; siksi sama tilaus voi saapua kahdesti. Ratkaisu on idempotentti käsittely: tallenna jokaisen tapahtuman yksilöllinen tunniste ja jos jo käsitelty tunniste saapuu, palauta vain onnistumisvastaus ja jatka.
Aikakatkaisu
Jos päätepiste yrittää pyynnön saatuaan tehdä samalla pitkiä töitä, kuten laskun luontia tai sähköpostin lähetystä, vastaus viivästyy ja lähdejärjestelmä laskee sen virheeksi. Oikea tapa on ottaa pyyntö vastaan, lisätä se työjonoon ja vastata heti; raskaat työt etenevät taustalla.
Järjestyksen sekoittuminen
Tapahtumat eivät aina saavu siinä järjestyksessä kuin ne ovat syntyneet; »lähetetty»-ilmoitus voi saapua ennen »maksettu»-ilmoitusta. Tallenna tapahtuman aika tietueisiin ja arvioi tilasiirtymät sen mukaan.
Webhook vai valmis automaatiotyökalu?
Yksinkertaisissa tilanteissa webhookeja kuuntelevat automaatiotyökalut toimivat ilman koodaamista. Näiden työkalujen vahvuudet ja heikkoudet kävimme läpi artikkelissamme mikä on low-code. Tilausten, maksujen ja varaston kaltaisissa liiketoiminnan ytimen virroissa on kuitenkin tärkeää, että hallinta on sinulla.
Jos liiketoimintasääntösi ovat erityiset, useita järjestelmiä yhdistetään toisiinsa tai datamäärä kasvaa, webhook-arkkitehtuurin rakentaminen omaan ohjelmistoon on luotettavampaa. Tässä räätälöity ohjelmistokehitys vähentää riippuvuutta välikerroksista.
Auroran ohjelmistoratkaisut ja integroidut ratkaisut perustuvat samaan periaatteeseen: järjestelmät keskustelevat suoraan keskenään ja turhat välikerrokset poistetaan.
Tarkistuslista ennen webhookin käyttöönottoa
Vastaamalla seuraaviin kysymyksiin ennen automaattisen ilmoitusjärjestelmän pystyttämistä vältät suurimman osan myöhemmin ilmenevistä ongelmista.
- Mitkä tapahtumat ovat todella tarpeen? Jokaisen tapahtuman tilaaminen aiheuttaa turhaa kuormaa.
- Onko päätepiste tavoitettavissa HTTPS:n kautta ja tekeekö se allekirjoituksen vahvistuksen?
- Pidetäänkö uudelleen saapuvista tapahtumista yksilöllistä tunnistetta?
- Tallennetaanko epäonnistuneet pyynnöt ja voiko niitä seurata?
- Onko olemassa varatarkistus, jolla data kerätään API:n kautta, jos webhook jää saapumatta?
- Tarkistetaanko kriittisissä vaiheissa, kuten kirjanpidossa ja laskutuksessa, kaksoiskirjauksen riski kirjanpitointegraation avulla?
Usein kysytyt kysymykset
01Onko webhook maksullinen teknologia?
Ei, webhook on menetelmä; se ei vaadi erillistä lisenssiä. Webhookeja tarjoavat palvelut antavat sen yleensä vakio-ominaisuutena. Kustannukset syntyvät vastaanottavan päätepisteen isännöinnistä palvelimella ja kehitystyöstä.
02Millä webhookia testataan?
Kehityksen aikana käytetään saapuvia pyyntöjä näyttäviä pyyntöjen kaappauspalveluja tai tunnelointityökaluja, jotka avaavat paikallisen palvelimesi tilapäisesti internetiin. Monet palvelut tarjoavat myös mahdollisuuden lähettää esimerkkitapahtuman hallintapaneelistaan.
03Katoaako data, jos webhook ei saavu perille?
Useimmat palvelut yrittävät epäonnistuneita pyyntöjä uudelleen tietyn ajan, mutta aika ei ole rajaton. Siksi kriittisissä virroissa puuttuvien tapahtumien keräämiseksi kannattaa tehdä säännöllinen API-tarkistus, joka toimii hyvänä turvaverkkona.
04Ovatko webhook ja WebSocket sama asia?
Eivät. WebSocket on selaimen ja palvelimen välillä jatkuvasti auki pysyvä kaksisuuntainen yhteys. Webhook taas on palvelimelta palvelimelle tapahtumakohtaisesti lähetettävä yksittäinen HTTP-pyyntö.
Webhook saa järjestelmäsi ilmoittamaan toisilleen heti ja poistaa manuaaliset tarkistukset ja viiveet. Oikealla tietoturvalla ja uudelleenyrityksillä tilaus-, maksu- ja toimitusvirtasi pyörivät itsestään. Jos haluat rakentaa kaupallesi tai ohjelmistollesi vankan verkkokauppaintegraation, tutustu Auroran ohjelmistoratkaisuihin ja keskustele tiimimme kanssa.


