Lead routing: Asignar leads por criterios
Distribuye leads automáticamente entre tu equipo según criterios definidos.
El lead routing automatizado asegura que cada lead llegue al vendedor correcto en el momento correcto. En esta lección, construirás un sistema completo de distribución de leads que elimina la asignación manual y reduce el tiempo de respuesta.
Por qué importa el lead routing
Estadísticas clave:
- Responder en los primeros 5 minutos aumenta 9x la probabilidad de contacto
- El 78% de los clientes compran al primer vendedor que responde
- La asignación manual promedio toma 30+ minutos
Un sistema de routing automatizado puede reducir el tiempo de asignación a segundos.
Distribución por criterios específicos
Routing por geografía
Zap: Asignar lead por país/región
Trigger: CRM - New Lead/Contact Action 1: Code by Zapier - Determine Owner Action 2: CRM - Update Lead Owner Action 3: Slack - Notify Owner
// Código para asignación geográfica
const country = inputData.country?.toLowerCase() || '';
const state = inputData.state?.toLowerCase() || '';
// Definir territorios
const territories = {
'north_america': {
owner: 'rep_na@empresa.com',
countries: ['united states', 'usa', 'canada', 'mexico'],
slackId: 'U12345NA'
},
'latam': {
owner: 'rep_latam@empresa.com',
countries: ['argentina', 'brazil', 'chile', 'colombia', 'peru'],
slackId: 'U12345LA'
},
'europe': {
owner: 'rep_eu@empresa.com',
countries: ['spain', 'germany', 'france', 'uk', 'italy'],
slackId: 'U12345EU'
},
'apac': {
owner: 'rep_apac@empresa.com',
countries: ['australia', 'japan', 'singapore', 'india'],
slackId: 'U12345AP'
}
};
// Encontrar territorio
let assignedTerritory = 'default';
for (const [territory, data] of Object.entries(territories)) {
if (data.countries.some(c => country.includes(c))) {
assignedTerritory = territory;
break;
}
}
const assignment = territories[assignedTerritory] || {
owner: 'sales_manager@empresa.com',
slackId: 'U12345MG'
};
return {
ownerEmail: assignment.owner,
slackUserId: assignment.slackId,
territory: assignedTerritory
};
Routing por tamaño de empresa
Zap: Asignar según número de empleados o revenue
// Código para asignación por tamaño
const employees = parseInt(inputData.companySize) || 0;
const revenue = parseFloat(inputData.annualRevenue) || 0;
let segment, owner, slackId;
// Enterprise: 1000+ empleados o $50M+ revenue
if (employees >= 1000 || revenue >= 50000000) {
segment = 'enterprise';
owner = 'enterprise_team@empresa.com';
slackId = 'U12345ENT';
}
// Mid-Market: 100-999 empleados o $5M-$50M revenue
else if (employees >= 100 || revenue >= 5000000) {
segment = 'mid_market';
owner = 'midmarket_team@empresa.com';
slackId = 'U12345MM';
}
// SMB: 10-99 empleados o $500K-$5M revenue
else if (employees >= 10 || revenue >= 500000) {
segment = 'smb';
owner = 'smb_team@empresa.com';
slackId = 'U12345SMB';
}
// Startup: <10 empleados
else {
segment = 'startup';
owner = 'startup_sdr@empresa.com';
slackId = 'U12345SU';
}
return { segment, owner, slackId };
Routing por industria
Zap: Asignar a especialista de industria
// Código para asignación por industria
const industry = inputData.industry?.toLowerCase() || '';
const industrySpecialists = {
'technology': {
keywords: ['tech', 'software', 'saas', 'it', 'technology'],
owner: 'tech_specialist@empresa.com'
},
'healthcare': {
keywords: ['health', 'medical', 'pharma', 'hospital', 'clinic'],
owner: 'health_specialist@empresa.com'
},
'finance': {
keywords: ['bank', 'finance', 'insurance', 'fintech', 'investment'],
owner: 'finance_specialist@empresa.com'
},
'retail': {
keywords: ['retail', 'ecommerce', 'store', 'consumer'],
owner: 'retail_specialist@empresa.com'
},
'manufacturing': {
keywords: ['manufacturing', 'industrial', 'factory', 'production'],
owner: 'manufacturing_specialist@empresa.com'
}
};
let assignedSpecialist = 'general_sales@empresa.com';
let assignedIndustry = 'general';
for (const [ind, data] of Object.entries(industrySpecialists)) {
if (data.keywords.some(kw => industry.includes(kw))) {
assignedSpecialist = data.owner;
assignedIndustry = ind;
break;
}
}
return {
specialist: assignedSpecialist,
industrySegment: assignedIndustry
};
Asignación Round-Robin
El round-robin distribuye leads equitativamente entre el equipo de ventas.
Implementación con Google Sheets como contador
Zap: Round-robin con registro en Sheets
Trigger: CRM - New Lead Action 1: Google Sheets - Get Row (current counter) Action 2: Code - Calculate next rep Action 3: Google Sheets - Update Row (increment counter) Action 4: CRM - Update Lead Owner
Estructura de Google Sheet:
| Rep Name | Email | Current Count | Active |
|-----------------|------------------------|---------------|--------|
| Ana García | ana@empresa.com | 45 | TRUE |
| Carlos López | carlos@empresa.com | 44 | TRUE |
| María Rodríguez | maria@empresa.com | 45 | TRUE |
| Juan Martínez | juan@empresa.com | 0 | FALSE |
// Código para round-robin
const reps = inputData.reps; // Array de reps activos
const currentCounts = inputData.counts; // Array de conteos
// Encontrar rep con menos leads
let minCount = Infinity;
let selectedRep = null;
let selectedIndex = -1;
reps.forEach((rep, index) => {
if (rep.active && currentCounts[index] < minCount) {
minCount = currentCounts[index];
selectedRep = rep;
selectedIndex = index;
}
});
return {
assignedRep: selectedRep.email,
assignedRepName: selectedRep.name,
newCount: minCount + 1,
rowToUpdate: selectedIndex + 2 // +2 por header y 0-index
};
Round-robin con Zapier Storage
Alternativa sin Google Sheets:
Paso 1: Storage by Zapier - Get Value
Key: "current_rep_index"
Paso 2: Code by Zapier - Calculate next
const reps = ['ana@empresa.com', 'carlos@empresa.com', 'maria@empresa.com'];
const currentIndex = parseInt(inputData.currentIndex) || 0;
const nextIndex = (currentIndex + 1) % reps.length;
return {
assignedRep: reps[currentIndex],
nextIndex: nextIndex.toString()
};
Paso 3: Storage by Zapier - Set Value
Key: "current_rep_index"
Value: {{nextIndex}}
Paso 4: CRM - Update Lead Owner
Notificaciones a vendedores
Notificación inmediata en Slack
Mensaje de asignación:
🆕 *Nuevo lead asignado*
*Contacto:* {{Lead Name}}
*Empresa:* {{Company Name}}
*Email:* {{Email}}
*Teléfono:* {{Phone}}
*Detalles:*
• Industria: {{Industry}}
• Tamaño: {{Company Size}} empleados
• Fuente: {{Lead Source}}
• Score: {{Lead Score}}
*¿Por qué tú?*
{{Assignment Reason}}
⏰ Tiempo objetivo de respuesta: 5 minutos
[Ver lead en CRM]({{Lead URL}})
Notificación por email con contexto
Asunto: 🔔 Nuevo lead: {{Company Name}} - {{Lead Score}} puntos
Cuerpo:
Hola {{Rep Name}},
Te ha sido asignado un nuevo lead:
INFORMACIÓN DEL CONTACTO
------------------------
Nombre: {{Lead Name}}
Empresa: {{Company Name}}
Cargo: {{Job Title}}
Email: {{Email}}
Teléfono: {{Phone}}
CONTEXTO
--------
• Fuente: {{Lead Source}}
• Score: {{Lead Score}}/100
• Industria: {{Industry}}
• Tamaño: {{Company Size}}
• Ubicación: {{Country}}
RAZÓN DE ASIGNACIÓN
-------------------
{{Assignment Reason}}
ACCIONES SUGERIDAS
------------------
1. Revisar perfil de LinkedIn: {{LinkedIn URL}}
2. Revisar website: {{Company Website}}
3. Contactar dentro de los próximos 5 minutos
[Abrir lead en CRM]({{Lead URL}})
---
Este lead fue asignado automáticamente por el sistema de routing.
Escalación si no hay respuesta
Zap: Escalar lead sin contacto
Trigger: Schedule - Every 30 minutes Action 1: CRM - Find Leads (no activity, assigned > 15 min ago) Action 2: Slack - Send Message to Manager Action 3: CRM - Add Note
Mensaje de escalación:
⚠️ *Lead sin contactar - Escalación*
El siguiente lead fue asignado hace más de 15 minutos sin registro de contacto:
*Lead:* {{Lead Name}} - {{Company}}
*Asignado a:* {{Owner Name}}
*Asignado hace:* {{Time Since Assignment}} minutos
*Score:* {{Lead Score}}
Por favor verifica la disponibilidad del rep.
[Ver lead]({{Lead URL}})
Proyecto: Sistema completo de lead routing
Construye un sistema que combine todos los criterios:
Arquitectura del sistema
1. LEAD ENTRA AL SISTEMA
↓
2. ENRIQUECER DATOS (Clearbit/Hunter)
↓
3. CALCULAR SCORE
↓
4. DETERMINAR SEGMENTO
├── Enterprise (score > 80, employees > 1000)
├── Mid-Market (score 50-80, employees 100-1000)
└── SMB (score < 50, employees < 100)
↓
5. APLICAR ROUTING
├── Por geografía (territorio)
├── Por industria (especialista)
└── Round-robin dentro del pool
↓
6. ASIGNAR Y NOTIFICAR
├── Actualizar CRM
├── Notificar Slack
├── Enviar email
└── Crear tarea de seguimiento
↓
7. MONITOREAR RESPUESTA
├── Verificar contacto en 15 min
└── Escalar si no hay actividad
Zap maestro con Paths
Trigger: HubSpot - New Contact
Path A: Enterprise Lead (Score > 80)
→ Asignar a Enterprise Team
→ Notificar en #enterprise-leads
→ Crear tarea urgente
→ Alertar a VP de Ventas
Path B: Mid-Market Lead (Score 50-80)
→ Determinar territorio
→ Round-robin dentro del territorio
→ Notificar al rep
→ Crear tarea estándar
Path C: SMB Lead (Score < 50)
→ Asignar a SDR pool (round-robin)
→ Notificar en #smb-leads
→ Agregar a secuencia de nurturing
Path D: Unqualified (Score < 20)
→ Agregar a lista de marketing
→ No asignar a ventas
→ Enviar a nurturing automático
Métricas de lead routing
Configura tracking para optimizar tu sistema:
Métricas a monitorear:
1. Tiempo promedio de asignación
2. Tiempo promedio de primer contacto
3. Distribución de leads por rep
4. Tasa de conversión por fuente de asignación
5. Leads escalados por falta de respuesta
Zap: Reporte semanal de routing
Datos a incluir:
📊 *Reporte de Lead Routing - Semana {{Week Number}}*
*Volumen*
• Total leads recibidos: {{total}}
• Leads asignados: {{assigned}}
• Leads a nurturing: {{nurturing}}
*Distribución por segmento*
• Enterprise: {{enterprise_count}} ({{enterprise_pct}}%)
• Mid-Market: {{midmarket_count}} ({{midmarket_pct}}%)
• SMB: {{smb_count}} ({{smb_pct}}%)
*Performance*
• Tiempo promedio de asignación: {{avg_assignment_time}}
• Tiempo promedio de respuesta: {{avg_response_time}}
• Leads escalados: {{escalated}}
*Por territorio*
{{#each territories}}
• {{name}}: {{count}} leads, {{response_time}} avg response
{{/each}}
Ejercicio práctico
Construye tu sistema de lead routing:
- Define 3-4 criterios de segmentación para tu negocio
- Crea la lógica de asignación en Code by Zapier
- Implementa round-robin usando Google Sheets o Storage
- Configura notificaciones inmediatas para el equipo
- Agrega monitoreo de tiempo de respuesta
Tiempo estimado: 30-45 minutos
Resumen
En esta lección aprendiste a:
- Distribuir leads automáticamente por geografía, tamaño e industria
- Implementar asignación round-robin equitativa
- Configurar notificaciones inmediatas para vendedores
- Escalar leads que no reciben atención
- Construir un sistema completo de lead routing
Un sistema de lead routing bien implementado puede reducir el tiempo de respuesta de horas a minutos, mejorando dramáticamente las tasas de conversión.
Siguiente módulo: Automatizaciones de Marketing - Aprenderás a crear secuencias de email automáticas, publicación en redes sociales, y sistemas de content repurposing.
¿Completaste esta lección?
Marca esta lección como completada. Tu progreso se guardará en tu navegador.