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}}"

Tags

  • disqualified
  • lost

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"

Plataformas

  • Google Ads
  • Facebook Pixel

Tags

  • pixel-event-sent

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)

Workflows que dispara

  • WF 11: Seguimiento 72h

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"

Tags

  • stop-bot

Campos

  • 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

Tags

  • google-ads
  • source-paid

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.