新功能Product Score、4T Segmentation、Price War 和 Broken Size 现已上线。查看新功能
Feedance
文章

在 Google feed 中添加 cost_of_goods_sold:从 COGS 导出到利润率分层的实操指南

分步指南:为 Google 商品 feed 添加 cost_of_goods_sold,匹配购物车数据 ID,并将毛利润转化为利润率分层,便于优化广告预算。

Cagdas PolatCagdas Polat
阅读时长 2 分钟

大多数 Performance Max 报告只告诉您收入和 ROAS,很少告诉您毛利润,因为只有当 feed 中的每个商品都带有成本时,Google 才能计算毛利润。Google 明确表示,这个成本可以是粗略值:其官方设置指南建议,在没有精确数据时,可以将 COGS 估算为商品价格的 80%。本指南面向 feed 管理人员和付费媒体负责人:您在某处已有成本列(ERP 导出文件、供应商价格表),并希望把它放进 Merchant Center feed。读完后,您将得到格式正确的 cost_of_goods_sold 属性、与之匹配的转化代码,以及第一份利润率报告,并可以据此建立 custom label 分层。

cost_of_goods_sold 的作用与局限

cost_of_goods_sold 是 Merchant Center 的一项属性,用于支持毛利润报告。Google 将毛利润定义为收入减去 COGS。该属性不会改变哪些商品获得审核通过、商品如何排名,也不会改变您的出价。它只是为 Google Ads 提供一个成本,用来从其已记录的每件已售商品收入中扣除。

对大多数商家来说,它是可选项。Google 仅将其列为自动折扣和动态促销的必填项。对其他商家而言,它是一项报告升级,而且只有在转化代码同时发送商品级购物车数据时,报告才能正常生效。

该属性不是出价设置,Feedance 也不管理出价。这些数据能让您清楚地看到哪些商品和广告系列真正赚钱,从而使您在其他环节做出的结构和预算决策建立在利润而非收入之上。

步骤 1:确定每个商品的成本来源

Google 接受精确值、平均值和估算值,因此第一个决定是选择您有把握长期维护的数据来源。下面我们按“第一个月之后仍能保持准确的频率”对各选项进行了排序。

成本来源准确度维护负担适用情形
按 SKU 导出的 ERP 或库存系统数据高自动化后较低成本已按变体存储
按 SKU 关联的供应商价格表中到高中等;价格表随季节变化没有 ERP,但有一份干净的供应商文件
类目平均值(例如某类目按 0.62 x 价格计算)中低同一类目内的利润率基本一致
价格的固定百分比(Google 的示例:80%)低无您本周就需要第一份报告,之后再逐步优化

固定百分比得出的毛利润会与收入完全同步变化,因此它永远无法告诉您某个商品每笔销售的收益是否高于另一个商品。请用它来开启报告功能,而不是用它来做利润率决策。

步骤 2:严格规范属性格式

Google 对 cost_of_goods_sold 的规范是:数字加上 ISO 4217 货币代码,不可重复,小数分隔符使用句点。违反其中任何一条都可能导致商品无法纳入报告,从而造成数据不完整。

在制表符分隔的 feed 中,值如下所示:

412.50 TRY

在 XML 中:

<g:cost_of_goods_sold>412.50 TRY</g:cost_of_goods_sold>

COGS 所用的货币应与转化代码上报的价格货币一致。Google 建议这样做,以避免汇率造成的不一致。如果商家以土耳其里拉销售,而供应商以欧元开票,则需要在导出前于 feed 内将成本换算为里拉,并按计划定期更新所用汇率。

以下是我们在成本列中最常见的格式错误,以及每种错误的后果:

源数据值问题更正后的值
412,50 TRY使用逗号作小数分隔符,常见于土耳其区域设置的导出文件412.50 TRY
412.50缺少货币代码412.50 TRY
TL 412.50不是 ISO 4217 代码,且顺序错误412.50 TRY
1,412.50 TRY数字中含有千位分隔符1412.50 TRY
0.00 TRY空成本被导出为零,会被解读为 100% 利润率该商品不填写此属性

最后一行属于经验判断,而非 Google 的规则。零成本是有效数字,Google 会接受它,但会抬高该商品的毛利润。当成本未知时,我们会省略该属性。

步骤 3:将数值提交到 Merchant Center

Google 列出了三种提供 COGS 数据的方式:商品 feed、Content API(及其后继者 Merchant API)或补充 feed。当成本数据来自与商品目录不同的系统时,补充 feed 通常是最稳妥的途径,因为您可以提交一个两列文件(id 和 cost_of_goods_sold),而无需改动主 feed。

如果您使用平台管理 feed,对应的做法是使用一个无需改写数据源即可添加属性的层。在 Feedance 中,补充 feed正是为此而设;当您使用估算值时,feed 规则可以根据价格计算类目平均成本。我们尚未发布此特定用法的客户案例,因此请以这些功能页面中描述的机制为准。

步骤 4:检查购物车数据是否与 feed ID 对应

只有当 Google 能将已售商品与 feed 中的商品匹配时,才会使用该成本。Google 帮助文档指出,转化代码 items 数组中的商品 ID 必须与 Merchant Center feed 中的 id 属性完全一致,并且只处理来自已关联到该 Google Ads 账号的 Merchant Center 账号的商品。符合条件的转化必须是使用 Google 代码或 Google Tag Manager 的可出价购买转化。

在等待数据之前,请先核对这份清单:

  1. Merchant Center 账号已关联到拥有该购买转化的 Google Ads 账号。
  2. 购买代码为每个订单行项目发送包含 ID、价格和数量的 items 数组。
  3. 代码中的 ID 与 feed 的 id 是同一字符串,包括大小写和任何变体后缀。如果您的代码发送的是父级 SKU,而 feed 使用的是变体 ID,则任何内容都无法匹配。
  4. 代码中的价格与 COGS 值使用同一种货币。
  5. 转化操作的诊断中没有出现 ID 不匹配的警告。Google 建议通过该诊断部分查找不匹配项。

商品 ID 不匹配是 COGS 上线后报告显示短横线而非数字的最常见原因。Google 指出,如果没有 COGS 属性,报告中的 COGS 和毛利润值会显示为空白或短横线。

步骤 5:查看首份报告,并与财务数据核对

Google Ads 会以毛利润、毛利率、销货成本、收入和销量的形式呈现结果。对于 Performance Max,Google Ads API 将这些指标记录为 metrics.gross_profit_micros、metrics.gross_profit_margin 和 metrics.cost_of_goods_sold_micros,可在 asset_group_product_group_view、campaign、customer 和 shopping_performance_view 中使用。

API 文档中的两点说明会影响您解读早期数据的方式。其一,在相关商品的所有转化都被记录之前,购物车数据指标不可用,因此最初几天的数据看起来会不完整。其二,自 2026 年 6 月 15 日起,shopping_performance_view 将包含所有 Performance Max 网络的数据,而不仅仅是展示广告网络,因此在这部分数据加入时,指标可能会一次性上升。如果您要做前后对比,请不要把这一次性的阶跃变化当作 feed 改动带来的效果。

请做一次合理性验证:选定一周,取 Google Ads 归因于购物车数据的收入,减去财务团队针对相同商品给出的成本,然后进行比较。如果您的 COGS 是平均值,预期会有差距,但不要期望差距为零。

步骤 6:将毛利润转化为利润率分层

一旦能够看到每个商品的毛利率,就可以把商品分成几个层级,并将层级写入 custom label。Google 允许使用 custom_label_0 到 custom_label_4,每个最多 100 个字符,每个商品在每个属性下只有一个值,每个标签最多 1,000 个唯一值。三到五个层级就足够了。

一个示意方案(数字仅为示例,不是基准):

基于 feed 价格的毛利率custom_label_1 的值典型用途
低于 20%margin_low单独的 listing group;以单次点击利润而非 ROAS 来评判
20% 至 40%margin_mid默认组
高于 40%margin_high适合追加预算的候选对象
无 COGSmargin_unknown待审核清单;修复数据

该层级是在 feed 端根据 price 和 cost_of_goods_sold 计算得出的,因此每次重建 feed 时,feed 规则都可以自动写入。我们之前的文章Performance Max listing group 中的 custom label、product type 与商品 ID讨论了 listing group 树在变得碎片化之前能承载多少个标签维度。如果您想检验这项改动是否有效,我们用 ROAS 衡量 feed 改动的方法同样适用。

步骤 7:让成本列持续保持有效

成本比价格更容易过时。请为它指定负责人和更新频率。每次供应商调价、每次对您的利润率有影响的汇率变动,以及每个季节,都应重新导出。如果某商品的成本高于其价格,在它进入任何报告之前,您自己的检查中就应该显示负利润率。

局限所在

COGS 报告衡量的是已售商品的毛利润。它不包括运费补贴、退货、支付手续费或广告支出,因此某个商品可能毛利率看起来健康,实际上仍在亏钱。Google 自己的 SA360 文档给出了税前批发成本、运费和广告费用的示例,印证了这一范围。

它还依赖于购物车数据的正确实施,并且要求购买是 Google 可以归因的转化。只有作为带购物车数据的转化上报的购买,才会出现在这些指标中。

平均值会掩盖差异。如果同一类目中既有利润率 15% 的配件,又有利润率 55% 的核心商品,类目平均值会对两者都给出失真的结果。

竞争对手也涵盖这一领域。DataFeedWatch 发布了一份关于在 feed 中添加销货成本以生成毛利润报告的指南;如果利润逻辑是您的主要需求,那么像 ROI Hunter 这样以商品盈利能力为定位的平台可能更适合您(请参阅我们的对比)。Feedance 负责准备数据,不会据此设定出价或预算。

常见问题

Google Shopping 是否必须提供 cost_of_goods_sold?

不必。Google 将其视为可选项,只有自动折扣和动态促销才要求必填。没有它,您的广告仍会正常投放,但 COGS 和毛利润指标会显示为空白。

成本必须精确吗?

不必。Google 表示这些数据用于报告,不需要精确。如果成本因商品而异,可以提供平均值,或类似价格 80% 这样的粗略估算。

客户能看到成本吗?

Google 将该属性描述为在转化连同购物车数据一起上报时使用的报告输入项。其文档并未将其作为广告内容呈现,但我们没有测试所有展示界面,因此请在您自己的账号中确认。

为什么我的报告中毛利润显示为短横线?

通常是因为缺少该属性,或者转化代码中的 ID 与 feed 的 id 不匹配。请首先检查转化操作的诊断中是否有 ID 不匹配的提示。

应该使用哪种货币?

使用转化代码所上报价格的货币。Google 建议两者保持一致,以避免汇率造成的不一致。

它适用于 Performance Max 吗?

适用。Google Ads API 记录了购物车数据指标(包括毛利润和毛利率),适用于已实施含购物车数据的转化的 Performance Max 广告系列。

如果我不想编辑主 feed,应该在哪里添加?

使用补充 feed,或 Content API 或 Merchant API。Google 将这些方式与主 feed 并列,列为可接受的提交方式。

这与 custom label 有何不同?

成本属性为 Google 的利润报告提供数据。custom label 则是您为广告系列结构定义的细分。前者用来计算利润率,后者用来根据利润率采取行动。

在添加成本列之前先检查您的 feed

只有 feed 的其余部分也没有问题,成本列才有意义。请先用免费商品 feed 审核工具检查您的 feed,在其基础上建立利润率分层之前,先找出缺失和格式错误的属性。

来源

想请人帮您把把关?我们会与您一起审查 feed,并在下次提交前指出其中的缺口。
免费诊断
Cagdas Polat
作者
Cagdas Polat

Feedance 联合创始人,凭借计算机工程师与营销人的双重背景推动数据分析洞察。他专注于将数据转化为可落地的策略,致力于帮助品牌在数字化领域实现显著增长。

LinkedIn

看看哪些
商品真正带来收益。

连接您的 feed 和 GA4,我们会在您自己的商品目录上展示 Product Score、4T、Price War 和 Broken Size。