# GoHighLevel

> Veja como conectar a sua plataforma com a GoHighLevel.

Com esta integração, cada pagamento aprovado na GoHighLevel libera o acesso do aluno aos cursos da entrega, e cada reembolso remove o acesso. A conexão é feita por um *workflow* da GoHighLevel, com uma ação de webhook para cada caso.

## 1. Crie a entrega na sua plataforma

1. No painel, abra **Vendas › Entregas** e clique em **Nova Entrega**.
2. Na tela **Selecione um Gateway**, escolha **GoHighLevel**.
3. Dê um nome à entrega e escolha a **Modalidade de Venda**: **Venda única** ou **Assinatura**.
4. No campo **ID do Produto**, cole o **Internal Product Id** da GoHighLevel. Para achar: em **Payments › Products**, abra o produto e procure a seção **Additional Information**. Se quiser liberar por oferta (preço), abra o produto, clique no nome do preço na seção **Prices** e copie o **Internal Product Id** dele, na mesma seção **Additional Information**. Se mais de um ID deve liberar a mesma coisa, coloque um por linha.
5. Em **Conteúdo entregue**, marque os cursos que a venda libera e defina o **Tempo de acesso** e a **Liberação** de cada um. Se quiser, marque também as **Tags** que o aluno ganha.
6. Clique em **Salvar**.
7. No bloco **Conexão com o gateway**, copie a **URL de Postback**. Ela aparece depois de salvar e termina com o token desta entrega: copie o endereço inteiro.

## 2. Configure o webhook na GoHighLevel

### Crie o workflow

1. No menu lateral, clique em **Automation**.
2. Clique em **Create Workflow** e escolha **Start from Scratch**.
3. Dê um nome ao workflow.

### Adicione os gatilhos

1. Clique em **Add New Trigger**, escolha **Payment Received** e adicione o filtro **Payment Status is Success**. Salve.
2. Clique em **Add New Trigger** de novo, escolha **Refund** e adicione o filtro **Status is Success**. Salve.

### Separe os dois caminhos

1. Clique no **+** abaixo dos gatilhos e adicione a ação **Condition**.
2. Configure a condição pelo campo **Workflow Trigger**, criando os caminhos **Approved** (quando o gatilho for *Payment Received*) e **Canceled** (quando for *Refund*).

### Ação do caminho Approved

1. No caminho **Approved**, clique no **+** e escolha a ação **Webhook**.
2. Preencha:

```
Action Name: Approved
Method: POST
URL: (cole a URL de Postback da entrega)
```

3. Clique em **Save Action**.

### Ação do caminho Canceled

1. No caminho **Canceled**, clique no **+** e escolha a ação **Custom Webhook**.
2. Preencha **Action Name** = *Canceled*, **Event** = *CUSTOM*, **Method** = *POST*, **URL** = a URL de Postback da entrega e **Authorization** = *None*.
3. Em **Content-Type**, coloque `application/json`.
4. Em **Raw Body**, escolha **Custom Values** e cole o texto abaixo, trocando `SEU_ID_DO_PRODUTO` pelo mesmo ID cadastrado na entrega:

```json
{
  "payment_status": "canceled",
  "transaction_id": "{{refund.transaction.id}}",
  "product_id": "SEU_ID_DO_PRODUTO",
  "user_email": "{{contact.email}}",
  "user_name": "{{contact.name}}"
}
```

5. Clique em **Save Action**.

:::aviso Publique o workflow
Clique em **Publish** ao terminar. Em modo rascunho o workflow não envia nada.
:::

:::aviso O campo product_id é necessário
Sem o `product_id`, a plataforma não sabe a qual entrega o cancelamento pertence e a venda fica **Com erro**.
:::

## 3. Teste

1. Faça um pagamento real de teste do produto e confira se a venda chegou como **Processada**.
2. Depois, faça o reembolso desse pagamento. O cancelamento só remove o acesso se chegar com o **mesmo código de venda** da aprovação. Abra a venda em **Ver detalhes** e confira no **Histórico** se os dois avisos estão na mesma venda. Se o reembolso aparecer como uma venda separada, remova o acesso manualmente no perfil do aluno (aba **Compras**) e ajuste o campo `transaction_id` do workflow.
3. No painel, abra **Vendas › Vendas** e confira se o envio chegou.
4. Se estiver como **Processada**, o acesso foi liberado. Se estiver **Com erro**, clique em **Ver detalhes** e leia o **Motivo do erro**. Corrija a causa (por exemplo, cadastrando na entrega o ID que veio no envio) e clique em **Reprocessar**.

Para a compra de teste, use um e-mail que não seja de um administrador da plataforma: vendas com e-mail de administrador não são processadas.

:::info Integração por leitura automática
A GoHighLevel não tem integração dedicada: a plataforma lê o aviso enviado e reconhece sozinha os campos comuns, como e-mail, nome e CPF do cliente, código da venda, IDs de produto ou oferta e o status. Como cada gateway tem seus detalhes, valide com uma venda real antes de abrir as vendas. Se algum dado não for reconhecido, a venda aparece em **Vendas › Vendas** como **Com erro**, com o motivo, e os dados brutos ficam em **Ver detalhes**.
:::
