Webhooks

Configure notificações de eventos em tempo real para enviar dados para seus sistemas externos sempre que ocorrerem eventos em seu grupo.

Avançado
15 minutos

Pré-requisitos

Antes de configurar webhooks, você precisa:

  • Uma conta Balla Stats
  • Plano TEAM ou superior
  • Função de administrador ou proprietário no grupo
  • Compreensão básica de endpoints HTTP

Limites do plano: TEAM = 5 webhooks (10.000 eventos/dia), ENTERPRISE = 50 webhooks (eventos ilimitados/dia). Os planos GRATUITO e PRO não incluem webhooks.

Notificações de eventos em tempo real

Receba notificações instantâneas quando ocorrerem eventos em seu grupo. Webhooks enviam dados para seus sistemas externos em tempo real.

21 Tipos de eventos

Partida, gol, cartão, temporada, inscrição, jogador, eventos da equipe

Assinaturas HMAC

Verifique a autenticidade da carga útil

Novas tentativas automáticas

Entrega confiável com espera exponencial

O que você aprenderá
  • Navegue até webhooks
  • Crie um webhook
  • Entenda os tipos de eventos
  • Verifique assinaturas de webhook
  • Teste seu webhook
  • Monitorar registros de entrega
  • Tentar novamente o comportamento e desativar automaticamente
  • Regenerar segredo
1
Navegue até Webhooks

Abra a página Settings do seu grupo e clique na guia Webhooks. É aqui que você gerencia todas as configurações de webhook do seu grupo.

Aba Webhooks nas configurações do grupo
2
Crie um webhook

Clique em "Criar Webhook", insira um nome descritivo, seu URL de destino e selecione os eventos que deseja assinar entre os 21 tipos de eventos disponíveis.

Criar caixa de diálogo de webhook com seleção de tipo de evento
3
Entenda os tipos de eventos

Webhooks suportam 21 tipos de eventos em 7 categorias. Assine apenas os eventos que sua integração precisa.

Eventos de Partida (5)

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

Eventos de gol (2)

goal.scored, goal.deleted

Eventos de cartas (2)

card.yellow, card.red

Eventos de substituição (1)

substitution.made

Eventos da Temporada (3)

season.created, season.started, season.ended

Eventos de inscrição (3)

registration.created, registration.updated, registration.cancelled

Eventos de Jogador (3)

player.created, player.updated, player.deleted

Eventos de equipe (3)

team.created, team.updated, team.deleted

4
Verifique assinaturas de webhook

Cada entrega de webhook inclui uma assinatura HMAC-SHA256 para que você possa verificar se a carga veio do Balla Stats. Os seguintes cabeçalhos estão incluídos em cada entrega:

  • X-Webhook-SignatureAssinatura HMAC-SHA256 da carga
  • X-Webhook-IdID de configuração do webhook
  • X-Webhook-Event-IdID de evento exclusivo para idempotência
  • X-Webhook-TimestampCarimbo de hora ISO 8601 do evento

Aqui está um exemplo de Node.js para verificar a assinatura:

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

Sempre verifique assinaturas de webhook em produção para evitar falsificação de carga útil.

5
Teste seu webhook

Clique no botão "Teste" para enviar um evento de teste ao seu endpoint. Visualize o resultado da entrega para confirmar se seu endpoint está recebendo e processando corretamente.

Resultado da entrega do teste de webhook mostrando sucesso
6
Monitorar registros de entrega

Veja o histórico de entrega completo de cada webhook. Cada entrada de log mostra o status de entrega (DELIVERED, FAILED, RETRYING), código de status HTTP, tempo de resposta e quaisquer mensagens de erro.

Histórico de log de entrega do webhook com status e tempo
7
Tentar novamente o comportamento e desativar automaticamente

Entregas com falha são repetidas automaticamente com espera exponencial. A configuração padrão é de 3 tentativas com atrasos crescentes:

  • Tentativa 1: 60 segundos após a falha inicial
  • Tentativa 2: 120 segundos após a primeira tentativa
  • Tentativa 3: 240 segundos após a segunda tentativa

Após 10 falhas consecutivas, o webhook é automaticamente desabilitado para evitar desperdício de recursos. Você pode reativá-lo manualmente após corrigir o problema com seu endpoint.

8
Regenerar Segredo

Se o segredo do seu webhook estiver comprometido, gere-o novamente imediatamente. Atualize seu endpoint de recebimento com o novo segredo antes da próxima entrega para garantir que a verificação de assinatura continue funcionando.

A regeneração do segredo invalida imediatamente o segredo antigo. Atualize seu endpoint primeiro para evitar falhas nas verificações de assinatura.

Formato de carga útil do webhook

Cada entrega de webhook envia uma carga JSON com a seguinte estrutura:

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

Use uma ferramenta de teste primeiro

Comece com webhook.site ou requestbin.com para testar antes de usar seu endpoint de produção.

Inscreva-se seletivamente

Assine apenas os eventos necessários para reduzir o ruído e permanecer dentro do limite diário de eventos.

Implementar Idempotência

Implemente a idempotência usando o ID do evento para lidar com possíveis entregas duplicadas.

Registrar cargas úteis recebidas

Registre as cargas recebidas do seu lado para depurar problemas de entrega.

Problemas comuns

Webhook não dispara

  • Verifique se o webhook está ativo e não desabilitado automaticamente
  • Verifique se o webhook está inscrito no tipo de evento correto
  • Certifique-se de que seu plano de grupo suporta webhooks (TEAM ou superior)

Falha na verificação da assinatura

  • Use o corpo bruto da solicitação para cálculo HMAC, não um objeto analisado
  • Verifique se há diferenças de codificação de caracteres entre seu servidor e a carga útil
  • Certifique-se de que o segredo não tenha sido regenerado desde sua última configuração

Webhook desativado automaticamente

  • 10 falhas consecutivas acionaram a desativação automática para evitar desperdício de recursos
  • Corrija o problema com seu endpoint e reative o webhook manualmente
  • Verifique os logs de entrega para obter detalhes de erros sobre o que causou as falhas