归因脚本
通过轻量客户端脚本追踪你的收入来源。
归因脚本用于收集访客上下文信息(UTM 参数、来源页、设备信息),并存储在 Cookie 中。当客户结账时,你将这些数据作为结账 metadata 传递,Money Fast 就能将每笔订单归因到对应的流量来源。
第一步:安装脚本
在你网站的 <head> 中添加以下脚本标签:
<script defer src="https://moneyfa.st/js/script.min.js"></script>脚本非常轻量(gzip 后约 1KB),异步加载,会设置一个名为 _moneyfast 的 Cookie 来存储归因数据。Cookie 有效期 30 天,当访客携带新的 UTM 参数访问时会自动刷新。
调试模式
想查看脚本收集了什么数据,可以启用调试模式:
<script defer src="https://moneyfa.st/js/script.min.js" data-debug="true"></script>打开浏览器开发者控制台,可以看到 [MoneyFast] 开头的日志信息。
第二步:在结账时传递 Metadata
创建结账会话时,读取 Cookie 并将其值作为 metadata 传递。以下以 Stripe 为例,其他支付平台类似。
Stripe — Node.js / Next.js 示例
import Stripe from 'stripe';
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);
// 从请求头解析 _moneyfast cookie
function getMoneyFastMeta(cookieHeader) {
const match = cookieHeader?.match(/(^| )_moneyfast=([^;]+)/);
if (!match) return {};
try {
return JSON.parse(decodeURIComponent(match[2]));
} catch {
return {};
}
}
// 创建 Checkout Session
export async function createCheckout(req) {
const meta = getMoneyFastMeta(req.headers.get('cookie'));
// 添加 exit_page,移除内部字段
meta.moneyfast_exit_page = new URL(req.url).pathname;
delete meta.moneyfast_ts;
const session = await stripe.checkout.sessions.create({
mode: 'subscription', // 或 'payment'
line_items: [{ price: 'price_xxx', quantity: 1 }],
success_url: 'https://example.com/success',
cancel_url: 'https://example.com/cancel',
// 传递 metadata 到 checkout session
metadata: meta,
// 订阅类产品还需要传到 subscription_data
subscription_data: {
metadata: meta,
},
});
return session.url;
}客户端(浏览器)示例
如果你从前端创建结账会话,可以使用全局的 MoneyFast.meta() 方法:
const response = await fetch('/api/create-checkout', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
priceId: 'price_xxx',
// 传递 MoneyFast 归因 metadata
metadata: window.MoneyFast?.meta() || {},
}),
});然后在服务端,将 metadata 合并到结账会话中:
const session = await stripe.checkout.sessions.create({
// ...其他选项
metadata: req.body.metadata,
subscription_data: {
metadata: req.body.metadata,
},
});Metadata 字段说明
所有字段使用 moneyfast_ 前缀。Money Fast 会自动从支付事件的 metadata 中读取这些数据。
| 字段 | 说明 | 来源 |
|---|---|---|
moneyfast_ref | 流量来源 | utm_source、ref 或 via 查询参数 |
moneyfast_campaign | 营销活动 | utm_campaign 查询参数 |
moneyfast_medium | 流量媒介 | utm_medium 查询参数 |
moneyfast_term | 搜索关键词 | utm_term 查询参数 |
moneyfast_content | 广告内容 | utm_content 查询参数 |
moneyfast_landing_page | 着陆页 | 自动检测 |
moneyfast_exit_page | 结账页面 | 由 MoneyFast.meta() 设置 |
moneyfast_referrer | 来源 URL | 自动检测 |
moneyfast_device | 设备类型 | desktop、mobile 或 tablet |
moneyfast_browser | 浏览器 | 自动检测 |
moneyfast_os | 操作系统 | 自动检测 |
moneyfast_lang | 浏览器语言 | 自动检测 |
moneyfast_tz | 时区 | 自动检测 |
JavaScript API
脚本暴露了一个全局的 MoneyFast 对象:
// 获取 Cookie 中的原始归因数据
MoneyFast.get()
// 获取用于结账的 metadata(添加 exit_page,移除内部字段)
MoneyFast.meta()
// 手动重新收集归因数据
MoneyFast.collect()
// 清除归因 Cookie
MoneyFast.clear()注意事项
- 订阅 metadata(Stripe):Stripe 不会自动将结账会话的 metadata 传递到订阅对象。你必须显式设置
subscription_data.metadata,否则续费事件将缺失归因数据。 - Cookie 作用域:
_moneyfastCookie 设置在你的域名下,使用SameSite=Lax。它在你网站的所有页面上有效,但不会跨域追踪。 - 无 PII:脚本不收集任何个人身份信息,只捕获 UTM 参数、页面 URL 和设备/浏览器信息。