购物车挽回

购物车挽回

通过智能多步骤邮件序列挽回流失销售。此 Skill 监控购物车放弃行为,自动发送个性化挽回邮件,将客户带回完成购买。

概览

属性
分类邮件营销
状态稳定版
版本3.0
触发器cart_abandonedcart_recovered
平均挽回率10-15%

工作原理

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]

配置

基础设置

skills:
abandoned-cart:
enabled: true
# 购物车放弃检测
detection:
inactivity_threshold: 30m # 判定购物车放弃的无活动时间(分钟)
min_cart_value: 25 # 触发所需的最低购物车金额
exclude_logged_out: false # 是否包含访客购物车
# 邮件序列
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_on:
- cart_recovered
- order_placed
- unsubscribe

高级配置

skills:
abandoned-cart:
# 按细分设置时间
timing:
vip_customers:
first_email: 30m
discount_threshold: 0 # 始终提供折扣
new_customers:
first_email: 2h
discount_threshold: 50 # 仅当购物车 > $50 时提供折扣
repeat_customers:
first_email: 1h
discount_threshold: 100
# A/B 测试
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
# 排除规则
exclude:
- email_domain: ["temp-mail.com", "disposable.com"]
- customer_tag: ["wholesale", "staff"]
- product_category: ["gift-cards"]

触发器

cart_abandoned

当购物车在配置的时间阈值内无活动时触发。

事件数据

Parameter Type Description
cart_id required
string

购物车唯一标识符

customer_email required
string

客户邮箱地址

items required
array

购物车商品数组,包含 name、price、quantity、image_url

total required
number

购物车总金额

currency optional
string

货币代码(如 USD、EUR)

Default: USD
recovery_url required
string

购物车恢复链接

abandoned_at required
datetime

购物车被放弃的时间

示例 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

当客户返回并完成结账时触发。

{
"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", // 哪封邮件触发了挽回
"time_to_recover": "2h15m"
}
}

邮件模板

模板变量

在您的 Brevo 邮件模板中使用以下变量:

变量描述示例
params.FIRSTNAME客户名字Jane
params.CART_URL购物车恢复链接https://…
params.CART_TOTAL格式化后的购物车总额$280.77
params.ITEM_COUNT商品数量3
params.ITEMS商品 JSON 数组[…]
params.DISCOUNT_CODE生成的折扣码SAVE10-ABC
params.DISCOUNT_PERCENT折扣百分比10
params.EXPIRY_DATE折扣到期日期Jan 17, 2024

推荐邮件序列

邮件 1(1小时):温和提醒

  • 主题:“您忘了什么,{{ params.FIRSTNAME }}?”
  • 重点:提醒购物车内容
  • 暂不提供折扣

邮件 2(24小时):增加紧迫感 + 优惠

  • 主题:“您的购物车还在等您 + 九折优惠”
  • 重点:限时折扣
  • 附上折扣码

邮件 3(48小时):最后推送

  • 主题:“最后机会——85折即将过期”
  • 重点:稀缺性 + 更大力度折扣
  • 折扣24小时后到期

代码示例

启用购物车挽回 Skill

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

追踪购物车放弃

// 检测到购物车活动时调用
await tajo.events.track('cart_updated', {
cartId: 'cart_abc123',
customerEmail: '[email protected]',
items: cartItems,
total: 280.77
});
// 客户未结账即离开时调用
// (通常在 beforeunload 事件或 session 超时时触发)
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'
});

生成折扣码

// 生成唯一折扣码
const discount = await tajo.discounts.create({
type: 'percentage',
value: 10,
expiresIn: '7d',
usageLimit: 1,
prefix: 'SAVE10'
});
// discount.code => "SAVE10-ABC123"

数据分析

追踪购物车挽回活动的效果:

指标描述
放弃率购物车被放弃的比例
挽回率被放弃购物车成功挽回的比例
挽回收入挽回购物车带来的总收入
邮件打开率挽回邮件的打开比例
邮件点击率挽回邮件的点击率
挽回时长从放弃到购买的平均时间
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'
// }

最佳实践

时机至关重要

在放弃后 1-2 小时内发送第一封邮件。超过 24 小时后,挽回率会显著下降。

  1. 个性化主题行 - 使用客户姓名和购物车内容
  2. 展示购物车商品 - 在邮件中包含商品图片
  3. 制造紧迫感 - 提及库存紧张或限时折扣
  4. 降低挽回门槛 - 提供一键恢复购物车链接
  5. 测试邮件序列 - A/B 测试发送时间、主题行和折扣力度
  6. 尊重退订行为 - 收到退订后立即停止序列

相关 Skills

后续步骤

  1. 在您的平台上设置购物车追踪
  2. 在 Brevo 中创建邮件模板
  3. 配置折扣码集成
  4. 在仪表板中监控活动效果

Subscribe to updates

developer-docs

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

AI 助手

你好!关于文档有任何问题都可以问我。

免费开始使用Brevo