# Goozone — Workflows GHL: Nodo a Nodo **Generado:** Julio 2026 **Skill:** ghl-automatizaciones v1.0 **Pipeline:** Seller Onboarding (7 stages) --- ## Convenciones | Símbolo | Significado | |---------|-------------| | `[TRIGGER]` | Trigger de GHL (nombre exacto del builder) | | `[ACTION]` | Action de GHL (nombre exacto del builder) | | `[CONDITION]` | If/Else o Fork | | `[WAIT]` | Wait (espera temporal o hasta-reply) | | `[FORK]` | Fork de N ramas | | `[END]` | Fin del flujo (no es un nodo real) | | `[LISTO]` | Listo para copiar al builder | | `[REVISAR]` | Requiere verificación manual en la cuenta | | `►` | Flecha de conexión entre nodos | ### Tags de estado de cada workflow - **[LISTO]** — todos los nodos existen en GHL, configurable directo - **[REVISAR]** — un nodo o filtro requiere verificación manual --- ## Glosario de Nodos GHL Usados **Triggers:** - `Opportunity Created` — Se crea una nueva oportunidad en el pipeline - `Opportunity Changed` — Cualquier cambio en la oportunidad (usar con filtros) - `Contact Tag` — Se agrega o remueve un tag - `Stale Opportunities` — Oportunidad sin movimiento por N días **Actions:** - `Send Email` — Envía un email template - `Send WhatsApp` — Envía un WhatsApp template - `Add Contact Tag` — Agrega tags - `Remove Contact Tag` — Remueve tags - `Add Task` — Crea una tarea con dueño y fecha de vencimiento - `Update Opportunity` — Actualiza etapa/status de la oportunidad - `Update Contact Field` — Actualiza un campo del contacto - `Assign to User` — Asigna contacto a un usuario - `Condition / Fork` — Bifurcación de N ramas nombradas - `If/Else` — Bifurcación de 2 ramas (YES/NO) - `Wait` — Espera temporal (N días/horas) - `Send Internal Notification` — Notificación al equipo (Slack, email o en-app) - `Add to Workflow` — Agrega contacto a otro workflow - `Add Note` — Agrega una nota al contacto --- ## Sección A — Workflows Existentes (Revisados y Corregidos) De los 12 workflows conceptuales del Sprint Dashboard, varios se **fusionan** siguiendo las reglas de lógica de automatización de GHL: | Sprint Dashboard | Workflow real | Motivo | |-----------------|---------------|--------| | WF-01 | WF-01 standalone | Trigger correcto, solo se corrige el nombre | | WF-02 | WF-02 standalone | Trigger corregido, condición revisada | | WF-03 | → WF-03 merge | Se fusionan porque comparten el mismo trigger (Account Created) y usan Waits secuenciales en vez de Scheduler | | WF-04 | → WF-03 merge | 〃 | | WF-08 | → WF-03 merge | 〃 | | WF-09 | → WF-03 merge | 〃 | | WF-05 | WF-05 standalone | Trigger corregido | | WF-06 | WF-06 standalone | Trigger corregido | | WF-07 | → WF-07 merge | Se fusionan porque comparten trigger (registro-completo) y son una secuencia continua | | WF-10 | → WF-07 merge | 〃 | | WF-11 | → WF-07 merge | 〃 | | WF-12 | → WF-07 merge | 〃 | **Total: 6 workflows reales** (vs 12 conceptuales) --- ### WF-01: Lead Loaded → Qualification & Email Drip Start > **Origen Sprint Dashboard:** Workflow 1 > **Correcciones aplicadas:** Trigger cambiado de "Stage changes" a `Opportunity Created`; se agrega tagging y asignación a CSR. **Objetivo:** Cuando Pablo sube un lead al pipeline, etiquetarlo por fuente, asignarlo a un CSR (round-robin) y notificar al equipo. **Trigger:** `Opportunity Created` **Filtros:** Pipeline = "Seller Onboarding" **Estado:** [LISTO] ``` [TRIGGER] Opportunity Created │ Pipeline = "Seller Onboarding" │ ▼ [ACTION] Add Contact Tag: "seller-lead" │ Nota: Si el lead viene del evento TIC, agregar también "tic-event-2026" │ ▼ [ACTION] Assign to User: Sasha & Rosannah (Round-Robin) │ ▼ [ACTION] Send Internal Notification: "New seller lead loaded" │ Team: Sasha, Rosannah, Pablo │ Message: "New lead {{contact.first_name}} {{contact.last_name}} │ loaded in Lead Loaded. Source: seller-lead" │ ▼ [END] ``` **Notas:** - Si hay forma de distinguir eventos TIC vs. otros leads, agregar un custom field "Lead Source" y usar un Fork para aplicar el tag correcto. - Round-Robin asigna automáticamente el siguiente CSR disponible. --- ### WF-02: Contacted → Follow-up Task & Stage Tag > **Origen Sprint Dashboard:** Workflow 2 > **Correcciones aplicadas:** Trigger cambiado de "Stage changes to Contacted" a `Opportunity Changed` con filtro de stage. Condición "Moved by CSR" reemplazada por verificación de assigned user. **Objetivo:** Cuando un lead pasa a Contacted, crear una tarea de seguimiento para el CSR asignado y aplicar tag de stage. **Trigger:** `Opportunity Changed` **Filtros:** Pipeline = "Seller Onboarding", Stage = "Contacted" **Estado:** [LISTO] ``` [TRIGGER] Opportunity Changed │ Pipeline = "Seller Onboarding" | Stage changed to "Contacted" │ ▼ [ACTION] Add Contact Tag: "stage-contacted" │ ▼ [ACTION] Add Task │ Title: "Follow up with {{contact.first_name}}" │ Description: "Send signup link. If no account created in 48h, flag." │ Due: 48 hours from now │ Assigned to: Contact owner (Sasha or Rosannah) │ ▼ [END] ``` **Notas:** - La tarea se asigna al contact owner. Si GHL no soporta "Contact owner" como target, usar `Assign to User` antes del `Add Task` para asegurar ownership. - El tag `stage-contacted` sirve para reporting y segmentación. --- ### WF-03: Account Created Drip (Welcome + Verification + Expectativas + Team Intro) > **Origen Sprint Dashboard:** Workflows 3, 4, 8 y 9 > **Correcciones aplicadas:** > - Trigger unificado a `Opportunity Changed` (no "Stage changes") > - Waits secuenciales en vez de Scheduler (Regla 1) > - Fusionados 4 workflows conceptuales en uno solo > - Se agregó tag `email-drip-active` **Objetivo:** Cuando un seller crea su cuenta (Stage → Account Created), disparar el email drip completo: bienvenida inmediata, recordatorio de verificación a las 24h, expectativas a los 5 días, e introducción del equipo a los 10-12 días. **Trigger:** `Opportunity Changed` **Filtros:** Pipeline = "Seller Onboarding", Stage changed to "Account Created" **Estado:** [REVISAR] — Verificar que los nombres de los email templates coincidan con los creados en GHL ``` [TRIGGER] Opportunity Changed │ Pipeline = "Seller Onboarding" | Stage = "Account Created" │ ▼ [ACTION] Send Email: "Email 1 — Welcome to Goozone" │ Template: Welcome to Goozone │ Subject: "Welcome to Goozone — you're officially a seller 🎉" │ ▼ [ACTION] Add Contact Tag: "email-drip-active" │ ▼ [ACTION] Send Internal Notification: "New account created — verify seller" │ Team: Sydney, Pablo │ Message: "{{contact.first_name}} {{contact.last_name}} │ created their account. Please verify." │ ▼ [ACTION] Remove Contact Tag: "stage-contacted" (si aplica) │ ▼ [WAIT] 24 hours │ ▼ [CONDITION] If/Else: Is stage still "Account Created"? │ ├─ YES │ │ │ ▼ │ [ACTION] Send Email: "Email 2 — Verify your account" │ │ Template: Verify your account │ │ Subject: "Quick thing — let's get your account verified" │ │ │ ▼ │ [ACTION] Send WhatsApp: "Template 2 — Verification Reminder" │ │ Nota: Si el canal WhatsApp está habilitado │ │ │ ▼ │ [WAIT] 4 days (= 5 days total from trigger) │ │ │ ▼ │ [ACTION] Send Email: "Email 4 — What to Expect" │ │ Template: What to Expect │ │ Subject: "What happens next — the honest, no-surprises version" │ │ │ ▼ │ [WAIT] 5-7 days (= 10-12 days total from trigger) │ │ │ ▼ │ [ACTION] Send Email: "Email 7 — Meet Your Support Team" │ Template: Meet your support team │ Subject: "Stuck on something? Here's how to reach us" │ Nota: Presenta a Sasha, Rosannah, Pablo, Sydney │ │ │ ▼ │ [END] │ └─ NO (seller moved to Verified or beyond) │ ▼ [ACTION] Remove Contact Tag: "email-drip-active" │ ▼ [END] ``` **Notas de lógica aplicada:** - Regla 1: No se usa Scheduler — los tiempos se manejan con `Wait` nodes secuenciales - Regla 4: El If/Else evalúa en el momento del Wait (24h después), NO queda escuchando — correcto para este caso - Si el seller se verifica antes de las 24h, la rama NO del If/Else limpia el tag y termina - Los emails 4 y 7 solo se envían si el seller sigue sin verificar después de 24h --- ### WF-04: Verified → Payout Setup & Plan Selection > **Origen Sprint Dashboard:** Workflow 5 > **Correcciones aplicadas:** Trigger corregido a `Opportunity Changed`; se agrega wait para WhatsApp nudge a las 48h. **Objetivo:** Cuando el seller es verificado, enviar instrucciones de payout/plan y hacer follow-up si no configura en 48h. **Trigger:** `Opportunity Changed` **Filtros:** Pipeline = "Seller Onboarding", Stage changed to "Verified" **Estado:** [LISTO] ``` [TRIGGER] Opportunity Changed │ Pipeline = "Seller Onboarding" | Stage = "Verified" │ ▼ [ACTION] Add Contact Tag: "stage-verified" │ ▼ [ACTION] Send Email: "Email 3 — Set up your payout & plan" │ Template: Set up your payout & pick your plan │ Subject: "You're verified! Here's how to set up payouts and pick your plan" │ ▼ [WAIT] 48 hours │ ▼ [CONDITION] If/Else: Is stage still "Verified"? │ ├─ YES │ │ │ ▼ │ [ACTION] Send WhatsApp: "Template 3 — Payout & Package Nudge" │ │ Message: "Hi {{contact.first_name}}, you're verified! 🎉 ..." │ │ │ ▼ │ [ACTION] Add Task │ │ Title: "Follow up on payout/plan — {{contact.first_name}}" │ │ Assigned to: Contact owner (CSR) │ │ Due: 72 hours │ │ │ ▼ │ [END] │ └─ NO (already moved to Payout & Package Set) │ ▼ [END] ``` --- ### WF-05: First Product Published → Store Live Celebration > **Origen Sprint Dashboard:** Workflow 6 > **Correcciones aplicadas:** Trigger corregido a `Opportunity Changed`. **Objetivo:** Cuando el primer producto del seller es publicado y aprobado por Laura (QC), enviar email de celebración. **Trigger:** `Opportunity Changed` **Filtros:** Pipeline = "Seller Onboarding", Stage changed to "First Product Published" **Estado:** [LISTO] ``` [TRIGGER] Opportunity Changed │ Pipeline = "Seller Onboarding" | Stage = "First Product Published" │ ▼ [ACTION] Send Email: "Email 6 — Your store is live" │ Template: Your store is live │ Subject: "Your store is live — go check it out" │ ▼ [ACTION] Send Internal Notification: "First product published" │ Team: Pablo │ Message: "{{contact.first_name}}'s first product is live. │ QC passed by Laura. Ready for final review." │ ▼ [END] ``` --- ### WF-06: Registration Complete Sequence (Final + Newsletters) > **Origen Sprint Dashboard:** Workflows 7, 10, 11 y 12 > **Correcciones aplicadas:** > - Todos los workflows post-registro fusionados en uno solo > - Waits secuenciales en vez de Scheduler > - Trigger: `Contact Tag` (registro-completo) — este es correcto y se mantiene **Objetivo:** Cuando Sydney/Pablo aplican el tag `registro-completo`, enviar Email 5, mover la etapa a Registration Complete, notificar a Kriston, y luego disparar los 3 newsletters en los días correspondientes. **Trigger:** `Contact Tag` **Filtros:** Tag "registro-completo" added **Estado:** [LISTO] ``` [TRIGGER] Contact Tag │ Tag added: "registro-completo" │ ▼ [ACTION] Send Email: "Email 5 — Registration Complete 🎉" │ Template: Registration complete! │ Subject: "You're officially a Goozone seller — registration complete" │ ▼ [ACTION] Update Opportunity: Stage → "Registration Complete" │ Status → Won (o el que corresponda) │ ▼ [ACTION] Send Internal Notification: "Seller fully onboarded" │ Team: Kriston │ Message: "{{contact.first_name}} {{contact.last_name}} │ registration complete. Ready for reporting." │ ▼ [WAIT] 10 days │ ▼ [ACTION] Send Email: "Email 8 — Dashboard Tour (Newsletter 1)" │ Template: Dashboard tour │ Subject: "A quick tour of your seller dashboard" │ ▼ [WAIT] 8 days (= 18 days total from tag) │ ▼ [ACTION] Send Email: "Email 10 — Digital Logistics 101 (Newsletter 3)" │ Template: Digital logistics 101 │ Subject: "Packaging & pickup — the stuff that keeps deliveries smooth" │ ▼ [WAIT] 2 days (= 20 days total from tag) │ ▼ [ACTION] Send Email: "Email 9 — Selling Smart (Newsletter 2)" │ Template: Selling smart │ Subject: "3 tools that help you sell more" │ ▼ [END] ``` **Notas:** - Newsletter 3 (Email 10) se envía antes que Newsletter 2 (Email 9) porque 18d < 20d. El orden de Waits sigue la cronología real desde el tag. - Se asume que el tag `registro-completo` es aplicado manualmente por Sydney o Pablo. --- ## Sección B — Workflows Nuevos (4) --- ### WF-07: Lead Intake & Qualification **Objetivo:** Apenas se crea una oportunidad, evaluar el perfil del lead, asignar segmento y prioridad, y notificar al CSR correcto. **Trigger:** `Opportunity Created` **Filtros:** Pipeline = "Seller Onboarding" **Estado:** [LISTO] — Requiere que el CSR evalúe perfil y prioridad manualmente (o via custom fields) ``` [TRIGGER] Opportunity Created │ Pipeline = "Seller Onboarding" │ ▼ [CONDITION] Fork: Lead Source │ Condition Type: Custom Field — "Lead Source" │ ├─ "TIC Event 2026" → [ACTION] Add Contact Tag: "tic-event-2026" │ ├─ "DM Instagram" → [ACTION] Add Contact Tag: "seller-lead" │ └─ Otro / Desconocido → [ACTION] Add Contact Tag: "seller-lead" │ ▼ [ACTION] Add Task: "Assess seller profile" │ Title: "Profile assessment — {{contact.first_name}}" │ Description: "Review seller's Instagram/DM profile. │ Apply segment tag: profile-dm-merchant, │ profile-brick-mortar, or profile-side-hustle. │ Apply priority tag: priority-high/medium/low." │ Assigned to: Contact owner (Sasha or Rosannah) │ Due: 24 hours │ ▼ [END] ``` **Notas:** - La evaluación de perfil es manual por el CSR — el workflow solo crea la tarea - Si en el futuro se automatiza la detección de segmento, reemplazar el `Add Task` con un Fork automático --- ### WF-08: Stuck-in-Contacted Recovery **Objetivo:** Si un lead está en Contacted por 7+ días sin registrarse, enviar un WhatsApp de seguimiento y escalar al CSR. **Trigger:** `Stale Opportunities` **Filtros:** Pipeline = "Seller Onboarding", Stage = "Contacted", Days stale = 7 **Estado:** [LISTO] ``` [TRIGGER] Stale Opportunities │ Pipeline = "Seller Onboarding" | Stage = "Contacted" │ Stale for: 7 days │ ▼ [ACTION] Add Contact Tag: "stuck-contacted" │ ▼ [ACTION] Send WhatsApp: "Template 1 — Initial Outreach (follow-up)" │ Nota: Re-envío del template de outreach, con tono recordatorio │ ▼ [CONDITION] If/Else: Has the opportunity moved in the last 7 days? │ ├─ YES (seller finally registered) │ │ │ ▼ │ [ACTION] Remove Contact Tag: "stuck-contacted" │ │ │ ▼ │ [END] │ └─ NO │ ▼ [ACTION] Add Task: "Escalate stuck lead" │ Title: "Lead stuck in Contacted >7d — {{contact.first_name}}" │ Description: "Seller hasn't registered after 7 days. │ WhatsApp reminder sent. Manual outreach needed." │ Assigned to: Contact owner │ Priority: High │ Due: 24 hours │ ▼ [END] ``` **Notas:** - El trigger `Stale Opportunities` es el mecanismo correcto de GHL para detectar oportunidades estancadas (Regla 1) - No se usa Scheduler --- ### WF-09: Disqualification Handler **Objetivo:** Si un seller no califica (no cumple requisitos, cuenta rechazada, etc.), mover la oportunidad a Lost y notificar a Pablo. **Trigger:** `Contact Tag` **Filtros:** Tag added: "dq-*" (cualquier tag que empiece con dq-) **Estado:** [REVISAR] — Crear tags DQ específicos en GHL (ej: `dq-verification-failed`, `dq-invalid-docs`, `dq-underage`, `dq-other`) ``` [TRIGGER] Contact Tag │ Tag added: "dq-*" (cualquier tag que empiece con dq-) │ ▼ [ACTION] Update Opportunity: Status → "Lost" │ Lost Reason: (mapear desde el tag DQ específico) │ ▼ [ACTION] Add Note: "Disqualified — [tag DQ aplicado]" │ ▼ [ACTION] Send Internal Notification: "Seller disqualified" │ Team: Pablo │ Message: "{{contact.first_name}} {{contact.last_name}} │ disqualified. Reason: [tag DQ]. Review and decide │ if re-engagement is possible." │ ▼ [ACTION] Remove from Workflow: Todos los workflows activos de onboarding │ ▼ [END] ``` **Tags DQ a crear en GHL:** | Tag | Cuándo se aplica | |-----|-----------------| | `dq-verification-failed` | Documentos no pasaron verificación | | `dq-invalid-docs` | Documentos falsos o incorrectos | | `dq-underage` | Menor de 18 sin tutor | | `dq-duplicate` | Seller ya registrado con otra cuenta | | `dq-other` | Otra razón (especificar en nota) | --- ### WF-10: WhatsApp Automation Bridge **Objetivo:** Automatizar el envío de los WhatsApp templates 2, 3 y 4 cuando se cumplen las condiciones de tiempo en cada stage. (Los templates 1 y 5 son manuales por diseño.) **Trigger:** Múltiples — se usan `Opportunity Changed` + `Wait` combinados **Estado:** [REVISAR] — Verificar que los WhatsApp templates estén aprobados por Meta y activos en la cuenta ``` ┌─────────────────────────────────────────────────────────────┐ │ SUB-WORKFLOW A: Verification Reminder (WhatsApp Template 2) │ └─────────────────────────────────────────────────────────────┘ [TRIGGER] Opportunity Changed │ Pipeline = "Seller Onboarding" | Stage changed to "Account Created" │ ▼ [WAIT] 48 hours │ ▼ [CONDITION] If/Else: Is stage still "Account Created"? │ ├─ YES │ │ │ ▼ │ [ACTION] Send WhatsApp: "Template 2 — Verification Reminder" │ │ "Hi {{contact.first_name}}, just checking in..." │ │ │ ▼ │ [END] │ └─ NO → [END] ┌─────────────────────────────────────────────────────────────┐ │ SUB-WORKFLOW B: Payout & Package Nudge (WhatsApp Template 3)│ └─────────────────────────────────────────────────────────────┘ [TRIGGER] Opportunity Changed │ Pipeline = "Seller Onboarding" | Stage changed to "Verified" │ ▼ [WAIT] 48 hours │ ▼ [CONDITION] If/Else: Is stage still "Verified"? │ ├─ YES │ │ │ ▼ │ [ACTION] Send WhatsApp: "Template 3 — Payout & Package Nudge" │ │ "Hi {{contact.first_name}}, you're verified! 🎉 ..." │ │ │ ▼ │ [END] │ └─ NO → [END] ┌───────────────────────────────────────────────────────────────┐ │ SUB-WORKFLOW C: First Product Nudge (WhatsApp Template 4) │ └───────────────────────────────────────────────────────────────┘ [TRIGGER] Opportunity Changed │ Pipeline = "Seller Onboarding" | Stage changed to "Payout & Package Set" │ ▼ [WAIT] 72 hours │ ▼ [CONDITION] If/Else: Is stage still "Payout & Package Set"? │ ├─ YES │ │ │ ▼ │ [ACTION] Send WhatsApp: "Template 4 — First Product Nudge" │ │ "Hi {{contact.first_name}}, almost there!..." │ │ │ ▼ │ [END] │ └─ NO → [END] ``` **Notas:** - Cada sub-workflow es independiente para mantenerlos simples y fáciles de debuggear - Si se prefiere un solo workflow, se puede usar `Fork` con 3 ramas (Regla 7) en vez de 3 workflows separados --- ## Resumen: Workflow Mapping Final | # | Nombre | Trigger | Sprint Dash. Orig. | |---|--------|---------|-------------------| | WF-01 | Lead Loaded → Qualification & Assignment | `Opportunity Created` | WF-01 | | WF-02 | Contacted → Follow-up Task | `Opportunity Changed` (Contacted) | WF-02 | | WF-03 | Account Created Drip (E1, E2, E4, E7) | `Opportunity Changed` (Account Created) | WF-03, WF-04, WF-08, WF-09 | | WF-04 | Verified → Payout Setup | `Opportunity Changed` (Verified) | WF-05 | | WF-05 | First Product Published → Store Live | `Opportunity Changed` (1st Product Published) | WF-06 | | WF-06 | Registration Complete Sequence (E5, E8, E9, E10) | `Contact Tag` (registro-completo) | WF-07, WF-10, WF-11, WF-12 | | **WF-07** | **Lead Intake & Qualification** [NUEVO] | `Opportunity Created` | — | | **WF-08** | **Stuck-in-Contacted Recovery** [NUEVO] | `Stale Opportunities` | — | | **WF-09** | **DQ Handler** [NUEVO] | `Contact Tag` (dq-*) | — | | **WF-10** | **WhatsApp Automation Bridge** [NUEVO] | Múltiple (3 sub-workflows) | — | --- ## Checklist de Configuración Previa en GHL Antes de copiar estos flujos al builder, asegurar que existan: - [ ] Pipeline "Seller Onboarding" con 7 stages exactos - [ ] 10 Email Templates creados con los nombres exactos - [ ] 5 WhatsApp Templates aprobados por Meta - [ ] Tags: `seller-lead`, `tic-event-2026`, `stage-contacted`, `stage-verified`, `email-drip-active`, `registro-completo`, `stuck-contacted` - [ ] Tags DQ: `dq-verification-failed`, `dq-invalid-docs`, `dq-underage`, `dq-duplicate`, `dq-other` - [ ] Custom Field: "Lead Source" (text o dropdown) - [ ] Usuarios: Pablo, Sasha, Rosannah, Sydney, Laura, Kriston - [ ] Internal Notification渠道 configurado (Slack o email)