mcpField
L
loyalty-points-system

loyalty-points-system

github.com/finsilabs营销与增长6091 次安装6 天前更新
代码仓库

关于 loyalty-points-system

帮助商家设计客户忠诚度计划,涵盖积分获取与兑换、等级体系及各平台工具选择,也介绍面向自定义或无头商店的账本方案。

主要功能

  1. 01积分获取与兑换规则
  2. 02等级权益与晋升机制
  3. 03按平台选择忠诚度应用
  4. 04基于账本的自定义系统设计
  5. 05余额、过期和退款处理

适用场景

  1. 01为购买、评论或推荐活动设置奖励
  2. 02提供含配送或积分权益的 VIP 等级
  3. 03在移动应用中展示积分余额并支持兑换
  4. 04为无头商店构建忠诚度积分追踪

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/finsilabs/awesome-ecommerce-skills --skill loyalty-points-system

安装后在 Claude Code 中输入/loyalty-points-system确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

tile.json
evals/ledger-schema-design/
criteria.json
task.md
evals/points-earning-and-tier-progression/
criteria.json
task.md
evals/redemption-checkout-and-expiration-job/
criteria.json
task.md

详细介绍

忠诚度积分系统

概述

忠诚度积分计划会奖励回头客,让他们通过购物及其他活动(评价、推荐、社交分享)赚取积分,并在结账时兑换折扣。设计完善的计划会包含等级进阶(铜级 → 银级 → 金级 → 白金级),随着客户消费增加,解锁免费配送或更高积分倍率等福利。大多数商家应从专用的忠诚度应用开始——主流平台都有出色的选择——而不是从头开始构建。

何时使用此技能

  • 添加客户留存机制,以提高重复购买率时
  • 推出分级 VIP 计划,让高价值客户解锁免费配送或优先体验等福利时
  • 将临时折扣系统替换为客户可以追踪的结构化忠诚度计划时
  • 将积分集成到移动应用中,让客户查看余额并在结账时兑换时
  • 开展促销活动,为特定行为(评价、推荐、首次购买)奖励额外积分时

核心说明

步骤 1:确定商家的平台并选择合适的工具
平台推荐工具原因
ShopifySmile.io(原 Sweet Tooth)或 LoyaltyLion两者都可与 Shopify 原生集成,可在结账时处理积分赚取和兑换,并包含等级管理和推荐计划
Shopify(预算有限)Rivo Loyalty & Rewards 或 Bon Loyalty成本更低的替代方案,具备核心积分和等级功能
WooCommerceWooCommerce Points and Rewards(官方版,约 $79/年)或 YITH WooCommerce Points & Rewards与 WooCommerce 原生集成;官方插件维护良好
BigCommerceSmile.io 或 LoyaltyLion两者都提供 BigCommerce 集成
多平台 / 无头架构Loyaltylion API、Smile.io API 或 Yotpo Loyalty均提供 API,可与自定义店面集成
自定义 / 无头架构使用基于账本的积分追踪进行构建仅当应用功能无法满足你的特定需求时使用
步骤 2:配置忠诚度计划

Shopify

使用 Smile.io(最受欢迎的 Shopify 忠诚度应用):

  1. 从 Shopify App Store 安装 Smile: Loyalty & Rewards(提供免费套餐;付费套餐起价约为 $49/月)
  2. 在 Smile 控制面板中配置赚取积分的方式:
    • 购物赚取积分(例如,每消费 $1 赚取 1 积分)
    • 创建账户、生日、商品评价可获得额外积分
    • 推荐好友可获得推荐积分
  3. 配置兑换积分的方式:
    • 用积分兑换折扣码(例如,100 积分 = 减免 $1)
    • 设置兑换所需的最低积分
    • 设置每笔订单的最高兑换额度(例如,积分最多可抵扣订单金额的 50%)
  4. 配置等级(VIP 计划,付费套餐提供):
    • 定义等级门槛(例如,铜级:消费 $0–$500,银级:$500–$1,000,金级:$1,000 以上)
    • 设置等级福利:积分倍率、专属商品、免费配送
  5. 配置面向客户的小组件:浮动积分小组件会自动显示在你的店面上;可自定义颜色和位置

测试集成:

  • 创建测试客户账户,下测试订单,并确认订单状态变为“已履行”后积分已发放
  • 在结账时尝试兑换,确认折扣已正确应用

WooCommerce

使用 WooCommerce Points and Rewards:

  1. 从 WooCommerce.com 安装 WooCommerce Points and Rewards
  2. 前往 WooCommerce → Points and Rewards → Settings:
    • Earn points:设置积分获取比例(例如,每消费 $1 获得 1 积分)
    • Earn points for:购买、评价、注册账户
    • Redeem points:设置积分兑换比例(例如,100 积分 = $1 折扣)
    • Maximum discount:设置每笔订单可兑换金额的上限
    • Points expire:可选设置积分有效期
  3. 在 WooCommerce → Points and Rewards → Manage Points 下管理各位客户的积分余额
  4. 积分会自动显示在客户的账户页面中

在 WooCommerce 中设置等级: 官方插件不包含等级管理功能。可选方案:

  • YITH WooCommerce Points & Rewards:包含等级/VIP 功能
  • Gamification for WooCommerce:添加等级和成就徽章
  • 根据客户的累计消费金额,手动为 WooCommerce 客户分配群组(角色),并提供群组专属价格或运费

BigCommerce

在 BigCommerce 上使用 Smile.io:

  1. 从 BigCommerce App Marketplace 安装 Smile.io
  2. 按照上文 Shopify 部分中的相同步骤设置 Smile.io,界面几乎完全相同
  3. Smile.io 与 BigCommerce 结账流程集成,可通过优惠券代码应用忠诚度折扣

使用 LoyaltyLion:

  1. 从 BigCommerce App Marketplace 安装 LoyaltyLion
  2. 在 LoyaltyLion 控制面板中配置积分获取规则和兑换选项
  3. 该应用会在账户页面添加客户忠诚度面板,并与 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