购物车挽回
购物车挽回
通过智能多步骤邮件序列挽回流失销售。此 Skill 监控购物车放弃行为,自动发送个性化挽回邮件,将客户带回完成购买。
概览
| 属性 | 值 |
|---|---|
| 分类 | 邮件营销 |
| 状态 | 稳定版 |
| 版本 | 3.0 |
| 触发器 | cart_abandoned、cart_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) |
recovery_url required | string | 购物车恢复链接 |
abandoned_at required | datetime | 购物车被放弃的时间 |
示例 payload:
{ "event": "cart_abandoned", "timestamp": "2024-01-15T14:30:00Z", "data": { "cart_id": "cart_abc123", "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", "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', items: cartItems, total: 280.77});
// 客户未结账即离开时调用// (通常在 beforeunload 事件或 session 超时时触发)await tajo.events.track('cart_abandoned', { cartId: 'cart_abc123', 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 小时后,挽回率会显著下降。
- 个性化主题行 - 使用客户姓名和购物车内容
- 展示购物车商品 - 在邮件中包含商品图片
- 制造紧迫感 - 提及库存紧张或限时折扣
- 降低挽回门槛 - 提供一键恢复购物车链接
- 测试邮件序列 - A/B 测试发送时间、主题行和折扣力度
- 尊重退订行为 - 收到退订后立即停止序列
相关 Skills
- Cart Events - 追踪购物车活动
- Browse Abandonment - 挽回浏览放弃
- Win-Back - 重新激活沉睡客户