Eventos disponíveis

9 eventos cobrem o ciclo de vida de uma compra na PaysClub — do pagamento à revogação. Configure só os eventos que você precisa pra evitar tráfego desnecessário.

EventoDescriçãoQuando dispara
order.paidPedido pagoPagamento confirmado pelo gateway
access.grantedAcesso liberadoComprador recebe acesso ao produto
access.revokedAcesso revogadoReembolso, disputa perdida ou revogação manual
trial.startedTrial iniciadoComprador inicia período de teste
trial.expiredTrial expiradoPeríodo de teste encerrou
refund.requestedReembolso solicitadoSolicitação de reembolso criada
affiliate.commission_earnedComissão geradaVenda via afiliado confirmada
member.enrolledMembro inscritoNovo membro recebeu acesso pela 1ª vez
checkout.abandonedCheckout abandonadoSessão sem conversão por 24h

Envelope de payload

Todos os eventos seguem o mesmo formato base:

Envelope
{
  "event": "order.paid",
  "data": { /* payload específico do evento */ },
  "timestamp": "2026-04-20T10:30:00.000Z"
}

Headers enviados

HeaderDescrição
Content-Typeapplication/json
X-PaysClub-Signaturesha256=HMAC da payload (validar antes de processar)
X-PaysClub-EventNome do evento (ex: order.paid)
X-PaysClub-DeliveryUUID único de cada tentativa (use pra deduplicar)

Detalhes por evento

order.paid

Disparado após confirmação de pagamento via gateway. Esse é o evento principal — confirmação canônica de venda concluída.

data
{
  "order_id": "550e8400-...",
  "product_id": "660e8400-...",
  "buyer_id": "770e8400-...",
  "amount": 97.00,
  "payment_method": "pix"
}

access.granted

Disparado simultaneamente a order.paid. Use se você só quer rastrear acesso (ignorando metadados de pagamento).

data
{
  "access_id": "880e8400-...",
  "order_id": "550e8400-...",
  "product_id": "660e8400-...",
  "buyer_id": "770e8400-..."
}

access.revoked

Disparado quando o acesso é removido — reembolso, disputa perdida ou revogação manual via dashboard.

data
{
  "order_id": "550e8400-...",
  "product_id": "660e8400-...",
  "buyer_id": "770e8400-...",
  "reason": "refunded" // refunded | disputed | manual | trial_expired | subscription_cancelled
}

trial.started

Disparado quando comprador inicia período de teste em produto recorrente com trial configurado.

data
{
  "order_id": "550e8400-...",
  "product_id": "660e8400-...",
  "buyer_id": "770e8400-...",
  "trial_ends_at": "2026-05-04T10:30:00Z"
}

trial.expired

Disparado pelo cron quando trial expira. Antes do checkout cobrar a primeira mensalidade.

data
{
  "order_id": "550e8400-...",
  "product_id": "660e8400-...",
  "buyer_id": "770e8400-...",
  "expired_at": "2026-05-04T10:30:00Z"
}

refund.requested

Disparado quando um pedido de reembolso é criado (via portal do comprador ou via API).

data
{
  "refund_id": "990e8400-...",
  "order_id": "550e8400-...",
  "amount": 97.00,
  "reason": "Cliente solicitou reembolso por insatisfação"
}

affiliate.commission_earned

Disparado após order.paid quando a venda veio por link de afiliado. A comissão é gravada com a porcentagem snapshot no momento da criação da order.

data
{
  "affiliate_id": "aa0e8400-...",
  "order_id": "550e8400-...",
  "product_id": "660e8400-...",
  "commission_amount": 9.70
}

member.enrolled

Disparado uma única vez por buyer × product na primeira liberação de acesso. Não dispara em renovação de assinatura.

data
{
  "member_id": "770e8400-...",
  "product_id": "660e8400-...",
  "buyer_id": "770e8400-...",
  "order_id": "550e8400-..."
}

checkout.abandoned

Disparado pelo cron quando uma sessão de checkout fica sem conversão por 24h. Use pra rastrear taxa de abandono em sistemas externos.

data
{
  "session_id": "bb0e8400-...",
  "product_id": "660e8400-...",
  "email": "comprador@email.com",
  "abandoned_at": "2026-04-20T10:30:00Z"
}

Ordem dos eventos numa compra típica

Sequência canônica numa venda de produto one-time via PIX, com afiliado:

Sequência
1. checkout.abandoned    (se comprador abandonar 24h, opcional)
2. order.paid            (T+0s ao confirmar pagamento)
3. access.granted        (T+0s, simultâneo)
4. member.enrolled       (T+0s, se for primeira compra desse produto)
5. affiliate.commission_earned  (T+0s, se houve afiliado)
Garantia de entrega: PaysClub tenta a entrega até 5 vezes com backoff exponencial (1m, 5m, 30m, 2h, 12h). Após 5 falhas, o evento entra na dead-letter queue e a entrega é marcada como falha.