关于 loyalty-points-system
帮助商家设计客户忠诚度计划,涵盖积分获取与兑换、等级体系及各平台工具选择,也介绍面向自定义或无头商店的账本方案。
主要功能
- 01积分获取与兑换规则
- 02等级权益与晋升机制
- 03按平台选择忠诚度应用
- 04基于账本的自定义系统设计
- 05余额、过期和退款处理
适用场景
- 01为购买、评论或推荐活动设置奖励
- 02提供含配送或积分权益的 VIP 等级
- 03在移动应用中展示积分余额并支持兑换
- 04为无头商店构建忠诚度积分追踪
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ finsilabs/ awesome-ecommerce-skills --skill loyalty-points-system安装后在 Claude Code 中输入/loyalty-points-system确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
tile.jsonevals/ledger-schema-design/criteria.jsontask.mdevals/points-earning-and-tier-progression/criteria.jsontask.mdevals/redemption-checkout-and-expiration-job/criteria.jsontask.md详细介绍
忠诚度积分系统
概述
忠诚度积分计划会奖励回头客,让他们通过购物及其他活动(评价、推荐、社交分享)赚取积分,并在结账时兑换折扣。设计完善的计划会包含等级进阶(铜级 → 银级 → 金级 → 白金级),随着客户消费增加,解锁免费配送或更高积分倍率等福利。大多数商家应从专用的忠诚度应用开始——主流平台都有出色的选择——而不是从头开始构建。
何时使用此技能
- 添加客户留存机制,以提高重复购买率时
- 推出分级 VIP 计划,让高价值客户解锁免费配送或优先体验等福利时
- 将临时折扣系统替换为客户可以追踪的结构化忠诚度计划时
- 将积分集成到移动应用中,让客户查看余额并在结账时兑换时
- 开展促销活动,为特定行为(评价、推荐、首次购买)奖励额外积分时
核心说明
步骤 1:确定商家的平台并选择合适的工具
| 平台 | 推荐工具 | 原因 |
|---|---|---|
| Shopify | Smile.io(原 Sweet Tooth)或 LoyaltyLion | 两者都可与 Shopify 原生集成,可在结账时处理积分赚取和兑换,并包含等级管理和推荐计划 |
| Shopify(预算有限) | Rivo Loyalty & Rewards 或 Bon Loyalty | 成本更低的替代方案,具备核心积分和等级功能 |
| WooCommerce | WooCommerce Points and Rewards(官方版,约 $79/年)或 YITH WooCommerce Points & Rewards | 与 WooCommerce 原生集成;官方插件维护良好 |
| BigCommerce | Smile.io 或 LoyaltyLion | 两者都提供 BigCommerce 集成 |
| 多平台 / 无头架构 | Loyaltylion API、Smile.io API 或 Yotpo Loyalty | 均提供 API,可与自定义店面集成 |
| 自定义 / 无头架构 | 使用基于账本的积分追踪进行构建 | 仅当应用功能无法满足你的特定需求时使用 |
步骤 2:配置忠诚度计划
Shopify
使用 Smile.io(最受欢迎的 Shopify 忠诚度应用):
- 从 Shopify App Store 安装 Smile: Loyalty & Rewards(提供免费套餐;付费套餐起价约为 $49/月)
- 在 Smile 控制面板中配置赚取积分的方式:
- 购物赚取积分(例如,每消费 $1 赚取 1 积分)
- 创建账户、生日、商品评价可获得额外积分
- 推荐好友可获得推荐积分
- 配置兑换积分的方式:
- 用积分兑换折扣码(例如,100 积分 = 减免 $1)
- 设置兑换所需的最低积分
- 设置每笔订单的最高兑换额度(例如,积分最多可抵扣订单金额的 50%)
- 配置等级(VIP 计划,付费套餐提供):
- 定义等级门槛(例如,铜级:消费 $0–$500,银级:$500–$1,000,金级:$1,000 以上)
- 设置等级福利:积分倍率、专属商品、免费配送
- 配置面向客户的小组件:浮动积分小组件会自动显示在你的店面上;可自定义颜色和位置
测试集成:
- 创建测试客户账户,下测试订单,并确认订单状态变为“已履行”后积分已发放
- 在结账时尝试兑换,确认折扣已正确应用
WooCommerce
使用 WooCommerce Points and Rewards:
- 从 WooCommerce.com 安装 WooCommerce Points and Rewards
- 前往 WooCommerce → Points and Rewards → Settings:
- Earn points:设置积分获取比例(例如,每消费 $1 获得 1 积分)
- Earn points for:购买、评价、注册账户
- Redeem points:设置积分兑换比例(例如,100 积分 = $1 折扣)
- Maximum discount:设置每笔订单可兑换金额的上限
- Points expire:可选设置积分有效期
- 在 WooCommerce → Points and Rewards → Manage Points 下管理各位客户的积分余额
- 积分会自动显示在客户的账户页面中
在 WooCommerce 中设置等级: 官方插件不包含等级管理功能。可选方案:
- YITH WooCommerce Points & Rewards:包含等级/VIP 功能
- Gamification for WooCommerce:添加等级和成就徽章
- 根据客户的累计消费金额,手动为 WooCommerce 客户分配群组(角色),并提供群组专属价格或运费
BigCommerce
在 BigCommerce 上使用 Smile.io:
- 从 BigCommerce App Marketplace 安装 Smile.io
- 按照上文 Shopify 部分中的相同步骤设置 Smile.io,界面几乎完全相同
- Smile.io 与 BigCommerce 结账流程集成,可通过优惠券代码应用忠诚度折扣
使用 LoyaltyLion:
- 从 BigCommerce App Marketplace 安装 LoyaltyLion
- 在 LoyaltyLion 控制面板中配置积分获取规则和兑换选项
- 该应用会在账户页面添加客户忠诚度面板,并与 BigCommerce 结账流程集成
自定义 / 无头架构
对于无头店面,或者应用功能不足以满足需求时,可以构建基于账本的积分系统。账本模式(仅追加交易记录,不设余额列)可确保准确性、提供完整的审计跟踪,并让积分撤销变得轻而易举。
CREATE TABLE loyalty_accounts (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
customer_id UUID NOT NULL UNIQUE,
tier VARCHAR(16) NOT NULL DEFAULT 'bronze',
lifetime_spend_cents INTEGER NOT NULL DEFAULT 0,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE loyalty_ledger (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
account_id UUID NOT NULL REFERENCES loyalty_accounts(id),
points INTEGER NOT NULL, -- positive = earned, negative = redeemed/expired
type VARCHAR(32) NOT NULL CHECK (type IN ('purchase', 'bonus', 'referral', 'redemption', 'expiration', 'adjustment')),
reference_id UUID, -- order_id, review_id, etc.
description TEXT NOT NULL,
expires_at TIMESTAMPTZ, -- NULL = never expires
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
积分余额(不包括已过期的交易):
async function getPointsBalance(accountId: string): Promise<number> {
const result = await db.raw(`
SELECT COALESCE(SUM(points), 0) AS balance
FROM loyalty_ledger
WHERE account_id = ?
AND (expires_at IS NULL OR expires_at > NOW())
`, [accountId]);
return Math.max(0, parseInt(result.rows[0].balance, 10));
}
订单履行后发放积分(而非购买时发放,可防止因退货导致的积分欺诈):
const TIER_MULTIPLIERS = { bronze: 1, silver: 1.25, gold: 1.5, platinum: 2 };
const POINTS_PER_DOLLAR = 1;
const EXPIRY_MONTHS = 12;
async function awardPurchasePoints(customerId: string, orderId: string, subtotalCents: number) {
const account = await getOrCreateAccount(customerId);
const multiplier = TIER_MULTIPLIERS[account.tier];
const points = Math.round((subtotalCents / 100) * POINTS_PER_DOLLAR * multiplier);
const expiresAt = new Date();
expiresAt.setMonth(expiresAt.getMonth() + EXPIRY_MONTHS);
await db.loyaltyLedger.insert({
account_id: account.id, points, type: 'purchase',
reference_id: orderId, description: `Points for order ${orderId}`, expires_at: expiresAt,
});
// Update lifetime spend and recalculate tier
await db.loyaltyAccounts.update(account.id, {
lifetime_spend_cents: account.lifetime_spend_cents + subtotalCents,
});
await recalculateTier(account.id);
}
结账时兑换积分:
const REDEMPTION_RATE = 0.01; // 100 points = $1
async function redeemPoints(customerId: string, orderId: string, pointsToRedeem: number): Promise<{ discountCents: number }> {
const account = await db.loyaltyAccounts.findByCustomerId(customerId);
const balance = await getPointsBalance(account.id);
if (pointsToRedeem > balance) throw new Error('Insufficient points');
const discountCents = Math.floor(pointsToRedeem * REDEMPTION_RATE * 100);
await db.loyaltyLedger.insert({
account_id: account.id, points: -pointsToRedeem, type: 'redemption',
reference_id: orderId, description: `Redeemed for order ${orderId}`,
});
return { discountCents };
}
最佳实践
- 在订单履行后发放积分,而非购买时发放 — 可防止客户在计划退货的订单上赚取积分;大多数忠诚度应用都提供可配置的“待处理期”
- 在界面上以金额显示积分价值 — “您有 $5.00 奖励金”比“您有 500 积分”更能促进转化;醒目展示金额
- 发送积分到期提醒邮件 — 在积分到期前 30 天向客户发送邮件;这是经过验证的重新互动触发方式,也能促进购买
- 限制每笔订单的最高兑换比例 — 允许使用积分抵扣的金额最多占订单价值的 50%,以保护利润
- 退款时撤销积分 — 插入与退款事件关联的负数调整交易;不要依赖手动更正
- 显示即将达到的等级门槛 — “再消费 $47 即可升级至 Gold”比只显示当前等级更能促进额外消费
- 从简单方案开始 — 先以固定积分获取比例上线,再添加等级;等级会增加复杂性和客服负担;先验证计划有效
常见问题
| 问题 | 解决方案 |
|---|---|
| 客户在退货订单上获得积分 | 仅在退货期限结束后发放积分,或在处理退货时扣回积分 |
| 等级降级让客户感到困惑 | 仅在预先设定的日期(例如每年)评估等级降级,而不是在每笔订单后评估;清晰地说明相关政策 |
| 推荐欺诈——客户推荐自己 | 验证推荐人和被推荐人是否使用了不同的电子邮件地址和/或账单地址 |
| 平台更新后,应用停止发放积分 | 为忠诚度应用设置监控警报;每周使用自动化测试订单测试积分发放 |
| 由于同步延迟,结账时积分余额显示为零 | 对于自定义构建的系统,实时从账本计算余额;对于基于应用的计划,确保应用与结账流程完全集成 |
相关技能
- @coupon-management
- @gift-cards
- @ab-testing-pricing
- @customer-segmentation
- @discount-engine
评论
支持 Markdown