Eventos e campos dos webhooks
Os webhooks têm seis eventos (cadastro, pedidos, matrículas, início de checkout, carrinho abandonado e assinatura em atraso), e este artigo mostra quando cada um é enviado e quais campos chegam no corpo da requisição.
Onde escolher os eventos
Em Plataforma > Configuração > Webhooks ou Loja > Configurações > Webhooks, ao criar ou editar um webhook, na parte Seleciona eventos para enviar.
Ao passar o cursor sobre um evento, aparece a explicação e o link Campos disponíveis, que abre a lista de campos daquele evento na própria janela.
Resumo
| Evento na tela | Valor do campo event |
Quando é enviado |
|---|---|---|
| Cadastro de novos usuários | NewMember ou NewMemberGiftPurchase |
Na hora do cadastro |
| Pedidos | SuccessTransaction |
Depois que a compra é aprovada |
| Matrículas | enrollment ou graduated |
Quando a matrícula é criada ou atualizada |
| Iniciate Checkout | init_checkout |
Quando há carrinho com os dados preenchidos |
| Carrinho abandonado | abandoned_cart |
Quando o carrinho passa do tempo definido |
| Assinatura em atraso | OverdueTransaction |
Quando a cobrança da assinatura atrasa |
⚠️ Cadastro de novos usuários só pode ser escolhido em webhook sem loja e sem produto selecionados. Ao escolher uma loja ou um produto, esse evento some da lista.
Formato do envio
- Método: POST.
- Corpo: JSON.
- Cabeçalhos:
Content-Type: application/jsoneAuthorization, com o valor que você configurou.
Todo envio tem o campo event, que diz qual foi o evento. Use esse campo para decidir o que fazer no destino.
Cadastro de novos usuários
Enviado no momento em que a conta é criada.
| Campo | Tipo | O que é |
|---|---|---|
event |
texto | NewMember para cadastro comum, NewMemberGiftPurchase para conta criada por compra feita por outra pessoa |
id |
número | Identificador do usuário |
name |
texto | Nome |
email |
texto | |
phone |
texto | Telefone cadastrado |
document |
texto | Documento |
brand_id |
número | Identificador da plataforma |
ads_opt_in |
verdadeiro ou falso | Se aceitou receber comunicações de marketing |
has_password |
verdadeiro ou falso | Verdadeiro para usuário com senha. Falso para pré-cadastro |
{
"event": "NewMember",
"id": 170292,
"name": "Maria Silva",
"email": "maria@exemplo.com",
"phone": "11912345678",
"document": "12345678900",
"brand_id": 10,
"ads_opt_in": true,
"has_password": true
}
No evento NewMemberGiftPurchase chegam menos campos (nome, e-mail e plataforma), e has_password e ads_opt_in vêm como falso.
Pedidos
Enviado para pedidos aprovados. O envio é feito por um processo que roda a cada poucos segundos, não no instante exato da aprovação.
| Campo | Tipo | O que é |
|---|---|---|
event |
texto | SuccessTransaction |
order_id |
número | Número do pedido |
name |
texto | Nome do comprador |
email |
texto | E-mail do comprador |
phone |
texto | Telefone |
document |
texto | Documento do comprador |
total_amount |
número | Total do pedido |
store_name |
texto | Nome da loja |
course_name |
texto | Nome do produto |
brand_id |
número | Identificador da plataforma |
origin |
texto | Origem do pedido: EVOB |
{
"event": "SuccessTransaction",
"order_id": 98765,
"name": "Maria Silva",
"email": "maria@exemplo.com",
"phone": "11912345678",
"document": "12345678900",
"total_amount": 29700,
"store_name": "Minha Loja",
"course_name": "Colorimetria Avançada",
"brand_id": 10,
"origin": "EVOB"
}
Um pedido aprovado que é atualizado depois pode ser enviado de novo. Use order_id como chave para não duplicar o registro no destino.
Não há evento separado para pedido pendente, recusado ou estornado.
Matrículas
Enviado para matrículas ativas, quando são criadas ou atualizadas. O envio também é feito pelo processo periódico.
| Campo | Tipo | O que é |
|---|---|---|
event |
texto | enrollment (matrícula em andamento) ou graduated (conclusão, quando o progresso chega a 80% ou mais) |
ticket_id |
número | Número da matrícula |
order_id |
número | Número do pedido que gerou a matrícula |
member_id |
número | Número do aluno |
name, email, document, phone |
texto | Dados do aluno |
course_id, course_name |
número e texto | Produto |
store_id, store_name |
número e texto | Loja |
classroom_id |
número | Turma |
offer_id |
número | Oferta adquirida |
progress |
texto | Percentual do conteúdo realizado, como "45%" |
watched_lessons |
lista | Identificadores das aulas assistidas |
certificate |
verdadeiro ou falso | Se o certificado foi emitido |
situation |
texto | Situação do aluno no conteúdo |
created_at, updated_at |
texto | Datas de criação e da última atualização |
brand_id |
número | Identificador da plataforma |
origin |
texto | EVOB |
Como o evento é reenviado a cada atualização da matrícula, o mesmo aluno chega várias vezes, com o progresso mais recente. Use ticket_id como chave para atualizar o registro no destino, em vez de criar um novo.
Iniciate Checkout
Enviado quando existe um carrinho ativo com os dados dos participantes preenchidos.
O corpo tem dois níveis: event e data, e dentro de data a lista cart_items.
| Campo | Tipo | O que é |
|---|---|---|
event |
texto | init_checkout |
data.cart_items |
lista | Itens do carrinho |
cart_items[].id |
número | Identificador do item |
cart_items[].qty |
número | Quantidade |
cart_items[].status |
texto | Situação do item: active, inactive, purchased ou deleted |
cart_items[].offer.id, .name, .price |
número, texto, número | Oferta do item |
cart_items[].classroom.classroom_id, .classroom_name, .course_name |
número, texto, texto | Turma e produto |
{
"event": "init_checkout",
"data": {
"cart_items": [
{
"id": 5521,
"qty": 1,
"status": "active",
"offer": { "id": 301, "name": "Turma de Março", "price": 29700 },
"classroom": {
"classroom_id": 88,
"classroom_name": "Turma de Março",
"course_name": "Colorimetria Avançada"
}
}
]
}
}
⚠️ O mesmo carrinho pode ser enviado mais de uma vez enquanto estiver ativo. Use o identificador do item para ignorar repetições.
Carrinho abandonado
Ao marcar este evento, aparece o campo obrigatório Tempo para o alerta (em minutos). O carrinho é considerado abandonado quando fica ativo por mais tempo que o informado. Com Adicionar novo tempo, você inclui outros tempos.
O corpo segue o mesmo formato do início de checkout, com event igual a abandoned_cart e a lista data.cart_items.
💡 Faça um teste real antes de depender deste evento: crie um carrinho, aguarde o tempo configurado e confira se o envio chegou ao seu sistema.
Assinatura em atraso
Enviado quando a cobrança de uma assinatura fica em atraso, junto com o e-mail de aviso ao aluno.
| Campo | Tipo | O que é |
|---|---|---|
event |
texto | OverdueTransaction |
order_id |
texto | Número do pedido |
name, email |
texto | Dados do assinante |
store_id, store_name |
número e texto | Loja |
course_id, course_name |
número e texto | Produto |
due_date |
texto | Data de vencimento do período, no formato dia/mês/ano |
brand_id |
número | Identificador da plataforma |
Filtro por loja e por produto
- Webhook com produto escolhido: recebe só os eventos daquele produto.
- Webhook com loja escolhida e sem produto: recebe os eventos da loja.
- Webhook sem loja e sem produto: recebe os eventos da plataforma inteira.
O que não tem evento
Estorno, contestação, pedido pendente, comentário em aula, pesquisa respondida, certificado emitido (fora o campo certificate da matrícula) e alteração de cadastro.
Erros comuns
"Recebo a mesma matrícula várias vezes"
É o comportamento do evento Matrículas: ele reenvia quando a matrícula muda. Trate como atualização, usando ticket_id.
"Os valores vêm sem vírgula"
Confira, com um pedido de teste, se o valor chega em centavos ou em reais no seu caso, e ajuste a conversão no destino.
"Não vejo o evento de cadastro na lista"
Ele só aparece em webhook sem loja e sem produto selecionados, criado em Plataforma > Configuração > Webhooks.
"O campo que eu vi na tela Campos disponíveis não chegou"
A lista da tela é a referência do que pode ser enviado. Faça um envio real, veja o que chegou e mapeie só os campos presentes.
Termos que mudaram
- Os eventos "Novo Pedido" e "Atualização de Pedido" agora são um só: Pedidos.