Webhooks
Configura notificaciones de eventos en tiempo real para enviar datos a tus sistemas externos cada vez que ocurran eventos en tu grupo.
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.
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
- 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
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.

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.

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
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-Signature— Firma HMAC-SHA256 del payloadX-Webhook-Id— ID de configuracion del webhookX-Webhook-Event-Id— ID unico del evento para idempotenciaX-Webhook-Timestamp— Marca 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.
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.

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.

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.
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.
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"
}
}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.
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
Te resulto util este articulo?