Webhooks

Stel realtime gebeurtenismeldingen in om gegevens naar uw externe systemen te sturen wanneer er gebeurtenissen plaatsvinden in uw groep.

Geavanceerd
15 minuten

Vereisten

Voordat u webhooks instelt, heeft u het volgende nodig:

  • Een Balla Stats-account
  • TEAM-abonnement of hoger
  • De rol Beheerder of Eigenaar in de groep
  • Basiskennis van HTTP-eindpunten

Planlimieten: TEAM = 5 webhooks (10.000 evenementen/dag), ENTERPRISE = 50 webhooks (onbeperkt evenementen/dag). FREE- en PRO-abonnementen bevatten geen webhooks.

Realtime gebeurtenismeldingen

Ontvang direct meldingen wanneer er gebeurtenissen plaatsvinden in uw groep. Webhooks pushen gegevens in realtime naar uw externe systemen.

21 gebeurtenistypen

Wedstrijd, doel, kaart, seizoen, registratie, speler, teamevenementen

HMAC-handtekeningen

Authenticiteit van de payload verifiëren

Automatische nieuwe pogingen

Betrouwbare levering met exponentieel uitstel

Wat je gaat leren
  • Navigeer naar webhooks
  • Maak een webhook
  • Gebeurtenistypen begrijpen
  • Webhookhandtekeningen verifiëren
  • Test uw webhook
  • Leveringslogboeken controleren
  • Gedrag van opnieuw proberen en automatisch uitschakelen
  • Geheim
1
opnieuw genereren Navigeer naar Webhooks

Open de pagina Settings van uw groep en klik op het tabblad Webhooks. Hier beheert u alle webhookconfiguraties voor uw groep.

Tabblad Webhooks in groepsinstellingen
2
Maak een webhook

Klik op "Webhook maken" , voer een beschrijvende naam en uw doel-URL in en selecteer de evenementen waarop u zich wilt abonneren uit de 21 beschikbare gebeurtenistypen.

Maak een webhookdialoog met selectie van gebeurtenistype
3
Gebeurtenistypen begrijpen

Webhooks ondersteunen 21 gebeurtenistypen in 7 categorieën. Abonneer u alleen op de evenementen die uw integratie nodig heeft.

Wedstrijdevenementen (5)

match.created, match.started, match.ended, match.completed, match.cancelled

Doelgebeurtenissen (2)

goal.scored, goal.deleted

Kaartgebeurtenissen (2)

card.yellow, card.red

Vervangingsgebeurtenissen (1)

substitution.made

Seizoensevenementen (3)

season.created, season.started, season.ended

Registratie Evenementen (3)

registration.created, registration.updated, registration.cancelled

Spelerevenementen (3)

player.created, player.updated, player.deleted

Teamevenementen (3)

team.created, team.updated, team.deleted

4
Webhook-handtekeningen verifiëren

Elke webhook-levering bevat een HMAC-SHA256-handtekening, zodat u kunt verifiëren dat de payload afkomstig is van Balla Stats. Bij elke levering worden de volgende headers meegeleverd:

  • X-Webhook-SignatureHMAC-SHA256 handtekening van de lading
  • X-Webhook-IdWebhook-configuratie-ID
  • X-Webhook-Event-IdUnieke gebeurtenis-ID voor idempotentie
  • X-Webhook-TimestampISO 8601-tijdstempel van de gebeurtenis

Hier is een Node.js-voorbeeld voor het verifiëren van de handtekening:

const crypto = require('crypto');

function verifySignature(payload, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(signature.replace('sha256=', '')),
    Buffer.from(expected)
  );
}

Verifieer altijd webhookhandtekeningen in productie om spoofing van de payload te voorkomen.

5
Test uw webhook

Klik op de knop "Test" om een ​​testgebeurtenis naar uw eindpunt te verzenden. Bekijk het leveringsresultaat om te bevestigen dat uw eindpunt correct wordt ontvangen en verwerkt.

Resultaat van webhooktestlevering toont succes
6
Leveringslogboeken controleren

Bekijk de volledige leveringsgeschiedenis voor elke webhook. Elke logvermelding toont de leveringsstatus (DELIVERED, FAILED, RETRYING), HTTP-statuscode, responstijd en eventuele foutmeldingen.

Geschiedenis van webhookleveringslogboek met status en timing
7
Gedrag opnieuw proberen en automatisch uitschakelen

Mislukte leveringen worden automatisch opnieuw geprobeerd met exponentieel uitstel. De standaardconfiguratie is 3 nieuwe pogingen met toenemende vertragingen:

  • Poging 1: 60 seconden na initiële fout
  • Poging 2: 120 seconden na eerste nieuwe poging
  • Poging 3: 240 seconden na de tweede nieuwe poging

Na 10 opeenvolgende fouten wordt de webhook automatisch uitgeschakeld om verspilling van bronnen te voorkomen. U kunt het handmatig opnieuw inschakelen nadat u het probleem met uw eindpunt hebt opgelost.

8
Geheim opnieuw genereren

Als uw webhookgeheim is aangetast, moet u het onmiddellijk opnieuw genereren. Werk uw ontvangende eindpunt bij met het nieuwe geheim vóór de volgende levering om ervoor te zorgen dat de handtekeningverificatie blijft werken.

Als u het geheim opnieuw genereert, wordt het oude geheim onmiddellijk ongeldig. Update eerst uw eindpunt om mislukte handtekeningcontroles te voorkomen.

Webhook-payload-indeling

Elke webhook-levering verzendt een JSON-payload met de volgende structuur:

{
  "id": "unique-event-id",
  "timestamp": "2025-01-16T10:30:00.000Z",
  "type": "goal.scored",
  "data": {
    "matchId": "match-id",
    "playerId": "player-id",
    "teamId": "team-id",
    "minute": 42,
    "type": "GOAL"
  }
}
Tips

Gebruik eerst een testtool

Begin met webhook.site of requestbin.com om te testen voordat u uw productie-eindpunt gebruikt.

Abonneer u selectief

Abonneer u alleen op de evenementen die u nodig heeft om de ruis te verminderen en binnen uw dagelijkse evenementenlimiet te blijven.

Idempotentie implementeren

Implementeer idempotentie met behulp van de gebeurtenis-ID om mogelijke dubbele leveringen af ​​te handelen.

Ontvangen payloads registreren

Registreer ontvangen payloads aan uw kant voor het opsporen van leveringsproblemen.

Veelvoorkomende problemen

Webhook wordt niet geactiveerd

  • Controleer of de webhook actief is en niet automatisch is uitgeschakeld
  • Controleer of de webhook is geabonneerd op het juiste gebeurtenistype
  • Zorg ervoor dat uw groepsplan webhooks ondersteunt (TEAM of hoger)

Handtekeningverificatie mislukt

  • Gebruik de onbewerkte aanvraagtekst voor HMAC-berekening, niet een geparseerd object
  • Controleer op verschillen in tekencodering tussen uw server en de payload
  • Zorg ervoor dat het geheim niet opnieuw is gegenereerd sinds uw laatste configuratie

Webhook automatisch uitgeschakeld

  • 10 opeenvolgende fouten hebben automatische uitschakeling geactiveerd om verspilling van bronnen te voorkomen
  • Los het probleem met uw eindpunt op en schakel de webhook vervolgens handmatig opnieuw in
  • Controleer de leveringslogboeken voor foutdetails over de oorzaak van de fouten