Tot nu toe betekende uitzoeken of een bericht eruit was gegaan dat je het moest vragen. Je riep de API aan, controleerde de status en riep later opnieuw aan. Dat werkt, maar het is bevragen: of je vraagt te vaak en verspilt verzoeken, of je vraagt te weinig en komt er te laat achter. Webhooks draaien dat om. Je geeft sona.to een URL, en sona.to belt jou op het moment dat er iets gebeurt. Ze zijn nu beschikbaar in elk abonnement.
Er zijn vier gebeurtenissen om je op te abonneren, en ze dekken de uitkomsten waarop reageren zinvol is: bericht geplaatst, bericht mislukt, site-audit voltooid en site-audit mislukt. Je kiest zelf welke elke webhook ontvangt, zodat een Slack-melder alleen naar fouten kan luisteren terwijl een rapportagepijplijn alles krijgt. De payload gebruikt dezelfde veldnamen als de REST API teruggeeft, dus wat je al uit een GET-verzoek haalt, blijft ongewijzigd werken.
Instellen kost een minuut. Open de API-pagina in je dashboard, plak de URL die je tool je gaf, vink de gewenste gebeurtenissen aan en sla op. De ondertekeningssleutel verschijnt op dat moment één keer. Kopieer hem dan, want hij wordt niet opnieuw getoond.
Die sleutel is hoe je weet dat een verzoek echt is. Elke aflevering draagt een handtekening-header met een tijdstempel en een HMAC SHA-256 van die tijdstempel en de inhoud van het verzoek, berekend met jouw sleutel. Bereken hem aan jouw kant opnieuw en vergelijk beide met een functie met constante looptijd. Omdat de tijdstempel deel uitmaakt van het ondertekende materiaal, kan een onderschept verzoek later niet tegen je worden afgespeeld. Wijs alles af dat ouder is dan een paar minuten en je bent klaar.
Afleveringen geven bij het eerste probleem niet op. Als je endpoint offline is of een fout teruggeeft, wordt het verzoek opnieuw geprobeerd na 60 seconden, dan 5 minuten, dan 30 minuten. Elke poging wordt vastgelegd met statuscode en duur, zodat een endpoint dat zich misdraagt iets is wat je kunt bekijken in plaats van raden. Een endpoint dat blijft mislukken wordt automatisch uitgeschakeld, en je kunt hem weer aanzetten zodra hij gerepareerd is.
De voor de hand liggende plek om hem op te richten is een automatiseringsplatform. Zapier, Make en n8n geven je allemaal een webhook-URL om te plakken, en de gebeurtenis komt binnen als JSON, klaar om te koppelen aan wat daarna komt: een bericht in een kanaal, een rij in een spreadsheet, een taak in een tracker. Je eigen server werkt precies hetzelfde, zonder platform ertussen.
Een opmerking over wat sona.to accepteert. De bestemming moet https gebruiken en moet een openbaar adres zijn. Een URL die naar een privénetwerk wijst wordt geweigerd, zowel bij het opslaan als opnieuw op het moment van afleveren, en omleidingen worden niet gevolgd. Als je een ontvanger op een lokaal netwerk draait, zet hem dan achter een openbare hostnaam of een tunnel.
Webhooks komen naast de REST API en de MCP-server als de derde manier om sona.to van buiten het dashboard aan te sturen. De API is om te vragen, MCP is om gevraagd te worden door een AI-assistent, en webhooks zijn om op de hoogte gebracht te worden. Alle details, inclusief een voorbeeld van handtekeningcontrole, staan in de API-documentatie.