PIPEDRIVE_DEAL_LIST - Listar Deals no Pipedrive
O que é este Node?
O PIPEDRIVE_DEAL_LIST é o node responsável por listar múltiplos negócios do Pipedrive CRM, permitindo buscar deals ativos, filtrar por critérios e obter visão geral do pipeline.
Por que este Node existe?
Visualizar conjunto de deals é essencial para análises e decisões. O PIPEDRIVE_DEAL_LIST existe para:
- Visão Geral: Obter lista de todos os deals ativos
- Relatórios: Gerar relatórios sobre pipeline de vendas
- Busca sem ID: Encontrar deals quando não se sabe o ID específico
- Análise de Performance: Verificar quantidade e valores de deals em cada estágio
Como funciona internamente?
Quando o PIPEDRIVE_DEAL_LIST é executado, o sistema:
- Define limite: Configura quantos deals retornar (padrão: 100)
- Autentica: Usa apiToken e companyDomain
- Faz requisição GET: Busca lista em
/api/v1/deals - Retorna array: Pipedrive responde com lista de deals
- Salva na variável: Armazena array completo
- Em caso de erro: Retorna erro de autenticação ou limite
Código interno (pipedrive.executor.ts:38-41):
else if (operation === 'list') {
const response = await axios.get(`${endpoint}?${authParam}&limit=${node.data.limit || 100}`, { headers });
result = response.data;
}
Quando você DEVE usar este Node?
Use PIPEDRIVE_DEAL_LIST sempre que precisar listar vários deals:
Casos de uso
- Dashboard: Mostrar resumo de deals em aberto para vendedor
- Relatório diário: Listar deals que precisam follow-up hoje
- Performance: Ver todos os deals por estágio/status
- Busca ampla: Encontrar deal quando cliente não sabe ID
Quando NÃO usar PIPEDRIVE_DEAL_LIST
- Sabe o ID específico: Use PIPEDRIVE_DEAL_GET para buscar 1 deal
- Criar deal: Use PIPEDRIVE_DEAL_CREATE
- Buscar pessoa: Use PIPEDRIVE_PERSON_SEARCH
Parâmetros Detalhados
limit (number, opcional)
O que é: Quantidade máxima de deals a retornar.
Padrão: 100
Máximo: 500 (limite da API Pipedrive)
Exemplo: 10, 50, 100, "{{quantidade}}"
Flow completo para testar:
{
"name": "Teste Pipedrive - Listar Deals",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "pipedrive_1",
"type": "pipedrive",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Listar Deals",
"resource": "deals",
"operation": "list",
"config": {
"apiToken": "{{pipedrive_token}}",
"companyDomain": "sua-empresa"
},
"limit": 10,
"responseVariable": "lista_deals"
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Mostrar Total",
"parameters": {
"message": "Total de deals: {{lista_deals.data.length}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 700, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "pipedrive_1" },
{ "source": "pipedrive_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: Executar flow mostrará total de deals retornados.
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| resource | string | Sim | Deve ser "deals" |
| operation | string | Sim | Deve ser "list" |
| config.apiToken | string | Sim | Token API |
| config.companyDomain | string | Sim | Subdomínio |
| limit | number | Não | Máximo deals (padrão: 100) |
| responseVariable | string | Não | Variável resposta |
Exemplo 1: Dashboard de Vendas
Objetivo: Mostrar resumo de deals em aberto
JSON para Importar
{
"name": "Pipedrive - Dashboard Vendas",
"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": "Aguarde",
"parameters": {
"message": "📊 Carregando seu dashboard..."
}
}
},
{
"id": "pipedrive_1",
"type": "pipedrive",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Buscar Deals",
"resource": "deals",
"operation": "list",
"config": {
"apiToken": "{{pipedrive_token}}",
"companyDomain": "sua-empresa"
},
"limit": 50,
"responseVariable": "deals"
}
},
{
"id": "message_2",
"type": "message",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Dashboard",
"parameters": {
"message": "📈 DASHBOARD DE VENDAS\n\n📦 Total de Deals: {{deals.data.length}}\n💰 Valor Total: Calculando...\n✅ Status: Ativo"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 900, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "message_1" },
{ "source": "message_1", "target": "pipedrive_1" },
{ "source": "pipedrive_1", "target": "message_2" },
{ "source": "message_2", "target": "end_1" }
]
}
Saída esperada:
Sistema: 📊 Carregando seu dashboard...
Sistema: 📈 DASHBOARD DE VENDAS
📦 Total de Deals: 15
💰 Valor Total: Calculando...
✅ Status: Ativo
Resposta do Node
{
"success": true,
"data": [
{
"id": 123,
"title": "Deal 1 - Cliente A",
"value": 5000,
"currency": "BRL",
"status": "open",
"stage_id": 2
},
{
"id": 124,
"title": "Deal 2 - Cliente B",
"value": 8000,
"currency": "BRL",
"status": "open",
"stage_id": 3
}
],
"additional_data": {
"pagination": {
"start": 0,
"limit": 100,
"more_items_in_collection": false
}
}
}
Boas Práticas
✅ SIM:
- Use limit apropriado para evitar lentidão
- Itere sobre array retornado com LOOP
- Filtre deals após buscar usando CONDITION
- Cache resultados se usar múltiplas vezes
❌ NÃO:
- Buscar todos os deals sem necessidade
- Ignorar paginação quando há muitos deals
- Processar lista sem validar se retornou dados
Dicas
💡 Dica 1: Combine com LOOP para processar cada deal individualmente.
💡 Dica 2: Use ACCUMULATOR para somar valores totais de todos os deals.
💡 Dica 3: Filtre deals por status/estágio após buscar para análises específicas.
Próximos Nodes
→ PIPEDRIVE_DEAL_GET - Buscar deal específico → PIPEDRIVE_DEAL_CREATE - Criar novo deal