Coordenadas — Workflow Templates
13 workflows with triggers, conditions, tags, field updates, notifications, and opportunity changes. Configure in GHL Automation → Workflows.
WF 1: Actualizar estado negocio cuando IA agenda reunión
Propósito: Cuando Plabot agenda una reunión, mover la oportunidad a la siguiente etapa, etiquetar, y notificar al equipo.
▶ TRIGGER: Bot Action "Mover a Oportunidad" fires
⤷ ACTION: Update Contact Field
Field: "IA Stage" → "Meeting Booked"
⤷ ACTION: Add Tags
Add: meeting-scheduled ia-qualified
Remove: ia-qualifying
⤷ ACTION: Update Opportunity Stage
Pipeline: CRM Coordenadas → Stage: Reunión Agendada
⤷ ACTION: Send Internal Notification
Channel: Slack/Email
Message: "{{contact.name}} agendó reunión vía IA — {{contact.company}}"
⤷ ACTION: Start Workflow
Trigger: WF 9 (Recordatorio Reunión) — 24h and 1h before
Tags usadas
- meeting-scheduled
- ia-qualified
- ia-qualifying (remove)
Notificaciones
- Slack/Email: "{{contact.name}} agendó reunión vía IA"
Cambios en Oportunidad
- Stage: Nuevo Lead/Calificando → Reunión Agendada
Workflows que dispara
- WF 9: Recordatorio 24h/1h
WF 2: Actualizar estado negocio cuando IA descalifica
Propósito: Cuando Plabot descalifica un lead, moverlo a Lost con la razón, etiquetar, y desactivar el bot.
▶ TRIGGER: Bot Action "Descalificados" fires
◆ CONDITION: ¿Tipo de descalificación?
├── TIPO A → tag: dq-budget-too-low
├── TIPO B → tag: dq-too-small
├── TIPO C → tag: dq-no-history
├── TIPO D → tag: dq-wrong-profile
└── TIPO E → tag: dq-revenue-below-threshold
⤷ ACTION: Add Tags
Add: ia-disqualified dq-[type] stop-bot
⤷ ACTION: Update Opportunity Stage
Pipeline: CRM Coordenadas → Stage: Lost (Disqualified)
⤷ ACTION: Update Contact Field
Field: "Disqualification Reason" → "[TIPO X — Description]"
⤷ ACTION: Stop Bot for this contact
⤷ ACTION: Send Internal Notification
Message: "❌ {{contact.name}} descalificado — {{contact.disqualification_reason}}"
Tags usadas
- ia-disqualified
- dq-[tipo]
- stop-bot
Notificaciones
- Internal: "❌ {{contact.name}} descalificado — razón"
Cambios en Contacto
- Disqualification Reason → "[TIPO X]"
- Bot Status → "Deactivated"
Cambios en Oportunidad
- Stage: → Lost (Disqualified)
WF 3: Actualizar estado negocio descalificado (manual)
Propósito: Manejo secundario cuando un humano marca manualmente un lead como descalificado.
▶ TRIGGER: Opportunity Stage Changed → "Lost" (manual)
◆ CONDITION: Tag ia-disqualified NOT present (manual DQ)
⤷ ACTION: Add Tags
Add: disqualified lost
⤷ ACTION: Update Contact Field
Field: "Disqualification Date" → current date
Field: "Disqualification Reason" → from human input
⤷ ACTION: Optionally move to "Nurture" list (if salvageable)
⤷ ACTION: Send Internal Notification
Message: "🚩 {{contact.name}} descalificado (manual) — {{contact.company}}"
Campos actualizados
- Disqualification Date
- Disqualification Reason
Diferencia con WF 2
- Este es para DQ manual (humano)
- WF 2 es para DQ automático (bot)
WF 4: Descalificados + Pixel (conversión a ads)
Propósito: Enviar evento de conversión a Google Ads / Facebook cuando un lead es descalificado, para excluir audiencias y optimizar píxel.
▶ TRIGGER: Opportunity Stage Changed → "Lost"
◆ CONDITION: Tag ia-disqualified is present
⤷ ACTION: Send Conversion Event (Google Ads / Facebook)
Event: "Disqualified Lead"
Value: 0
Currency: USD
⤷ ACTION: Update Contact Field
Field: "Pixel Event Sent" → "Yes"
Field: "Pixel Event Type" → "disqualified"
Depende de
- WF 2 ejecutarse primero (poner tag ia-disqualified)
WF 5: Actualizar estado negocios fríos (14d inactividad)
Propósito: Mover automáticamente leads inactivos a "Cold" después de 14 días sin actividad.
▶ TRIGGER: Scheduled — Daily at 8:00 AM
◆ CONDITION 1: Contact has no activity in 14 days
◆ CONDITION 2: Opportunity stage = "Calificando" or "Nuevo Lead"
◆ CONDITION 3: Tag cold is NOT present
⤷ ACTION: Add Tags
Add: cold nurturing
⤷ ACTION: Update Opportunity Stage
Stage: → Cold (or stay + flag)
⤷ ACTION: Start Workflow
→ WF 11 (Follow-up 72h sequence for re-engagement)
Tags
- cold
- nurturing
- !cold (prevents re-trigger)
Excluye
- Leads con tag stop-bot
- Leads con tag human-handover
- Oportunidades en etapas avanzadas
WF 6: Won + Pixel (celebración + onboarding)
Propósito: Cuando un deal se gana, celebrar, enviar conversión a ads, mensaje de bienvenida, y empezar onboarding.
▶ TRIGGER: Opportunity Stage Changed → "Won"
⤷ ACTION: Add Tags
Add: won onboarding-start
Remove: meeting-scheduled qualifying ia-qualifying
⤷ ACTION: Send Conversion Event (Google Ads / Facebook)
Event: "Purchase" or "Lead Conversion"
Value: {{opportunity.proposal_value}}
Currency: USD
⤷ ACTION: Send Internal Notification
Channel: Email/Slack
Message: "🎉 {{contact.company}} ganado! ${{value}}"
⤷ ACTION: Send Thank You Message (WhatsApp/Email)
Template: win-congratulations
Variables: {{contact.first_name}}, {{contact.company}}
⤷ ACTION: Start Onboarding Sequence
Create task: "Kickoff call with {{contact.name}} — asignar a Pablo"
Create task: "Enviar contrato y factura inicial"
Tags
- won
- onboarding-start
- meeting-scheduled (remove)
- qualifying (remove)
- ia-qualifying (remove)
Notificaciones
- Slack/Email: "🎉 {{contact.company}} ganado! ${{value}}"
- WhatsApp: win-congratulations template
Tareas creadas
- Kickoff call
- Contrato + factura
Pixel
- Google Ads: Purchase
- Facebook: Lead Conversion
WF 7: Lost (no DQ) — manejo de leads perdidos
Propósito: Manejar leads que se pierden (no descalificados por bot) — capturar razón, etiquetar, y mover a nurture si es rescatable.
▶ TRIGGER: Opportunity Stage Changed → "Lost"
◆ CONDITION: Tag ia-disqualified is NOT present
⤷ ACTION: Add Tags
Add: lost lost-[reason]
⤷ ACTION: Update Opportunity Field
Field: "Loss Reason" → from human input or tag
Field: "Loss Date" → current date
◆ CONDITION: Is salvageable? (human decision)
If yes: Start WF 11 (Nurture Sequence)
If no: Add tag no-nurture
Tags
- lost
- lost-[reason]
- no-nurture (opcional)
Diferencia con WF 2/3
- Este es para leads que se pierden por decisión del cliente (no por DQ del bot)
- WF 2/3 son para descalificación
Workflows que dispara
- WF 11: Nurture si es rescatable
WF 8: Duplicar info de contacto a oportunidad
Propósito: Copiar campos clave del contacto a la oportunidad automáticamente cuando se crea. Corre en segundo plano.
▶ TRIGGER: Opportunity Created
⤷ ACTION: Copy Contact Field to Opportunity
{{contact.company_name}} → {{opportunity.company_name}}
{{contact.email}} → {{opportunity.email}}
{{contact.phone}} → {{opportunity.phone}}
{{contact.service_needed}} → {{opportunity.service_needed}}
{{contact.bot_summary}} → {{opportunity.bot_summary}}
◆ CONDITION: If created by bot (tag bot-created present)
→ Also copy: {{contact.budget_range}} → {{opportunity.budget_range}}
Campos copiados
- company_name
- email
- phone
- service_needed
- bot_summary
Tags
- bot-created (si viene del bot)
WF 9: Recordatorio — Notificar Reunión
Propósito: Enviar recordatorio de reunión vía WhatsApp 24h antes y 1h antes.
▶ TRIGGER 1: Calendar Event — 24 hours before
◆ CONDITION: Appointment status = "Scheduled"
⤷ ACTION: Send WhatsApp Template
Template: confirmacion_reunion_24h
Variables:
{{1}} = {{contact.first_name}}
{{2}} = {{appointment.start_time}} (fecha y hora)
{{3}} = {{user.first_name}} (Pablo/Sergio)
{{4}} = {{appointment.meeting_location}} (enlace Meet)
⤷ ACTION: Add Tags
Add: meeting-reminder-24h-sent
▶ TRIGGER 2: Calendar Event — 1 hour before
◆ CONDITION: Appointment status = "Scheduled"
⤷ ACTION: Send WhatsApp Template
Template: confirmacion_reunion_1h
Variables:
{{1}} = {{contact.first_name}}
{{2}} = {{appointment.start_time}}
{{3}} = {{user.first_name}}
⤷ ACTION: Add Tags
Add: meeting-reminder-1h-sent
Templates WhatsApp
- confirmacion_reunion_24h
- confirmacion_reunion_1h
Tags
- meeting-reminder-24h-sent
- meeting-reminder-1h-sent
Mensaje ejemplo (24h)
- "¡Hola {{name}}! Te recuerdo nuestra reunión mañana a las {{time}}. ¿Todo listo?"
Mensaje ejemplo (1h)
- "¡Hola {{name}}! En 1 hora nos vemos. Aquí el enlace: {{link}}"
WF 10: Desactivar IA cuando lead se marca como descalificado
Propósito: Cuando un lead es descalificado (por bot o humano), detener el bot para que no siga interactuando.
▶ TRIGGER: Tag Added — "ia-disqualified"
⤷ ACTION: Stop AI Agent Bot for this contact
Setting: Bot deactivated
⤷ ACTION: Add Tags
Add: stop-bot
⤷ ACTION: Update Contact Field
Field: "Bot Status" → "Deactivated"
Depende de
- WF 2 (pone tag ia-disqualified)
WF 11: Seguimiento leads después de 72h (nurture sequence)
Propósito: Re-enganchar leads que no han respondido después de 72h con una secuencia de seguimiento gradual.
▶ TRIGGER: Time-based — 72 hours since last message
◆ CONDITION 1: Contact stage = "Calificando" or "Nuevo Lead"
◆ CONDITION 2: Tag stop-bot NOT present
◆ CONDITION 3: Tag human-handover NOT present
⤷ ACTION: Send WhatsApp Template
Template: seguimiento_72_horas
Variable: {{contact.first_name}}
Mensaje: "¡Hola {{name}}! Hace unos días hablamos. ¿Has tenido chance de pensar en lo que conversamos?"
◆ CONDITION: No response after 72h message
⤷ ACTION: Wait 5 days
→ Send WhatsApp Template: seguimiento_5_dias
Mensaje: "{{name}}, sé que estás ocupado. Solo quería compartirte un caso de éxito de un negocio similar al tuyo..."
◆ CONDITION: No response after 5d message
⤷ ACTION: Wait 7 days
→ Send WhatsApp Template: seguimiento_12_dias
Mensaje: "{{name}}, por aquí quedamos. Cuando quieras retomar, aquí estoy. Sin presión."
◆ CONDITION: No response after all follow-ups
⤷ ACTION: Add Tags: cold no-reply
Move to Cold stage
Secuencia de templates
- 72h: seguimiento_72_horas — check-in suave
- 5 días: seguimiento_5_dias — caso de éxito
- 12 días: seguimiento_12_dias — última oportunidad
Tags
- followup-72h-sent
- followup-5d-sent
- followup-12d-sent
- cold
- no-reply
Excluye
- stop-bot
- human-handover
- won
Activado por
- WF 5 (cold detection)
- Trigger directo 72h sin respuesta
WF 12: Crear lead desde formulario (landing page)
Propósito: Cuando un lead se registra desde el formulario de la landing page, crear contacto + oportunidad + iniciar bot.
▶ TRIGGER: Form Submitted (Landing Page form)
◆ CONDITION: Contact source = "Landing Page" OR "Website" OR "Form"
⤷ ACTION: Create/Update Contact
Fields from form: name, email, phone, service_needed
⤷ ACTION: Add Tags
Add: new-lead source-landing-page
⤷ ACTION: Create Opportunity
Pipeline: CRM Coordenadas
Stage: Nuevo Lead
Value: (empty — to be determined)
Copy contact fields via WF 8
⤷ ACTION: Start AI Agent Conversation
Bot: Plabot (Coordenadas Sales Bot)
Trigger: Automatic first WhatsApp message
First message: "¡Hola {{name}}! Gracias por contactarnos. Soy Plabot, el asistente virtual de Coordenadas. ¿Me cuentas un poco más sobre tu negocio?"
⤷ ACTION: Send Internal Notification
Channel: Slack/Email
Message: "🆕 Nuevo lead desde web: {{contact.name}} de {{contact.company}} — {{contact.service_needed}}"
Tags
- new-lead
- source-landing-page
- form-submitted
Workflows que dispara
- WF 8: Copy fields a oportunidad
Notificaciones
- Slack/Email: "🆕 Nuevo lead desde web"
Bot activation
- Plabot inicia automáticamente
- Primer mensaje vía WhatsApp
WF 13: Conversiones Google Ads
Propósito: Rastrear conversiones de campañas de Google Ads y atribuir correctamente.
▶ TRIGGER 1: Contact Created with source = "google-ads"
⤷ ACTION: Add Tags
Add: google-ads source-paid
⤷ ACTION: Send Conversion to Google Ads
Conversion Action: "Lead Form Submitted"
Value: 0 (lead gen conversion)
▶ TRIGGER 2: Opportunity Stage Changed → "Won"
◆ CONDITION: Tag google-ads is present
⤷ ACTION: Send Conversion to Google Ads
Conversion Action: "Sale"
Value: {{opportunity.proposal_value}}
Currency: USD
Conversion events
- Lead Form Submitted (lead gen)
- Sale (when won)
Depende de
- UF (UTM) tags configurados en formulario
- WF 12 para crear el lead desde form
Workflow Dependency Map
Cómo se conectan los workflows entre sí. Las flechas indican "dispara a".
┌─────────────────────────────────────┐
│ BOT ACTIONS (Plabot) │
│ ┌─────────────────────────────┐ │
│ │ Descalificados │──→ WF 2
│ │ Mover a Oportunidad │──→ WF 1
│ │ Add Contact Info │──→ (direct field update)
│ │ Stop Bot (STOPBOT_*) │──→ WF 10
│ │ Transfer to Human │──→ (tag + manual)
│ │ No Reply Follow-up │──→ WF 11
│ └─────────────────────────────┘ │
└─────────────────────────────────────┘
External Events:
┌──────────────────┐ ┌──────────────────────────────┐
│ Form Submit │──→│ WF 12: Create Lead + Bot │──→ WF 8
└──────────────────┘ └──────────────────────────────┘
┌──────────────────┐ ┌──────────────────────────────┐
│ Stage: Won │──→│ WF 6: Celebrate + Pixel │
└──────────────────┘ └──────────────────────────────┘
┌──────────────────┐ ┌──────────────────────────────┐
│ Stage: Lost │──→│ WF 7: Handle + Nurture │
│ (no DQ tag) │ └──────────────────────────────┘
└──────────────────┘
┌──────────────────┐ ┌──────────────────────────────┐
│ Stage: Lost │──→│ WF 3: Manual DQ │
│ (manual DQ) │ └──────────────────────────────┘
└──────────────────┘
┌──────────────────┐ ┌──────────────────────────────┐
│ Opportunity │──→│ WF 8: Copy Fields │
│ Created │ └──────────────────────────────┘
└──────────────────┘
┌──────────────────┐ ┌──────────────────────────────┐
│ Appointment │──→│ WF 9: Reminder 24h + 1h │
└──────────────────┘ └──────────────────────────────┘
┌──────────────────┐ ┌──────────────────────────────┐
│ Inactivity 14d │──→│ WF 5: Cold Status │──→ WF 11
└──────────────────┘ └──────────────────────────────┘
┌──────────────────┐ ┌──────────────────────────────┐
│ Google Ads │──→│ WF 13: Conversion Events │
│ (source) │ └──────────────────────────────┘
└──────────────────┘
┌──────────────────┐ ┌──────────────────────────────┐
│ Tag Added: │──→│ WF 10: Stop Bot │
│ ia-disqualified │ └──────────────────────────────┘
└──────────────────┘
┌──────────────────┐ ┌──────────────────────────────┐
│ 72h No Response │──→│ WF 11: Nurture Sequence │
│ (direct) │ └──────────────────────────────┘
└──────────────────┘
Design Principles for Workflows
1. Less is more. Un workflow de 3 nodos que funciona vence a uno de 15 que se rompe.
2. Tag everything. Las tags son el pegamento entre workflows, bot actions y pipeline stages.
3. Don't over-notify. Notificaciones internas deben ser útiles, no ruido.
4. Test with a test contact. Antes de salir a producción, prueba cada workflow con un contacto dummy.
5. Document as you build. El propósito de cada workflow debe ser claro desde su nombre.
6. Stage changes are powerful triggers. La mayoría de workflows deben dispararse en transiciones de etapa, no en delays de tiempo.
7. Time delays need fallbacks. Si un contacto cambia de etapa durante un delay, las acciones restantes deben seguir teniendo sentido.