Analista de marketing

0 de 21 lecciones completas (0%)

Conditional Split en Flujo de Carritos — WhatsApp + Klaviyo

Esta es una vista previa de clase

Compra el curso, o inicia sesión si ya te has inscrito, para asistir a esta clase.

Arquitectura del Sistema de Carritos
Figura 1: Arquitectura completa del sistema WhatsApp + Klaviyo

📋 Resumen del Sistema

El sistema de carritos abandonados de Yeppo tiene dos canales de comunicación que trabajan en paralelo:

  1. Bot de WhatsApp (Railway): detecta carritos abandonados y envía mensajes personalizados con links de recuperación
  2. Flujo de email en Klaviyo (U48rQK): secuencia de correos programados (1h, 24h, 3 días)

El desafío: evitar que un mismo cliente reciba WhatsApp Y email por el mismo carrito abandonado. La solución: sincronización vía campo personalizado.

🏗️ Arquitectura del Sistema

Ver Figura 1 arriba. El flujo es:

  1. Cliente abandona checkout en Shopify
  2. Bot WhatsApp (Railway) envía mensaje con link de recuperación
  3. El bot escribe el timestamp wa_carrito_enviado_at en el perfil de Klaviyo del cliente
  4. Flujo Klaviyo U48rQK procesa al contacto:
  • Delay 1 hora
  • Conditional Split: ¿wa_carrito_enviado_at menor a 2 horas?
  • → Saltar Email #1, reconectar al Delay 24h
  • NO → Email #1 → Delay 24h
  • Delay 24h → Email #2
  • Delay 3 días → Email #3

🔑 El Campo wa_carrito_enviado_at

Es un campo personalizado de fecha/hora en el perfil de Klaviyo del cliente.

  • Quién lo escribe: El bot de WhatsApp (código en core/klaviyo.js del repo claw-whatsapp-agent)
  • Cuándo se escribe: Cada vez que el bot envía un mensaje de carrito abandonado por WhatsApp
  • Para qué sirve: Es la «bandera» que le dice al flujo de Klaviyo: «este cliente ya recibió WhatsApp, no le mandes el Email #1 todavía»
Comparación Conditional Split
Figura 2: Comparación visual — ❌ INCORRECTO (split al inicio) vs ✅ CORRECTO (split después del delay 1h)

⚠️ Regla de Oro del Conditional Split

✅ Ubicación CORRECTA (ver Figura 2, lado derecho)

El Conditional Split debe ir DESPUÉS del delay de 1 hora, justo ANTES del Email #1.

  • La rama SÍ (WA ya enviado): SALTA solo el Email #1 y se reconecta al flujo en el siguiente delay
  • La rama NO (sin WA): recibe Email #1 normalmente
  • Ambas ramas continúan con el resto del flujo (Delay 24h, Email #2, Delay 3d, Email #3)

❌ Ubicación INCORRECTA (ver Figura 2, lado izquierdo)

NUNCA poner el Conditional Split al inicio del flujo.

Consecuencia grave: Si el cliente recibió WhatsApp, sale del flujo completo y no recibe NINGÚN email de seguimiento. Pierde Email #2 (24h), Email #3 (3 días), y cualquier comunicación futura. Si no compró por WhatsApp, perdiste TODA oportunidad de recuperarlo por email.

🔀 Las Dos Ramas Deben Reconectar

Este es el error más crítico y frecuente:

  • ✅ CORRECTO: Rama SÍ → Saltar Email #1 → continuar al siguiente delay/email
  • ❌ INCORRECTO: Rama SÍ → Terminar el flujo (END)

Ambas ramas deben llegar al mismo punto: el siguiente delay o email en la secuencia. La rama SÍ simplemente se salta un email, pero no abandona el flujo.

🔧 Checklist de Verificación

Antes de activar el flujo para un evento (Cyber, Black, etc.):

  1. ✅ El bot está corriendo en Railway (CARRITO_ENABLED=true)
  2. ✅ El Conditional Split está después del delay de 1h, NO al inicio del flujo
  3. ✅ La rama SÍ reconecta al siguiente paso del flujo (no termina en END)
  4. ✅ La condición es: wa_carrito_enviado_at → «is in the last» → 2 hours
  5. ✅ El flujo U48rQK está en status LIVE
  6. ✅ Ambas ramas del split (SÍ y NO) llevan al mismo punto de continuación

📊 Variables de Railway Relevantes

  • CARRITO_ENABLED=true — Activa el flujo automático de carritos abandonados
  • KLAVIYO_API_KEY — API key para escribir wa_carrito_enviado_at en Klaviyo
  • SHOPIFY_TOKEN — Token admin Shopify para obtener carritos
  • WA_TOKEN — Token Meta para enviar WhatsApp

🔗 Recursos

  • Flujo Klaviyo: U48rQK («Checkout Abandonado – Flujo»)
  • Repo bot: github.com/alejandrochungp/claw-whatsapp-agent
  • Módulo Klaviyo: core/klaviyo.js
  • Endpoint admin: GET /admin/logs?n=100 (monitoreo de envíos)