Webhooks

Configura notificaciones de eventos en tiempo real para enviar datos a tus sistemas externos cada vez que ocurran eventos en tu grupo.

Avanzado
15 minutos

Requisitos previos

Antes de configurar webhooks, necesitas:

  • Una cuenta de Balla Stats
  • Plan TEAM o superior
  • Rol de Administrador o Propietario en el grupo
  • Comprension basica de endpoints HTTP

Limites del plan: TEAM = 5 webhooks (10,000 eventos/dia), ENTERPRISE = 50 webhooks (eventos ilimitados/dia). Los planes FREE y PRO no incluyen webhooks.

Notificaciones de eventos en tiempo real

Recibe notificaciones instantaneas cuando ocurran eventos en tu grupo. Los webhooks envian datos a tus sistemas externos en tiempo real.

21 Tipos de eventos

Eventos de partido, gol, tarjeta, temporada, registro, jugador, equipo

Firmas HMAC

Verifica la autenticidad del payload

Reintentos automaticos

Entrega confiable con retroceso exponencial

Lo que aprenderas
  • Navegar a webhooks
  • Crear un webhook
  • Entender tipos de eventos
  • Verificar firmas de webhook
  • Probar tu webhook
  • Monitorear registros de entrega
  • Comportamiento de reintento y desactivacion automatica
  • Regenerar secreto
1
Navegar a Webhooks

Abre la pagina de Configuracion de tu grupo y haz clic en la pestana Webhooks. Aqui es donde gestionas todas las configuraciones de webhook de tu grupo.

Pestana de Webhooks en la configuracion del grupo
2
Crear un webhook

Haz clic en "Crear Webhook", ingresa un nombre descriptivo, tu URL de destino y selecciona los eventos a los que quieres suscribirte de los 21 tipos de eventos disponibles.

Dialogo de crear webhook con seleccion de tipo de evento
3
Entender tipos de eventos

Los webhooks soportan 21 tipos de eventos en 7 categorias. Suscribete solo a los eventos que tu integracion necesita.

Eventos de partido (5)

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

Eventos de gol (2)

goal.scored, goal.deleted

Eventos de tarjeta (2)

card.yellow, card.red

Eventos de sustitucion (1)

substitution.made

Eventos de temporada (3)

season.created, season.started, season.ended

Eventos de registro (3)

registration.created, registration.updated, registration.cancelled

Eventos de jugador (3)

player.created, player.updated, player.deleted

Eventos de equipo (3)

team.created, team.updated, team.deleted

4
Verificar firmas de webhook

Cada entrega de webhook incluye una firma HMAC-SHA256 para que puedas verificar que el payload proviene de Balla Stats. Los siguientes encabezados se incluyen con cada entrega:

  • X-Webhook-SignatureFirma HMAC-SHA256 del payload
  • X-Webhook-IdID de configuracion del webhook
  • X-Webhook-Event-IdID unico del evento para idempotencia
  • X-Webhook-TimestampMarca de tiempo ISO 8601 del evento

Aqui hay un ejemplo en Node.js para verificar la firma:

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)
  );
}

Siempre verifica las firmas de webhook en produccion para prevenir la falsificacion de payloads.

5
Probar tu webhook

Haz clic en el boton "Probar" para enviar un evento de prueba a tu endpoint. Ve el resultado de la entrega para confirmar que tu endpoint esta recibiendo y procesando correctamente.

Resultado de prueba de entrega de webhook mostrando exito
6
Monitorear registros de entrega

Ve el historial completo de entregas para cada webhook. Cada entrada del registro muestra el estado de entrega (DELIVERED, FAILED, RETRYING), codigo de estado HTTP, tiempo de respuesta y cualquier mensaje de error.

Historial de registros de entrega de webhook con estado y tiempos
7
Comportamiento de reintento y desactivacion automatica

Las entregas fallidas se reintentan automaticamente con retroceso exponencial. La configuracion predeterminada es 3 reintentos con retrasos crecientes:

  • Intento 1: 60 segundos despues del fallo inicial
  • Intento 2: 120 segundos despues del primer reintento
  • Intento 3: 240 segundos despues del segundo reintento

Despues de 10 fallos consecutivos, el webhook se desactiva automaticamente para prevenir desperdicio de recursos. Puedes reactivarlo manualmente despues de solucionar el problema con tu endpoint.

8
Regenerar secreto

Si tu secreto de webhook se ve comprometido, regeneralo inmediatamente. Actualiza tu endpoint receptor con el nuevo secreto antes de la proxima entrega para asegurar que la verificacion de firma continue funcionando.

Regenerar el secreto invalida el secreto anterior inmediatamente. Actualiza tu endpoint primero para evitar fallos en la verificacion de firma.

Formato del payload del webhook

Cada entrega de webhook envia un payload JSON con la siguiente estructura:

{
  "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"
  }
}
Consejos

Usa una herramienta de prueba primero

Comienza con webhook.site o requestbin.com para pruebas antes de usar tu endpoint de produccion.

Suscribete selectivamente

Suscribete solo a los eventos que necesitas para reducir el ruido y mantenerte dentro de tu limite diario de eventos.

Implementa idempotencia

Implementa idempotencia usando el ID del evento para manejar posibles entregas duplicadas.

Registra los payloads recibidos

Registra los payloads recibidos en tu lado para depurar problemas de entrega.

Problemas comunes

El webhook no se dispara

  • Verifica que el webhook este activo y no se haya desactivado automaticamente
  • Verifica que el webhook este suscrito al tipo de evento correcto
  • Asegurate de que tu plan de grupo soporte webhooks (TEAM o superior)

Fallo en la verificacion de firma

  • Usa el cuerpo de solicitud sin procesar para el calculo HMAC, no un objeto parseado
  • Verifica las diferencias de codificacion de caracteres entre tu servidor y el payload
  • Asegurate de que el secreto no haya sido regenerado desde tu ultima configuracion

Webhook desactivado automaticamente

  • 10 fallos consecutivos activaron la desactivacion automatica para prevenir desperdicio de recursos
  • Soluciona el problema con tu endpoint, luego reactiva el webhook manualmente
  • Revisa los registros de entrega para detalles de error sobre que causo los fallos