Recuperación de Carritos Abandonados

Recuperación de Carritos Abandonados

Recupera ventas perdidas con una secuencia inteligente de emails en varios pasos. Esta skill monitoriza el abandono de carritos y envía automáticamente emails de recuperación personalizados para hacer que los clientes vuelvan.

Resumen

PropiedadValor
CategoríaEmail Marketing
EstadoEstable
Versión3.0
Triggerscart_abandoned, cart_recovered
Tasa de Recuperación Promedio10-15%

Cómo Funciona

graph TD
A[Customer adds to cart] -->|Leaves site| B{Cart abandoned?}
B -->|No checkout in 30min| C[Trigger: cart_abandoned]
C --> D[Wait 1 hour]
D --> E{Purchased?}
E -->|No| F[Send Email #1]
F --> G[Wait 24 hours]
G --> H{Purchased?}
H -->|No| I[Send Email #2 + Discount]
I --> J[Wait 48 hours]
J --> K{Purchased?}
K -->|No| L[Send Email #3 - Final]
E -->|Yes| M[Stop sequence]
H -->|Yes| M
K -->|Yes| M
L --> N[Mark as lost]

Configuración

Configuración Básica

skills:
abandoned-cart:
enabled: true
# Cart abandonment detection
detection:
inactivity_threshold: 30m # Minutes before cart is abandoned
min_cart_value: 25 # Minimum cart value to trigger
exclude_logged_out: false # Include guest carts
# Email sequence
sequence:
- delay: 1h
template_id: 101
subject: "Forgot something?"
- delay: 24h
template_id: 102
subject: "Your cart is waiting"
include_discount: true
discount_percent: 10
- delay: 48h
template_id: 103
subject: "Last chance - items selling fast"
include_discount: true
discount_percent: 15
discount_expiry: 24h
# Stop conditions
stop_on:
- cart_recovered
- order_placed
- unsubscribe

Configuración Avanzada

skills:
abandoned-cart:
# Segment-specific timing
timing:
vip_customers:
first_email: 30m
discount_threshold: 0 # Always include discount
new_customers:
first_email: 2h
discount_threshold: 50 # Discount only if cart > $50
repeat_customers:
first_email: 1h
discount_threshold: 100
# A/B testing
ab_testing:
enabled: true
variants:
- name: "urgency"
subject: "Items in your cart are selling fast!"
weight: 50
- name: "friendly"
subject: "Did you forget something?"
weight: 50
# Exclusions
exclude:
- email_domain: ["temp-mail.com", "disposable.com"]
- customer_tag: ["wholesale", "staff"]
- product_category: ["gift-cards"]

Triggers

cart_abandoned

Se dispara cuando un carrito ha estado inactivo durante el umbral configurado.

Datos del Evento

Parameter Type Description
cart_id required
string

Identificador único del carrito

customer_email required
string

Dirección de email del cliente

items required
array

Arreglo de artículos del carrito con name, price, quantity, image_url

total required
number

Valor total del carrito

currency optional
string

Código de moneda (p. ej., USD, EUR)

Default: USD
recovery_url required
string

URL para recuperar el carrito

abandoned_at required
datetime

Cuándo se abandonó el carrito

Ejemplo de payload:

{
"event": "cart_abandoned",
"timestamp": "2024-01-15T14:30:00Z",
"data": {
"cart_id": "cart_abc123",
"customer_email": "[email protected]",
"items": [
{
"id": "prod_123",
"name": "Premium Headphones",
"price": 199.99,
"quantity": 1,
"image_url": "https://cdn.example.com/headphones.jpg",
"variant": "Black"
},
{
"id": "prod_456",
"name": "Phone Case",
"price": 29.99,
"quantity": 2,
"image_url": "https://cdn.example.com/case.jpg"
}
],
"subtotal": 259.97,
"shipping": 0,
"tax": 20.80,
"total": 280.77,
"currency": "USD",
"recovery_url": "https://store.example.com/cart/recover/abc123",
"abandoned_at": "2024-01-15T14:00:00Z"
}
}

cart_recovered

Se dispara cuando un cliente vuelve y completa la compra.

{
"event": "cart_recovered",
"timestamp": "2024-01-15T16:45:00Z",
"data": {
"cart_id": "cart_abc123",
"customer_email": "[email protected]",
"order_id": "order_789",
"recovered_via": "email_1", // Which email triggered recovery
"time_to_recover": "2h15m"
}
}

Plantillas de Email

Variables de Plantilla

Usa estas variables en tus plantillas de email de Brevo:

VariableDescripciónEjemplo
params.FIRSTNAMENombre del clienteJane
params.CART_URLURL de recuperación del carritohttps://…
params.CART_TOTALTotal del carrito formateado$280.77
params.ITEM_COUNTNúmero de artículos3
params.ITEMSArreglo JSON de artículos[…]
params.DISCOUNT_CODECódigo de descuento generadoSAVE10-ABC
params.DISCOUNT_PERCENTPorcentaje de descuento10
params.EXPIRY_DATEFecha de vencimiento del descuento17 ene, 2024

Secuencia de Emails Recomendada

Email 1 (1 hora): Recordatorio suave

  • Asunto: “¿Olvidaste algo, {{ params.FIRSTNAME }}?”
  • Enfoque: Recordar el contenido del carrito
  • Aún sin descuento

Email 2 (24 horas): Añadir urgencia + incentivo

  • Asunto: “Tu carrito te espera + 10% de descuento”
  • Enfoque: Descuento por tiempo limitado
  • Incluir código de descuento

Email 3 (48 horas): Último impulso

  • Asunto: “Última oportunidad - 15% de descuento que vence pronto”
  • Enfoque: Escasez + descuento más fuerte
  • Vencimiento del descuento en 24 horas

Ejemplos de Código

Activar la Skill de Carrito Abandonado

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
await tajo.skills.enable('abandoned-cart', {
detection: {
inactivityThreshold: '30m',
minCartValue: 25
},
sequence: [
{ delay: '1h', templateId: 101 },
{ delay: '24h', templateId: 102, discountPercent: 10 },
{ delay: '48h', templateId: 103, discountPercent: 15 }
]
});

Rastrear el Abandono de Carrito

// Call this when cart activity is detected
await tajo.events.track('cart_updated', {
cartId: 'cart_abc123',
customerEmail: '[email protected]',
items: cartItems,
total: 280.77
});
// Call this when customer leaves without checkout
// (typically from a beforeunload event or session timeout)
await tajo.events.track('cart_abandoned', {
cartId: 'cart_abc123',
customerEmail: '[email protected]',
items: cartItems,
total: 280.77,
recoveryUrl: 'https://store.example.com/cart/recover/abc123'
});

Generar Códigos de Descuento

// Generate a unique discount code
const discount = await tajo.discounts.create({
type: 'percentage',
value: 10,
expiresIn: '7d',
usageLimit: 1,
prefix: 'SAVE10'
});
// discount.code => "SAVE10-ABC123"

Analítica

Rastrea el rendimiento de la recuperación de carritos abandonados:

MétricaDescripción
Tasa de Abandono% de carritos que son abandonados
Tasa de Recuperación% de carritos abandonados recuperados
Ingresos RecuperadosIngresos totales de carritos recuperados
Tasa de Apertura de Email% de emails de recuperación abiertos
CTR de EmailTasa de clics en los emails de recuperación
Tiempo hasta la RecuperaciónTiempo promedio desde el abandono hasta la compra
const stats = await tajo.skills.getStats('abandoned-cart', {
period: '30d'
});
console.log(stats);
// {
// abandonmentRate: 68.5,
// recoveryRate: 12.3,
// revenueRecovered: 15420.50,
// emailsSent: 2340,
// emailOpenRate: 45.2,
// emailCtr: 8.7,
// avgTimeToRecovery: '4h32m'
// }

Buenas Prácticas

El Momento Importa

Envía el primer email entre 1 y 2 horas después del abandono. Las tasas de recuperación caen significativamente después de 24 horas.

  1. Personaliza las líneas de asunto - Usa el nombre del cliente y el contenido del carrito
  2. Muestra el contenido del carrito - Incluye imágenes de productos en el email
  3. Crea urgencia - Menciona stock bajo o descuentos por tiempo limitado
  4. Facilita la recuperación - Enlaces de recuperación del carrito con un solo clic
  5. Prueba tu secuencia - Prueba A/B el timing, las líneas de asunto y los descuentos
  6. Respeta las bajas - Detén la secuencia inmediatamente al darse de baja

Skills Relacionadas

Próximos Pasos

  1. Configura el seguimiento del carrito en tu plataforma
  2. Crea plantillas de email en Brevo
  3. Configura la integración de códigos de descuento
  4. Monitoriza el rendimiento en el panel

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

Asistente AI

¡Hola! Pregúntame lo que quieras sobre la documentación.

Empieza gratis con Brevo