HUBSPOT_DEAL_CREATE - Criar Negócio no HubSpot
O que é este Node?
O HUBSPOT_DEAL_CREATE é o node responsável por criar deals (negócios/oportunidades) no HubSpot CRM, permitindo registrar oportunidades de vendas e gerenciar pipeline diretamente do WhatsApp.
Por que este Node existe?
Gerenciar oportunidades de venda é essencial para fechar negócios. O HUBSPOT_DEAL_CREATE existe para:
- Pipeline Automatizado: Criar oportunidades automaticamente durante conversas de vendas
- Rastreamento de Receita: Registrar valor potencial e estágio de cada negócio
- Associação com Contatos: Vincular deals a contatos e empresas
- Gestão de Vendas: Permitir que equipe de vendas acompanhe progresso
Como funciona internamente?
Quando o HUBSPOT_DEAL_CREATE é executado, o sistema:
- Recebe properties e associations: Dados do deal e vínculos com contatos/empresas
- Processa variáveis: Substitui variáveis do contexto
- Monta payload: Cria objeto com properties e associations
- Autentica na API: Usa Bearer Token
- Faz requisição POST: Cria deal em
/crm/v3/objects/deals - Retorna ID do deal: HubSpot responde com deal criado
- Armazena resultado: Salva na variável configurada
Código interno (hubspot.executor.ts:118-127):
case 'create': {
const properties = JSON.parse(this.replaceVariables(JSON.stringify(data.properties), context.variables));
const associations = data.associations ? JSON.parse(this.replaceVariables(JSON.stringify(data.associations), context.variables)) : undefined;
const response = await axios.post(
baseUrl,
{ properties, associations },
{ headers: { 'Authorization': `Bearer ${apiKey}`, 'Content-Type': 'application/json' } }
);
return response.data;
}
Quando você DEVE usar este Node?
Use HUBSPOT_DEAL_CREATE quando precisar registrar oportunidades de venda:
Casos de uso
- Interesse em produto: Cliente manifesta interesse, cria deal automaticamente
- Solicitação de proposta: Criar deal quando cliente solicita orçamento
- Upsell/Cross-sell: Registrar oportunidade de venda adicional para cliente existente
- Conversão de lead: Transformar lead qualificado em oportunidade de venda
- Renovação: Criar deal para renovação de contrato
Quando NÃO usar HUBSPOT_DEAL_CREATE
- Deal já existe: Use HUBSPOT_DEAL_UPDATE para atualizar
- Só quer consultar: Use HUBSPOT_DEAL_GET ou HUBSPOT_DEAL_SEARCH
Parâmetros Detalhados
properties (object, obrigatório)
O que é: Propriedades do deal.
Propriedades comuns:
- dealname (string): Nome do negócio
- amount (number): Valor em dinheiro
- closedate (date): Data prevista de fechamento
- dealstage (string): Estágio no pipeline
- pipeline (string): ID do pipeline
- hubspot_owner_id (string): ID do vendedor responsável
associations (array, opcional)
O que é: Array para associar deal a contatos ou empresas.
Formato:
{
"associations": [
{
"to": { "id": "12345" },
"types": [
{
"associationCategory": "HUBSPOT_DEFINED",
"associationTypeId": 3
}
]
}
]
}
AssociationTypeId:
- 3: Deal to Contact
- 5: Deal to Company
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| resource | string | Sim | Deve ser "deals" |
| operation | string | Sim | Deve ser "create" |
| config.apiKey | string | Sim | API Key do HubSpot |
| properties | object | Sim | Propriedades do deal |
| associations | array | Não | Associações com contacts/companies |
| responseVariable | string | Não | Variável para resultado |
Exemplo 1: Criar Deal Simples
Objetivo: Criar oportunidade de venda básica
JSON para Importar
{
"name": "HubSpot - Criar Deal Básico",
"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 do Deal",
"parameters": {
"message": "Qual produto/serviço interessa?",
"variableName": "produto"
}
}
},
{
"id": "number_1",
"type": "number",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Valor",
"parameters": {
"message": "Qual o valor estimado (R$)?",
"variableName": "valor",
"min": 0,
"decimals": 2
}
}
},
{
"id": "hubspot_1",
"type": "hubspot",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Criar Deal",
"parameters": {
"resource": "deals",
"operation": "create",
"config": {
"apiKey": "{{hubspot_api_key}}"
},
"properties": {
"dealname": "Deal - {{produto}}",
"amount": "{{valor}}",
"dealstage": "appointmentscheduled",
"pipeline": "default"
},
"responseVariable": "new_deal"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Confirmação",
"parameters": {
"message": "✅ Oportunidade criada! Nossa equipe entrará em contato para discutir {{produto}} no valor de R${{valor}}."
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1100, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "input_1" },
{ "source": "input_1", "target": "number_1" },
{ "source": "number_1", "target": "hubspot_1" },
{ "source": "hubspot_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Saída esperada:
Sistema: Qual produto/serviço interessa?
Usuário: Plano Enterprise
Sistema: Qual o valor estimado (R$)?
Usuário: 50000
Sistema: ✅ Oportunidade criada! Nossa equipe entrará em contato para discutir Plano Enterprise no valor de R$50000.
Exemplo 2: Deal Associado a Contato
Objetivo: Criar deal e vincular a contato existente
JSON para Importar
{
"name": "HubSpot - Deal com Associação",
"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": "Set Contact ID",
"parameters": {
"variableName": "contact_id",
"value": "12345678901"
}
}
},
{
"id": "input_1",
"type": "input",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Nome Deal",
"parameters": {
"message": "Qual o nome da oportunidade?",
"variableName": "deal_name"
}
}
},
{
"id": "hubspot_1",
"type": "hubspot",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Criar Deal Associado",
"parameters": {
"resource": "deals",
"operation": "create",
"config": {
"apiKey": "{{hubspot_api_key}}"
},
"properties": {
"dealname": "{{deal_name}}",
"amount": "10000",
"dealstage": "qualifiedtobuy"
},
"associations": [
{
"to": { "id": "{{contact_id}}" },
"types": [
{
"associationCategory": "HUBSPOT_DEFINED",
"associationTypeId": 3
}
]
}
]
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Sucesso",
"parameters": {
"message": "Deal {{deal_name}} criado e associado ao contato!"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1100, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "variable_1" },
{ "source": "variable_1", "target": "input_1" },
{ "source": "input_1", "target": "hubspot_1" },
{ "source": "hubspot_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Resposta do Node
{
"id": "98765432109",
"properties": {
"dealname": "Deal - Plano Enterprise",
"amount": "50000",
"dealstage": "appointmentscheduled",
"createdate": "2025-01-15T10:30:00.000Z"
},
"createdAt": "2025-01-15T10:30:00.000Z"
}
Boas Práticas
✅ SIM: - Sempre defina dealname descritivo - Especifique amount quando possível - Use dealstage apropriado para o estágio atual - Associe a contato ou empresa existente - Defina closedate estimada - Atribua a vendedor responsável (hubspot_owner_id)
❌ NÃO: - Criar deals sem valor definido - Esquecer de associar a contato - Usar dealstage inexistente no pipeline - Criar duplicatas - busque antes
Dicas
💡 Dica 1: Combine HUBSPOT_CONTACT_CREATE → HUBSPOT_DEAL_CREATE para criar lead e oportunidade juntos.
💡 Dica 2: Use propriedades customizadas para rastrear origem do deal (WhatsApp, Website, etc.).
💡 Dica 3: Após criar deal, use HUBSPOT_TASK_CREATE para criar tarefa de follow-up.
Próximos Nodes
→ HUBSPOT_DEAL_UPDATE - Atualizar deal existente → HUBSPOT_DEAL_GET - Buscar dados do deal → HUBSPOT_CONTACT_CREATE - Criar contato antes do deal