Hva er en webhook?

Av Weapp · Oppdatert

En webhook er et omvendt API-kall: I stedet for at dere spør et system om og om igjen om noe har skjedd, ringer systemet selv til dere så snart en hendelse inntreffer. Når en betaling gjennomføres, en ordre sendes eller en avtale signeres, går det straks ut en melding. Webhooks er effektive, men kan gå tapt og trenger kvittering.

Webhook er et ord som høres teknisk ut, men som bygger på en hverdagslig idé. Hvis et vanlig API handler om å spørre et system om noe, handler en webhook om det omvendte: å få beskjed. Det er en liten forskjell i retning, med store konsekvenser for hvor raskt og effektivt systemer kan reagere på hverandre. Her er forklaringen, med en sammenligning som gjør prinsippet selvsagt.

Ringeklokken mot postkassen

Tenk deg at du venter på en viktig pakke. Én måte er å gå ut til postkassen hvert femte minutt og se etter om den har kommet. De fleste gangene står du der forgjeves, og likevel kan pakken ha ligget og ventet en stund før du oppdaget den.

Den andre måten er å ha en ringeklokke. Da trenger du ikke å gå ut og se i det hele tatt. I samme øyeblikk som pakken leveres, ringer det, og du reagerer med en gang. Ingen unødig venting, ingen forsinkelse.

En webhook er ringeklokken. I stedet for at systemet deres spør et annet system om og om igjen «har noe skjedd?», sender det andre systemet av seg selv en liten melding i det øyeblikket noe faktisk skjer. Derfor kalles en webhook ofte et omvendt API-kall: Vanligvis er det dere som ringer opp, men her er det systemet som ringer dere.

Hva det betyr i praksis

Det som skiller dette fra å spørre hele tiden, er ikke bare eleganse. Det er effektivitet. Å spørre et system med jevne mellomrom betyr massevis av kall der svaret likevel blir «ingenting nytt», pluss en forsinkelse til neste spørsmål rekker å bli stilt. En webhook sender beskjed først når det er noe å fortelle, og gjør det med en gang.

Resultatet blir både ferskere informasjon og mindre belastning på begge systemene. Dere får vite ting i samme øyeblikk som de skjer, uten å kaste bort kall på unødvendige spørsmål. For prosesser som skal føles umiddelbare, er det ofte forskjellen mellom noe som svarer med en gang, og noe som alltid ligger noen minutter etter.

Forretningseksempler

Webhooks er usynlige, men driver prosesser dere møter hver dag. Noen typiske eksempler:

  • Betaling gjennomført. Når en kunde betaler, sender betalingstjenesten en webhook til dere i det øyeblikket pengene går gjennom. Dere kan da bekrefte ordren med en gang, uten å sitte og spørre betalingstjenesten om og om igjen om betalingen har kommet.
  • Ordren sendt. Når en ordre pakkes og sendes, kan lager- eller logistikksystemet sende en webhook slik at kunden får varselet sitt og statusen oppdateres automatisk.
  • Avtalen signert. Når et dokument er signert i en signeringstjeneste, sendes en webhook, og systemet deres kan gå videre med neste steg (aktivere tjenesten, opprette kunden, starte leveransen) uten at noen trenger å sjekke manuelt.

Felles for alle tre: En hendelse i ett system utløser umiddelbart en reaksjon i et annet, uten at et menneske flytter informasjonen eller et system sitter og spør.

En viktig merknad om leveringsgarantier

Her er det likevel en hake som er verdt å kjenne til. En webhook kan forsvinne. Meldingen blir kanskje sendt akkurat når mottakeren deres er nede, den kan gå tapt et sted på veien, eller den kan ved et uhell bli sendt to ganger. I motsetning til når dere spør selv og kan spørre igjen hvis svaret uteblir, er dere avhengige av at avsenderen når frem i riktig øyeblikk.

Derfor bygges webhooks med to sikringer. Avsenderen gjør nye forsøk hvis meldingen ikke kommer frem, gjerne med økende mellomrom. Og mottakeren sender en kvittering, en bekreftelse på at meldingen er mottatt. Får avsenderen ingen kvittering, prøver den igjen til det går gjennom. Sammen sørger de for at ingen hendelser faller mellom to stoler uten at noen merker det.

Det gjør ikke webhooks upålitelige (riktig bygd er de svært robuste), men det forklarer hvorfor en gjennomtenkt webhook-integrasjon er mer enn bare å ta imot et kall.

Vi i Weapp bygger integrasjoner på webhooks og sørger for at de tåler virkeligheten, med nye forsøk og kvitteringer på plass. Se tjenestene våre eller ta kontakt.

Ofte stilte spørsmål

Hva er forskjellen på en webhook og et vanlig API-kall?

Retningen. Med et vanlig API-kall er det dere som spør et annet system om noe. Med en webhook er det omvendt: Det andre systemet kontakter dere av seg selv når noe skjer. Webhooken kalles gjerne et omvendt API-kall av nettopp den grunn. Dere venter på beskjed i stedet for å spørre, noe som sparer dere for en mengde unødvendige kall.

Hvorfor er en webhook mer effektiv enn å spørre hele tiden?

Fordi dere slipper alle kallene der svaret likevel er at ingenting har skjedd. Å spørre et system med jevne mellomrom betyr massevis av unødvendige forespørsler og likevel en forsinkelse frem til neste spørsmål. En webhook sender beskjed først når noe faktisk skjer, og med en gang. Dere får ferskere informasjon og belaster begge systemene mindre. Det er mer effektivt på begge måter.

Kan det skje at en webhook ikke kommer frem?

Ja, og det er det svake punktet. Et webhook-kall kan bli sendt mens mottakeren deres er nede, forsvinne på veien eller komme frem to ganger. I motsetning til når dere spør selv, er dere avhengige av at avsenderen når frem i riktig øyeblikk. Derfor må webhooks bygges med nye forsøk og en kvittering som bekrefter at meldingen ble mottatt.

Hva er en kvittering i denne sammenhengen?

Et svar fra dere som bekrefter at dere har mottatt webhooken. Når avsenderen får kvitteringen, vet den at den ikke trenger å sende på nytt. Uteblir den, prøver avsenderen igjen. Kvitteringen er det som sørger for at ingen hendelser forsvinner i stillhet: Enten blir de bekreftet, eller så sendes de på nytt til de kommer frem. Uten den vet ingen om kallet lyktes.

Hvor brukes webhooks i praksis?

Overalt der et system trenger å få vite med en gang at noe har skjedd i et annet. Betalingstjenester sender en webhook når en betaling går gjennom, e-handelssystemer når en ordre sendes, signeringstjenester når et dokument er signert. Integrasjonen deres reagerer da i samme øyeblikk i stedet for å oppdage hendelsen sent. Det er ryggraden i prosesser som skal føles umiddelbare.