LINKEDIN LEAD GEN GET LEADS - Obter Leads de Formulário
O que é esta operação?
O LinkedIn Lead Gen Get Leads é a operação responsável por obter leads capturados em um formulário específico do LinkedIn Lead Generation Forms.
Por que esta operação existe?
Integração de leads com CRM e automação de vendas. O Lead Gen Get Leads existe para:
- CRM integration: Enviar leads automaticamente para Salesforce/HubSpot
- Follow-up automatizado: Disparar e-mails para novos leads
- Qualificação: Processar e qualificar leads automaticamente
- Analytics: Analisar dados de leads capturados
- Nurturing: Adicionar leads a fluxos de nutrição
Como funciona internamente?
Quando o Lead Gen Get Leads é executado, o sistema:
- Valida access token com escopo
r_ads - Extrai formId dos parâmetros
- Faz GET para
/v2/leadFormResponses?q=owner&owner={formId} - Retorna array de leads com dados do formulário
- Processa campos customizados
- Armazena resultado na variável especificada
Código interno (linkedin.executor.ts:202-210):
case 'get_leads':
// Get leads from a form
const formId = this.replaceVariables(data.formId || '', context.variables);
const leadsResponse = await axios.get(`${baseUrl}/leadFormResponses?q=owner&owner=${formId}`, {
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json',
},
});
return leadsResponse.data;
Quando você DEVE usar esta operação?
Use Lead Gen Get Leads sempre que precisar capturar e processar leads:
Casos de uso:
- LinkedIn → Salesforce: Criar leads no CRM automaticamente
- LinkedIn → Mailchimp: Adicionar a listas de e-mail
- Qualificação automática: Filtrar leads por critérios
- Follow-up: Enviar e-mail de boas-vindas imediato
- Webhook: Notificar time de vendas sobre novos leads
- Analytics: Gerar relatórios de conversão
Parâmetros Detalhados
formId (string, obrigatório)
O que é: ID do formulário de Lead Gen do LinkedIn.
Como obter: - Usando Lead Gen List Forms - LinkedIn Campaign Manager - URL do formulário
Flow completo para testar:
{
"name": "LinkedIn - Buscar Leads de Formulário",
"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": "Config",
"parameters": {
"name": "linkedin_token",
"value": "SEU_TOKEN"
}
}
},
{
"id": "variable_2",
"type": "variable",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Form ID",
"parameters": {
"name": "form_id",
"value": "12345"
}
}
},
{
"id": "linkedin_1",
"type": "linkedin",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Buscar Leads",
"resource": "lead_gen",
"operation": "get_leads",
"config": {
"accessToken": "{{linkedin_token}}"
},
"formId": "{{form_id}}",
"responseVariable": "leads"
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Mostrar Total",
"parameters": {
"message": "📊 Total de leads: {{leads.paging.total}}\n\nPrimeiro lead:\nNome: {{leads.elements[0].firstName}}\nEmail: {{leads.elements[0].email}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1100, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "variable_1" },
{ "source": "variable_1", "target": "variable_2" },
{ "source": "variable_2", "target": "linkedin_1" },
{ "source": "linkedin_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| resource | string | Sim | Sempre "lead_gen" |
| operation | string | Sim | Sempre "get_leads" |
| formId | string | Sim | ID do formulário |
| config.accessToken | string | Sim | Token OAuth 2.0 com r_ads |
| responseVariable | string | Não | Nome da variável de resposta (padrão: linkedInResult) |
Exemplo 1: LinkedIn → Salesforce Integration
Objetivo: Buscar novos leads e criar no Salesforce automaticamente
JSON para Importar
{
"name": "LinkedIn Leads → 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": "Token LinkedIn",
"parameters": {
"name": "linkedin_token",
"value": "SEU_LINKEDIN_TOKEN"
}
}
},
{
"id": "linkedin_get_leads",
"type": "linkedin",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Buscar Leads",
"resource": "lead_gen",
"operation": "get_leads",
"config": {
"accessToken": "{{linkedin_token}}"
},
"formId": "12345",
"responseVariable": "linkedinLeads"
}
},
{
"id": "loop_1",
"type": "loop",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Para Cada Lead",
"parameters": {
"array": "{{linkedinLeads.elements}}",
"itemVariable": "lead"
}
}
},
{
"id": "message_log",
"type": "message",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Log Lead",
"parameters": {
"message": "💾 Criando lead no Salesforce:\n{{lead.firstName}} {{lead.lastName}}\n{{lead.email}}"
}
}
},
{
"id": "message_final",
"type": "message",
"position": { "x": 1100, "y": 100 },
"data": {
"label": "Concluído",
"parameters": {
"message": "✅ {{linkedinLeads.paging.total}} leads sincronizados com Salesforce!"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1300, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "variable_1" },
{ "source": "variable_1", "target": "linkedin_get_leads" },
{ "source": "linkedin_get_leads", "target": "loop_1" },
{ "source": "loop_1", "target": "message_log" },
{ "source": "message_log", "target": "loop_1" },
{ "source": "loop_1", "target": "message_final", "label": "done" },
{ "source": "message_final", "target": "end_1" }
]
}
Saída esperada:
Sistema: 💾 Criando lead no Salesforce:
José Roberto
jose@exemplo.com
Sistema: 💾 Criando lead no Salesforce:
Maria Silva
maria@exemplo.com
Sistema: ✅ 25 leads sincronizados com Salesforce!
Exemplo 2: Qualificação e Follow-up Automatizado
Objetivo: Qualificar leads e enviar e-mail personalizado
JSON para Importar
{
"name": "LinkedIn - Qualificar e Enviar Email",
"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": "Token",
"parameters": {
"name": "linkedin_token",
"value": "SEU_TOKEN"
}
}
},
{
"id": "linkedin_leads",
"type": "linkedin",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Buscar Leads",
"resource": "lead_gen",
"operation": "get_leads",
"config": {
"accessToken": "{{linkedin_token}}"
},
"formId": "12345",
"responseVariable": "leads"
}
},
{
"id": "loop_1",
"type": "loop",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Para Cada Lead",
"parameters": {
"array": "{{leads.elements}}",
"itemVariable": "lead"
}
}
},
{
"id": "condition_1",
"type": "condition",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Tem Email Corporativo?",
"parameters": {
"variable": "lead.email",
"operator": "not_contains",
"value": "@gmail.com"
}
}
},
{
"id": "message_qualified",
"type": "message",
"position": { "x": 1100, "y": 50 },
"data": {
"label": "Lead Qualificado",
"parameters": {
"message": "✅ Lead qualificado:\n{{lead.firstName}} {{lead.lastName}}\n{{lead.company}}\n\nEnviando e-mail de boas-vindas..."
}
}
},
{
"id": "message_not_qualified",
"type": "message",
"position": { "x": 1100, "y": 150 },
"data": {
"label": "Lead Não Qualificado",
"parameters": {
"message": "⚠️ E-mail pessoal detectado, pulando..."
}
}
},
{
"id": "message_final",
"type": "message",
"position": { "x": 1300, "y": 100 },
"data": {
"label": "Resumo",
"parameters": {
"message": "📊 Processamento concluído!\n\nTotal de leads: {{leads.paging.total}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1500, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "variable_1" },
{ "source": "variable_1", "target": "linkedin_leads" },
{ "source": "linkedin_leads", "target": "loop_1" },
{ "source": "loop_1", "target": "condition_1" },
{ "source": "condition_1", "target": "message_qualified", "label": "true" },
{ "source": "condition_1", "target": "message_not_qualified", "label": "false" },
{ "source": "message_qualified", "target": "loop_1" },
{ "source": "message_not_qualified", "target": "loop_1" },
{ "source": "loop_1", "target": "message_final", "label": "done" },
{ "source": "message_final", "target": "end_1" }
]
}
Resposta do Node
{
"paging": {
"count": 25,
"start": 0,
"total": 127
},
"elements": [
{
"id": "abc123",
"firstName": "José",
"lastName": "Roberto",
"email": "jose@empresa.com",
"company": "Tech Startup Inc",
"phone": "+5511999999999",
"submittedAt": 1642512000000,
"customQuestions": []
}
]
}
Campos Retornados
| Campo | Tipo | Descrição |
|---|---|---|
| paging.total | number | Total de leads no formulário |
| elements | array | Array de leads |
| elements[].id | string | ID único do lead |
| elements[].firstName | string | Primeiro nome |
| elements[].lastName | string | Sobrenome |
| elements[].email | string | |
| elements[].company | string | Nome da empresa |
| elements[].phone | string | Telefone (se coletado) |
| elements[].submittedAt | number | Timestamp da submissão |
| elements[].customQuestions | array | Perguntas customizadas |
Boas Práticas
✅ SIM: - Use LOOP para processar cada lead individualmente - Valide dados antes de enviar para CRM - Implemente deduplicação (evite leads duplicados) - Use CONDITION para qualificar leads - Armazene último timestamp processado (para incremental sync) - Use DELAY entre chamadas em loops
❌ NÃO: - Não processe todos os leads repetidamente (use paginação) - Não ignore validação de e-mail - Não envie spam para leads - Não ignore permissões LGPD/GDPR
Dicas
💡 Incremental sync: Salve último submittedAt processado para buscar apenas novos
💡 Deduplicação: Verifique se lead já existe no CRM antes de criar
💡 Qualificação: Use regras de negócio (e-mail corporativo, empresa, etc.)
💡 Follow-up: Envie e-mail de boas-vindas em até 5 minutos
💡 Paginação: API retorna 100 leads por página, use paging para buscar mais
Casos de Uso Avançados
1. Sync Incremental (apenas novos leads)
VARIABLE (lastSync) → LINKEDIN (get_leads) → FILTER (submittedAt > lastSync) → CRM
2. Lead Scoring
LINKEDIN (get_leads) → LOOP → CONDITION (company size) → VARIABLE (score) → CRM
3. Multi-channel Follow-up
LINKEDIN (get_leads) → LOOP → EMAIL + WHATSAPP + SALESFORCE (create lead)
Erros Comuns
Erro 401: Unauthorized
Causa: Token sem escopo r_ads
Solução: Solicite permissões corretas no OAuth
Erro 404: Form not found
Causa: formId inválido ou formulário deletado Solução: Valide formId usando list_forms primeiro
Erro: Empty elements array
Causa: Formulário não tem leads ainda Solução: Valide paging.total antes de processar
Próximo Node
→ Lead Gen List Forms - Listar formulários disponíveis → Profile Get - Obter dados do perfil → Post Create - Criar publicação