Récupération de panier abandonné

Récupération de panier abandonné

Récupérez les ventes perdues grâce à une séquence d’emails intelligente en plusieurs étapes. Ce skill surveille l’abandon de panier et envoie automatiquement des emails de récupération personnalisés pour faire revenir les clients.

Vue d’ensemble

PropriétéValeur
CatégorieEmail marketing
StatutStable
Version3.0
Déclencheurscart_abandoned, cart_recovered
Taux de récupération moyen10-15 %

Fonctionnement

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]

Configuration

Configuration de base

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

Configuration avancée

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"]

Déclencheurs

cart_abandoned

Se déclenche lorsqu’un panier est inactif depuis le seuil configuré.

Données d'événement

Parameter Type Description
cart_id required
string

Identifiant unique du panier

customer_email required
string

Adresse email du client

items required
array

Tableau d'articles du panier avec nom, prix, quantité, image_url

total required
number

Valeur totale du panier

currency optional
string

Code de devise (ex. USD, EUR)

Default: USD
recovery_url required
string

URL pour récupérer le panier

abandoned_at required
datetime

Date et heure d'abandon du panier

Exemple de charge utile :

{
"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 déclenche lorsqu’un client revient et finalise son achat.

{
"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"
}
}

Modèles d’email

Variables de modèle

Utilisez ces variables dans vos modèles d’email Brevo :

VariableDescriptionExemple
params.FIRSTNAMEPrénom du clientJane
params.CART_URLURL de récupération du panierhttps://…
params.CART_TOTALTotal du panier formaté280,77 $
params.ITEM_COUNTNombre d’articles3
params.ITEMSTableau JSON des articles[…]
params.DISCOUNT_CODECode de réduction généréSAVE10-ABC
params.DISCOUNT_PERCENTPourcentage de réduction10
params.EXPIRY_DATEDate d’expiration de la réduction17 janv. 2024

Séquence d’emails recommandée

Email 1 (1 heure) : rappel en douceur

  • Objet : « Vous avez oublié quelque chose, {{ params.FIRSTNAME }} ? »
  • Focus : rappeler le contenu du panier
  • Pas encore de réduction

Email 2 (24 heures) : urgence + incitation

  • Objet : « Votre panier vous attend + 10 % de réduction »
  • Focus : réduction limitée dans le temps
  • Inclure un code de réduction

Email 3 (48 heures) : dernier coup de pouce

  • Objet : « Dernière chance - 15 % expirent bientôt »
  • Focus : rareté + réduction plus forte
  • Expiration de la réduction dans 24 heures

Exemples de code

Activer le skill de panier abandonné

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 }
]
});

Suivre l’abandon de panier

// 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'
});

Générer des codes de réduction

// 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"

Analytique

Suivez la performance de récupération des paniers abandonnés :

IndicateurDescription
Taux d’abandon% de paniers abandonnés
Taux de récupération% de paniers abandonnés récupérés
Revenu récupéréRevenu total des paniers récupérés
Taux d’ouverture des emails% d’emails de récupération ouverts
CTR des emailsTaux de clic sur les emails de récupération
Délai de récupérationTemps moyen entre l’abandon et l’achat
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'
// }

Bonnes pratiques

Le timing est essentiel

Envoyez le premier email dans les 1 à 2 heures suivant l’abandon. Les taux de récupération chutent considérablement après 24 heures.

  1. Personnalisez les objets - Utilisez le nom du client et le contenu du panier
  2. Affichez le contenu du panier - Incluez des images des produits dans l’email
  3. Créez de l’urgence - Mentionnez un stock faible ou des réductions limitées dans le temps
  4. Facilitez la récupération - Liens de récupération de panier en un clic
  5. Testez votre séquence - Faites des tests A/B sur le timing, les objets et les réductions
  6. Respectez les désabonnements - Arrêtez la séquence immédiatement en cas de désabonnement

Skills associés

Étapes suivantes

  1. Configurez le suivi de panier sur votre plateforme
  2. Créez des modèles d’email dans Brevo
  3. Configurez l’intégration des codes de réduction
  4. Surveillez les performances dans le tableau de bord

Subscribe to updates

developer-docs

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

Assistant AI

Bonjour ! Posez-moi vos questions sur la documentation.

Commencez gratuitement avec Brevo