Pular para conteúdo

SALESFORCE_ACCOUNT_CREATE - Criar Empresa (Account) no Salesforce

O que é este Node?

O SALESFORCE_ACCOUNT_CREATE é o node responsável por criar empresas (Accounts) no Salesforce CRM, representando organizações com as quais sua empresa tem ou busca ter relacionamento comercial.

Por que este Node existe?

Accounts são a fundação do CRM B2B. O SALESFORCE_ACCOUNT_CREATE existe para:

  1. Hierarquia Organizacional: Organizar contatos, oportunidades e atividades por empresa
  2. Visão 360º: Centralizar todo histórico de relacionamento com cada empresa cliente
  3. Gestão de Carteira: Permitir que vendedores gerenciem portfolio de empresas-cliente
  4. Análise de Receita: Consolidar receita e métricas por empresa, não apenas por contato

Como funciona internamente?

Quando o SALESFORCE_ACCOUNT_CREATE é executado, o sistema:

  1. Recebe os dados: Coleta nome da empresa e informações complementares
  2. Processa variáveis: Substitui variáveis do contexto pelos valores reais
  3. Valida campo obrigatório: Name é o único campo obrigatório
  4. Monta payload: Inclui dados básicos e endereço de cobrança
  5. Autentica no Salesforce: Usa accessToken e instanceUrl
  6. Faz requisição POST: Envia para /services/data/v60.0/sobjects/Account
  7. Retorna ID: Salesforce responde com ID da Account criada
  8. Em caso de erro: Retorna mensagem detalhada

Código interno (salesforce-executor.service.ts:425-452):

private async createAccount(
  nodeData: FlowNodeData,
  credentials: SalesforceCredentials,
  context: any,
): Promise<any> {
  const { name, phone, website, type, industry, description, billingStreet, billingCity, billingState, billingPostalCode, billingCountry } = nodeData;

  const accountData: any = {
    Name: this.replaceVariables(name, context),
  };

  if (phone) accountData.Phone = this.replaceVariables(phone, context);
  if (website) accountData.Website = this.replaceVariables(website, context);
  if (type) accountData.Type = this.replaceVariables(type, context);
  if (industry) accountData.Industry = this.replaceVariables(industry, context);
  if (description) accountData.Description = this.replaceVariables(description, context);
  if (billingStreet) accountData.BillingStreet = this.replaceVariables(billingStreet, context);
  if (billingCity) accountData.BillingCity = this.replaceVariables(billingCity, context);
  if (billingState) accountData.BillingState = this.replaceVariables(billingState, context);
  if (billingPostalCode) accountData.BillingPostalCode = this.replaceVariables(billingPostalCode, context);
  if (billingCountry) accountData.BillingCountry = this.replaceVariables(billingCountry, context);

  if (nodeData.additionalFields) {
    Object.assign(accountData, this.processAdditionalFields(nodeData.additionalFields, context));
  }

  return this.salesforceApiRequest('POST', '/sobjects/Account', credentials, accountData);
}

Quando você DEVE usar este Node?

Use SALESFORCE_ACCOUNT_CREATE sempre que precisar de registrar uma nova empresa no CRM:

Casos de uso

  1. Nova empresa cliente: Empresa fecha primeiro negócio e precisa ser cadastrada
  2. Conversão de Lead: Após qualificar lead, criar Account antes de Contact e Opportunity
  3. Cadastro de prospect: Empresa identificada como potencial cliente de grande valor
  4. Partner/Fornecedor: Cadastrar empresas parceiras ou fornecedoras
  5. Grupo empresarial: Registrar diferentes empresas de um mesmo grupo

Quando NÃO usar SALESFORCE_ACCOUNT_CREATE

  • Pessoa física: Use SALESFORCE_CONTACT_CREATE (B2C) ou SALESFORCE_LEAD_CREATE
  • Account já existe: Use SALESFORCE_ACCOUNT_UPDATE para atualizar
  • Incerteza se existe: Use SALESFORCE_ACCOUNT_UPSERT com campo externo (CNPJ)

Parâmetros Detalhados

name (string, obrigatório)

O que é: Razão social ou nome fantasia da empresa. Único campo obrigatório.

Exemplo: "Tech Solutions LTDA", "Indústria ABC S.A.", "{{company_name}}"

Flow completo para testar:

{
  "name": "Teste Salesforce - Criar Account",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Nome Empresa",
        "parameters": {
          "message": "Nome da empresa:",
          "variableName": "company"
        }
      }
    },
    {
      "id": "salesforce_1",
      "type": "salesforce",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Criar Account",
        "parameters": {
          "resource": "account",
          "operation": "create",
          "accessToken": "{{salesforce_token}}",
          "instanceUrl": "https://sua-instancia.salesforce.com",
          "name": "{{company}}"
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Confirmar",
        "parameters": {
          "message": "Empresa cadastrada! ID: {{salesforce_1.id}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 900, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "input_1" },
    { "source": "input_1", "target": "salesforce_1" },
    { "source": "salesforce_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: Digite nome da empresa e ela será cadastrada no Salesforce.

phone (string, opcional)

O que é: Telefone principal da empresa.

Exemplo: "+551133334444", "{{company_phone}}"

website (string, opcional)

O que é: Website corporativo da empresa.

Exemplo: "https://www.empresa.com.br", "{{company_website}}"

type (string, opcional)

O que é: Tipo/categoria da empresa.

Valores comuns: "Customer", "Prospect", "Partner", "Competitor", "Reseller", "Supplier"

industry (string, opcional)

O que é: Setor/indústria da empresa.

Valores comuns: "Technology", "Manufacturing", "Healthcare", "Finance", "Retail", "Education"

description (string, opcional)

O que é: Descrição ou observações sobre a empresa.

Exemplo: "Principal cliente do setor industrial. Possui 3 filiais."

billingStreet (string, opcional)

O que é: Endereço de cobrança - rua e número.

Exemplo: "Av. Paulista, 1000", "{{billing_address}}"

billingCity (string, opcional)

O que é: Cidade do endereço de cobrança.

Exemplo: "São Paulo", "{{billing_city}}"

billingState (string, opcional)

O que é: Estado do endereço de cobrança.

Exemplo: "SP", "RJ", "{{billing_state}}"

billingPostalCode (string, opcional)

O que é: CEP do endereço de cobrança.

Exemplo: "01310-100", "{{billing_zip}}"

billingCountry (string, opcional)

O que é: País do endereço de cobrança.

Exemplo: "Brasil", "Brazil", "{{billing_country}}"

additionalFields (object, opcional)

O que é: Campos customizados específicos da sua instância.

Exemplo:

{
  "CNPJ__c": "12.345.678/0001-90",
  "Annual_Revenue__c": 5000000,
  "Number_of_Employees__c": 150,
  "Account_Manager__c": "005xx000001abcd"
}

Parâmetros

Campo Tipo Obrigatório Descrição
resource string Sim Deve ser "account"
operation string Sim Deve ser "create"
accessToken string Sim Token OAuth do Salesforce
instanceUrl string Sim URL da instância Salesforce
name string Sim Nome/razão social da empresa
phone string Não Telefone principal
website string Não Website corporativo
type string Não Tipo de conta
industry string Não Setor/indústria
description string Não Descrição da empresa
billingStreet string Não Endereço de cobrança
billingCity string Não Cidade
billingState string Não Estado
billingPostalCode string Não CEP
billingCountry string Não País
additionalFields object Não Campos customizados

Exemplo 1: Cadastro Completo de Empresa

Objetivo: Criar Account com informações completas de empresa cliente

JSON para Importar

{
  "name": "Cadastro Completo Empresa - Salesforce",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Boas-vindas",
        "parameters": {
          "message": "Vou cadastrar sua empresa no nosso sistema. Preciso de algumas informações."
        }
      }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Razão Social",
        "parameters": {
          "message": "Razão social da empresa:",
          "variableName": "company_name"
        }
      }
    },
    {
      "id": "input_2",
      "type": "input",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "CNPJ",
        "parameters": {
          "message": "CNPJ:",
          "variableName": "cnpj"
        }
      }
    },
    {
      "id": "phone_1",
      "type": "phone",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Telefone",
        "parameters": {
          "message": "Telefone principal:",
          "variableName": "phone"
        }
      }
    },
    {
      "id": "input_3",
      "type": "input",
      "position": { "x": 1100, "y": 100 },
      "data": {
        "label": "Website",
        "parameters": {
          "message": "Website (opcional, pode digitar 'não' se não tiver):",
          "variableName": "website"
        }
      }
    },
    {
      "id": "input_4",
      "type": "input",
      "position": { "x": 1300, "y": 100 },
      "data": {
        "label": "Setor",
        "parameters": {
          "message": "Setor de atuação:",
          "variableName": "industry"
        }
      }
    },
    {
      "id": "number_1",
      "type": "number",
      "position": { "x": 1500, "y": 100 },
      "data": {
        "label": "Funcionários",
        "parameters": {
          "message": "Quantos funcionários aproximadamente?",
          "variableName": "employees"
        }
      }
    },
    {
      "id": "salesforce_1",
      "type": "salesforce",
      "position": { "x": 1700, "y": 100 },
      "data": {
        "label": "Criar Account",
        "parameters": {
          "resource": "account",
          "operation": "create",
          "accessToken": "{{salesforce_token}}",
          "instanceUrl": "https://sua-instancia.salesforce.com",
          "name": "{{company_name}}",
          "phone": "{{phone}}",
          "website": "{{website}}",
          "industry": "{{industry}}",
          "type": "Prospect",
          "description": "Empresa cadastrada via WhatsApp",
          "additionalFields": {
            "CNPJ__c": "{{cnpj}}",
            "Number_of_Employees__c": "{{employees}}",
            "Lead_Source__c": "WhatsApp"
          }
        }
      }
    },
    {
      "id": "message_2",
      "type": "message",
      "position": { "x": 1900, "y": 100 },
      "data": {
        "label": "Sucesso",
        "parameters": {
          "message": "Empresa {{company_name}} cadastrada com sucesso! Nossa equipe entrará em contato em breve."
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 2100, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "message_1" },
    { "source": "message_1", "target": "input_1" },
    { "source": "input_1", "target": "input_2" },
    { "source": "input_2", "target": "phone_1" },
    { "source": "phone_1", "target": "input_3" },
    { "source": "input_3", "target": "input_4" },
    { "source": "input_4", "target": "number_1" },
    { "source": "number_1", "target": "salesforce_1" },
    { "source": "salesforce_1", "target": "message_2" },
    { "source": "message_2", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: Vou cadastrar sua empresa no nosso sistema. Preciso de algumas informações.
Sistema: Razão social da empresa:
Usuário: Tech Solutions LTDA
Sistema: CNPJ:
Usuário: 12.345.678/0001-90
Sistema: Telefone principal:
Usuário: 1133334444
Sistema: Website (opcional, pode digitar 'não' se não tiver):
Usuário: www.techsolutions.com.br
Sistema: Setor de atuação:
Usuário: Tecnologia
Sistema: Quantos funcionários aproximadamente?
Usuário: 50
Sistema: Empresa Tech Solutions LTDA cadastrada com sucesso! Nossa equipe entrará em contato em breve.

Exemplo 2: Account com Endereço Completo

Objetivo: Criar Account incluindo endereço de cobrança completo

JSON para Importar

{
  "name": "Account com Endereço - Salesforce",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Empresa",
        "parameters": {
          "message": "Nome da empresa:",
          "variableName": "company"
        }
      }
    },
    {
      "id": "input_2",
      "type": "input",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Endereço",
        "parameters": {
          "message": "Endereço completo (rua e número):",
          "variableName": "street"
        }
      }
    },
    {
      "id": "input_3",
      "type": "input",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Cidade",
        "parameters": {
          "message": "Cidade:",
          "variableName": "city"
        }
      }
    },
    {
      "id": "input_4",
      "type": "input",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Estado",
        "parameters": {
          "message": "Estado (sigla):",
          "variableName": "state"
        }
      }
    },
    {
      "id": "input_5",
      "type": "input",
      "position": { "x": 1100, "y": 100 },
      "data": {
        "label": "CEP",
        "parameters": {
          "message": "CEP:",
          "variableName": "zip"
        }
      }
    },
    {
      "id": "salesforce_1",
      "type": "salesforce",
      "position": { "x": 1300, "y": 100 },
      "data": {
        "label": "Criar Account",
        "parameters": {
          "resource": "account",
          "operation": "create",
          "accessToken": "{{salesforce_token}}",
          "instanceUrl": "https://sua-instancia.salesforce.com",
          "name": "{{company}}",
          "type": "Customer",
          "billingStreet": "{{street}}",
          "billingCity": "{{city}}",
          "billingState": "{{state}}",
          "billingPostalCode": "{{zip}}",
          "billingCountry": "Brasil"
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 1500, "y": 100 },
      "data": {
        "label": "Confirmação",
        "parameters": {
          "message": "Empresa cadastrada com endereço em {{city}}/{{state}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1700, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "input_1" },
    { "source": "input_1", "target": "input_2" },
    { "source": "input_2", "target": "input_3" },
    { "source": "input_3", "target": "input_4" },
    { "source": "input_4", "target": "input_5" },
    { "source": "input_5", "target": "salesforce_1" },
    { "source": "salesforce_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: Nome da empresa:
Usuário: Indústria XYZ
Sistema: Endereço completo (rua e número):
Usuário: Rua Industrial, 500
Sistema: Cidade:
Usuário: São Paulo
Sistema: Estado (sigla):
Usuário: SP
Sistema: CEP:
Usuário: 01234-567
Sistema: Empresa cadastrada com endereço em São Paulo/SP

Resposta do Node

{
  "id": "0015g00000ABC123",
  "success": true,
  "errors": []
}

Boas Práticas

SIM:

  • Usar CNPJ ou identificador único em additionalFields para evitar duplicatas
  • Coletar informações básicas: nome, telefone, website, setor
  • Definir Type corretamente (Customer, Prospect, Partner, etc.)
  • Incluir endereço completo quando disponível para emissão de documentos
  • Salvar ID retornado para criar Contacts e Opportunities associados
  • Usar Industry padronizado para segmentação e reports
  • Adicionar description com contexto de como a empresa chegou até você

NÃO:

  • Criar Account duplicada - verificar por CNPJ ou nome antes
  • Usar abreviações não padronizadas em campos de endereço
  • Omitir informações básicas como telefone quando disponível
  • Criar Account sem definir Type
  • Ignorar campos customizados importantes como CNPJ
  • Cadastrar pessoa física como Account (use Contact)

Dicas

💡 Dica 1: Após criar Account, use o ID retornado para criar Contacts (funcionários) e Opportunities (negócios) associados, mantendo hierarquia organizada.

💡 Dica 2: Implemente busca por CNPJ antes de criar Account para evitar duplicatas. Use SALESFORCE_SEARCH_QUERY com CNPJ como critério.

💡 Dica 3: Combine com APIs de consulta de CNPJ (Receita Federal) para preencher automaticamente razão social, endereço e outros dados.

💡 Dica 4: Use campos customizados para armazenar métricas importantes: faturamento anual, número de funcionários, segmento específico, potencial de receita.

💡 Dica 5: Para empresas com múltiplas filiais, crie uma Account matriz e use campo Parent Account para criar hierarquia de filiais.

Próximos Nodes

SALESFORCE_ACCOUNT_UPDATE - Atualizar dados da Account → SALESFORCE_CONTACT_CREATE - Criar contatos associados à Account → SALESFORCE_OPPORTUNITY_CREATE - Criar oportunidade para a Account → SALESFORCE_ACCOUNT_GET - Buscar dados de uma Account