El 70% de los carritos en Shopify se abandonan antes del pago. No es una estadística nueva, pero sigue siendo dinero que la mayoría de las tiendas deja ir sin pelear. El email de recuperación automático de Shopify llega tarde, tiene tasas de apertura del 15–20% y compite con decenas de correos en el mismo inbox. WhatsApp, en cambio, tiene tasas de apertura que superan el 90% y la mayoría de los mensajes se leen en los primeros tres minutos. La automatización con n8n para Shopify que describo aquí conecta ambos canales sin depender de Zapier, sin pagar por apps especializadas de recuperación y con control total sobre la lógica del flujo.
Este artículo documenta la arquitectura real: qué nodos usar, cómo estructurar el webhook de Shopify, cómo llamar a la API de WhatsApp Business y cómo manejar los casos edge que hacen que la mayoría de estos flujos fallen en producción.
Por qué n8n y no Zapier, Klaviyo u otras apps de recuperación
La respuesta corta es costo y control. Zapier cobra por tarea ejecutada; un volumen de 5,000 carritos abandonados al mes puede representar entre $50 y $150 USD adicionales dependiendo del plan. Apps especializadas como Recart o SMSBump tienen modelos de suscripción que van de $29 a $299/mes más costo por mensaje. Con n8n self-hosted el costo de infraestructura es tu VPS o servidor —muchos corren en instancias de $6–12/mes— y pagas únicamente el costo de los mensajes de WhatsApp Business API, que en México ronda los $0.0146 USD por conversación iniciada por la empresa.
La otra razón es control real sobre la lógica. ¿Quieres esperar 45 minutos antes del primer mensaje en lugar de una hora? ¿Excluir clientes que compraron en los últimos 7 días? ¿Variar el mensaje según el monto del carrito? En Zapier ajustar esas condiciones significa escalar de plan o hacer malabares con filtros. En n8n es un nodo IF con la condición que necesitas, y listo.
⚙️ Prerequisito
Esta guía asume que tienes n8n instalado (self-hosted o cloud), una cuenta de Meta for Developers con WhatsApp Business API habilitada y acceso al admin de tu tienda Shopify con permisos para crear webhooks. Si necesitas ayuda con la configuración inicial revisa la página de automatización de procesos para Shopify.
Arquitectura del flujo: cómo se conectan las piezas
El flujo completo tiene cuatro etapas. Primero, Shopify dispara un webhook cuando se crea un checkout (no cuando se abandona —ese evento no existe como tal— sino cuando el cliente llega a la página de checkout y deja su teléfono o email). Segundo, n8n recibe ese evento y espera un tiempo configurable. Tercero, consulta de vuelta a Shopify para verificar si el pedido ya fue completado. Cuarto, si el carrito sigue abierto, envía el mensaje por WhatsApp.
El diagrama lógico es el siguiente:
[Webhook Shopify: checkouts/create]
↓
[Wait: 45 minutos]
↓
[HTTP Request → GET /admin/api/2024-01/checkouts/{token}.json]
↓
[IF: completed_at == null AND abandoned_checkout_url != null]
↓ SÍ ↓ NO
[HTTP Request → [Stop and Error / No Operation]
WhatsApp Cloud API]
↓
[Set: marcar enviado en Shopify / log en hoja de cálculo]
Configurando el webhook en Shopify
En el admin de Shopify ve a Configuración → Notificaciones → Webhooks y crea uno nuevo con el evento checkouts/create apuntando a la URL de tu workflow en n8n. La URL del nodo Webhook en n8n tiene el formato https://tu-instancia.n8n.io/webhook/[id-único]. Importante: Shopify solo envía datos de teléfono cuando el cliente lo ingresa en el formulario de checkout. Si tu tienda no tiene el campo de teléfono obligatorio en el checkout, la recuperación por WhatsApp solo funcionará para clientes existentes cuyo número ya esté en tu base de datos de clientes —un matiz que muchas guías omiten.
El payload que llega contiene todo lo que necesitas: id, token, email, phone, line_items (con nombre y precio de cada producto), total_price y abandoned_checkout_url (el enlace directo para que el cliente retome su carrito con un clic).
Configurando la llamada a WhatsApp Cloud API
Meta exige que el primer mensaje en una conversación iniciada por la empresa use una plantilla aprobada (template message). No puedes enviar texto libre en el primer contacto. El proceso para aprobar una plantilla tarda entre 24 y 48 horas y se hace desde Meta Business Manager. Una plantilla de recuperación típica tiene esta estructura:
Hola {{1}}, notamos que dejaste {{2}} en tu carrito. 🛒
¿Quieres completar tu compra?
👉 {{3}}
Si tienes dudas, escríbenos aquí mismo.
Los tres parámetros son: nombre del cliente, nombre del primer producto del carrito y el enlace de checkout abandonado. En el nodo HTTP Request de n8n la llamada a la API queda así (método POST, autenticación Bearer con tu token de acceso de Meta):
{
"messaging_product": "whatsapp",
"to": "{{ $json.phone }}",
"type": "template",
"template": {
"name": "recuperacion_carrito",
"language": { "code": "es_MX" },
"components": [
{
"type": "body",
"parameters": [
{ "type": "text", "text": "{{ $json.billing_address.first_name }}" },
{ "type": "text", "text": "{{ $json.line_items[0].title }}" },
{ "type": "text", "text": "{{ $json.abandoned_checkout_url }}" }
]
}
]
}
}
Los casos edge que rompen el flujo en producción
Documentar los happy paths es fácil. Lo que diferencia un flujo robusto de uno que falla silenciosamente son los casos edge. Estos son los tres que más problemas dan:
Teléfono sin formato internacional
- Shopify guarda el teléfono como lo escribió el cliente
- WhatsApp exige formato E.164: +521XXXXXXXXXX
- Solución: nodo Code en n8n con regex que normaliza el número antes de enviarlo
- Detectar si empieza con 52, 521 o ninguno y completar el prefijo
Checkouts de prueba y bots
- Cada vez que tú o tu equipo hagan un checkout de prueba dispara el webhook
- Filtra por email: IF email contains "@ejemplo.com" → No Operation
- También filtra carritos con total_price menor a $1 MXN
- Los bots de scraping generan checkouts con datos falsos que queman cuota de API
El tercer caso edge —y el más crítico— es el doble disparo. Si el cliente actualiza su carrito Shopify puede generar un segundo evento checkouts/update o incluso un segundo checkouts/create con otro token. Sin deduplicación, el cliente recibirá dos WhatsApps en 45 minutos. La solución más simple en n8n es una tabla en una hoja de Google Sheets o en Airtable que registra los emails ya contactados en las últimas 24 horas, y un nodo IF que consulta esa tabla antes de enviar.
Métricas reales que puedes esperar
Los números varían por industria, ticket promedio y audiencia, pero los benchmarks reportados por operadores de Shopify en LATAM que usan WhatsApp para recuperación son consistentes: tasa de apertura del mensaje entre 85% y 92%, tasa de clic en el enlace de checkout del 35% al 48%, y tasa de conversión final (compra completada) del 12% al 18%. Comparado con el email —donde una tasa de recuperación del 4–5% ya se considera buena— la diferencia es significativa.
El tiempo de espera óptimo antes del primer mensaje está en el rango de 30 a 60 minutos. Menos de 30 minutos genera fricción; el cliente puede estar todavía en el proceso de pago o simplemente pausado buscando su tarjeta. Más de 90 minutos y el contexto se enfría. En la operación e-commerce que gestioné, 45 minutos fue el punto de mayor conversión.
| Canal | Tasa apertura | Tasa clic | Recuperación | Costo aprox. |
|---|---|---|---|---|
| Email (Shopify nativo) | 15–20% | 8–12% | 3–5% | Incluido |
| App recuperación (SMS/WA) | 60–75% | 25–35% | 8–12% | $49–299/mes |
| n8n + WhatsApp Cloud API | 85–92% | 35–48% | 12–18% | ~$0.015/msg |
Escalar el flujo: secuencia de seguimiento y segmentación por valor
El flujo de un solo mensaje es el punto de partida. Una vez validado, el siguiente paso natural es una secuencia de dos o tres toques. El esquema que funciona mejor es: mensaje 1 a los 45 min (recordatorio sin descuento), mensaje 2 a las 24 horas (solo si no compró, con incentivo pequeño: envío gratis o 5% de descuento) y opcionalmente un mensaje 3 a las 72 horas para carritos de alto valor.
La segmentación por valor del carrito cambia completamente la rentabilidad. Para carritos menores a $500 MXN, el costo de enviar tres mensajes puede acercarse al margen del producto; en esos casos tiene más sentido solo el mensaje 1. Para carritos mayores a $2,000 MXN, la secuencia completa más un descuento del 10% sigue siendo rentable incluso si solo convierte el 10% de los carritos contactados.
En n8n esto se implementa con un nodo Switch que evalúa total_price y bifurca el flujo hacia subsecuencias distintas. No es código complejo; son dos o tres ramas adicionales en el mismo canvas.
✅ Lo que puedes hacer hoy
Crea el webhook de checkouts/create en tu tienda Shopify y apúntalo a un workflow de n8n con un solo nodo de inicio. Deja que corra por 48 horas sin enviar mensajes —solo registra los payloads que llegan. Con esa muestra real sabrás exactamente cuántos carritos captura, qué porcentaje tiene teléfono válido y cuánto vale en promedio el carrito abandonado en tu tienda. Con esos datos reales diseñas el flujo completo con criterios concretos, no estimaciones genéricas.