Problema resuelto
Como consultor B2B, enfrentas el desafío constante de:
- Enviar emails personalizados a cientos de prospectos
- Hacer seguimiento sistemático sin ser molesto
- Calificar leads antes de invertir tiempo en llamadas
- Mantener consistencia en el mensaje y branding
- Escalar sin perder el toque personal
Esta guía te enseñará a construir un sistema de prospección automatizada con lemlist + n8n que convierte emails fríos en llamadas agendadas.
Stack tecnológico necesario
- lemlist: Plataforma de email outreach personalizado
- n8n Cloud: Automatización y calificación de leads
- LinkedIn Sales Navigator: Enriquecimiento de datos (opcional)
- Calendly/HubSpot Meetings: Agendamiento automático
- Airtable/Notion: Base de datos de prospectos
Diagrama del flujo completo
Lista de prospectos → Enriquecimiento → Secuencia lemlist → Calificación → Agendamiento → CRM
Paso 1: Preparar tu lista de prospectos ideal
Definir el ICP (Ideal Customer Profile)
// Ejemplo de criterios para consultoría tecnológica
const icpCriteria = {
companySize: "50-500 empleados",
industry: ["SaaS", "FinTech", "E-commerce"],
revenue: "5M-50M EUR",
techStack: ["HubSpot", "Salesforce", "Pipedrive"],
geography: "España, Portugal, LATAM"
};
Fuentes de prospectos
- LinkedIn Sales Navigator: Búsqueda avanzada por filtros
- Apollo.io: Base de datos B2B con emails verificados
- Hunter.io: Emails por dominio y empresa
- Manuales: Investigación directa para clientes de alto valor
Paso 2: Enriquecimiento automático con n8n
Crea un workflow en n8n para enriquecer cada prospecto:
// Función de enriquecimiento
const enrichProspect = async (prospect) => {
// 1. Verificar email con Hunter.io
const emailVerification = await fetch('https://api.hunter.io/v2/email-verifier', {
params: { email: prospect.email, api_key: HUNTER_API_KEY }
});
// 2. Obtener datos de empresa con LinkedIn
const companyData = await linkedinScraper(prospect.company);
// 3. Calificar con puntuación
const score = calculateLeadScore(prospect, companyData);
return {
...prospect,
emailValid: emailVerification.data.result === 'deliverable',
companySize: companyData.employees,
industry: companyData.industry,
leadScore: score
};
};
Paso 3: Configurar secuencia en lemlist
Email 1: Apertura personalizada
const emailTemplate1 = {
subject: "Idea para mejorar {{companyName}}",
body: `
Hola {{firstName}},
Vi que {{companyName}} está creciendo en {{industry}} y noté algo interesante:
{{personalizedObservation}}
He ayudado a empresas como {{similarCompany}} a {{specificResult}}.
¿Te interesaría una llamada de 15 minutos la próxima semana para explorar esto?
Saludos,
Tu Nombre
`,
personalization: [
{ field: "companyName", source: "company" },
{ field: "industry", source: "enrichment" },
{ field: "personalizedObservation", source: "research" },
{ field: "similarCompany", source: "caseStudies" }
]
};
Email 2: Seguimiento con valor
const emailTemplate2 = {
subject: "Re: Idea para {{companyName}}",
body: `
Hola {{firstName}},
¿Tuviste oportunidad de revisar mi email anterior?
Te comparto algo concreto que implementamos para {{competitorName}}:
{{caseStudySnippet}}
El resultado: {{measurableResult}} en {{timeframe}}.
Si esto resuena contigo, aquí tienes mi calendario: {{calendlyLink}}
Saludos,
Tu Nombre
`,
delay: "3 días",
condition: "no reply to email 1"
};
Email 3: Breakup email
const emailTemplate3 = {
subject: "Último intento - {{companyName}}",
body: `
Hola {{firstName}},
He intentado contactarte sin éxito, así que asumiré que no es el momento adecuado.
Si las cosas cambian, aquí tienes un recurso que puede ayudarte:
{{freeResourceLink}}
Te deseo mucho éxito con {{companyName}}.
Saludos,
Tu Nombre
`,
delay: "7 días",
condition: "no reply to email 2"
};
Paso 4: Calificación automática de respuestas
Configura n8n para procesar respuestas automáticamente:
// Analizar respuesta y calificar
const analyzeReply = async (emailContent, prospect) => {
const positiveSignals = [
"interesado", "quién más", "casos de éxito",
"cómo funciona", "precios", "agendar"
];
const negativeSignals = [
"no gracias", "no interesado", "eliminar",
"spam", "no es nuestro caso"
];
const hasPositive = positiveSignals.some(signal =>
emailContent.toLowerCase().includes(signal)
);
const hasNegative = negativeSignals.some(signal =>
emailContent.toLowerCase().includes(signal)
);
let qualification = 'neutral';
if (hasPositive) qualification = 'hot';
if (hasNegative) qualification = 'disqualified';
return {
qualification,
needsFollowUp: hasPositive && !emailContent.includes('agendar'),
suggestedAction: getSuggestedAction(qualification)
};
};
Paso 5: Agendamiento automático
Integra con Calendly o similar para agendamiento:
// Detectar intención de agendar y enviar enlace
const handleSchedulingIntent = async (prospect, emailContent) => {
if (emailContent.includes('agendar') || emailContent.includes('llamada')) {
// Enviar email con enlace de calendario
await lemlistAPI.sendEmail({
to: prospect.email,
template: 'scheduling',
variables: {
calendlyLink: `https://calendly.com/your-name/30min?name=${prospect.firstName}&email=${prospect.email}`,
preparationTips: "Prepara tus objetivos actuales y desafíos principales"
}
});
// Actualizar en CRM
await crmAPI.updateStage(prospect.id, 'Meeting Scheduled');
// Notificar a Slack
await slackAPI.postMessage({
channel: '#sales',
text: `🎉 Nueva reunión agendada con ${prospect.companyName}!`
});
}
};
Paso 6: Dashboard de seguimiento
Crea un dashboard con métricas clave:
const campaignMetrics = {
sent: 150,
opened: 75, // 50% open rate
replied: 45, // 30% reply rate
positive: 18, // 12% qualified
meetings: 9, // 6% meeting rate
conversion: 3, // 2% closed
revenue: 45000 // EUR
};
const kpis = {
costPerLead: 45, // EUR
costPerMeeting: 225, // EUR
meetingToClose: 33, // %
averageDealSize: 15000 // EUR
};
Plantillas de personalización efectivas
Por tamaño de empresa
const companySizeTemplates = {
startup: "Entiendo que como startup necesitas soluciones que escalen rápidamente...",
sme: "Para empresas de tu tamaño, la optimización de procesos es clave para competir...",
enterprise: "En organizaciones de tu envergadura, la integración con sistemas existentes es fundamental..."
};
Por industria
const industryInsights = {
saas: "Vi que usan {{techStack}}. Podríamos reducir el churn en un 15% con...",
fintech: "Dada la regulación actual en {{country}}, la automatización de compliance es...",
ecommerce: "Con su tasa de conversión actual, una optimización del checkout podría generar..."
};
Métricas para optimizar
Métricas de email
- Open rate: Objetivo >40%
- Reply rate: Objetivo >25%
- Positive reply rate: Objetivo >10%
- Unsubscribe rate: Mantener <2%
Métricas de negocio
- Cost per lead: <50 EUR
- Lead to meeting: >20%
- Meeting to close: >25%
- ROI del funnel: >300%
Casos de uso avanzados
Secuencia multicanal
// Combinar email + LinkedIn
if (prospect.linkedinUrl && !prospect.emailReplied) {
await linkedinAPI.connect(prospect.linkedinUrl);
await linkedinAPI.sendMessage({
profile: prospect.linkedinUrl,
message: `Hola ${prospect.firstName}, te envié un email sobre {{topic}}. ¿Lo viste?`
});
}
A/B testing automático
// Testear diferentes subject lines
const subjectVariations = [
"Idea para {{companyName}}",
"{{firstName}}, pregunta sobre {{companyName}}",
"Oportunidad para {{industry}}"
];
// Rotar automáticamente y medir resultados
const abTestResults = await runABTest(subjectVariations, prospectSegment);
Resumen de beneficios
✅ Ahorro de 15+ horas semanales en prospección manual
✅ Tasa de respuesta 3x mayor con personalización a escala
✅ Calificación automática de leads
✅ Escalabilidad infinita sin perder calidad
✅ Datos en tiempo real para optimización continua
Próximos pasos
- Implementa la secuencia básica esta semana
- Mide resultados durante 30 días
- Optimiza plantillas según respuestas
- Expande a otros canales (LinkedIn, llamadas)
Con este sistema, podrás prospectar sistemáticamente mientras te enfocas en lo que realmente importa: cerrar deals y entregar valor a tus clientes.