您已经在 feed 中添加了 sale_price,商品也已通过审核,但购物者看到的仍然只是单一的普通价格,既没有划线价,也没有促销标识。Google 自己的文档解释了这种情况为何比 feed 团队预想的更常见:促销价标注要求折扣大于 5% 且小于 90%,原价需要已经按该价格销售足够长的时间(在大多数 Shopping 广告国家/地区,是过去 200 天内累计 30 天),并且落地页必须同时显示两个价格。只要有一项条件不满足,商品仍会正常展示,但不会带有该标注。本指南面向在 Google Shopping 中开展促销活动的 feed 管理人员和付费媒体团队。读完后,您将能够按顺序完成八项检查,找出是哪一项出了问题,并在 feed 中而不是在店铺里修复它。
“不显示”到底指什么
“促销价不显示”这一说法,实际上对应三种不同的故障,各自需要不同的修复方式。
- 商品被拒登。Merchant Center 会通知您。促销价违反了某项数据要求,例如它没有低于
price,或与落地页不一致。 - 商品已通过审核,但购物者看到的促销价没有划线价或标识。数据有效,但不满足标注的资格规则。
- 商品显示的是旧价格。促销信息没有传到 Google,或者已经过期,或者一开始就没有被正确设置排期。
Google 明确表示,即使您符合条件,促销价标注也不一定保证显示。因此,本指南的目标是排除所有您可以控制的原因,同时坦率说明剩余的不确定性。
八项诊断检查
请按顺序执行。前四项是仅凭 feed 就能完成的数据检查,后四项需要价格历史、落地页或账户设置。
| # | 检查项 | 通过条件 | 来源 |
|---|---|---|---|
| 1 | 促销价低于原价 | sale_price < price,且 price 填写的是完整的常规价格 | Google: sale_price |
| 2 | 折扣在允许范围内 | 大于 5% 且小于 90% | Google: sale price annotations |
| 3 | 日期有效,且为未来或当前时间 | ISO 8601 区间,开始早于结束,且为真实存在的日历日期 | Google: sale_price_effective_date |
| 4 | 促销属性成对提交 | 库存更新 feed 中同时包含 sale_price 和 sale_price_effective_date | Google: submit both sale attributes |
| 5 | 原价历史足够长 | 取决于国家/地区和展示渠道,见下表 | Google: sale price annotations |
| 6 | 落地页同时显示两个价格 | 原价和促销价均可见,并与 feed 和结账页一致 | Google: sale price annotations |
| 7 | 该折扣不是优惠码或会员价 | 优惠码、会员价和忠诚度价格不得写入 sale_price | Google: sale_price |
| 8 | Google 已重新读取 feed | 在修改之后发生过抓取或 API 更新 | 您的 Merchant Center feed 状态 |
检查 1:price 与 sale_price 的方向是否正确
Google 的规则很简单:sale_price 必须低于 price,并且这一差额必须体现在您的商品数据中。常见的故障是,店铺平台在 price 中导出了已经打折后的金额,而 sale_price 为空或与之相同。Google 要求商家在 price 中提交完整的非促销价格;只有在完全不使用 sale_price 时,才应把促销价放进 price。
正确的一组数据如下:
price: 1000.00 TRYsale_price: 799.00 TRY
请在 feed 中四舍五入到两位小数,因为 Google 会自行处理多余的小数位,结果可能与页面上的价格出现偏差。
检查 2:折扣百分比
在发布之前,请对每一行促销数据计算百分比:(price - sale_price) / price。Google 要求该值大于 5% 且小于 90%。在上面的例子中是 20.1%,符合要求。3% 的降价永远不会带有标注,92% 的折扣行同样如此,而这通常本身就是数据错误。
检查 3:sale_price_effective_date 的格式
该属性是一个 ISO 8601 日期区间,包含开始和结束时间,中间用斜杠分隔。Google 文档给出的格式是 YYYY-MM-DDThh:mm[±hhmm] 或 YYYY-MM-DDThh:mmZ,长度上限为 51 个字符。位于伊斯坦布尔的店铺,其黑色星期五活动时间窗口如下所示:
sale_price_effective_date: 2026-11-20T00:00+0300/2026-11-30T23:59+0300
有两个默认行为需要注意。如果省略时间,促销将在开始日期的午夜开始,并在结束日期的 11:59 PM 结束。如果省略时区,Google 会使用 UTC。一家土耳其店铺如果写成不带偏移量的 2026-11-20T00:00,对土耳其的购物者来说促销会晚三小时开始;而位于迪拜(UTC+4)的 MENA 店铺则会损失四小时。请务必写上时区偏移量。
同时也要验证日期本身:Google 自己的帮助页面中就有一个把 2 月 29 日放在非闰年的示例,所以复制示例前请先测试。
检查 4:同时发送两个促销属性
对于在线库存更新 feed,Google 表示 sale_price 和 sale_price_effective_date 必须同时提供,或者都不提供;只发送价格意味着该商品并未上传成功。对于普通的商品数据 feed,日期是可选的,但我们会为每一个有排期的促销都发送日期,使结束时间明确无误。
检查 5:原价历史
这项检查很容易被忽略,它会让一条有效的促销数据没有标注。Google 要求原价必须已按该价格销售满一定时间。下面的数字取自撰写本文时 Google 页面上的内容。
| 展示渠道和国家/地区 | 原价必须已生效的时间 |
|---|---|
| Shopping 广告,美国 | 过去 30 天内累计 5 天,或过去 200 天内累计 15 天,以先满足者为准 |
| Shopping 广告,英国、德国、法国、意大利、西班牙、荷兰、巴西、印度、日本、韩国、澳大利亚、加拿大 | 过去 200 天内累计 30 天 |
| 免费展示,巴西、法国、德国、印度、意大利、韩国、荷兰、西班牙、英国 | 过去 200 天内累计 30 天 |
| 免费展示,美国、加拿大、澳大利亚、日本 | 未列出要求 |
| 本地库存广告 | 过去 200 天内累计 60 天;上架不足 200 天的商品则需连续 60 天 |
这些列表中没有土耳其。我们无法从该页面判断土耳其账户适用什么规则,因此请在 Merchant Center 中查看您自己商品的状态,而不要想当然地认为 30 天的要求适用或不适用。
实际影响在于时间安排。一款 11 月 1 日以 1,000 TRY 上线的新品,在适用“200 天内 30 天”规则的国家/地区,无法在 11 月 10 日带上促销标注。一款在活动前一周刚被提价的商品,也可能因为原价没有持续足够长的时间而未通过同样的测试。如果您的促销日历依赖这些标注,请在促销之前的几周内保护好原价。
检查 6:落地页
Google 要求在落地页上同时显示原价和促销价,并且 sale_price 的值必须与页面和结账页上显示的价格一致。如果商品页面只显示折后价格,而划线价是稍后由一段不会为 Googlebot 执行的脚本添加的,那么 feed 与页面就会不一致。请检查渲染后的 HTML 中是否同时包含两个价格。我们之前的指南阻止 Google 覆盖您 feed 中的价格数据介绍了页面与 feed 不一致时会发生什么。
检查 7:哪些内容不应放进 sale_price
Google 排除了三类内容。优惠码折扣应在店铺的折扣设置中管理,而不是放进 sale_price。忠诚度和会员价格应放在 loyalty_program 中。而作为 Merchant Center 促销提交的促销价,不会被视为促销价标注所需的 sale price。如果您的活动是“购物车内再减 10%”,那它属于促销优惠,feed 中的价格应保持不变。
检查 8:Google 是否已读取更改?
定时抓取可能会产生时间差。Feedance 自己的 Google Merchant Center 集成页面指出,Merchant Center 可以按每小时、每天、每周或每月重新读取托管的 feed,而价格变动频繁的商品目录可能需要改用 API 推送。每次修改促销后,请在 Merchant Center 中打开该商品,确认显示的是新价格,然后再判断标注是否缺失。
结合价格历史的实例
这是一个假设的数据行,并非客户数据。一件夹克标价 1,000.00 TRY。11 月 10 日降至 800.00 TRY,持续一周,11 月 17 日恢复为 1,000.00 TRY,然后在 11 月 27 日的黑色星期五以 700.00 TRY 销售。
price: 1000.00 TRYsale_price: 700.00 TRYsale_price_effective_date: 2026-11-27T00:00+0300/2026-11-30T23:59+0300
该 feed 通过了检查 1 至 4:折扣为 30%,日期有效,且带有时区偏移量。就 Google 的原价测试而言,该商品在回溯期的大部分时间里都按 1,000 TRY 销售,因此在适用“200 天内 30 天”规则的国家/地区,很可能通过检查 5。土耳其的规则是另一项测试,而这一行正是被它拦下的。根据 KPMG 对该修订的摘要,自 2022 年 2 月 18 日发布于 Resmi Gazete(第 31754 号)的修订案于 2022 年 3 月 1 日生效以来,折扣销售的折前价格是折扣开始前 30 天内收取过的最低价格。在本例中,前 30 天内的最低价格是 800 TRY,因此相对于这一基准,真实折扣是 12.5%,而不是 30%。关于折扣事实的举证责任在卖家。如果 feed 在落地页上对 1,000 TRY 划线,而价格历史中存在 800 TRY 的那一周,那么即使 Google 显示了标注,这也是一个合规问题。
无论在哪个市场,对这两项测试都有帮助的凭据,是按 SKU 记录的、每天实际收取价格的日志。
促销 feed 发布前检查清单
- 为每个促销 SKU 导出
price、sale_price和sale_price_effective_date。 - 计算折扣百分比,并标记所有小于等于 5% 或大于等于 90% 的数据。
- 标记没有时区偏移量的数据行。
- 与您的价格历史关联,标记原价在过去 30 天内发生过变动的 SKU。
- 渲染十个样本商品页面,确认无需任何用户操作即可看到两个价格。
- 确认没有任何优惠码或会员价被写入
sale_price。
衡量标注是否带来了帮助
不要想当然地认为划线价会提升效果。请在相同日期内对比匹配的商品组,方法参见我们的指南衡量 feed 变更对 ROAS 的影响。如果 TRY、AED 或 SAR 的格式不一致,请先修复这一问题;参见我们关于增值税、货币和小数位错误的指南。
本指南的局限
我们依据的是核查时 Google 帮助页面上的内容,而 Google 会更改这些要求。我们无法确认土耳其账户适用什么规则,因为标注页面的国家/地区列表中没有土耳其。我们无法查看您的 Merchant Center 账户内部,因此资格情况可能与规则所暗示的不同,而且 Google 自己也表示不保证标注一定显示。我们也没有涉及 Meta 或其他渠道,它们的促销价字段遵循各自独立的规则。关于土耳其法规的部分基于第二手摘要,而非 Resmi Gazete 的原文,也不构成法律意见;请向法律顾问确认。Channable 发布了自己的促销价标注说明,值得与本文对照阅读。
常见问题
为什么我的 sale_price 已通过审核,却没有划线价?
审核只检查数据是否有效。而标注还有额外条件:折扣大于 5% 且小于 90%,原价在您所在的国家/地区已生效足够长的时间,以及落地页上同时可见两个价格。请先检查第 2、5 和 6 项。
我需要使用 sale_price_effective_date 吗?
对于普通的商品数据 feed,它是可选的。在在线库存更新 feed 中,Google 表示两个促销属性必须同时发送。我们建议为每一个有排期的促销都发送它,使促销的结束时间明确无误。
我可以把优惠码折扣放进 sale_price 吗?
不可以。Google 要求您在店铺的折扣设置中管理优惠码折扣。忠诚度和会员价格则应放在 loyalty_program 属性中。
Merchant Center 的促销会生成促销价标注吗?
不会。Google 明确表示,作为促销提交的促销价不计入。请使用 sale_price 属性来获得促销价标注,而将促销功能用于购物车折扣等优惠。
原价必须已经生效多长时间?
在大多数 Shopping 广告国家/地区,Google 列出的要求是过去 200 天内累计 30 天。在美国的 Shopping 广告中,则是过去 30 天内累计 5 天,或过去 200 天内累计 15 天。本地库存广告需要 60 天。
为什么我展示的折扣与土耳其法律中的折扣不一致?
Google 检验的是您实际收取过的原价。而据 KPMG 总结,土耳其规则将基准价格定为折扣开始前 30 天内的最低价格。一次临时降价可能会拉低您依法可用于对比宣传的基准价格。
检查您自己的 feed
如果您希望有人再帮您看一遍 feed 中的价格属性,可以使用免费的 Feedance 商品 feed 审核工具进行检测。

Kardelen Yılmaz 在 Feedance 负责增长业务,帮助电商品牌和代理商从每一件投放广告的商品中获得更高回报。她撰写的内容涵盖商品 Feed 质量、Shopping 与 Performance Max 广告系列、创意自动化,以及 AI 驱动的购物如何改变商品曝光。
LinkedIn












