Integrar com Zapier
O Zapier não tem (ainda) um app oficial do Indutiva CRM, mas integrar é direto via o módulo Webhooks by Zapier + API Key. Em 10 minutos você tem leads do seu site indo automaticamente pro CRM.
Cenário comum: lead form → CRM
Trigger: novo lead chega num Typeform / Google Forms / Tally / formulário do site Action: criar contato no CRM, opcionalmente criar um deal
-
Gere uma API Key dedicada pro Zapier
No CRM: Configurações → Integrações → API Keys → Nova.
- Nome:
Zapier — Lead Forms - Scopes:
contacts:write,deals:write,pipelines:read(pra saber stage inicial) - Rate limit: 100/min (padrão é suficiente — Zapier é eventos esparsos)
Copie o segredo
crm_live_xxxx.... - Nome:
-
No Zapier, crie um novo Zap
- Trigger: seu form (Typeform, Tally, Google Forms, etc.) → “New submission”
- Action: Webhooks by Zapier → “POST”
-
Configure o POST
- URL:
https://app.indutivacrm.com.br/api/v1/contacts - Payload Type:
JSON - Data:
Field Value firstName{{trigger.first_name}}lastName{{trigger.last_name}}email{{trigger.email}}phone{{trigger.phone}} - Headers:
Header Value X-API-Keycrm_live_...(cole o segredo)Content-Typeapplication/json
- URL:
-
Teste
Click Test action. Zapier vai criar um contato de teste no seu CRM. Se receber
201 Created, está pronto.Se receber
409 duplicate_email, é porque já existe — veja tratamento abaixo. -
(Opcional) Crie um deal automaticamente
Adicione uma segunda action Webhooks → POST:
- URL:
https://app.indutivacrm.com.br/api/v1/deals - Data:
{"title": "Lead via formulário — {{trigger.first_name}}","pipelineId": "ckl4p01...","stageId": "ckl4s01...","contactId": "{{step1.id}}"}
Pra saber
pipelineIdestageId, faça antes uma chamada manual comGET /pipelines(ou veja na URL da página do pipeline no CRM). - URL:
Upsert (em vez de criar)
Se o lead já existe (mesmo email), você quer atualizar em vez de criar. Trate o 409:
- Adicione uma action Webhooks → Custom Request:
- Method: PATCH (dinamicamente, ver abaixo)
- Filter antes: só roda se Step 1 retornou
existingContactId - URL:
https://app.indutivacrm.com.br/api/v1/contacts/{{step1.existingContactId}} - Data: mesmos campos do POST
Pulling: ler do CRM pra mandar pra outro lugar
Cenário: todo dia às 9h, exportar deals fechados ontem pra uma planilha.
- Trigger: Schedule by Zapier → daily 09:00
- Action 1: Webhooks by Zapier → GET
- URL:
https://app.indutivacrm.com.br/api/v1/deals?isWon=true&closedAtFrom={{zap_meta_human_now_minus_1d}}T00:00:00Z - Headers:
X-API-Key: crm_live_...
- URL:
- Action 2: Looping by Zapier → “Create Loop From Line Items”
- Input: response.data
- Action 3 (dentro do loop): Google Sheets → Create Row
- Map os campos do deal (id, title, value, closedAt, contact.name)
Erros comuns
| Erro | Causa | Fix |
|---|---|---|
401 invalid_api_key | Chave errada/revogada | Confira no painel; gere nova se necessário |
403 insufficient_scope | Faltam scopes na key | Crie key nova com scopes corretos |
429 rate_limit_exceeded | Zap rodando em loop sem throttle | Adicione “Delay by Zapier” entre actions, ou aumente rate limit |
400 validation_failed | Campo do form mal mapeado | Veja details na resposta — geralmente email inválido |
Segurança no Zapier
- Não compartilhe a API Key fora dos campos de header do Zap (não cole em fields visíveis)
- Use uma chave por Zap (ou um grupo de Zaps relacionados). Fica mais fácil revogar surgicalmente
- Configure expiração se a integração é temporária (ex: campanha de 90 dias)
- Monitore o drawer de logs da chave no CRM pra ver se o Zap está rodando como esperado