Pular para conteúdo

PIPEDRIVE_DEAL_GET - Buscar Deal no Pipedrive

O que é este Node?

O PIPEDRIVE_DEAL_GET é o node responsável por buscar informações detalhadas de um negócio específico no Pipedrive CRM usando o ID do deal.

Por que este Node existe?

Acessar dados atualizados de deals é essencial para tomar decisões e dar contexto ao cliente. O PIPEDRIVE_DEAL_GET existe para:

  1. Consulta de Status: Verificar estágio atual, valor e status do negócio
  2. Contexto em Conversas: Buscar detalhes do deal para personalizar atendimento
  3. Validação de Dados: Conferir se deal existe antes de atualizar
  4. Relatórios: Obter informações completas para análises e relatórios

Como funciona internamente?

Quando o PIPEDRIVE_DEAL_GET é executado, o sistema:

  1. Recebe o ID: Coleta o ID do deal a ser buscado
  2. Processa variáveis: Substitui {{deal_id}} pelo valor real
  3. Autentica no Pipedrive: Usa apiToken e companyDomain
  4. Faz requisição GET: Busca dados em /api/v1/deals/{id}
  5. Retorna dados completos: Pipedrive responde com todas as informações do deal
  6. Salva na variável: Armazena resposta na variável configurada
  7. Em caso de erro: Retorna erro se deal não existir ou token inválido

Código interno (pipedrive.executor.ts:29-32):

else if (operation === 'get') {
  const dealId = this.replaceVariables(node.data.dealId, context.variables);
  const response = await axios.get(`${endpoint}/${dealId}?${authParam}`, { headers });
  result = response.data;
}

Quando você DEVE usar este Node?

Use PIPEDRIVE_DEAL_GET sempre que precisar de consultar dados atualizados de um deal:

Casos de uso

  1. Status do pedido: Cliente pergunta "Como está meu pedido?" e bot busca dados do deal
  2. Follow-up inteligente: Antes de atualizar deal, buscar estado atual para decisões
  3. Validação: Verificar se deal existe antes de executar operações
  4. Personalização: Buscar detalhes para personalizar mensagens (valor, estágio, vendedor)
  5. Relatório individual: Fornecer resumo completo do deal para o cliente

Quando NÃO usar PIPEDRIVE_DEAL_GET

  • Listar vários deals: Use PIPEDRIVE_DEAL_LIST para buscar múltiplos deals
  • Não sabe o ID: Use PIPEDRIVE_DEAL_LIST com filtros para encontrar
  • Criar deal: Use PIPEDRIVE_DEAL_CREATE

Parâmetros Detalhados

dealId (string/number, obrigatório)

O que é: ID único do deal no Pipedrive que você deseja buscar.

Exemplo: 123, "456", "{{deal_id}}"

Flow completo para testar:

{
  "name": "Teste Pipedrive - Buscar Deal",
  "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": "ID do Deal",
        "parameters": {
          "message": "Digite o ID do deal:",
          "variableName": "deal_id"
        }
      }
    },
    {
      "id": "pipedrive_1",
      "type": "pipedrive",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Buscar Deal",
        "resource": "deals",
        "operation": "get",
        "config": {
          "apiToken": "{{pipedrive_token}}",
          "companyDomain": "sua-empresa"
        },
        "dealId": "{{deal_id}}",
        "responseVariable": "deal_info"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Mostrar Info",
        "parameters": {
          "message": "Deal: {{deal_info.data.title}}\nValor: {{deal_info.data.value}} {{deal_info.data.currency}}\nStatus: {{deal_info.data.status}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 900, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "input_1" },
    { "source": "input_1", "target": "pipedrive_1" },
    { "source": "pipedrive_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: Digite um ID de deal válido. O sistema buscará e mostrará título, valor e status.

config.apiToken (string, obrigatório)

O que é: Token de API do Pipedrive.

Como obter: Settings → Personal preferences → API

config.companyDomain (string, obrigatório)

O que é: Subdomínio da empresa (ex: "minhaempresa" de minhaempresa.pipedrive.com)

responseVariable (string, opcional)

O que é: Nome da variável onde os dados do deal serão salvos.

Padrão: "pipedriveResult"

Parâmetros

Campo Tipo Obrigatório Descrição
resource string Sim Deve ser "deals"
operation string Sim Deve ser "get"
config.apiToken string Sim Token de API do Pipedrive
config.companyDomain string Sim Subdomínio da empresa
dealId string/number Sim ID do deal a buscar
responseVariable string Não Nome da variável (padrão: pipedriveResult)

Exemplo 1: Consulta de Status de Pedido

Objetivo: Cliente consulta status do seu pedido/negócio

JSON para Importar

{
  "name": "Pipedrive - Consultar Status",
  "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": "Saudação",
        "parameters": {
          "message": "Olá! Vou consultar o status do seu pedido."
        }
      }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Número Pedido",
        "parameters": {
          "message": "Digite o número do pedido:",
          "variableName": "numero_pedido"
        }
      }
    },
    {
      "id": "pipedrive_1",
      "type": "pipedrive",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Buscar Deal",
        "resource": "deals",
        "operation": "get",
        "config": {
          "apiToken": "{{pipedrive_token}}",
          "companyDomain": "sua-empresa"
        },
        "dealId": "{{numero_pedido}}",
        "responseVariable": "pedido"
      }
    },
    {
      "id": "message_2",
      "type": "message",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Status",
        "parameters": {
          "message": "📦 Status do Pedido #{{numero_pedido}}\n\n✅ Pedido: {{pedido.data.title}}\n💰 Valor: R$ {{pedido.data.value}}\n📊 Estágio: {{pedido.data.stage_id}}\n👤 Responsável: {{pedido.data.owner_name}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1100, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "message_1" },
    { "source": "message_1", "target": "input_1" },
    { "source": "input_1", "target": "pipedrive_1" },
    { "source": "pipedrive_1", "target": "message_2" },
    { "source": "message_2", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: Olá! Vou consultar o status do seu pedido.
Sistema: Digite o número do pedido:
Usuário: 789
Sistema: 📦 Status do Pedido #789
✅ Pedido: Sistema de Gestão - Empresa ABC
💰 Valor: R$ 15000
📊 Estágio: 3
👤 Responsável: João Vendedor

Exemplo 2: Validação Antes de Atualizar

Objetivo: Buscar deal para validar antes de atualizar informações

JSON para Importar

{
  "name": "Pipedrive - Validar e Atualizar",
  "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": "ID Deal",
        "parameters": {
          "message": "ID do deal:",
          "variableName": "deal_id"
        }
      }
    },
    {
      "id": "pipedrive_1",
      "type": "pipedrive",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Buscar Deal",
        "resource": "deals",
        "operation": "get",
        "config": {
          "apiToken": "{{pipedrive_token}}",
          "companyDomain": "sua-empresa"
        },
        "dealId": "{{deal_id}}",
        "responseVariable": "deal_atual"
      }
    },
    {
      "id": "condition_1",
      "type": "condition",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Deal Existe?",
        "parameters": {
          "variable": "deal_atual.success",
          "operator": "equals",
          "value": true
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 900, "y": 0 },
      "data": {
        "label": "Encontrado",
        "parameters": {
          "message": "Deal encontrado: {{deal_atual.data.title}}. Valor atual: R$ {{deal_atual.data.value}}"
        }
      }
    },
    {
      "id": "number_1",
      "type": "number",
      "position": { "x": 1100, "y": 0 },
      "data": {
        "label": "Novo Valor",
        "parameters": {
          "message": "Digite o novo valor:",
          "variableName": "novo_valor",
          "decimals": 2
        }
      }
    },
    {
      "id": "pipedrive_2",
      "type": "pipedrive",
      "position": { "x": 1300, "y": 0 },
      "data": {
        "label": "Atualizar Valor",
        "resource": "deals",
        "operation": "update",
        "config": {
          "apiToken": "{{pipedrive_token}}",
          "companyDomain": "sua-empresa"
        },
        "dealId": "{{deal_id}}",
        "deal": {
          "value": "{{novo_valor}}"
        }
      }
    },
    {
      "id": "message_2",
      "type": "message",
      "position": { "x": 1500, "y": 0 },
      "data": {
        "label": "Sucesso",
        "parameters": {
          "message": "✅ Deal atualizado! Novo valor: R$ {{novo_valor}}"
        }
      }
    },
    {
      "id": "message_3",
      "type": "message",
      "position": { "x": 900, "y": 200 },
      "data": {
        "label": "Não Encontrado",
        "parameters": {
          "message": "❌ Deal #{{deal_id}} não encontrado. Verifique o ID e tente novamente."
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1700, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "input_1" },
    { "source": "input_1", "target": "pipedrive_1" },
    { "source": "pipedrive_1", "target": "condition_1" },
    { "source": "condition_1", "target": "message_1", "label": "true" },
    { "source": "condition_1", "target": "message_3", "label": "false" },
    { "source": "message_1", "target": "number_1" },
    { "source": "number_1", "target": "pipedrive_2" },
    { "source": "pipedrive_2", "target": "message_2" },
    { "source": "message_2", "target": "end_1" },
    { "source": "message_3", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: ID do deal:
Usuário: 456
Sistema: Deal encontrado: Consultoria - Cliente XYZ. Valor atual: R$ 10000
Sistema: Digite o novo valor:
Usuário: 12500
Sistema: ✅ Deal atualizado! Novo valor: R$ 12500

Resposta do Node

{
  "success": true,
  "data": {
    "id": 456,
    "title": "Consultoria - Cliente XYZ",
    "value": 10000,
    "currency": "BRL",
    "add_time": "2025-01-10 14:20:00",
    "update_time": "2025-01-15 10:30:00",
    "stage_id": 2,
    "status": "open",
    "person_id": 789,
    "person_name": "João Silva",
    "org_id": 123,
    "org_name": "Empresa ABC LTDA",
    "user_id": 5,
    "owner_name": "Vendedor João",
    "probability": 60,
    "expected_close_date": "2025-02-01",
    "won_time": null,
    "lost_time": null,
    "products_count": 2,
    "notes_count": 5,
    "activities_count": 3
  }
}

Boas Práticas

SIM:

  • Sempre valide se success: true antes de acessar dados
  • Use CONDITION para tratar casos onde deal não existe
  • Salve dados importantes em variáveis separadas para uso posterior
  • Use responseVariable personalizado ao buscar múltiplos deals
  • Busque deal antes de atualizar para validar existência
  • Mostre informações relevantes ao usuário (título, valor, status)

NÃO:

  • Assumir que deal sempre existirá
  • Ignorar erros de autenticação ou ID inválido
  • Fazer múltiplas buscas do mesmo deal (armazene resultado)
  • Buscar deal quando você só precisa do ID para criar/atualizar

Dicas

💡 Dica 1: Combine com CONDITION para verificar o estágio do deal e personalizar mensagem baseada no status atual.

💡 Dica 2: Use os dados retornados (person_name, org_name) para personalizar atendimento sem fazer queries adicionais.

💡 Dica 3: Verifique data.activities_count para saber se há tarefas pendentes e alertar vendedor.

💡 Dica 4: Use data.expected_close_date para criar lembretes automáticos de follow-up.

Próximos Nodes

PIPEDRIVE_DEAL_UPDATE - Atualizar deal existente → PIPEDRIVE_DEAL_LIST - Listar todos os deals → PIPEDRIVE_DEAL_CREATE - Criar novo deal