---
title: "Recuperación de Carritos Abandonados"
description: "Recupera ventas perdidas con una secuencia inteligente de emails en varios pasos que hace que los clientes vuelvan para completar su compra."
url: https://tajo.io/es/docs/skills/email-marketing/abandoned-cart/
markdown: https://tajo.io/es/docs/skills/email-marketing/abandoned-cart.md
lang: es-ES
robots: noindex
---

Solicita acceso anticipado

Escribe tu nombre y dirección de correo de trabajo. Te enviaremos un enlace para confirmar tu solicitud de acceso a Tajo.

# 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

| Propiedad | Valor |
| --- | --- |
| **Categoría** | Email Marketing |
| **Estado** | Estable |
| **Versión** | 3.0 |
| **Triggers** | `cart_abandoned`, `cart_recovered` |
| **Tasa de Recuperación Promedio** | 10-15% |

## Cómo Funciona

```mermaid
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

```yaml
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

```yaml
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:

```json
{
  "event": "cart_abandoned",
  "timestamp": "2024-01-15T14:30:00Z",
  "data": {
    "cart_id": "cart_abc123",
    "customer_email": "jane@example.com",
    "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.

```json
{
  "event": "cart_recovered",
  "timestamp": "2024-01-15T16:45:00Z",
  "data": {
    "cart_id": "cart_abc123",
    "customer_email": "jane@example.com",
    "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:

| Variable | Descripción | Ejemplo |
| --- | --- | --- |
| `params.FIRSTNAME` | Nombre del cliente | Jane |
| `params.CART_URL` | URL de recuperación del carrito | https://… |
| `params.CART_TOTAL` | Total del carrito formateado | $280.77 |
| `params.ITEM_COUNT` | Número de artículos | 3 |
| `params.ITEMS` | Arreglo JSON de artículos | \[…\] |
| `params.DISCOUNT_CODE` | Código de descuento generado | SAVE10-ABC |
| `params.DISCOUNT_PERCENT` | Porcentaje de descuento | 10 |
| `params.EXPIRY_DATE` | Fecha de vencimiento del descuento | 17 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

```javascript
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

```javascript
// Call this when cart activity is detected
await tajo.events.track('cart_updated', {
  cartId: 'cart_abc123',
  customerEmail: 'jane@example.com',
  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: 'jane@example.com',
  items: cartItems,
  total: 280.77,
  recoveryUrl: 'https://store.example.com/cart/recover/abc123'
});
```

### Generar Códigos de Descuento

```javascript
// 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étrica | Descripción |
| --- | --- |
| **Tasa de Abandono** | % de carritos que son abandonados |
| **Tasa de Recuperación** | % de carritos abandonados recuperados |
| **Ingresos Recuperados** | Ingresos totales de carritos recuperados |
| **Tasa de Apertura de Email** | % de emails de recuperación abiertos |
| **CTR de Email** | Tasa de clics en los emails de recuperación |
| **Tiempo hasta la Recuperación** | Tiempo promedio desde el abandono hasta la compra |

```javascript
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

- Eventos de Carrito - Rastrea la actividad del carrito
- Abandono de Navegación - Recupera sesiones de navegación
- Recuperación de Clientes - Reactiva a los clientes inactivos

## 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
