n8n-nodes-arco-crm
v0.7.1
Published
n8n community node for Arco CRM (Public API)
Downloads
1,073
Maintainers
Readme
n8n-nodes-arco-crm
n8n community node para o Arco CRM via Public API.
Permite criar workflows automatizados consumindo a API do Arco CRM — leads, deals, pessoas, organizações, atividades, notas, tags, pipelines, memberships, origens e tipos de atividade — com seleção por dropdown (sem precisar colar UUIDs).
Instalação
Na sua instância n8n:
- Vá em Settings → Community Nodes.
- Clique em Install e digite
n8n-nodes-arco-crm. - Aceite os riscos (n8n exige confirmação explícita para community nodes) e instale.
Configuração
- Crie uma chave de API no Arco CRM (Configurações → API Keys), com os escopos necessários:
leads:read,leads:writedeals:read,deals:writepeople:read,people:writeorganizations:read,organizations:writeactivities:read,activities:writenotes:read,notes:writetags:readorigins:readmemberships:readactivity_types:readloss_reasons:read
Lead Pipelinesreusaleads:read.Deal Pipelinesreusadeals:read. Não existe scopepipelines:readdedicado.
- No n8n, crie uma credencial Arco CRM API:
- Base URL:
https://crm.grupoarco.cc/api(ou a URL da sua instância) - API Key: a chave
ark_…gerada
- Base URL:
- Use o botão Test para validar.
Se algum dropdown ficar vazio (Origin, Membership, Loss Reason) é porque o scope correspondente está ausente na sua API key — o node trata
SCOPE_DENIEDsilenciosamente para não quebrar o formulário inteiro.
Recursos suportados
| Recurso | Operações |
|---|---|
| Lead | Create · Get · List · Update · Change Stage · Disqualify · Convert · Convert Preview · Claim · Stage History · List/Add/Remove Tags |
| Deal | Create · Get · List · Update · Change Stage · Mark Won · Mark Lost · Reopen · Claim · Stage History · List/Add/Remove Tags |
| Person | Create · Get · List · Update · Claim |
| Organization | Create · Get · List · Update · Claim |
| Activity | Create · Get · List · Update · Complete |
| Activity Type | List (read-only) |
| Note | Create · Get · List · Update |
| Tag | List (read-only) |
| Pipeline | List (Lead ou Deal, com Include Stages opcional) |
| Membership | List · Get (read-only) |
| Origin | List · Get (read-only) |
Todas as operações usam o contrato /v1/* da Public API.
Dropdowns inteligentes
Campos que referenciam outras entidades (organization_id, person_id, pipeline_id, stage_id, lead_pipeline_id, lead_stage_id, owner_membership_id, disqualification_reason_id, loss_reason_id, origin_id etc.) oferecem 3 modos:
- From List — dropdown paginado com busca por nome.
- By ID — UUID direto, útil em loops e expressions.
- By URL — cola o link da UI do CRM; o node extrai o UUID.
Selects de Stage dependem do Pipeline correspondente — escolha o pipeline primeiro para que os stages carreguem.
Idempotência
As operações Create de Lead, Deal, Person, Organization, Activity e Note têm um campo opcional Idempotency Key. Quando preenchido, é enviado no header Idempotency-Key:
- A mesma chave + o mesmo body em até 24h retornam a resposta original — evita duplicatas em retries (timeout, re-execução do workflow).
- A mesma chave com body diferente retorna
409 IDEMPOTENCY_CONFLICT.
Use um valor estável por requisição lógica (ex.: um UUID derivado do registro de origem). Deixe vazio para desativar.
Desenvolvimento
pnpm install
pnpm dev # sobe n8n local em :5678 com o node linkado
pnpm lint
pnpm buildChangelog
0.6.2
- Fix (definitivo): operações POST sem corpo (
Reopen,Claimde Lead/Deal) ou com campos opcionais vazios (Disqualify,Mark Won,Mark Lost) falhavam comBody cannot be empty when content-type is set to 'application/json'. Causa raiz: o headerContent-Type: application/jsonera fixado em toda requisição. Agora o node usajson: true, então o header só é enviado quando há corpo — requisições sem corpo não disparam mais o erro. (A tentativa da 0.6.1 viabody: {}não resolvia porque o n8n descarta corpos vazios antes de enviar.)
0.6.1
- Tentativa de correção do erro de corpo vazio via
body: {}(substituída pela 0.6.2).
0.6.0
- Mover Lead/Deal de funil no
Change Stage: o campoLead Pipeline(Lead) eDeal Pipeline(Deal) doChange Stageagora é enviado no corpo (lead_pipeline_id/pipeline_id). Escolha um pipeline diferente para mover a entidade para outro funil (precisa estaropen); mantenha o atual — ou deixe vazio — para apenas trocar de estágio. Retrocompatível: só é enviado quando preenchido, então workflows que só mudam de etapa continuam idênticos. - Nova operação
Reopenno Lead (POST /v1/leads/:id/reopen): reverte um leaddisqualifiedparaopen, preservando a etapa atual. Espelha oReopenjá existente em Deal.
0.5.0
- Novo recurso
Campaign(API v1.10, scopescampaigns:read:all/campaigns:operate:all):List,Get,Get Stages,Get Summary,List Participants(filtrosStage/Outcome),Add Participants(listas de Lead IDs / Person IDs +Force),Change Participant Stage,Qualify Participant(payload JSON, kind-aware),Disqualify Participant(Loss Reason/Comment) eRemove Participant. DropdownsFrom Listpara Campaign e Campaign Stage (a etapa lê a campanha escolhida no formulário). - Campo
Campaignno Create de Lead e Person:resourceLocator(From List / By ID / By URL) que enviacampaign_id, criando o registro já vinculado como participante na primeira etapa da campanha. Requer também o scopecampaigns:operate:all; a operação é atômica (rollback se o vínculo falhar). Disponível apenas no Create — a API não aceitacampaign_idno update.
0.4.0
- Busca textual nas listagens (
List) de Lead, Deal, Person, Organization e Membership via o novo parâmetrosearchda API (substring, case-insensitive, combinado com os demais filtros via AND, máx. 200 caracteres). Lead/Person buscam por nome, e-mail ou telefone; Deal por título; Organization por nome; Membership por e-mail. - Dropdowns (
From List) agora buscam no servidor para Lead, Deal, Person e Organization: em vez de carregar os primeiros 50 registros e filtrar no navegador, enviam?search=e pesquisam a base inteira. O debounce do campo é feito pelo próprio editor do n8n. Tags, Origins, Pipelines, Stages, Loss Reasons e Membership seguem com filtro local (o backend não expõesearchneles, ou — no caso de Membership — só busca por e-mail enquanto a lista exibe o nome).
0.3.0
- Idempotency Key opcional nas operações Create de Lead, Deal, Person, Organization, Activity e Note (header
Idempotency-Key, TTL 24h). Vazio = comportamento anterior.
0.2.0
Cobertura completa do contrato /v1/* (após o backend expor deal-pipelines, loss-reasons e o ciclo completo de Deal).
Novos recursos
- Deal:
Change Stage,Mark Won,Mark Lost,Reopen,Claim,Stage History,List/Add/Remove Tags. - Dropdowns de Deal Pipeline e Deal Stage em Deal (Create/List/Change Stage) e em Lead Convert.
- Dropdowns de Lead Pipeline e Lead Stage no filtro de Lead List.
- Dropdown de Loss Reason em Lead Disqualify e Deal Mark Lost.
Pipeline → ListaceitaType(lead ou deal) para escolher o endpoint.
Correções
- Dropdowns sem scope (Origin, Membership, Loss Reason) ficam vazios em vez de pintar vermelho. O erro
SCOPE_DENIEDdeixa de poluir o formulário. - Busca em Lead/Person/Organization/Deal passa a filtrar no cliente (o backend ignorava
?search=).
Breaking changes
pipeline_id/stage_idno Deal Create deixam de serstringe viramresourceLocator(3 modos: From List / By ID / By URL). Workflows existentes preservam o UUID via modo "By ID".lead_pipeline_idno filtro de Lead List idem.deal_pipeline_id/deal_stage_idno Lead Convert idem.disqualification_reason_idno Lead Disqualify idem.Pipeline → Listagora exige escolherType(defaultLead Pipelinesmantém o comportamento anterior).
0.1.2
Alinhamento à Public API v1.4.9.3.
Novos recursos
Membership,Origin,Activity Type(read-only).- Dropdown de
Owner Membershipem Lead, Deal, Person, Organization e Activity. Pipeline → ListaceitaInclude Stagespara retornar stages embutidos.
Breaking changes (rotas/campos que não existem no contrato público /v1/*)
Tag: removidas operaçõesCreate,Update,Delete(Tag agora é read-only).Activity: removidasDeleteeUncomplete. Campoactivity_type_idrenomeado paratype_id;descriptionrenomeado paranotes;owner_membership_idagora é obrigatório no Create; filtrosdue_after/due_beforeremovidos;statusremovido do Update.Note: removida operaçãoDelete. Campobodyrenomeado paracontent.Pipeline: removidasGeteList Stages(useListcomInclude Stages: true). Agora aponta para/v1/lead-pipelines(deal pipelines não eram expostos pela Public API).Deal: camponamerenomeado paratitle(Create e Update).
Correções
- Todas as rotas internas (
/activities,/notes,/tags,/pipelines,/origins,/activity-types) migradas para o prefixo público/v1/.
