Assim, você pode integrar a sua plataforma na Ensinio a outro sistema e automatizar o controle de seus produtos e usuários. As informações são condicionadas a eventos, e são enviadas quando um determinado evento acontece, seja um novo cadastro, compra aprovada ou até mesmo o pagamento recorrente bem-sucedido. O melhor é que você pode escolher quais eventos deseja receber.
Assista ao vídeo:
Como integrar sua plataforma com webhooks?
Antes de explicar como você intrega aplicações via webhooks é importante que você sabia o quanto essa ferramenta é poderosa. Sabe aquela lista de leads que todo dia se cadastram na sua plataforma e que você precisa copiar manualmente um por um e adicionar no seu CRM? Com a integração utilizando Webhooks você pode automatizar esses e vários outros processos, como emitir uma nota fiscal, adicionar um usuário na base da de dados e disparar um e-mail utilizando Integromat, Pluga, Zapier ou outra plataforma da sua preferência. As possibilidades são inúmeras e você só precisa criar a configuração uma única vez. Maravilhoso, né?
Não precisa se preocupar, integrar via Webhooks é bem simples, você precisa ter um link para onde as informações serão enviadas quando um evento selecionado ocorrer e criar uma configuração escolhendo quais eventos você deseja ser notificado. Você precisa realizar esses dois passos:
1 - Criar uma entidade externa (endpoint/link) para receber as informações;
2 - Criar uma configuração, escolhendo os eventos, produtos e informando a URL.
Criando uma configuração
Para criar uma configuração você precisa acessar sua conta no painel administrativo com as informações de login e senha. Em seguida, siga os seguintes passos:
- Acesse a seção de Ferramentas no menu lateral à esquerda;
- Clique em Webhook -> Webhooks;
- Preencha as informações:
- Nome da configuração;
- Informe a URL que irá receber receber as informações;
- Defina se o evento está condicionado ao usuário ou a um pedido;
- Para pedidos, matrículas ou assinaturas, você pode selecionar receber os eventos de um item específico ou de todos os grupos de produtos.
- Selecione os eventos;
- Defina se a configuração está ativa;
- Clique em salvar.
Depois que tudo estiver configurado você pode testar, enviaremos informações fictícias para cada um dos eventos selecionados, e verificar se tudo ocorreu como esperado. Em Ferramentas -> Webhook -> Históricos Webhooks você pode acompanhar o status dos eventos disparados. Se tudo ocorreu como esperado o status estará “200 - Ok”, qualquer outro status iniciado com um número diferente de 2 significa que ocorreu um erro no processo, as informações não foram recebidas. Não se preocupe! Você pode reenviar o evento quantas vezes forem necessárias.
Reenviando um evento
Para reenviar um evento você precisa acessar sua conta no painel administrativo com as informações de login e senha. Em seguida, siga os seguintes passos:
- Acesse a seção de Ferramentas no menu lateral à esquerda;
- Clique em Webhook -> Históricos dos webhooks;
- Selecione qual(is) evento(s) que deseja reenviar;
- Selecione a ação Reenviar dados que aparecerá na acima das colunas;
- Clique no ícone de play.
Se tudo ocorreu como esperado o status estará “200 - Ok”, qualquer outro status iniciado com um número diferente de 2 significa que ocorreu um erro no processo e você pode reenviar o(s) evento(s). Lembrando que o erro está relacionado a entidade externa. Em casos de erro, indicamos verificar se está tudo certo com a entidade externa que irá receber os dados e depois reenviar o evento.
Resposta da requisição HTTP
O envio de informações usando webhooks usa o protocolo de comunicação para sistemas HTTP, após o envio dos dados você pode checar se tudo ocorreu como esperado verificando o status da requisição. Os códigos de status são agrupados em cinco grupos:
- 100 - 199 : São informativos;
- 200 - 299: Respostas de sucesso;
- 300 - 399: Redirecionamento;
- 400 - 499: Erro do cliente;
- 500 - 599: Erro de servidor.
Aqui estão alguns dos principais erros que podem acontecer:
Erro 403 - Forbidden (Proibido)
Erro 403 significa que a solicitação foi recebida, mas o recebedor se recusou a atendê-la, assim negando-a. Esse erro pode ocorrer caso não tenha permissão para realizar a solicitação ou a chave de verificação (token) não estiver correta.
Erro 404 - Not Found (Não encontrado)
Erro 404 significa que a URL configurada para receber os dados não existe.
Erro 500 - Internal Server Error (Erro do Servidor Interno)
Erro 500 significa que a solicitação não foi compreendida. Os motivos podem ser vários, este erro acontece quando não é possível especificar o erro real que ocorre durante a solicitação, o mais comum é rota não encontrada.
Erro 503 - Service unavailable (Serviço indisponível)
Erro 503 significa que a solicitação não foi atendida pelo recebedor (entidade externa que recebe as informações), podendo estar indisponível por recursos insuficientes ou simplesmente um problema com o servidor.
Pronto, agora que você já tem tudo configurado, entendeu como acompanhar os eventos enviados e os possíveis status, agora é só se concentrar com as vendas!
Eventos
Novo cadastrado na plataforma
Você receberá dados sobre os novos usuários que se cadastraram na sua plataforma..
Parâmetro |
Descrição |
token |
Sua plataforma na Ensinio possui um token de segurança. Todas as informações enviadas via webhooks contém no cabeçalho da requisição HTTP o token para estabelecer maior nível de segurança. Você pode utilizar esse token para validar se a requisição foi feita da sua plataforma na Ensinio, evitando fraudes. |
event |
Evento disparado, que neste caso é new_register. |
user |
Dados do novo usuário. |
user.id |
Identificador único do usuário. |
user.email |
E-mail do usuário. |
user.phone |
Telefone do usuário. |
user.username |
Identificação do usuário na plataforma. |
user.full_name |
Nome completo do usuário. |
user.first_name |
Primeiro nome do usuário. |
user.last_name |
Sobrenome do usuário. |
user.display_name |
Nome do usuário exibido na plataforma. |
Nova seção no checkout
Você receberá dados relacionados às novas seções no checkout sempre que um possível comprador acessar a página de pagamento, contendo informações sobre o possível cliente e do produto. Este evento é disparado sempre que um possível comprador entra na página de pagamento, incluindo aqueles que finalizaram a compra.
Parâmetro |
Descrição |
token |
Sua plataforma na Ensinio possui um token de segurança. Todas as informações enviadas via webhooks contém no cabeçalho da requisição HTTP o token para estabelecer maior nível de segurança. Você pode utilizar esse token para validar se a requisição foi feita da sua plataforma na Ensinio, evitando fraudes. |
event |
Evento disparado, que neste caso é begin_checkout. |
user |
Dados do possível comprador |
user.id |
Identificador único do possível comprador. |
user.email |
E-mail do possível comprador. |
user.phone |
Telefone do possível comprador. |
user.username |
Identificação do possível comprador na plataforma. |
user.full_name |
Nome completo do possível comprador. |
user.first_name |
Primeiro nome do possível comprador. |
user.last_name |
Sobrenome do possível comprador. |
user.display_name |
Nome do possível comprador exibido na plataforma. |
product |
Dados do produto que o possível comprador possui interesse. |
product.id |
Identificador único do produto. |
product.slug |
Parte da URL do produto. |
product.price |
Preço do produto. |
product.title |
Título do produto. |
product.className |
Tipo do produto, podendo ser: course (curso), media_space(conteúdo do media space), bundle (pacote) ou um plan (plano) |
product.authors |
Dados dos autores do produto. |
product.authors.id |
Identificador único do autor. |
product.authors.email |
E-mail do autor. |
product.authors.photo |
URL da foto do autor. |
product.authors.username |
Identificação do autor na plataforma. |
product.authors.full_name |
Nome completo do autor. |
product.authors.first_name |
Primeiro nome do autor. |
product.authors.last_name |
Sobrenome do autor. |
product.authors.display_name |
Nome do autor exibido na plataforma. |
Pedidos
Você receberá dados relacionados às suas vendas, contendo informações sobre cliente, produto e pagamento. Sempre que houver alguma alteração com o status do pedido e o evento estiver selecionado, você será notificado.
Parâmetro |
Descrição |
token |
Sua plataforma na Ensinio possui um token de segurança. Todas as informações enviadas via webhooks contém no cabeçalho da requisição HTTP o token para estabelecer maior nível de segurança. Você pode utilizar esse token para validar se a requisição foi feita da sua plataforma na Ensinio, evitando fraudes. |
event |
Evento disparado, que podem ser: expired (expirado), refused (recusado), approved (aprovado), refunded (reembolsado), chargeback ou waiting_payment (aguardando pagamento). |
order |
Dados do pedido. |
order.uuid |
Identificador único do pedido. |
order.order_status |
Status do pedido, que podem ser: aproved (aprovado), pending (pendente) ou canceled (cancelado). |
order.coupon_code |
Código do cupom utilizado na compra. |
order.coupon_discount |
Valor do desconto aplicado no pedido. |
order.paid_amount |
Valor total do pedido, incluindo todas as transações pagas. |
product |
Dados do produto. |
product.slug |
Parte da URL do produto adquirido. |
product.price |
Preço do produto adquirido. |
product.title |
Título do produto adquirido. |
product.className |
Tipo do produto, podendo ser: course (curso), media_space(conteúdo do media space), bundle (pacote) ou um plan (plano). |
product.authors |
Dados dos autores do produto adquirido. |
product.authors.id |
Identificador único do autor. |
product.authors.email |
E-mail do autor. |
product.authors.photo |
URL da foto do autor. |
product.authors.username |
Identificação do autor na plataforma. |
product.authors.full_name |
Nome completo do autor. |
product.authors.first_name |
Primeiro nome do autor. |
product.authors.last_name |
Sobrenome do autor. |
product.authors.display_name |
Nome do autor exibido na plataforma. |
customer |
Dados do comprador. |
customer.name |
Nome do comprador. |
customer.email |
E-mail do comprador. |
customer.phone |
Telefone do comprador. |
customer.document |
Documento do comprador. |
customer.full_name |
Nome completo do comprador. |
customer.first_name |
Nome do comprador. |
customer.last_name |
Sobrenome do comprador. |
transaction |
Dados da transação. |
transaction.id |
Identificador único do pedido. |
transaction.date |
Data em que a transação foi efetuada. |
transaction.paid_amount |
Valor total da transação, incluindo taxas e juros. |
transaction.payment_method |
Método de pagamento utilizado pelo comprador. Os valores podem ser: credit_card (cartão de crédito) ou billet (boleto bancário). |
transaction.address |
Endereço completo do comprador |
transaction.installment |
Número de parcelas escolhidas pelo comprador. Para compras cujo método de pagamento é credit_card (cartão de crédito), as parcelas podem variar de 1 a 12. Quando o método de pagamento é billet (boleto bancário) a informação será NULL. |
transaction.card |
Dados do cartão de crédito. Estas informações só serão enviadas quando o método de pagamento for cartão de crédito. |
transaction.card.card_brand |
Bandeira do cartão de crédito utilizado pelo comprador. |
transaction.card.card_holder_name |
Nome do titular do cartão impresso no cartão. |
transaction.card.card_first_digits |
Primeiros dígitos do cartão de crédito. |
transaction.card.card_last_digits |
Últimos dígitos do cartão de crédito. |
transaction.billet |
Dados do boleto bancário. Estas informações só serão enviadas quando o método de pagamento for boleto bancário. |
transaction.billet.barcode |
Código de barras do boleto. |
transaction.billet.billet_link |
Link do boleto. |
transaction.billet.expire_date |
Data de expiração do boleto. |
transaction.transaction_status |
Status da transação, que podem ser: paid (pago), waiting_payment (aguardando pagamento), refunded (reembolsado), refused (recusado), refunded (reembolsado) ou chargeback (contestação ou reversão do pagamento). |
invoice_data |
Dados para emissão da nota fiscal. |
invoice_data.date |
Data do processamento. |
invoice_data.email |
E-mail do comprador. |
invoice_data.phone |
Telefone do comprador. |
invoice_data.document |
Documento do comprador. |
invoice_data.full_name |
Nome completo do comprador. |
invoice_data.full_address |
Endereço completo do comprador |
invoice_data.product |
Nome do produto adquirido. |
invoice_data.amount |
Valor da transação. |
invoice_data.address |
Dados do endereço do comprador |
invoice_data.address.city |
Cidade do comprador. |
invoice_data.address.state |
Estado do comprador. |
invoice_data.address.street |
Rua do comprador. |
invoice_data.address.country |
Pais do comprador. |
invoice_data.address.zipcode |
CEP do comprador. |
invoice_data.address.neighborhood |
Bairro do comprador. |
invoice_data.address.complementary |
Complemento do endereço do comprador. |
invoice_data.address.street_number |
Número da residência do comprador. |
invoice_data.address.uf_ibge |
Número do estado do comprador pelo IBGE. |
invoice_data.address.city_ibge |
Número da cidade do comprador pelo IBGE. |
Exemplo dos eventos no formato JSON
Novo cadastrado na plataforma
{
"user": {
"id": 75,
"email": "rafael@teste.com",
"phone": "+(42) 98194-1922",
"username": "rafaelvieira",
"full_name": "Rafael Vieira",
"last_name": "Vieira",
"first_name": "Rafael",
"display_name": "RafaelVieira"
},
"event": "new_register"
}
Nova seção no checkout
{
"user": {
"id": 26,
"email": "josefina@teste.com",
"phone": "+(86) 2327-1205",
"username": "josefinade oliveira",
"full_name": "Josefina de Oliveira",
"last_name": "de Oliveira",
"first_name": "Josefina",
"display_name": "Josefinade Oliveira"
},
"event": "begin_checkout",
"product": {
"slug": "do-zero-ao-avancado",
"price": 8643.3,
"title": "Do zero ao Avançado",
"authors": [
{
"id": 30,
"email": "luisguibelem@teste.com",
"photo": "",
"username": "luis_guibelem",
"full_name": "Luis Guilherme",
"last_name": "Guilherme",
"first_name": "Luis",
"display_name": "Luis Guilherme"
}
],
"className": "Pacote"
}
}
Pedidos
{
"event": "approved",
"order": {
"uuid": 5170247,
"coupon_code": "xcsta",
"paid_amount": 5194.91,
"order_status": null,
"coupon_discount": 3255
},
"product": {
"slug": "construindo-produtos-digitais",
"price": 8449.91,
"title": "Construindo produtos digitais",
"authors": [
{
"id": 30,
"email": "luisguibelem@teste.com",
"photo": "",
"username": "luis_guibelem",
"full_name": "Luis Guilherme",
"last_name": "Guilherme",
"first_name": "Luis",
"display_name": "Luis Guilherme"
}
],
"className": "Curso"
},
"customer": {
"name": "Santiago Gomes",
"email": "santiago@teste.com",
"phone": "(62) 2794-0479",
"document": "40304533122",
"full_name": "santiago gomes",
"last_name": "Gomes",
"first_name": "Santiago"
},
"transaction": {
"id": 97,
"card": {
"card_brand": "elo",
"card_holder_name": "Elizabeth Santos",
"card_last_digits": 2834,
"card_first_digits": 5739
},
"date": "2022-07-28",
"address": "Rua Alfredo Cruz, 95, Centro, Boa Vista, RR - br. 69301-140",
"paid_amount": 5194.91,
"installments": 2,
"payment_method": "credit_card",
"transaction_status": "paid"
},
"invoice_data": {
"date": "2022-07-28",
"email": "santiago@teste.com",
"phone": "6292794-0479",
"amount": 5194.91,
"address": {
"city": "Boa Vista",
"state": "RR",
"street": "Rua Alfredo Cruz",
"country": "Brasil",
"uf_ibge": "14",
"zipcode": "69301-140",
"city_ibge": "1400100",
"neighborhood": "Centro",
"complementary": "casa",
"street_number": "95"
},
"product": "Construindo produtos digitais",
"document": "40304533122",
"full_name": "Santiago Gomes",
"full_address": "Rua Alfredo Cruz, 95, Centro, Boa Vista, RR - br. 69301-140"
}
}