SALESFORCE_TASK_CREATE - Criar Tarefa no Salesforce
O que é este Node?
O SALESFORCE_TASK_CREATE é o node responsável por criar tarefas e atividades no Salesforce, permitindo registrar follow-ups, lembretes e ações que precisam ser executadas pela equipe.
Por que este Node existe?
Tarefas organizam o trabalho da equipe. O SALESFORCE_TASK_CREATE existe para:
- Gestão de Follow-up: Garantir que nenhum cliente fique sem retorno
- Organização de Trabalho: Distribuir atividades entre membros da equipe
- Automação de Processos: Criar tarefas automaticamente após eventos (lead criado, caso aberto, etc.)
- Rastreamento de Atividades: Manter histórico de todas as ações relacionadas a clientes
Como funciona internamente?
Quando o SALESFORCE_TASK_CREATE é executado, o sistema:
- Recebe os dados: Coleta subject, status, priority, data e associações
- Processa variáveis: Substitui variáveis do contexto pelos valores reais
- Valida dados: Todos os campos são opcionais
- Monta payload: Cria objeto com informações da tarefa
- Autentica no Salesforce: Usa accessToken e instanceUrl
- Faz requisição POST: Envia para
/services/data/v60.0/sobjects/Task - Retorna ID: Salesforce responde com ID da tarefa criada
- Em caso de erro: Retorna mensagem detalhada
Código interno (salesforce-executor.service.ts:877-900):
private async createTask(
nodeData: FlowNodeData,
credentials: SalesforceCredentials,
context: any,
): Promise<any> {
const { subject, status, priority, activityDate, whoId, whatId, description, ownerId } = nodeData;
const taskData: any = {};
if (subject) taskData.Subject = this.replaceVariables(subject, context);
if (status) taskData.Status = this.replaceVariables(status, context);
if (priority) taskData.Priority = this.replaceVariables(priority, context);
if (activityDate) taskData.ActivityDate = this.replaceVariables(activityDate, context);
if (whoId) taskData.WhoId = this.replaceVariables(whoId, context);
if (whatId) taskData.WhatId = this.replaceVariables(whatId, context);
if (description) taskData.Description = this.replaceVariables(description, context);
if (ownerId) taskData.OwnerId = this.replaceVariables(ownerId, context);
if (nodeData.additionalFields) {
Object.assign(taskData, this.processAdditionalFields(nodeData.additionalFields, context));
}
return this.salesforceApiRequest('POST', '/sobjects/Task', credentials, taskData);
}
Quando você DEVE usar este Node?
Use SALESFORCE_TASK_CREATE sempre que precisar de criar atividade ou lembrete para equipe:
Casos de uso
- Follow-up de lead: Criar tarefa de retorno após captura de lead
- Lembrete de reunião: Agendar follow-up após proposta enviada
- Retorno de suporte: Criar tarefa para técnico resolver caso
- Ação pós-venda: Lembrar vendedor de fazer onboarding do cliente
- Renovação de contrato: Criar tarefa para gerente de contas 30 dias antes do vencimento
Quando NÃO usar SALESFORCE_TASK_CREATE
- Eventos com hora específica: Use Salesforce Event para compromissos com horário
- Casos de suporte: Use SALESFORCE_CASE_CREATE para tickets
- Oportunidades: Use SALESFORCE_OPPORTUNITY_CREATE para negócios
Parâmetros Detalhados
subject (string, recomendado)
O que é: Assunto/título da tarefa. Descrição curta do que precisa ser feito.
Exemplo: "Ligar para cliente", "Enviar proposta", "Follow-up reunião", "{{task_subject}}"
status (string, opcional)
O que é: Status atual da tarefa.
Valores comuns: "Not Started", "In Progress", "Completed", "Waiting on someone else", "Deferred"
Padrão: "Not Started"
priority (string, opcional)
O que é: Prioridade da tarefa.
Valores comuns: "Low", "Normal", "High"
Padrão: "Normal"
activityDate (string, opcional)
O que é: Data de vencimento da tarefa. Formato: YYYY-MM-DD.
Exemplo: "2025-10-20", "{{due_date}}"
whoId (string, opcional)
O que é: ID do Lead ou Contact relacionado à tarefa. Representa "quem" é o assunto da tarefa.
Exemplo: "00Q5g00000ABC123" (Lead) ou "0035g00000XYZ789" (Contact)
whatId (string, opcional)
O que é: ID do Account, Opportunity, Case ou outro objeto relacionado. Representa "sobre o que" é a tarefa.
Exemplo: "0015g00000DEF456" (Account) ou "0065g00000GHI789" (Opportunity)
description (string, opcional)
O que é: Descrição detalhada da tarefa, contexto, instruções.
Exemplo: "Cliente solicitou proposta para 50 licenças. Budget: R$ 100.000. Prazo decisão: 30 dias."
ownerId (string, opcional)
O que é: ID do usuário Salesforce responsável pela tarefa. Se não informado, é atribuída ao usuário autenticado.
Exemplo: "0055g00000JKL012"
additionalFields (object, opcional)
O que é: Campos customizados específicos do seu processo.
Exemplo:
{
"Task_Type__c": "Follow-up Call",
"Expected_Duration__c": 30,
"Call_Result__c": "Not Called Yet"
}
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| resource | string | Sim | Deve ser "task" |
| operation | string | Sim | Deve ser "create" |
| accessToken | string | Sim | Token OAuth do Salesforce |
| instanceUrl | string | Sim | URL da instância Salesforce |
| subject | string | Recomendado | Assunto da tarefa |
| status | string | Não | Status (padrão: Not Started) |
| priority | string | Não | Prioridade (padrão: Normal) |
| activityDate | string | Não | Data vencimento (YYYY-MM-DD) |
| whoId | string | Não | ID de Lead ou Contact |
| whatId | string | Não | ID de Account, Opportunity, etc. |
| description | string | Não | Descrição detalhada |
| ownerId | string | Não | ID do responsável |
| additionalFields | object | Não | Campos customizados |
Exemplo 1: Follow-up Automático de Lead
Objetivo: Criar tarefa de follow-up automaticamente após capturar lead
JSON para Importar
{
"name": "Follow-up Automático Lead - 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": "Nome",
"parameters": {
"message": "Qual é o seu nome?",
"variableName": "name"
}
}
},
{
"id": "input_2",
"type": "input",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Empresa",
"parameters": {
"message": "Empresa:",
"variableName": "company"
}
}
},
{
"id": "email_1",
"type": "email",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Email",
"parameters": {
"message": "Email:",
"variableName": "email"
}
}
},
{
"id": "salesforce_lead",
"type": "salesforce",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Criar Lead",
"parameters": {
"resource": "lead",
"operation": "create",
"accessToken": "{{salesforce_token}}",
"instanceUrl": "{{salesforce_instance}}",
"company": "{{company}}",
"lastName": "{{name}}",
"email": "{{email}}",
"status": "Open - Not Contacted"
}
}
},
{
"id": "delay_1",
"type": "delay",
"position": { "x": 1100, "y": 100 },
"data": {
"label": "Aguardar 1 segundo",
"parameters": {
"duration": 1000
}
}
},
{
"id": "salesforce_task",
"type": "salesforce",
"position": { "x": 1300, "y": 100 },
"data": {
"label": "Criar Tarefa Follow-up",
"parameters": {
"resource": "task",
"operation": "create",
"accessToken": "{{salesforce_token}}",
"instanceUrl": "{{salesforce_instance}}",
"subject": "Follow-up: {{company}} - {{name}}",
"status": "Not Started",
"priority": "High",
"activityDate": "2025-10-15",
"whoId": "{{salesforce_lead.id}}",
"description": "Lead capturado via WhatsApp. Email: {{email}}. Fazer primeiro contato em até 24h."
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 1500, "y": 100 },
"data": {
"label": "Confirmação",
"parameters": {
"message": "Obrigado, {{name}}! Nossa equipe entrará em contato em breve."
}
}
},
{
"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": "email_1" },
{ "source": "email_1", "target": "salesforce_lead" },
{ "source": "salesforce_lead", "target": "delay_1" },
{ "source": "delay_1", "target": "salesforce_task" },
{ "source": "salesforce_task", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Saída esperada:
Sistema: Qual é o seu nome?
Usuário: Carlos Silva
Sistema: Empresa:
Usuário: Tech Corp
Sistema: Email:
Usuário: carlos@techcorp.com
Sistema: Obrigado, Carlos Silva! Nossa equipe entrará em contato em breve.
Exemplo 2: Tarefa para Oportunidade
Objetivo: Criar tarefa associada a oportunidade de vendas
JSON para Importar
{
"name": "Tarefa Oportunidade - Salesforce",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "variable_1",
"type": "variable",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Opportunity ID",
"parameters": {
"variableName": "opp_id",
"value": "0065g00000ABC123"
}
}
},
{
"id": "input_1",
"type": "input",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Ação Necessária",
"parameters": {
"message": "O que precisa ser feito nesta oportunidade?",
"variableName": "action"
}
}
},
{
"id": "date_1",
"type": "date",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Data Limite",
"parameters": {
"message": "Para quando? (DD/MM/AAAA)",
"variableName": "due_date",
"format": "YYYY-MM-DD"
}
}
},
{
"id": "salesforce_1",
"type": "salesforce",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Criar Tarefa",
"parameters": {
"resource": "task",
"operation": "create",
"accessToken": "{{salesforce_token}}",
"instanceUrl": "{{salesforce_instance}}",
"subject": "{{action}}",
"whatId": "{{opp_id}}",
"activityDate": "{{due_date}}",
"status": "Not Started",
"priority": "High",
"description": "Ação definida via WhatsApp"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 1100, "y": 100 },
"data": {
"label": "Confirmação",
"parameters": {
"message": "Tarefa criada: {{action}} para {{due_date}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1300, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "variable_1" },
{ "source": "variable_1", "target": "input_1" },
{ "source": "input_1", "target": "date_1" },
{ "source": "date_1", "target": "salesforce_1" },
{ "source": "salesforce_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Saída esperada:
Sistema: O que precisa ser feito nesta oportunidade?
Usuário: Enviar proposta comercial
Sistema: Para quando? (DD/MM/AAAA)
Usuário: 20/10/2025
Sistema: Tarefa criada: Enviar proposta comercial para 2025-10-20
Resposta do Node
{
"id": "00T5g00000XYZ123",
"success": true,
"errors": []
}
Boas Práticas
✅ SIM:
- Sempre definir subject claro e descritivo
- Usar activityDate para tarefas com prazo
- Associar a whoId (pessoa) ou whatId (objeto) quando possível
- Definir priority baseada na urgência
- Incluir description com contexto e instruções
- Usar ownerId para distribuir tarefas entre equipe
- Criar tarefas automaticamente após eventos importantes
❌ NÃO:
- Criar tarefas sem subject
- Ignorar activityDate em tarefas com prazo
- Criar tarefas genéricas sem contexto
- Não associar tarefa a lead/contact/opportunity
- Definir todas tarefas como High priority
- Esquecer de incluir informações importantes na description
Dicas
💡 Dica 1: Use DELAY de alguns segundos entre criar registro (Lead, Opportunity) e criar Task associada para evitar race conditions.
💡 Dica 2: Combine com CONDITION para criar tarefas de prioridades diferentes baseadas em valor de negócio ou urgência.
💡 Dica 3: Use campos customizados para categorizar tarefas: tipo (call, email, meeting), origem (WhatsApp, web), resultado esperado.
💡 Dica 4: Implemente regra de negócio: criar tarefa de follow-up automaticamente após X dias de inatividade em oportunidade.
💡 Dica 5: Para tarefas recorrentes, crie flow que verifica se tarefa foi concluída e cria próxima automaticamente.
Próximos Nodes
→ SALESFORCE_TASK_UPDATE - Atualizar status da tarefa → SALESFORCE_TASK_GET - Buscar detalhes da tarefa → SALESFORCE_LEAD_CREATE - Criar lead antes da tarefa → SALESFORCE_OPPORTUNITY_CREATE - Criar oportunidade antes da tarefa