# Make e n8n

> Use o Make (módulo HTTP) e o n8n (nó HTTP Request e Webhook) para chamar a API do GS Engage e receber avisos de vendas ganhas — sem escrever código.

- URL canônica: https://docs.growthstation.app/docs/api/no-code/make-e-n8n
- Idioma: pt-BR
- Última atualização: 2026-09-20T08:21:20.450Z
- Produto: GS Engage
- Mantido por: Produto GS Engage



<PageHero emoji="🧩" title="Make e n8n" description="Nem só de Zapier vive a automação. O Make e o n8n também conversam com a API do GS Engage — e reagem quando uma venda é Ganha." gradient="violet" />

O [Zapier](/docs/api/no-code/zapier) é o caminho mais rápido para começar, mas ele não é a única opção. Se o seu time já usa **Make** (antigo Integromat) ou **n8n**, ótimo: os dois conseguem tanto **chamar a API** do GS Engage quanto **receber avisos** dela — sem que ninguém precise programar.

Nesta página você vai montar um cenário completo: quando uma prospecção é marcada como <TextHighlight>Ganha</TextHighlight>, o GS Engage avisa o Make ou o n8n, que então cria uma linha numa planilha e manda uma mensagem no Slack para o time comemorar.

<Callout type="tip" title="Não sabe o que é um webhook?">
  Um <TextHighlight>webhook</TextHighlight> é um aviso automático: em vez de você ficar perguntando "já teve venda?", o GS Engage bate na porta do seu Make/n8n no exato momento em que a venda acontece. É a base do cenário desta página.
</Callout>

🧭 Quando escolher cada ferramenta [#-quando-escolher-cada-ferramenta]

As três ferramentas fazem o mesmo trabalho de base — apontar e clicar para integrar. A diferença está no bolso, na hospedagem e em quem cuida do servidor.

| O que importa                 | Zapier         | Make                           | n8n                                  |
| ----------------------------- | -------------- | ------------------------------ | ------------------------------------ |
| Curva de aprendizado          | Mais simples   | Média (visual, por blocos)     | Média a técnica                      |
| Onde roda                     | Nuvem (deles)  | Nuvem (deles)                  | Nuvem **ou** no seu próprio servidor |
| Gatilhos prontos do GS Engage | Sim (nativos)  | Não — usa módulo HTTP genérico | Não — usa nó HTTP genérico           |
| Chamar a API (enviar dados)   | App nativo     | Módulo **HTTP**                | Nó **HTTP Request**                  |
| Receber webhook               | Trigger nativo | **Custom webhook**             | Nó **Webhook**                       |
| Custo típico                  | Por tarefa     | Por operação                   | Grátis se você hospedar              |

<Callout type="info" title="Regra prática">
  Quer o mais fácil e com gatilhos prontos? Use o [Zapier](/docs/api/no-code/zapier). Quer controle visual e bom custo por operação? **Make**. Precisa hospedar você mesmo, por privacidade ou custo? **n8n**.
</Callout>

🔑 A chave da API é uma senha [#-a-chave-da-api-é-uma-senha]

Antes de qualquer coisa, você vai precisar da sua <TextHighlight>apiKey</TextHighlight> — a chave (de cerca de 40 caracteres) criada na plataforma em <TextHighlight>Configurações</TextHighlight> > <TextHighlight>Configurações de API</TextHighlight>.

No GS Engage, a chave viaja **na URL**, como um parâmetro `?apiKey=SUA_CHAVE` (não é um cabeçalho). Isso é prático, mas tem uma consequência: a chave aparece em logs de servidor, no histórico do navegador e em qualquer link compartilhado.

<Callout type="danger" title="Trate a apiKey como a senha do cofre">
  Nunca cole a chave direto num módulo à mostra nem em canais públicos (Slack aberto, e-mail, prints). Guarde-a numa **variável de ambiente** da ferramenta e referencie por ali. Se vazar, gere uma nova em Configurações de API e aposente a antiga.
</Callout>

<Tabs items={['No Make', 'No n8n']}>
  <Tab value="No Make">
    O Make guarda segredos em **Data stores** ou nas **variáveis do cenário/organização**. Salve a `apiKey` lá uma única vez e, nos módulos HTTP, referencie a variável em vez de digitar a chave. Assim ela não fica escrita na configuração visível do módulo.
  </Tab>

  <Tab value="No n8n">
    No n8n, crie um **Credential** do tipo genérico (ou use as **variáveis de ambiente** da sua instância) para armazenar a `apiKey`. Nos nós HTTP Request, referencie a expressão da credencial/variável. Se você hospeda o n8n, mantenha o `.env` fora de qualquer repositório.
  </Tab>
</Tabs>

✅ Teste se a chave funciona [#-teste-se-a-chave-funciona]

Antes de montar automações que criam ou alteram dados, confirme que a chave responde. Use uma operação leve e **somente leitura**: listar os campos personalizados.

O <TextHighlight>endpoint</TextHighlight> (o endereço de uma operação da API) é o `GET /api/v1/custom-fields`. Chame esta URL:

```bash
curl "https://api.gsengage.com/api/v1/custom-fields?apiKey=SUA_CHAVE"
```

Uma resposta **200** com uma lista confirma que a chave está válida. A lista pode vir vazia (`[]`) se o projeto ainda não tem campos personalizados — e está tudo certo assim.

<Callout type="warning" title="Toda chamada é real">
  Não existe ambiente de teste (sandbox) no GS Engage. Toda chamada afeta dados de produção — os mesmos que o time comercial usa. Ao experimentar, prefira leituras (`GET`) e avise o time antes de qualquer criação ou alteração.
</Callout>

🔗 Chamar a API a partir do Make ou do n8n [#-chamar-a-api-a-partir-do-make-ou-do-n8n]

Nenhuma das duas ferramentas tem um "app do GS Engage" pronto. Em vez disso, você usa o bloco genérico de requisição HTTP — o mesmo que serve para qualquer API REST.

<Steps>
  <Step num={1} title="Adicione o bloco de requisição">
    No **Make**, adicione o módulo <TextHighlight>HTTP</TextHighlight> ("Make a request"). No **n8n**, adicione o nó <TextHighlight>HTTP Request</TextHighlight>.
  </Step>

  <Step num={2} title="Escolha o método e a URL">
    Informe o método (`GET` para ler, `POST` para criar) e a URL completa. Todos os caminhos ficam sob `https://api.gsengage.com/api/v1`. Lembre de anexar `?apiKey=` referenciando a variável onde você guardou a chave — nunca a chave digitada à mão.
  </Step>

  <Step num={3} title="Monte o corpo (quando for criar)">
    Para operações de escrita (`POST`/`PATCH`), envie um corpo em <TextHighlight>JSON</TextHighlight> e defina o cabeçalho `Content-Type: application/json`.
  </Step>

  <Step num={4} title="Use a resposta nos próximos passos">
    O que a API devolver (por exemplo, o `id` do lead recém-criado) fica disponível para os módulos seguintes — mapeie esses campos onde precisar.
  </Step>
</Steps>

Um exemplo de escrita: criar um lead. Um lead criado via API entra marcado como <TextHighlight>Levantada de Mão</TextHighlight> e aparece no topo da fila de atividades do vendedor. É obrigatório pelo menos um contato — os contatos vão nos arrays `emails`, `phones` e `mobiles`.

```json
{
  "name": "Maria Souza",
  "emails": [
    { "value": "maria@empresa.com", "label": "Trabalho" }
  ]
}
```

Depois de enviar esse corpo para `POST https://api.gsengage.com/api/v1/leads?apiKey=SUA_CHAVE`, a API responde com o lead criado — e o vendedor já vê a Levantada de Mão no topo da fila.

<Callout type="tip" title="Respeite o limite de chamadas">
  A API tem <TextHighlight>rate limit</TextHighlight> (teto de chamadas por tempo): janela de 60 segundos, 200 leituras/min e 100 escritas/min. Se estourar, você recebe um HTTP **429** com o cabeçalho `Retry-After` (em segundos). Configure o módulo para esperar esse tempo antes de tentar de novo.
</Callout>

🏆 Cenário completo: venda Ganha vira planilha + Slack [#-cenário-completo-venda-ganha-vira-planilha--slack]

Agora o principal: fazer o GS Engage avisar você. O objetivo de negócio é simples — toda vez que uma prospecção for marcada como <TextHighlight>Ganha</TextHighlight>, o time quer ver isso registrado numa planilha e comemorar no Slack. Sem ninguém copiar e colar.

O evento que dispara tudo é o `prospection.won`.

<Mermaid
  chart={`graph LR
A["Prospecção marcada como Ganha"] --> B["GS Engage envia webhook prospection.won"]
B --> C["Make / n8n recebe o aviso"]
C --> D["Cria linha na planilha"]
C --> E["Manda mensagem no Slack"]`}
/>

Passo 1 — Crie a URL que vai receber os avisos [#passo-1--crie-a-url-que-vai-receber-os-avisos]

Primeiro você precisa de um endereço para o GS Engage chamar. Cada ferramenta gera esse endereço para você.

<Tabs items={['Make (custom webhook)', 'n8n (Webhook node)']}>
  <Tab value="Make (custom webhook)">
    1. Crie um novo cenário e adicione, como primeiro módulo, o **Webhooks > Custom webhook**.
    2. Clique em <TextHighlight>Add</TextHighlight> para gerar a URL e copie o endereço que aparece.
    3. Deixe o Make em modo de escuta ("Determine data structure") enquanto faz o próximo passo — assim ele aprende o formato do aviso na primeira entrega.
  </Tab>

  <Tab value="n8n (Webhook node)">
    1. Crie um workflow novo e adicione o nó **Webhook** como gatilho.
    2. Copie a **Production URL** (ou a **Test URL** enquanto estiver montando).
    3. Defina o método do nó como `POST`, que é como o GS Engage entrega os avisos.
  </Tab>
</Tabs>

Passo 2 — Registre o webhook no GS Engage [#passo-2--registre-o-webhook-no-gs-engage]

Com a URL em mãos, diga ao GS Engage para avisar esse endereço quando houver uma venda ganha. Isso é uma chamada de escrita para o `POST /api/v1/webhooks`, com o nome, a sua URL e a lista de eventos que você quer ouvir.

```json
{
  "name": "Venda Ganha -> planilha e Slack",
  "url": "https://SUA_URL_DO_MAKE_OU_N8N",
  "events": ["prospection.won"]
}
```

Envie esse corpo para `POST https://api.gsengage.com/api/v1/webhooks?apiKey=SUA_CHAVE`. Você pode fazer isso pelo próprio módulo HTTP do Make/n8n, ou por um `curl` avulso.

<Callout type="danger" title="O secret aparece uma única vez">
  A resposta da criação traz um campo `secret`. Ele é retornado **UMA ÚNICA VEZ** — não dá para consultá-lo depois. Copie e guarde na hora, junto com a `apiKey`, numa variável segura. Você vai precisar dele para confirmar que os avisos são mesmo do GS Engage.
</Callout>

Passo 3 — Confira que o aviso está chegando [#passo-3--confira-que-o-aviso-está-chegando]

Marque uma prospecção de teste como Ganha (ou aguarde a próxima venda real) e veja o aviso chegar. Cada entrega é um `POST` para a sua URL com este envelope:

```json
{
  "id": "...",
  "test": false,
  "event": "prospection.won",
  "data": { "...": "dados da prospecção" },
  "retries": 0,
  "manualRetries": 0,
  "createdAt": "..."
}
```

O campo `event` diz qual foi o gatilho (`prospection.won`) e o `data` traz os detalhes da prospecção. É desse envelope que você vai puxar as informações para a planilha e para o Slack.

Passo 4 — Confirme que o aviso é autêntico [#passo-4--confirme-que-o-aviso-é-autêntico]

Como a sua URL fica exposta na internet, qualquer um poderia tentar mandar um `POST` fingindo ser o GS Engage. Para evitar isso, cada entrega vem **assinada** com <TextHighlight>HMAC SHA-256</TextHighlight> — uma assinatura calculada a partir do corpo do aviso e do seu `secret`, enviada num cabeçalho.

A ideia: você recalcula a assinatura do lado de cá, usando o mesmo `secret`, e compara com a que veio no cabeçalho. Se baterem, o aviso é legítimo. Se não, descarte.

<Tabs items={['Make', 'n8n']}>
  <Tab value="Make">
    O Make não recalcula HMAC sozinho num clique. O caminho robusto é adicionar um módulo de **ferramentas** (como o módulo de funções/`sha256` HMAC) logo após o webhook: recalcule a assinatura sobre o corpo bruto com o `secret` guardado e siga o cenário só quando ela casar com o cabeçalho recebido.
  </Tab>

  <Tab value="n8n">
    No n8n, use um nó **Code** entre o Webhook e o resto do fluxo. Nele, calcule o HMAC SHA-256 do corpo bruto com o `secret` (via módulo `crypto`) e compare com o cabeçalho da assinatura. Encaminhe adiante apenas quando forem iguais.
  </Tab>
</Tabs>

<Callout type="warning" title="A assinatura é SHA-256, não SHA-1">
  A assinatura migrou de SHA-1 para SHA-256. Se você copiou algum exemplo antigo, atualize o algoritmo — do contrário a comparação nunca vai bater.
</Callout>

Passo 5 — Registre na planilha e avise no Slack [#passo-5--registre-na-planilha-e-avise-no-slack]

Confirmado que o aviso é real, é só ligar os módulos de saída, puxando os campos de dentro de `data`:

<Tabs items={['Make', 'n8n']}>
  <Tab value="Make">
    Depois do webhook (e da checagem da assinatura), adicione o módulo **Google Sheets > Add a Row** para gravar a venda e o módulo **Slack > Create a Message** para postar no canal do time. Mapeie os campos do `data` do envelope em cada um.
  </Tab>

  <Tab value="n8n">
    Depois do Webhook (e do nó Code que valida), adicione o nó **Google Sheets** (operação *Append Row*) e o nó **Slack** (operação *Send Message*). Use expressões para inserir os campos do `data` nas colunas e no texto da mensagem.
  </Tab>
</Tabs>

Pronto: a partir daqui, toda venda Ganha registra sozinha uma linha na planilha e cai no Slack do time — sem trabalho manual.

📋 Antes de ligar em produção [#-antes-de-ligar-em-produção]

<Checklist id="make-n8n-checklist" title="Confira antes de publicar o cenário">
  <ChecklistItem>
    A 

    `apiKey`

     está numa variável/credencial segura, nunca digitada à mostra no módulo?
  </ChecklistItem>

  <ChecklistItem>
    Testei a chave com o 

    `GET /api/v1/custom-fields`

     e recebi 

    <TextHighlight>200</TextHighlight>

    ?
  </ChecklistItem>

  <ChecklistItem>
    Copiei e guardei o 

    `secret`

     do webhook (que aparece uma única vez)?
  </ChecklistItem>

  <ChecklistItem>
    Estou validando a assinatura 

    <TextHighlight>HMAC SHA-256</TextHighlight>

     antes de agir sobre o aviso?
  </ChecklistItem>

  <ChecklistItem>
    Configurei espera pelo 

    `Retry-After`

     para o caso de HTTP 

    <TextHighlight>429</TextHighlight>

    ?
  </ChecklistItem>

  <ChecklistItem>
    Avisei o time de que o cenário mexe em dados reais de produção?
  </ChecklistItem>
</Checklist>

<DoDont>
  <DoDontItem type="do">
    Guardar 

    `apiKey`

     e 

    `secret`

     em variáveis de ambiente da ferramenta.
  </DoDontItem>

  <DoDontItem type="dont">
    Não colar a chave direto no módulo nem em canais públicos.
  </DoDontItem>

  <DoDontItem type="do">
    Validar o HMAC SHA-256 de cada webhook antes de gravar planilha ou postar no Slack.
  </DoDontItem>

  <DoDontItem type="dont">
    Não confiar num 

    `POST`

     só porque chegou na sua URL — qualquer um pode tentar.
  </DoDontItem>

  <DoDontItem type="do">
    Priorizar operações de leitura ao testar, já que tudo é produção.
  </DoDontItem>

  <DoDontItem type="dont">
    Não sair criando leads e prospecções para "ver se funciona" sem avisar o time.
  </DoDontItem>
</DoDont>

❓ Perguntas frequentes [#-perguntas-frequentes]

<FAQ>
  <FAQItem question="Preciso saber programar para usar o Make ou o n8n?">
    Não para o básico. Chamar a API e receber webhooks se faz apontando e clicando nos módulos HTTP e de webhook. O único ponto mais técnico é validar a assinatura HMAC, que no n8n usa um pequeno nó de código — e mesmo esse trecho é reaproveitável.
  </FAQItem>

  <FAQItem question="Onde coloco a apiKey, no cabeçalho ou na URL?">
    Na URL. No GS Engage a autenticação é por parâmetro de consulta: `?apiKey=SUA_CHAVE`. Não é um cabeçalho. Por isso a chave aparece em logs e links — trate-a como senha e guarde numa variável.
  </FAQItem>

  <FAQItem question="Perdi o secret do webhook. E agora?">
    O `secret` só é mostrado na resposta de criação do webhook, uma única vez. Se você o perdeu, apague o webhook com `DELETE /api/v1/webhooks/{webhookId}` e crie um novo com `POST /api/v1/webhooks` — a nova resposta traz um `secret` novo. Guarde-o na hora.
  </FAQItem>

  <FAQItem question="Posso ouvir outros eventos além de vendas ganhas?">
    Sim. Ao criar o webhook, inclua os eventos que quiser no array `events` — por exemplo `prospection.started`, `prospection.lost`, `activity.finished`, `call.started`, `call.finished` ou `call.transcribed`.
  </FAQItem>

  <FAQItem question="O Make/n8n serve para ler dados e não só receber avisos?">
    Serve. Com o módulo HTTP (Make) ou o nó HTTP Request (n8n) você chama qualquer operação de leitura, como listar leads (`GET /api/v1/leads`) ou cadências (`GET /api/v1/routines`), e usar o resultado no restante do fluxo.
  </FAQItem>
</FAQ>

Artigos Relacionados [#artigos-relacionados]

<RelatedArticles>
  <RelatedArticle href="/docs/api/no-code/zapier" title="Integrar com Zapier" description="A opção mais rápida, com gatilhos nativos do GS Engage." />

  <RelatedArticle href="/docs/api/comece-aqui/o-que-da-pra-fazer" title="Comece aqui" description="Entenda o que dá para automatizar e faça sua primeira chamada com segurança." />

  <RelatedArticle href="/docs/api/conceitos/glossario" title="Glossário" description="Traduz endpoint, webhook, HMAC, rate limit e outros termos." />

  <RelatedArticle href="/docs/api/referencia" title="Referência da API" description="A lista completa de operações, campos e respostas." />
</RelatedArticles>
