# Webhooks

Webhooks são uma forma de compartilhar informações de uma aplicação para outra, permitindo ampliar e integrar recursos sem a necessidade de uma integração nativa.\
\
Assim, você pode integrar a sua plataforma na Ensinio a outro sistema e automatizar o controle de seus produtos e usuários.&#x20;

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.

#### Criando uma configuração <a href="#id-3-criando-uma-configuracao" id="id-3-criando-uma-configuracao"></a>

1. Para criar uma configuração você precisa acessar o **Admin Console**. Em seguida, siga os seguintes passos:
2. Procure por **App Store** no menu lateral esquerdo e clique em **Webhooks**

<figure><img src="/files/FOtTPErNalncGt1iD02u" alt=""><figcaption></figcaption></figure>

3. Após isso, clique no botão azul de **Criar webhook**

<figure><img src="/files/TbC3IAOJOuhvAcpknMoB" alt=""><figcaption></figcaption></figure>

4. Preencha as informações obrigatórias e clique em **Confirmar** para salvar e criar seu webhook

<figure><img src="/files/Z6atJiRoqpFjjB1CMXQv" alt=""><figcaption></figcaption></figure>

5. Depois que tudo estiver configurado você pode testar clicando no botão de **Enviar teste**&#x20;

<figure><img src="/files/nnIpAwbAQjaDqLgZTjFh" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
Enviaremos informações **fictícias** para cada um dos eventos selecionados.
{% endhint %}

Para acompanhar o status dos eventos disparados, você pode clicar em **Webhooks** e depois em **Histórico**.

<figure><img src="/files/mB4XMbnukLSRdIISLopV" alt=""><figcaption></figcaption></figure>

#### Reenviando um evento <a href="#id-3-reenviando-um-evento" id="id-3-reenviando-um-evento"></a>

Para reenviar um evento, basta clicar nele e na tela que aparecer, clicar no botão de **Reenviar webhook**.&#x20;

<figure><img src="/files/lQuq57rFKarbaHnn85TY" alt=""><figcaption></figcaption></figure>

#### **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.

### Eventos <a href="#id-2-eventos" id="id-2-eventos"></a>

<details>

<summary>Eventos condicionados aos pedidos</summary>

* Pedido aprovado;
* Pedido aguardando pagamento;
* Pedido expirado;
* Pedido recusado;
* Pedido reembolsado;
* Chargeback;
* Checkout iniciado;
* Checkout abandonado.

</details>

<details>

<summary>Eventos condicionados às ações dos usuários</summary>

* Conta criada;
* Senha cadastrada;
* Redefinição de senha solicitada;
* Aula acessada;
* Aula concluída;
* Publicação criada;
* Comentário adicionado a uma publicação;
* Certificado de conclusão emitido;
* Gatilho de gamificação disparado;
* Recompensa resgatada;
* Checkout iniciado;
* Checkout abandonado.

</details>

<details>

<summary>Eventos condicionados aos afiliados</summary>

* Afiliado aprovado;
* Afiliado pendente.

</details>

<details>

<summary>Eventos condicionados aos quizes</summary>

* Quiz respondido.

</details>

<details>

<summary>Eventos condicionados às assinaturas</summary>

* Assinatura criada;
* Assinatura renovada;
* Assinatura cancelada;
* Assinatura em processo de renovação;
* Assinatura pendente;
* Assinatura não paga;
* Solicitação de cancelamento de assinatura.

</details>

#### Exemplo dos eventos no formato JSON

**Novo cadastrado na plataforma**

```
{

"user": {

"id": 75,

"email": "rafael@teste.com",

"phone": "5542981941922",

"password": {
                  "has_password": false,
                  "create_password_link": "http://suaplataforma.ensinio.com/first-access/26384asfs231fs8fg1x3f2b16d8rt4d32f"
  },
"username": "rafaelvieira",

"full_name": "Rafael Vieira",

"last_name": "Vieira",

"created_by": "manual",

"first_name": "Rafael",

"display_name": "RafaelVieira"

},

"event": "new_register"

}

```

**Aula concluída**

```
{
      "user": {
            "id": 95,
            "email": "iasmin@teste.com",
            "phone": "5573948612492",
            "password": {
                  "has_password": false,
                  "create_password_link": "http://suaplataforma.ensinio.com/first-access/26384asfs231fs8fg1x3f2b16d8rt4d32f"
            },
            "username": "iasminbenez",
            "full_name": "Iasmin Benez",
            "last_name": "Benez",
            "created_by": "manual",
            "first_name": "Iasmin",
            "display_name": "IasminBenez"
      },
      "event": "completed_lesson",
      "group": {
            "id": 67,
            "slug": "grupo-de-vendas-pro",
            "title": "Grupo de vendas - Pro"
      },
      "group_topic": {
            "id": 24,
            "slug": "titulo-do-topico",
            "title": "Titulo do tópico"
      },
      "completed_at": "2026-01-16T11:13:55",
      "group_lesson": {
            "id": 13,
            "slug": "titulo-da-aula",
            "title": "Titulo da aula",
            "author": {
                  "id": 78,
                  "email": "maximiano@teste.com",
                  "username": "maximianoleon",
                  "last_name": "Leon",
                  "first_name": "Maximiano",
                  "display_name": "Maximiano Leon"
            }
      },
      "group_completion_rate": 70.53
}
```

**Solicitação de redefinição de senha**

```
{
      "user": {
            "id": 65,
            "email": "natan@teste.com",
            "phone": "5509982912767",
            "password": {
                  "has_password": false,
                  "create_password_link": "http://suaplataforma.ensinio.com/first-access/26384asfs231fs8fg1x3f2b16d8rt4d32f"
            },
            "username": "natanmeireles",
            "full_name": "Natan Meireles",
            "last_name": "Meireles",
            "created_by": "manual",
            "first_name": "Natan",
            "display_name": "NatanMeireles"
      },
      "event": "reset_password_requested",
      "url_reset_password": "http://suaplataforma.ensinio.com/reset/5yr1Sa2yVaah36fsfg3ruvDrE63mCY7IdDcj2bquXWIQUKyau1fr"


```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ajuda.ensinio.com/vendas/webhooks.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
