📱 ¿Qué es el Sistema de Carrito Abandonado por WhatsApp?
Es un sistema automático que detecta carritos abandonados en Shopify y envía un mensaje de WhatsApp al cliente para recuperar la venta. Si el cliente responde, un bot con IA lo atiende sabiendo exactamente qué productos dejó en el carrito.
Canales: WhatsApp (mensaje directo) + Klaviyo (flujo de emails condicional).
🔄 Flujo Completo
- Cliente abandona checkout en yeppo.cl — Shopify registra el carrito.
- Espera 45 minutos — margen para que el cliente vuelva solo.
- El sistema revisa cada 60 min (entre 10:00 y 22:00) todos los checkouts abandonados de los últimos 7 días.
- Envía template de WhatsApp
recuperar_carrito_yeppocon el nombre del cliente y link directo a su checkout. - Guarda en Klaviyo el campo
wa_carrito_enviado_atcon la fecha/hora del envío. - Klaviyo lo detecta — el Conditional Split en el flujo
U48rQKevita enviar email si ya recibió WhatsApp.
📨 El Mensaje de WhatsApp
Template: recuperar_carrito_yeppo (ID Meta: 4367182693500526)
Contenido:
- Saludo personalizado con el nombre del cliente
- Recordatorio de que dejó productos en el carrito
- Botón directo al checkout para completar la compra
Límites:
- Máximo 1 mensaje cada 30 días por cliente (controlado por Redis).
- Intervalo de 1.2 segundos entre mensajes (rate limit de Meta).
- Solo se envía si el checkout tiene teléfono válido (formato chileno).

🤖 Bot con IA: Respuestas con Contexto
Cuando el cliente responde al mensaje de WhatsApp, el bot NO responde genéricamente. El sistema inyecta en la IA:
- Productos abandonados: nombre, variante, cantidad y precio de cada producto del carrito.
- Total del carrito.
- Contexto de la campaña: sabe que el cliente viene de un mensaje de recuperación.
Ejemplo de lo que recibe la IA:
## Contexto: Recuperación de carrito abandonado Productos en su carrito: - Sérum Niacinamida 10% (30ml) x1 — $12.990 - Protector Solar Oil-Free (50ml) x2 — $8.990 Total: $30.970
Esto permite que el bot responda preguntas como «¿ese sérum es bueno para piel grasa?» o «¿cuánto me demora el envío?» sin necesidad de preguntar de qué producto habla.

🔀 Conditional Split en Klaviyo
El flujo de carrito abandonado en Klaviyo (U48rQK) tiene un Conditional Split que verifica si el cliente ya recibió WhatsApp:
- Condición:
wa_carrito_enviado_atexiste y fue en las últimas 2 horas. - Rama SÍ: el cliente ya recibió WhatsApp → NO se envía email #1 (evita duplicación).
- Rama NO: no recibió WhatsApp → sigue el flujo normal de emails.
⚠️ Importante: la rama SÍ debe reconectar al delay de 24h (siguiente paso del flujo), NO terminar el flujo. Si termina, el cliente no recibe ningún email de seguimiento.
Ver lección específica: Conditional Split en Flujo de Carritos — WhatsApp + Klaviyo
📊 Monitoreo y Métricas
Verificar envíos recientes:
- Endpoint de logs:
/admin/logs?n=100en Railway. - Buscar líneas con
[carrito]para ver candidatos, envíos exitosos y errores.
Verificar en Klaviyo:
- Campo
wa_carrito_enviado_aten el perfil del cliente → indica que recibió WhatsApp. - Flujo
U48rQK→ revisar entradas para confirmar que el split está funcionando.
Métricas del sistema (ejemplo real del 21-may-2026):
- 189 checkouts procesados
- 120 candidatos (teléfono válido, no duplicado)
- 88 mensajes enviados ✅
- 0 fallos ❌
⚙️ Configuración Técnica
Stack: Node.js + Railway + Redis + Shopify API + Meta WhatsApp Cloud API + Klaviyo API.
Variables de entorno (Railway):
CARRITO_ENABLED=true— activa/desactiva el módulo.WHATSAPP_ACCESS_TOKEN— token de Meta para enviar mensajes.SHOPIFY_TOKEN— token admin de Shopify para leer checkouts.KLAVIYO_API_KEY— API key para escribirwa_carrito_enviado_at.REDIS_URL— Redis para control de duplicados (TTL 30 días).
Horario: 10:00 a 22:00 (hora Chile), cada 60 minutos.
Ubicación del código: core/carrito-abandonado.js en el repositorio claw-whatsapp-agent.
🚫 Lo Que NO Hace
- NO envía mensaje si el cliente ya completó la compra (próximamente se agregará verificación).
- NO reemplaza el flujo de emails de Klaviyo — son canales complementarios.
- NO envía más de 1 mensaje por cliente cada 30 días.