Lección 32 de 33Proyecto Final

Construir y probar tu sistema

Implementa tu automatización paso a paso y pruébala en producción.

15 minutos

Introducción: De Diseño a Realidad

Tienes el diseño. Tienes las herramientas. Ahora es momento de construir.

La diferencia entre una automatización amateur y una profesional:

AMATEUR:
- "Funcionó una vez, ya está"
- Sin manejo de errores
- Se rompe con datos inesperados
- Nadie sabe cuando falla

PROFESIONAL:
- Testeado exhaustivamente
- Maneja casos edge
- Alerta cuando hay problemas
- Documentado y mantenible

Este capítulo te llevará de amateur a profesional.


Fase 1: Construcción

Paso 1: Preparar el Entorno

Antes de crear el primer Zap:

CHECKLIST DE PREPARACIÓN:

[ ] Todas las apps conectadas a Zapier
    - HubSpot ✓
    - Gmail ✓
    - Slack ✓
    - etc.

[ ] Permisos correctos en cada app
    - Admin o permisos necesarios
    - API keys si aplica
    - OAuth completado

[ ] Datos de prueba listos
    - Email de prueba (no producción)
    - Contacto de prueba en CRM
    - Canal de Slack de prueba

[ ] Ambiente de prueba separado
    - No usar datos reales inicialmente
    - Etiquetar como [TEST] todo

Paso 2: Crear el Zap Paso a Paso

Regla de oro: Un paso a la vez, probando cada uno.

Ejemplo: Automatización de Seguimiento de Leads

=== PASO 1: TRIGGER ===

App: HubSpot
Trigger: New Contact
Test: Crear contacto manualmente en HubSpot

Verificar:
[ ] Zapier detecta el nuevo contacto
[ ] Todos los campos necesarios están disponibles
    - email ✓
    - firstname ✓
    - lastname ✓
    - company ✓

Problemas comunes:
- "No encuentro nuevos contactos" → Verificar conexión
- "Faltan campos" → Verificar propiedades en HubSpot
=== PASO 2: ENRIQUECIMIENTO ===

App: Clearbit (o similar)
Action: Enrich Person
Input: {{email}} del paso anterior

Configuración:
- Email: {{1. Email}}

Test: Probar con email conocido (linkedin, empresa grande)

Verificar:
[ ] Retorna datos de la persona
[ ] Retorna datos de la empresa
[ ] Maneja emails sin datos gracefully

Problemas comunes:
- "No encuentra la persona" → Normal para emails personales
- "Error de API" → Verificar API key y límites
=== PASO 3: IA PARA PERSONALIZACIÓN ===

App: ChatGPT
Action: Conversation

Prompt:
"""
Escribe un email corto de bienvenida para:
- Nombre: {{firstname}}
- Empresa: {{company}}
- Industria: {{industry}}
- Tamaño: {{company_size}}

El email debe:
- Ser de 3-4 oraciones
- Mencionar algo relevante de su industria
- Invitar a una llamada de 15 minutos
- Tono profesional pero amigable

Solo devuelve el cuerpo del email, sin subject.
"""

Test: Probar con datos de ejemplo

Verificar:
[ ] Email generado es coherente
[ ] Personalización es correcta
[ ] Longitud apropiada
[ ] Tono correcto
=== PASO 4: ENVIAR EMAIL ===

App: Gmail
Action: Send Email

To: {{email}}
Subject: {{firstname}}, una idea para {{company}}
Body: {{chatgpt_response}}
From Name: [Tu nombre]

Test: Enviarte un email a ti mismo primero

Verificar:
[ ] Email llega correctamente
[ ] Formato se ve bien
[ ] Links funcionan (si hay)
[ ] No va a spam
=== PASO 5: CREAR TAREA ===

App: HubSpot
Action: Create Task

Associated Contact: {{contact_id}}
Title: Llamar a {{firstname}} - seguimiento
Due Date: {{zap_meta_human_now_plus_2_days}}
Notes: Email automático enviado. Revisar respuesta.

Test: Verificar que tarea aparece en HubSpot

Verificar:
[ ] Tarea creada correctamente
[ ] Asociada al contacto correcto
[ ] Fecha correcta
[ ] Aparece en tu task list
=== PASO 6: NOTIFICACIÓN ===

App: Slack
Action: Send Channel Message

Channel: #ventas-leads
Message:
"""
:rocket: *Nuevo lead procesado automáticamente*

*Nombre:* {{firstname}} {{lastname}}
*Empresa:* {{company}}
*Email enviado:* Sí
*Tarea creada:* Llamar en 2 días

<{{hubspot_contact_url}}|Ver en HubSpot>
"""

Test: Verificar mensaje en canal

Verificar:
[ ] Mensaje llega al canal correcto
[ ] Formato se ve bien
[ ] Link funciona

Paso 3: Conectar Todo el Flujo

Una vez que cada paso funciona individualmente:

1. Activar Zap en modo "Draft/Test"
2. Crear un contacto de prueba COMPLETO en HubSpot
3. Verificar que TODO el flujo se ejecuta:
   [ ] Trigger detecta contacto
   [ ] Clearbit enriquece
   [ ] ChatGPT genera email
   [ ] Gmail envía
   [ ] HubSpot crea tarea
   [ ] Slack notifica
4. Revisar Zap History para cada paso
5. Verificar outputs en cada sistema destino

Fase 2: Testing Exhaustivo

Tipos de Tests

1. Happy Path (Caso ideal)

  • Datos completos y correctos
  • Todo funciona como se espera
  • El flujo termina exitosamente

2. Edge Cases (Casos límite)

  • Datos incompletos
  • Formatos inesperados
  • Valores extremos

3. Error Cases (Casos de error)

  • APIs que fallan
  • Datos inválidos
  • Timeouts

Test Matrix

| Escenario | Input | Expected | Actual | Pass? |
|-----------|-------|----------|--------|-------|
| Lead completo | Todos los campos | Flujo completo | | |
| Sin empresa | Email solo | Usar "No disponible" | | |
| Email inválido | "test" | Error controlado | | |
| Empresa no encontrada | Email personal | Skip enrichment | | |
| ChatGPT timeout | N/A | Retry o fallback | | |
| Gmail falla | N/A | Alerta a admin | | |
| Duplicado | Mismo email 2x | No duplicar | | |

Testing de Edge Cases

Caso: Lead sin nombre de empresa

Input:
- email: test@gmail.com
- firstname: Juan
- lastname: Pérez
- company: (vacío)

Esperado:
- Clearbit intenta enriquecer
- Si no encuentra, company = "No especificada"
- Email usa mensaje genérico
- Flujo continúa

Implementación:

Paso extra: Formatter
Action: Text > Default Value
Input: {{company}}
Default: "tu empresa"
Output: company_safe

Ahora en ChatGPT prompt:
"Empresa: {{company_safe}}"

Caso: Email corporativo vs personal

Lógica:
- Email corporativo (@empresa.com) → Prioridad alta
- Email personal (@gmail.com) → Prioridad normal

Implementación:

Paso: Filter by Zapier
Condition: {{email}} Does not contain "@gmail.com"
            AND Does not contain "@hotmail.com"
            AND Does not contain "@yahoo.com"

Path A (corporativo): Flujo completo + notificación urgente
Path B (personal): Flujo básico, sin alerta

Caso: Lead duplicado

Problema: Mismo lead entra 2 veces

Implementación:

Paso 1: Google Sheets - Lookup Row
Spreadsheet: Leads_Procesados
Column: Email
Value: {{email}}

Paso 2: Filter
Only continue if: {{lookup_result}} Does not exist

Paso 3: Google Sheets - Create Row
(Registrar que ya se procesó)

Paso 4+: Resto del flujo

Testing de Volumen

Antes de producción, prueba con volumen realista:

Escenario: 50 leads en 1 hora (pico esperado)

1. Crear script para generar 50 contactos de prueba
2. Ejecutar en 1 hora
3. Verificar:
   [ ] Todos los Zaps se ejecutaron
   [ ] No hubo throttling
   [ ] Tiempos de respuesta aceptables
   [ ] No se duplicaron acciones
   [ ] Sistemas destino no se saturaron

Fase 3: Manejo de Errores

Tipos de Errores

1. ERRORES DE APP
   - API down
   - Rate limits
   - Autenticación expirada

2. ERRORES DE DATOS
   - Campos vacíos
   - Formatos inválidos
   - Valores fuera de rango

3. ERRORES DE LÓGICA
   - Condiciones no manejadas
   - Loops infinitos
   - Dependencias circulares

Estrategias de Manejo

Estrategia 1: Validación Temprana

Antes de procesar, validar datos críticos:

Paso 1: Filter - Validar email
Condition: {{email}} (Text) Contains "@"
           AND {{email}} (Text) Contains "."

Si no pasa: El Zap se detiene (no gasta tasks)

Estrategia 2: Valores por Defecto

Para campos opcionales, usar defaults:

Paso: Formatter - Default Value
Input: {{phone}}
Default: "No proporcionado"

Ahora {{phone_safe}} nunca está vacío

Estrategia 3: Paths para Diferentes Casos

Paths by Zapier:

Path A: Datos completos
  Condition: {{email}} exists AND {{company}} exists
  → Flujo completo con personalización

Path B: Datos parciales
  Condition: {{email}} exists AND {{company}} not exists
  → Flujo simplificado, email genérico

Path C: Datos inválidos
  Condition: (default)
  → Log error, notificar admin, no enviar nada

Estrategia 4: Error Handling Nativo

En configuración de cada paso:

"If this step errors..."
  → Continue anyway (solo si no es crítico)
  → Stop and notify (si es crítico)
  → Retry (para errores transitorios)

Configurar alertas:
  → Email cuando hay error
  → Slack para errores críticos

Implementar Logging

Crear hoja de log para auditar:

Spreadsheet: Automation_Log
Worksheet: Zap_Executions

Columnas:
- Timestamp
- Zap_Name
- Trigger_ID (ej: email del lead)
- Status (Success/Error/Skipped)
- Steps_Completed
- Error_Message (si aplica)
- Duration_Seconds

Último paso de cada Zap:
App: Google Sheets
Action: Create Row
→ Registrar ejecución

Esto permite:
- Ver histórico de ejecuciones
- Detectar patrones de errores
- Calcular métricas de éxito

Alertas Inteligentes

No todo error merece una alerta:

ALERTA INMEDIATA (Slack DM + Email):
- Zap completamente fallido
- Error en paso crítico (ej: email no enviado)
- Tasa de error >10% en 1 hora

ALERTA DIARIA (Resumen):
- Errores no críticos
- Steps skipped por datos faltantes
- Rate limits alcanzados

SIN ALERTA (Solo log):
- Lead duplicado (esperado)
- Datos opcionales faltantes
- Filtros que excluyen leads

Fase 4: Preparar para Producción

Checklist Pre-Lanzamiento

=== CONFIGURACIÓN ===

[ ] Zap nombrado claramente
    Ej: "[PROD] Lead Follow-up - New HubSpot Contact"

[ ] Descripción agregada
    Qué hace, quién lo mantiene, fecha de creación

[ ] Folder organizado
    Todos los Zaps de este proceso juntos

[ ] Conexiones verificadas
    Todas las apps con cuentas de producción (no personales)

=== TESTING ===

[ ] Happy path testeado 5+ veces
[ ] Edge cases documentados y manejados
[ ] Error handling configurado
[ ] Volumen esperado probado

=== MONITOREO ===

[ ] Alertas de error configuradas
[ ] Log de ejecuciones activo
[ ] Dashboard de métricas (opcional)

=== DOCUMENTACIÓN ===

[ ] Flujo documentado (diagrama)
[ ] Owners y responsables definidos
[ ] Proceso de escalación claro
[ ] FAQ para issues comunes

=== BACKUP ===

[ ] Proceso manual documentado (por si falla)
[ ] Contacto de soporte de Zapier
[ ] Plan de rollback definido

Lanzamiento Gradual

No activar al 100% de golpe:

DÍA 1-2: Soft Launch
- Activar Zap
- Monitorear cada ejecución manualmente
- Verificar outputs en todos los sistemas
- Corregir issues inmediatamente

DÍA 3-5: Expansión
- Dejar de monitorear cada ejecución
- Revisar logs 2x al día
- Confiar en alertas automáticas
- Ajustar thresholds si es necesario

DÍA 6-7: Producción Completa
- Monitoreo semanal
- Solo atender alertas
- Documentar cualquier issue para mejorar

SEMANA 2+: Mantenimiento
- Revisión mensual del Zap
- Actualizar si cambian procesos
- Optimizar basado en métricas

Monitoreo Post-Lanzamiento

Métricas a trackear:

DIARIO:
- Zaps ejecutados (total)
- Tasa de éxito (% sin errores)
- Errores por tipo

SEMANAL:
- Tiempo promedio de ejecución
- Tendencias de volumen
- Top errores

MENSUAL:
- Costo de Zapier (tasks usadas)
- ROI (tiempo ahorrado vs costo)
- Mejoras a implementar

Dashboard simple en Google Sheets:

=== AUTOMATION DASHBOARD ===

Fecha: [Auto-update]

ÚLTIMAS 24 HORAS:
- Ejecuciones: =COUNTIFS(Log!A:A,">=TODAY()-1")
- Exitosas: =COUNTIFS(Log!A:A,">=TODAY()-1",Log!D:D,"Success")
- Errores: =COUNTIFS(Log!A:A,">=TODAY()-1",Log!D:D,"Error")
- Tasa éxito: =Exitosas/Ejecuciones*100 %

ESTA SEMANA:
[Misma lógica con rango de 7 días]

GRÁFICO:
[Línea de ejecuciones diarias]
[Barras de errores por tipo]

Troubleshooting Común

"El Zap no se dispara"

VERIFICAR:
1. Zap está ON (no paused)
2. Trigger configurado correctamente
3. Evento realmente ocurrió en la app fuente
4. Polling interval (15 min para algunos triggers)
5. Conexión de la app activa

SOLUCIÓN COMÚN:
- Desconectar y reconectar la app
- Re-seleccionar el trigger
- Verificar permisos de la cuenta

"Error en paso específico"

VERIFICAR:
1. Ir a Zap History > ver ejecución fallida
2. Expandir el paso con error
3. Leer mensaje de error completo
4. Verificar inputs que se enviaron

ERRORES COMUNES:
- "Field required" → Campo vacío, agregar default
- "Invalid format" → Usar Formatter para convertir
- "Rate limited" → Agregar Delay entre pasos
- "Not found" → ID incorrecto, verificar mapping

"Datos incorrectos en destino"

VERIFICAR:
1. Mapeo de campos correcto?
2. Formato esperado vs enviado?
3. Orden de steps correcto?
4. Hay transformaciones faltantes?

SOLUCIÓN:
- Agregar Formatter para transformar
- Verificar paso a paso en Zap History
- Probar con datos conocidos

"Duplicados"

CAUSA:
- Zap corre múltiples veces para mismo evento
- No hay deduplicación

SOLUCIÓN:
1. Agregar lookup antes de crear
2. Usar identificador único
3. Configurar "Dedup" en trigger si disponible

Resumen de la Lección

Has aprendido a:

  1. Construir paso a paso - Un step a la vez, probando cada uno
  2. Testear exhaustivamente - Happy path, edge cases, volumen
  3. Manejar errores - Validación, defaults, paths, alertas
  4. Preparar para producción - Checklist, lanzamiento gradual
  5. Monitorear y mantener - Logs, métricas, troubleshooting

Siguiente Paso

Tu automatización está construida y probada. En la última lección, aprenderás a:

  • Documentar tu proyecto profesionalmente
  • Calcular el ROI real
  • Presentar a stakeholders
  • Crear un plan de mantenimiento
  • Y celebrar tu logro

Antes de continuar:

  1. Completa la construcción de tu Zap
  2. Ejecuta al menos 10 pruebas exitosas
  3. Documenta cualquier issue encontrado
  4. Ten el Zap listo para activar

Construir es fácil. Construir algo que no falle a las 3am un domingo es el verdadero arte. Ahora tienes las herramientas para hacerlo.

¿Completaste esta lección?

Marca esta lección como completada. Tu progreso se guardará en tu navegador.