数汇恒流 DataFlowForever
数汇恒流
返回洞察
DataFlowForever 洞察

ROAS 好看,为什么利润和现金还是很差?

ROAS、利润和现金记录的是三件不同的事。先给 ROAS 一个明确工作,再把平台记功对账到成熟贡献与现金。

YC15 分钟阅读
从平台 ROAS 经过统一订单、成熟贡献与客户回收到现金能力的经营判断路径
方法图,不是客户数据、产品界面或经营结果证明。

直接回答:因为 ROAS、利润和现金正在记录三件不同的事。

ROAS 通常是平台归因的 conversion value 除以平台记录的媒体花费。它可以帮团队在转化事件、value、窗口、归因模型和币种都没有改变时,观察一个渠道相对自己过去的变化。它却没有自动扣除退货、履约、支付、客服和库存成本,也没有一个未曝光的反事实去证明订单因广告而增加,更不知道支付平台什么时候把钱放到银行账户。

所以,广告后台一片绿、商店也在出单,而利润表和银行余额仍然紧张,并不矛盾。团队现在需要确认:这个 ROAS 被用来承担什么决定?

先给 ROAS 一个明确的工作

归因到现金方法图 1
ROAS 位于平台记功层,不能替代统一订单、成熟贡献、客户回收与现金能力
平台自归因、统一订单、成熟贡献、客户回收与现金能力回答不同问题,不能互相冒充。

在 Google Ads 的官方定义中,conversion value/cost 使用广告主为 conversion action 配置或上报的 value;Conversions 列还可能包含 modeled conversions。Google 的归因模型说明也明确表明,模型会改变 conversion credit 如何分配,并影响报表与 bidding。这些机制对平台优化很重要,但“平台按什么规则给自己记功”与“商家成熟后留下了多少贡献”是两个问题。

一个 ROAS 在进入利润讨论前,至少要有一张 metric passport:

  • conversion action 是 purchase、lead,还是多种事件的混合;
  • value 来自订单实际金额、固定默认值,还是预测值;
  • 同一订单如何去重,跨设备、点击和浏览怎样计数;
  • 归因模型、点击/浏览窗口和报告日期口径;
  • 币种、税费、运费、折扣、取消、退货和退款怎样处理;
  • 分母是否只包媒体费,creator、代理、样品等成本是否在别处记录;
  • 当前数据是 provisional,还是已经过了商家真实的取消、退货、争议与质保窗口。

这张 passport 负责保持前后可比,不要求团队参加字段考试。如果 value 上报、窗口或归因模型刚改过,新旧 ROAS 可能已经不是同一把尺。如果这些设置稳定,ROAS 就完成了它最有用的任务:作为渠道内诊断信号,帮团队发现需要继续调查的变化。

归因到现金方法图 2
指标护照统一来源、分子、分母、窗口、成熟度与决策用途后,ROAS 才可比较
来源、分子、分母、窗口、成熟度和决策用途一致以后,ROAS 才能做前后比较。

从平台记功到现金,要对五本账

很多团队发现 ROAS 不够,会再选一个“真正的北极星”:MER、AOV、毛利率、CM3、LTV、复购率或现金余额。这些指标都能提供一部分信息,却也都不应该单独代替整个决定。

更稳妥的做法是把五层都保留下来,让每一层回答自己的问题。

第一层:平台 self-credit

Meta、Google 和其他平台使用各自可见的事件、身份、窗口与模型给 conversion 分配 credit。一个平台报告的 attributed value 可以用来理解它自己的优化与趋势,不应与其他平台的 self-credit 直接相加当成公司收入。

第二层:canonical order 与全局白盒 credit

先回到业务 conversion:是哪一张订单、当前处于什么状态、币种与成熟净值是多少。然后将可见的 Paid、Organic、Email、Direct 等触点置于同一时间线,用一套有版本、可解释的规则分配 credit。

数汇恒流的全局白盒归因会保留平台的自归因视图,同时将订单级 credit 放到全账户一致的 policy 下。匹配失败时记为 unattributed,身份不清时记为 identity-unresolved,数据不足时记为 insufficient-data。价值在于:为什么分、为什么没分,都有可复核的解释。

但白盒 credit 仍然是 credit。它不会自动看到所有触点,不会把选择效应变成增量,也不能包办全部经营判断。

第三层:成熟订单贡献

订单 value 要先经过折扣、取消、退货、退款、争议和质保的重述。然后扣除 landed COGS、包装、拣配、履约、商家承担的运费、支付费、逆向物流、服务和其他随订单变化的成本。得到广告前贡献后,再减去同口径获客成本,才能讨论首单广告后贡献。

Shopify Finance reports 可以提供 net sales、COGS 和 gross profit 等字段,但官方文档同时说明,只有记录了 product cost 的销售才会进入相应成本计算。缺失成本不是零,平台 gross profit 也不是已经扣完履约、支付、退货、广告与公司期间费用的会计利润。

第四层:同龄 cohort 与 payback

对有自然复购的业务,首单可以有一个明确、可承受的贡献缺口,再由后来真实发生的复购贡献补回。这里要比较相同 customer age 的 cohort,使用成熟净值与完整贡献,并将 realized 与 forecast 分开。

在非合同电商中,客户没有再购并不等于已知 churn;新 cohort 还面临右删失、选择差异和不成熟问题。预测 LTV 可以参与情景讨论,但它不能提前写成 realized contribution,也不能被当成已经到账的钱。

第五层:Payout、库存与营运资金现金

订单有正贡献,并不代表这笔钱现在可用。收入、processor balance、Payout、银行入账使用不同日期;库存可能已经付现,却要等售出才进入 COGS;供应商、广告账单、税款和债务又有各自的到期日。

Shopify Payout Reconciliation Report 可以协助对账 charges、fees、refunds、disputes、holds 与 payouts。每一种第三方支付、3PL、逆向物流和库存付款仍要另行核对。专业会计资料常把 cash operating cycle 写成 inventory days 加 receivables days 减 payables days。这个关系提供检查资金占用的入口,不构成所有企业都应追求的通用天数。

同样的 ROAS,为什么可以有相反的结论?

下面是一个完全合成的算术示例。数字不来自客户、社区帖子或平台 benchmark,不代表任何行业阈值。

Offer A 和 Offer B 各花 1 万元媒体费,平台都给自己记了 3 万元 conversion value,所以平台 ROAS 同为 3.0。

  • 合成示例项目: 平台 self-credited value · Offer A: 3 万 · Offer B: 3 万
  • 合成示例项目: 全局对账后的成熟净销售 · Offer A: 2.4 万 · Offer B: 2.7 万
  • 合成示例项目: 完整非广告变动成本 · Offer A: 1.2 万 · Offer B: 2 万
  • 合成示例项目: 广告前贡献 · Offer A: 1.2 万 · Offer B: 0.7 万
  • 合成示例项目: 减媒体费后的首单贡献 · Offer A: 0.2 万 · Offer B: -0.3 万

平台层看,两个 Offer 一样好;成熟贡献层看,A 保留了正的首单贡献,B 则在复制同类订单时增加缺口。但 A 也不能立即获得无上限扩量权。如果下一张采购单需要在 Payout 到账前支付,且 downside sell-through 会击穿最低现金线,A 仍可能只适合 test-bounded 或 hold。

这个示例刻意让三层结论不同:归因使 credit 可对账,不代替成本;贡献为正,不代替现金时间;历史平均成立,不代表下一段投入的边际结果成立。

归因到现金方法图 3
盈亏平衡与可承受 CAC 来自成熟净收入扣除商品和变动成本后的贡献空间
可承受 CAC 来自成熟净收入扣除完整变动成本和风险缓冲后的贡献空间。

Break-even ROAS 必须指明是哪一层的盈亏线

假设一组同口径成熟订单的净价值是 M,完整非广告变动成本是 Cv,广告前贡献就是:

A = M - Cv

如果问题是“首单贡献刚好不亏”,媒体费上限是 A,相容口径下的 first-order break-even ROAS 是:

M / A

如果老板要求每一单还要保留目标贡献 Q,允许 CAC 变成 A - Q,target-reserve ROAS 是:

M / (A - Q)

只有在分子、订单、时间窗口、币种和 spend 口径互相兼容时,这些公式才可以与平台 ROAS 比较。当 A ≤ 0 或 A - Q ≤ 0,状态是 not-feasible,不是输出一个负的允许 CAC,更不是让广告算法去挽救本身不成立的订单经济。

固定成本、阶梯成本和一次性成本需要另行进入声明过销量、组合、期间与容量的情景。将月度固定费用除以当前订单,可以帮助团队做期间 break-even 分析,但不会使它们变成下一单必然增加的边际成本。

这就是为什么“一个健康 ROAS 是多少”没有脱离商家自己的答案。品类 benchmark、社区数字或代理商经验可以成为待重算的参照,不能替代一个商家自己的 mature net value、成本覆盖、贡献要求和现金约束。

购买、成熟和现金,走的是三只不同的钟

第一只是购买与归因时钟。客户点击或看到广告,订单在平台窗口内发生,平台开始记 credit。

第二只是退货与 cohort 成熟时钟。取消、退货、退款、争议、质保和真实复购逐步发生。Google 的 conversion adjustments 允许对取消、退款或价值变化做 retract 或 restate;Shopify 对 sales discrepancies 的说明 则提醒团队,return、refund、restock、order edit 和日期分组会产生不同报告结果。近期 cohort 应被标记为 provisional,而不是与已成熟 cohort 直接排名。

第三只是库存、Payout 与现金时钟。补货定金、供应商尾款、运费、广告账单、税款、债务、处理商保留金与银行入账都有日期。库存在资产负债表上的账面价值,不等于现在可提取的现金;存货跌价、陈旧、损坏或处理还可能改变可变现价值。

真正可执行的做法是先固定 business entity、账户、币种与期间,将订单、processor balance、Payout、银行和账本对上;再将现货、在途与新采购、应付应收、税款、债务与最低现金放入 base 和 joint-downside 情景。任何没对上的项目都保留 unresolved,不当作零。

归因到现金方法图 4
广告回传、订单成熟、客户回收与现金循环使用四只不同的时钟
广告回传、订单成熟、客户回收和现金循环各有时间,近期结果可以仍是 provisional。

归因不是增量,历史平均也不是下一块钱

即使订单、成本与现金都对上了,还有一条边界不能跨过:“这个触点在规则下获得 credit”,不等于“没有广告时这笔订单不会发生”。

增量问题需要反事实。合格的 holdout、Conversion Lift 或 geo experiment 可以帮助估计处理与对照之间的差异,但实验也有统计功效、溢出、预算约束、地区差异和执行完整性问题。没有可信对照时,结论就应该明确写成归因估计而不是因果增量;实验结果不精确时,inconclusive 也是合法结论。

此外,一个 Campaign 上周表现很好,不代表它获得了永久的“可扩量”标签。历史平均 ROAS、CAC 和贡献使用的是已发生流量、商品组合与拍卖结果;下一段预算可能进入不同受众、版位、创意、SKU 组合和库存状态。历史平均描述了已经买到的量,老板要决定的是下一段投入。

把“扩量吗”改成一份有边界的决定记录

一场可用的增长会不应以“ROAS 还不错,再跑跑看”结束。它应该产生一张 Attribution-to-Cash Decision Record:

  • 字段: 决定对象 · 本轮需要写清的事: 下一段媒体费、一个 Offer 测试、一张采购单,还是暂停
  • 字段: Metric passport · 本轮需要写清的事: conversion、value、counting、window、model、currency、spend scope 和成熟状态
  • 字段: Canonical order · 本轮需要写清的事: 订单 ID、状态、成熟净值、reversal 和对账缺口
  • 字段: Credit state · 本轮需要写清的事: 平台 self-credit、全局白盒 credit、未归因与身份不明状态
  • 字段: 成本与贡献 · 本轮需要写清的事: 非广告变动成本覆盖、首单贡献、期间/阶梯成本与缺失项
  • 字段: Cohort 与 payback · 本轮需要写清的事: 同龄 cohort、realized/forecast、成熟窗口、缺口上限和回收状态
  • 字段: 现金边界 · 本轮需要写清的事: Payout、库存/PO、应付应收、税与债务、最低现金与 downside
  • 字段: 证据与未知 · 本轮需要写清的事: 归因还是增量,支持证据、反证、未解决项和可能改判的新信息
  • 字段: 授权边界 · 本轮需要写清的事: 一个 owner、一个投入上限、一个自然观察窗口、保护线、停止/回滚与人工审批

最后只返回五种状态之一:

  • scale-bounded: 成熟边际贡献、现金与容量支持下一段投入,但仍有上限与审批;
  • test-bounded: 经济上可能成立,证据还不足,只购买一段可承受的学习;
  • hold: 当前经济、库存、现金、客户或合规保护线不支持继续;
  • measure-only: 订单、成本、身份、退货或 Payout 还没对上,先修当前决定所需的事实;
  • insufficient-evidence: 不确定性大到无法对当前决定负责,不用一个假精确数字填满空白。

这些状态都不会自动修改广告预算或生产配置。它们只是把决定所需的事实、未知、经济边界和人工审批放进同一张记录。

归因到现金方法图 5
下一段投入应返回有上限、负责人和停止条件的决定状态
下一段投入只进入限界放大、限界测试、保持、仅测量或证据不足,并保留人工审批。

下周开会前,先问这五个问题

  • 这个 ROAS 的 conversion、value、window、model、currency 和 spend scope 是什么,近期有没有改过?
  • 平台记功能否对到同一张 canonical order,取消、退货、退款与重复事件现在是什么状态?
  • 成熟净值扣除完整非广告变动成本后,这组订单留下了多少贡献?缺失的成本是什么?
  • cohort 是已经成熟、正在成熟,还是只有预测?当前结论是归因估计,还是有合格反事实支持?
  • 下一段媒体费和采购承诺会在什么日期发生,Payout、退款、库存、应付和最低现金在 base/downside 情景下能否承受?

如果第二个问题就答不出来,先修订单事实与归因对账,不再寻找一个更漂亮的 ROAS benchmark。数汇恒流的归因分析会在一套全账户白盒 policy 下保留平台 self-credit、订单级 credit、未归因与证据不足状态;它提高可解释与可对账性,不声称看见所有触点,也不把 credit 写成因果。

如果订单、成本、cohort、库存与现金已经需要放进同一项老板决定,可以通过增长策略咨询界定一个明确问题、证据底座、情景边界、owner 和停止条件。这类工作不代替客户的财务、税务、法务或融资顾问,也不会在没有人工审批的情况下更改预算、库存、采购单或现金。

不要把 ROAS 丢掉。把它放回渠道诊断的位置,再沿着订单往后对账,直到下一笔钱得到一个有边界、可复核、可撤回的决定。