Documentation Index
Fetch the complete documentation index at: https://docs.garu.com.br/llms.txt
Use this file to discover all available pages before exploring further.
Visão Geral
Webhooks permitem que sua aplicação receba notificações automáticas quando eventos importantes acontecem, como quando um pagamento é confirmado ou um produto é criado.Configurando Webhooks
Acesse o Dashboard
Faça login no Dashboard da Garu
Eventos Disponíveis
Eventos de Produto
| Evento | Descrição |
|---|---|
product.created | Um novo produto foi criado |
product.updated | Um produto foi atualizado |
product.deleted | Um produto foi desativado |
Eventos de Transação
| Evento | Descrição |
|---|---|
transaction.created | Uma nova transação foi iniciada |
transaction.updated | Uma transação teve seus dados atualizados |
transaction.payment.succeeded | Pagamento confirmado |
transaction.payment.failed | Pagamento recusado (com failureCode normalizado — ver Códigos de falha) |
transaction.canceled | Transação cancelada (pelo seller, contrato ou operadora) |
transaction.chargeback | Chargeback registrado pelo emissor |
transaction.refunded | Pagamento estornado |
O evento legado
transaction.failed continua sendo entregue para endpoints que já o assinam, mas a partir da v0.8.0 prefira transaction.payment.failed / transaction.canceled / transaction.chargeback — eles separam falha técnica, cancelamento e chargeback.Eventos de Cobrança Agendada (Scheduled Charge)
| Evento | Descrição |
|---|---|
scheduled_charge.created | Cobrança agendada criada |
scheduled_charge.updated | Dados da série atualizados |
scheduled_charge.canceled | Cobrança avulsa cancelada |
scheduled_charge.paid | Ciclo da série pago (carrega seriesId + cycleNumber) |
scheduled_charge.overdue | Ciclo entrou em atraso |
scheduled_charge.cycle_failed | Retries de cartão esgotados (carrega failureCode, failureReason, gatewayFailureCode) |
scheduled_charge.recurrence_canceled | Recorrência cancelada (cancela ciclos futuros) |
scheduled_charge.cancel_at_period_end_set | Soft-cancel ativado |
scheduled_charge.cancel_at_period_end_cleared | Soft-cancel revertido |
scheduled_charge.payment_method_attached | Cartão salvo no ciclo 1 |
scheduled_charge.payment_method_changed | Cartão trocado |
scheduled_charge.payment_method_cleared | Cartão removido (DELETE /:id/payment-method) |
Eventos de Customer (Trial)
| Evento | Descrição |
|---|---|
customer.trial_started | Trial iniciado |
customer.trial_converted | Trial converteu em pagamento |
customer.trial_lapsed | Trial expirou sem pagamento |
Eventos de Payment Method (Cartão Salvo)
| Evento | Descrição |
|---|---|
payment_method.expiring_soon | Cartão vence em D-30, D-14 ou D-7 (um disparo por estágio) |
payment_method.expired | Cartão venceu — Garu flippou o status para expired automaticamente |
Eventos de Assinatura
| Evento | Descrição |
|---|---|
subscription.created | Nova assinatura criada |
subscription.activated | Assinatura ativada |
subscription.paused | Assinatura pausada |
subscription.cancelled | Assinatura cancelada |
subscription.renewed | Assinatura renovada |
Eventos de Checkout Session
| Evento | Descrição |
|---|---|
checkout.session.completed | Pagamento da checkout session foi concluído |
checkout.session.expired | Checkout session expirou sem pagamento |
Formato do Payload
Todos os webhooks seguem este formato:Exemplo: Pagamento Confirmado
Exemplo: Produto Criado
Exemplo: Checkout Session Concluída
Exemplo: Checkout Session Expirada
Validando Assinaturas
Para garantir que o webhook veio da Garu, valide a assinatura:Validando Assinatura do Webhook
Boas Práticas
Responda rapidamente
Responda rapidamente
Retorne HTTP 200 o mais rápido possível (em até 5 segundos). Processe a lógica de negócio de forma assíncrona.
Implemente idempotência
Implemente idempotência
Webhooks podem ser enviados mais de uma vez. Use o ID do evento para evitar processamento duplicado.
Use HTTPS
Use HTTPS
Configure seu endpoint com HTTPS para garantir a segurança dos dados.
Valide sempre a assinatura
Valide sempre a assinatura
Nunca processe webhooks sem validar a assinatura. Isso protege contra ataques.
Monitore falhas
Monitore falhas
Configure alertas para quando seu endpoint falhar em receber webhooks.
Retry Policy
Se seu endpoint não responder com 2xx, a Garu tentará reenviar com backoff:| Tentativa | Intervalo desde a anterior |
|---|---|
| 1 | 1 minuto |
| 2 | 5 minutos |
| 3 | 30 minutos |
| 4 | 2 horas |
| 5 | 8 horas |
| 6 | 16 horas |
Testando Webhooks
Para testar localmente, use ferramentas como:- ngrok - Cria um túnel para seu localhost
- webhook.site - Inspeciona webhooks recebidos
Próximos Passos
Exemplos de Código
Implementações completas em várias linguagens
Solução de Problemas
Resolva erros comuns