mcpField
R
referral-program

referral-program

github.com/finsilabs营销与增长6078 次安装1 周前更新
代码仓库

关于 referral-program

referral-program 是一项指导电商团队规划、配置和衡量客户推荐计划的技能,涵盖现成工具选择与自建方案。内容包括奖励设计、欺诈防范、推广及效果分析。

主要功能

  1. 01按平台选择推荐工具
  2. 02配置推荐奖励与邮件
  3. 03防范自我推荐欺诈
  4. 04分析推荐转化与获客成本
  5. 05规划推荐入口与推广

适用场景

  1. 01为 Shopify 商店设置双向奖励
  2. 02通过分级奖励激励成功推荐
  3. 03将推荐追踪接入购买后邮件
  4. 04比较推荐与付费渠道获客成本

安装

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

$npx skills add https://github.com/finsilabs/awesome-ecommerce-skills --skill referral-program

安装后在 Claude Code 中输入/referral-program确认已加载。

包含的文件

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

tile.json
evals/cookie-based-referral-attribution/
criteria.json
task.md
evals/referral-fraud-signal-detection/
criteria.json
task.md
evals/tiered-rewards-and-first-purchase-logic/
criteria.json
task.md

详细介绍

推荐计划

概述

推荐计划通过奖励现有客户介绍新客户,将他们转变为获客渠道。ReferralCandy 和 Referral Hero 等推荐应用无需自定义代码,即可处理专属链接生成、双向奖励(推荐人和被推荐人)、欺诈检测以及购买后邮件触发。只有当你的分级规则、CRM 集成或欺诈规则超出这些工具的支持范围时,才应构建自定义推荐系统。

何时使用此技能

  • 构建“推荐好友,双方各得 10 美元”计划时
  • 添加随成功推荐次数增加而提升的分级奖励时
  • 自我推荐或多个账户导致欺诈,消耗推荐奖励预算时
  • 衡量推荐计划的 CAC,并与其他获客渠道进行比较时
  • 在 Klaviyo 中将推荐跟踪与购买后邮件流程集成时

核心说明

第 1 步:确定平台并选择合适的推荐工具
平台推荐工具原因
ShopifyReferralCandy专为电商打造;为每位客户自动生成推荐链接,处理双向奖励、购买后邮件触发和欺诈检测
ShopifyReferral Hero奖励类型更灵活(现金、礼品卡、商店积分、自定义奖励);与 Klaviyo 深度集成,支持推荐邮件流程
ShopifySmile.io在一个应用中结合忠诚度积分和推荐机制——适合同时需要两者的情况
WooCommerceReferralCandy 或 Referral Hero两者都提供 WooCommerce 插件;通过 REST API 连接以跟踪订单并发放奖励
BigCommerceReferralCandy可在 BigCommerce App Marketplace 中获取
自定义 / Headless构建推荐跟踪 + 奖励逻辑当平台集成或欺诈规则不符合需求时必须采用

第 2 步:针对平台进行设置

Shopify

选项 A:ReferralCandy(推荐——完整的推荐套件)

  1. 从 Shopify App Store 安装 ReferralCandy

  2. 连接你的 Shopify 商店——ReferralCandy 会自动导入现有客户

  3. 配置奖励结构:

    • 前往 ReferralCandy → Rewards → Set Rewards
    • 选择推荐人的奖励类型:通过 PayPal 发放现金、商店折扣或自定义礼品
    • 选择被推荐人的奖励类型:结账时应用的折扣码
    • 示例:推荐人获得 10 美元商店积分;被推荐人首次下单可减 10 美元
  4. 配置推荐邮件发送时间:

    • 前往 Post-Purchase Email → Settings
    • 将发送延迟设为购买后 1–3 天(客户正处于热情高涨期)
    • 使用你的品牌元素和推荐链接自定义邮件模板
  5. ReferralCandy 会自动:

    • 为每位客户生成专属推荐链接
    • 在 30 天 Cookie 窗口内跟踪点击和归因
    • 检测自我推荐并阻止发放奖励
    • 当被推荐人通过链接注册时,向其发送包含折扣码的欢迎邮件
  6. 在 ReferralCandy → Analytics 中查看效果:

    • 发送的推荐、点击、注册和购买次数
    • 归因于推荐的收入
    • 排名前列的推荐人(用于 VIP 联络)

选项 B:Referral Hero(优先使用 Klaviyo)

  1. 从 App Store 安装 Referral Hero
  2. 在 Referral Hero → Campaigns → Create Campaign 中进行配置
  3. Referral Hero 与 Klaviyo 集成——推荐转化时,会触发 Klaviyo 工作流发送奖励通知邮件
  4. 奖励类型包括商店积分(通过 Shopify 折扣码发放)、现金(PayPal)或礼品卡

在购买后邮件中添加推荐入口(Klaviyo):

  1. 在 Klaviyo 中,前往 Post-Purchase flow
  2. 在第 3 天步骤添加一封包含推荐链接的邮件
  3. ReferralCandy 和 Referral Hero 都提供 Klaviyo 集成,可将 {{ customer.referral_link }} 注入为合并标签

WooCommerce

适用于 WooCommerce 的 ReferralCandy:

  1. 从 WordPress.org 或 ReferralCandy 集成页面安装 ReferralCandy 插件
  2. 使用 ReferralCandy API 凭据连接你的 WooCommerce 商店
  3. ReferralCandy 会跟踪 WooCommerce 订单,并自动将购买归因于推荐人
  4. 在 ReferralCandy 控制面板中配置奖励和邮件发送时间(与上文 Shopify 的设置相同)

适用于 WooCommerce 的 Referral Hero:

  1. 安装 Referral Hero WooCommerce 插件
  2. 配置推广活动,并将奖励类型设为 WooCommerce 优惠券代码
  3. Referral Hero 会在被推荐人注册后向其发放唯一优惠券代码,并在被推荐人完成转化时通知推荐人

使用 AutomateWoo 手动设置推荐计划:

  • 如果你希望完全掌控流程,可使用 AutomateWoo 触发推荐邮件并发放折扣代码
  • AutomateWoo 在 AutomateWoo → Workflows → Referrals 下提供内置的 Referral 工作流模板

BigCommerce

适用于 BigCommerce 的 ReferralCandy:

  1. 前往 Apps → Search "ReferralCandy" 并安装
  2. 配置方式与 Shopify 版本相同
  3. ReferralCandy 会跟踪 BigCommerce 订单,并发放 BigCommerce 折扣代码作为奖励

自定义/无头架构

对于无头架构的店面,可构建包含分级奖励和欺诈检测功能的推荐跟踪系统:

// lib/referrals.ts
import { randomBytes } from 'crypto';

// Generate a unique, human-friendly referral code per customer
export async function getOrCreateReferralCode(customerId: string): Promise<string> {
  const existing = await db.referralCodes.findFirst({ where: { customerId } });
  if (existing) return existing.code;

  const customer = await db.customers.findUnique({ where: { id: customerId } });
  const prefix = (customer!.firstName ?? 'USER').slice(0, 4).toUpperCase();
  const suffix = randomBytes(3).toString('hex').toUpperCase();
  const code = `${prefix}${suffix}`; // e.g., JANE3A9F

  await db.referralCodes.create({ data: { customerId, code } });
  return code;
}

// Middleware: capture referral code from ?ref= URL param into a 30-day cookie
export function referralTrackingMiddleware(req: Request, res: Response, next: NextFunction) {
  const code = req.query.ref as string;
  if (code && !req.cookies.ref_code) {
    res.cookie('ref_code', code, { maxAge: 30 * 86400000, httpOnly: true, secure: true, sameSite: 'lax' });
  }
  next();
}

// Tiered rewards: reward amount increases as referrer accumulates successful referrals
const REFERRAL_TIERS = [
  { minReferrals: 0,  referrerRewardCents: 1000, refereeRewardCents: 1000 }, // $10/$10
  { minReferrals: 5,  referrerRewardCents: 1500, refereeRewardCents: 1000 }, // $15/$10 after 5
  { minReferrals: 10, referrerRewardCents: 2500, refereeRewardCents: 1500 }, // $25/$15 after 10
];

function getReferralReward(successfulReferrals: number) {
  return [...REFERRAL_TIERS].reverse().find(t => successfulReferrals >= t.minReferrals)!;
}

// On new account creation: attribute referral, run fraud checks
export async function onCustomerCreated(customerId: string, refCode: string | undefined) {
  if (!refCode) return;

  const referralCode = await db.referralCodes.findFirst({ where: { code: refCode } });
  if (!referralCode || referralCode.customerId === customerId) return; // block self-referral

  // Fraud check: same shipping address as referrer
  const [referee, referrer] = await Promise.all([
    db.customers.findUnique({ where: { id: customerId }, include: { addresses: true } }),
    db.customers.findUnique({ where: { id: referralCode.customerId }, include: { addresses: true } }),
  ]);

  const refereeAddr = referee?.addresses[0]?.addressHash;
  const referrerAddr = referrer?.addresses[0]?.addressHash;
  if (refereeAddr && refereeAddr === referrerAddr) return; // same address = block

  await db.referrals.create({ data: { referrerId: referralCode.customerId, refereeId: customerId, code: refCode, status: 'pending' } });
}

// On referee's first purchase: issue rewards to both parties
export async function onRefereeFirstPurchase(refereeId: string, orderId: string) {
  const referral = await db.referrals.findFirst({ where: { refereeId, status: 'pending' } });
  if (!referral) return;

  const order = await db.orders.findUnique({ where: { id: orderId } });
  if (!order || order.subtotalCents < 2500) return; // require minimum $25 order

  const referrerStats = await db.referralCodes.findFirst({ where: { customerId: referral.referrerId } });
  const tier = getReferralReward(referrerStats?.totalReferrals ?? 0);

  await Promise.all([
    issueStoreCredit(referral.referrerId, tier.referrerRewardCents, `Referral reward`),
    issueStoreCredit(refereeId, tier.refereeRewardCents, 'Welcome reward — referred by a friend'),
  ]);

  await db.referrals.update({ where: { id: referral.id }, data: { status: 'rewarded', orderId } });
  await db.referralCodes.update({ where: { customerId: referral.referrerId }, data: { totalReferrals: { increment: 1 } } });
}

推荐计划分析 SQL:

-- Monthly referral program performance
SELECT
  DATE_TRUNC('month', r.created_at) AS month,
  COUNT(*) AS total_referrals,
  COUNT(CASE WHEN r.status = 'rewarded' THEN 1 END) AS successful_referrals,
  ROUND(100.0 * COUNT(CASE WHEN r.status = 'rewarded' THEN 1 END) / NULLIF(COUNT(*), 0), 1) AS conversion_rate_pct,
  SUM(CASE WHEN r.status = 'rewarded' THEN rc.total_rewards_cents END) / 100.0 AS rewards_paid_usd
FROM referrals r
JOIN referral_codes rc ON r.referrer_id = rc.customer_id
GROUP BY 1
ORDER BY 1 DESC;

第 3 步:推广推荐计划

推荐链接必须清晰可见——如果藏得太深,客户就不会找到它:

  1. 购买后确认页面 — 在订单确认页面添加推荐 CTA:“喜欢这次购物吗?分享给朋友,你们都能获得 10 美元”
  2. 购买后邮件 — 在购买后第 3 天发送的邮件中加入推荐链接(ReferralCandy 和 Klaviyo 均支持自动执行此操作)
  3. 客户账户页面 — 添加“推荐好友”版块,显示客户的推荐链接和推荐记录
  4. 交易邮件 — 在发货确认邮件中加入不显眼的推荐 CTA

第 4 步:衡量推荐计划的 ROI
指标衡量方式
推荐转化率成功推荐数 / 推荐链接总点击数
推荐 CAC已发放奖励总额 / 成功推荐数
推荐带来的收入为被推荐订单添加标签,并比较总收入
被推荐客户与非被推荐客户的 CLV在 90 天和 12 个月时进行群组比较

将推荐 CAC 与付费获客渠道进行比较。优化后,推荐计划通常能比付费渠道降低 20–30% 的 CAC。

最佳实践

  • 先使用 ReferralCandy,再考虑从头构建 — 它能在几分钟内处理链接生成、归因、欺诈检测和奖励发放
  • 设置首笔订单的最低金额要求,以符合奖励领取条件 — 防止用户通过 1 美元的测试订单刷取奖励
  • 使用商店积分,而非一次性折扣代码 — 商店积分会促使客户再次购买,并创造第二次购买机会
  • 设置 30 天归因窗口 — 窗口过短会漏掉需要较长时间才完成转化的客户
  • 被推荐人购买后立即发送奖励通知邮件 — 推荐人往往不知道奖励已发放;通知也能促使他们进一步推荐
  • 阻止推荐至相同的收货地址 — 这是判断家庭成员自我推荐的最明显欺诈信号

常见问题

问题解决方案
通过多个电子邮件账号进行自我推荐欺诈阻止收货地址相同的推荐(最可靠的信号);ReferralCandy 会自动检测此类情况
推荐链接被分享到优惠券论坛监测推荐客户群的 CLV;如果其 CLV 明显低于自然流量客户群,则设置更高的最低订单金额
在 30 天退货期结束前发放商店积分在被推荐客户下单后延迟 30 天发放奖励,以便处理退货
后续广告点击覆盖了推荐 Cookie单独保存首次推荐点击;ReferralCandy 对推荐采用首次点击归因
推荐邮件打开率低将推荐邀请从收据邮件移至专门的购后第 3 天邮件,此时客户满意度最高

相关技能

  • @affiliate-program
  • @customer-lifetime-value
  • @customer-segmentation
  • @email-marketing-automation

评论

支持 Markdown