上线笔记:追踪、账本、打款已上线
基础层已上线:Stripe 发票归因、只追加的佣金账本、带 PayPal 和 Wise 导出的月度打款批次、带链接和余额的伙伴门户。
RelayWonder 的第一个生产版本已经在跑。它围绕一个想法搭建:SaaS 联盟追踪只有在每一笔佣金都能追溯到具体的 Stripe 发票、每一次修正都是一行可见记录而不是一次改动、钱从品牌直接到伙伴手里而不经过我们的时候,才值得信任。这篇是发布说明的长版本:上线了什么,每个部分配上真实数字是怎么运作的,还缺什么。目的是让一个这个月在考虑要不要迁移计划的品牌,有足够的细节做决定。
第一版里有什么
今天上线的是六件事。单看每一件都不大,合起来就是从伙伴分享链接到伙伴收到钱的完整闭环。
- 追踪脚本和点击端点,在你的域名上写第一方 Cookie;伙伴审核通过时,在你的 Stripe 账户里生成专属优惠码。
- invoice.paid、退款、拒付三类 Stripe webhook 写入只追加的账本;每个计划单独设置锁定期和起付门槛。
- 打款批次:开批、复核、导出 PayPal 或 Wise 批量打款文件、从你自己的账户付款、标记已付。余额按币种分开记。
- 伙伴门户:链接、优惠码、余额、对账单、月度 CSV 下载、税表上传(W-9 或 W-8BEN,只传一次)。
- 品牌控制台:计划、伙伴、申请、账本、报表、带角色的团队成员。
- 公开计划页和市场:伙伴用已有的那一个账号向任何品牌申请。
SaaS 联盟追踪在这里是怎么做的
大多数联盟工具在结账那一刻归因一次,然后就不管了。对订阅业务来说,这个时点选错了。第一笔付款往往是最小的一笔,试用期之后才转化,套餐会变,续费才是收入的大头。所以我们在发票层面归因:Stripe 每生成一张发票,我们都问一句,这位客户是不是某个伙伴带来的。
把客户和伙伴连起来有三种信号,按下面的顺序检查,先匹配到的生效:
- 专属优惠码。你批准一个伙伴时,我们会在你的 Stripe 账户里创建一个只有他在用的 promotion code。结账时用了这个码,客户就归到这个伙伴名下,不需要点击,也不需要 Cookie。播客里提一嘴、印在纸上的码、任何没人点链接的场景,都靠它接住。
- 第一方 Cookie。追踪脚本跑在你的域名上,所以 Cookie 是你的网站写的,不是浏览器越来越爱拦的第三方域名写的。默认窗口 60 天,每个计划可以改。注册时我们把存下来的伙伴标识写进 Stripe 客户的 metadata。
- Stripe 里已有的客户 metadata。如果你从别的工具迁过来,客户身上已经带着推荐字段,我们直接读,续费会继续付给当初带来这个客户的伙伴。
客户一旦关联上,这位客户的每一个 invoice.paid 事件都会生成一行佣金 [1]。首付、每次续费、升级、加购都是发票,所以全部覆盖,不需要特殊处理。退款和拒付以各自的 webhook 事件到达 [2],在同一个伙伴名下生成负数行。手工做归因的品牌最常错的就是这一步。
只追加的佣金账本
账本是一张只会变长的表。没有原地修改,没有删除。一笔佣金算错了,就加一行修正,引用原来那行。退款在成交六周后才来,就加一行负数,日期是退款发生那天。伙伴看到的余额,就是他在某个币种下所有行的加总,减去还在锁定期内的,减去已经付过的。
这件事重要有三个原因。第一,品牌和伙伴之间的争议变成一起读表,而不是吵架:双方看到的是同样的行、同样的 Stripe 发票号。第二,会计对账不用问任何人改过什么。第三,我们自己的 bug 也没法悄悄改写历史;最坏的情况是写错一行,再用另一行修正,两行都留着。
| Stripe 事件 | 账本行 | 正负 | 何时可付 |
|---|---|---|---|
| invoice.paid(首付) | 按发票金额计佣 | 正 | 锁定期过后,默认 30 天 |
| invoice.paid(续费) | 按发票金额计佣 | 正 | 锁定期过后,默认 30 天 |
| charge.refunded(部分退款) | 按退款部分计佣 | 负 | 立即抵减余额 |
| charge.refunded(全额退款) | 原佣金全额冲回 | 负 | 立即抵减余额 |
| charge.dispute.created | 全额冲回,标记为拒付 | 负 | 立即;拒付胜诉后用正数行恢复 |
| 品牌手工调整 | 奖金或修正,带备注 | 均可 | 按计划锁定期 |
用真实数字走一个月
设一个计划付 25% 的持续佣金,默认 60 天 Cookie、30 天锁定期、50 美元起付。伙伴 Dana 在 6 月 3 日分享了链接。到 8 月底她的账本长这样。
- 6 月 5 日:客户 A 通过 Cookie 注册 80 美元/月的套餐。发票已付,一行 +20.00 美元,7 月 5 日起可付。
- 6 月 12 日:客户 B 用 Dana 的优惠码买 200 美元/月的套餐,首月九折。发票 180 美元,所以这行是 +45.00 美元,7 月 12 日起可付。佣金按实际开票金额算,不按标价。
- 7 月 5 日:客户 A 续费。一行 +20.00 美元,8 月 4 日起可付。
- 7 月 12 日:客户 B 按全价 200 美元续费。一行 +50.00 美元,8 月 11 日起可付。
- 7 月 20 日:客户 A 要求退 7 月那笔。一行 -20.00 美元,日期 7 月 20 日,立即生效。
- 8 月 5 日和 8 月 12 日:两位都再次续费。各一行 +20.00 和 +50.00 美元,9 月才可付。
9 月 1 日打开 8 月的打款批次,过了锁定期又没付过的,是 6 月和 7 月的佣金:20 + 45 + 20 + 50 = 135.00 美元,减去 7 月的退款 20.00 美元,得 115.00 美元。8 月的 70.00 美元还在锁定期内,批次里显示为待定。Dana 过了 50 美元的门槛,所以在批次里。如果一个伙伴可付只有 38 美元,就结转到下个月,门户里会明确告诉他,而不是显示一个零。
注意那笔退款没有要任何人记得客户 A。Stripe 事件到了,因为客户 A 归在 Dana 名下,负数行自动写在她那里,批次自己算出来。这就是发票级 SaaS 联盟追踪的全部理由:最难的那些情况,恰恰是没人有时间手工处理的情况。
打款批次:我们算,你付
RelayWonder 从不持有资金。打款批次是一份文件,不是一次转账。流程是:
- 开当月批次。某个币种下可付金额超过起付门槛的每个伙伴占一行;没过门槛的单独列为结转。
- 复核。自荐、点击爆发、同一 User-Agent 无转化三类风控标记会显示在相关行旁边,被标记的行在你团队有人清掉之前不进导出文件。
- 导出。我们生成 PayPal Payouts 要求的 CSV 格式 [3],或 Wise 批量付款接受的格式 [4]。伙伴在门户里自己选收款方式、填收款信息,你不用重新录入。
- 从你自己的 PayPal 或 Wise 企业账户付款。钱直接从你到伙伴。
- 标记批次已付。每一行在账本里生成一条已付记录,带日期,伙伴余额相应减少。当月被包含的每个伙伴都会生成对账单。
批次按币种分开,所以一个同时收美元和欧元的品牌会拿到两个文件,一个同时赚两种货币的伙伴会看到两个余额。我们不做换算,因为换算意味着选一个汇率,而选汇率这个决定属于真正付钱的人。
伙伴门户和品牌控制台
一个伙伴在 RelayWonder 上只有一个账号,对应所有品牌。登录后看到参加的每个计划、链接和专属码、按币种的余额、最近几行的锁定状态、月度对账单,以及给自己记账用的全量 CSV 导出。税表只传一次:美国人传 W-9,其他人传 W-8BEN [5][6]。我们的运营人员核验上传件,付款给这位伙伴的每个品牌都能看到"已核验"状态,但看不到表格本身。年底开 1099 仍然是付款方企业的事,对账单里有你需要的合计数 [7]。
品牌控制台是 SaaS 联盟追踪真正能被一个人运营起来的地方。里面有计划设置(佣金率、Cookie 窗口、锁定期、起付门槛、币种)、带申请审核的伙伴列表、带筛选的完整账本、按伙伴和按月的报表,以及带角色的团队成员,这样复核风控标记的人不必是导出打款文件的人。
还没有的
我们宁可现在告诉你,也不想让你在某个周二下午自己发现。下面这些在这个版本里没有。每一项在产品里都有位置,旁边用大白话标着在等什么。
- 全网 Hunter 搜索。在公开网络上找伙伴依赖还没接入的搜索源。今天能搜的是已经在网络里的伙伴。
- 从产品内发邮件。外联草稿会生成,你复制到自己的邮箱发。没有任何邮件从我们的域名发出。
- AI 起草和对伙伴、内容的评分。字段在,模型没接。
- Shopify。追踪目前只支持 Stripe。你的结账不是 Stripe,上面说的发票归因就跑不起来。
我们也不显示任何没有的数字。生产环境里没有演示伙伴、没有占位通知、没有任何估算值。
迁移一个已有的计划
从 Rewardful、FirstPromoter 或一张表格过来,把 SaaS 联盟追踪搬过来是三步。用 CSV 导入伙伴(邮箱、姓名、收款方式),每个人收到邀请去认领或关联自己的 RelayWonder 账号。对上客户:如果你的 Stripe 客户 metadata 里已经有推荐标识,我们直接读,接上之后的第一张发票起续费就继续记给正确的伙伴。把计划条款设成你当初承诺的,包括老伙伴可能有的不同佣金率,然后和旧工具并行跑一个打款批次,再关掉旧的。第一版在伙伴带来的收入每月 1,000 美元以内免费,之后 10,000 美元以内 49 美元/月,50,000 美元以内 129 美元/月,任何档位都不抽成,所以并行的那个月对大多数计划来说不花钱。
FAQ
RelayWonder 的 SaaS 联盟追踪没有 Cookie 也能用吗?
能。专属优惠码完全不需要点击就能归因;Stripe metadata 里已经带推荐字段的客户,在下一张发票时就会被匹配。Cookie 是三种信号之一,不是唯一的。
伙伴已经拿到钱之后客户退款了,佣金怎么办?
在退款当天写一行负数,往后减少伙伴的余额。余额变成负的,下一笔可付佣金先把坑填上。我们从不让你去手工找伙伴要钱。
锁定期和起付门槛以后能改吗?
能,按计划改。改动只作用于之后写入的行;已有的行保留写入时的条款,这样账本对双方都是诚实的。
为什么你们不替我们给伙伴打款?
因为持有你的钱会让我们变成支付机构、让你变成我们的债权人。CSV 导出意味着钱直接从你的 PayPal 或 Wise 账户到伙伴手里,记录和控制权都在你。
有按笔收费或者抽佣金吗?
没有。价格是按伙伴带来的收入分档的固定月费,每月 1,000 美元以内免费。伙伴永远不付钱。
Sources
- Stripe:invoice.paid 与发票事件 · 事件类型参考,包括 invoice.paid、charge.refunded、charge.dispute.created。
- Stripe:退款与拒付 · 拒付如何产生和解决;我们据此写入负数账本行。
- PayPal Payouts 文档 · 批量打款文件格式和限制。
- Wise 批量付款 · 企业账户的批量付款上传。
- IRS:关于 Form W-9
- IRS:关于 Form W-8BEN
- IRS:关于 Form 1099-NEC · 年末非雇员报酬申报仍由付款方企业负责。
- Stripe:promotion codes · 用作伙伴专属码的优惠券与促销码。