这类问题先别从广告系列里找答案。sale price annotations 是 Merchant Center 商品数据和落地页价格共同触发的展示样式,不是 Google Ads 里手动打开的扩展。
我在排查 DTC 站点促销价时,会先拿 3 个 SKU 做样本:一个确定在打折、一个刚结束促销、一个从未促销。这样能分清是整条 feed 映射错了,还是某个 SKU 的历史价格不够。
先确认是不是这个问题?
如果 Shopping ads 或 free listings 只显示现价,没有划线原价、sale badge 或保存金额提示,就属于本文范围。Merchant Center 后台不一定会给红色错误,因为「不展示促销价标注」和「商品被拒登」不是同一件事。
先在 Merchant Center 的 Products > All products 找到商品,筛选 Sale badge 是否为 Yes。Google 文档说明,这里可以查看哪些商品有资格展示促销价标注;如果 SKU 没进候选池,广告前台通常也不会凭空出现标注。
| 检查点 | 正常状态 | 常见问题 |
|---|---|---|
price | 继续提交原始基准价 | 把折后价写进了 price |
sale_price | 提交当前促销价 | 字段为空或币种不一致 |
sale_price_effective_date | 用 ISO 8601 日期段限制促销期 | 促销结束后仍持续生效 |
| 落地页可见价格 | 原价和现价同时显示 | 页面只露出现价 |
| 结构化数据 | 当前价格与页面一致 | JSON-LD 仍输出旧价 |
feed 里 price 和 sale_price 怎么填?
Google 的逻辑很直:price 是你之前收取过的原价,sale_price 是促销期间实际向用户收取的价格。促销期间也要继续提交原价到 price,不要把两个字段都改成折后价。
举个 SKU:原价 49.99 USD,促销价 39.99 USD。feed 里应该是 price=49.99 USD,sale_price=39.99 USD。如果 Shopify、WooCommerce 或自研 feed 把 Compare at price 丢掉,只传 39.99 USD 到 price,Google 只能把它当当前普通价格处理。
sale_price_effective_date 不是展示 badge 的唯一条件,但它能减少促销期错位。Google 要求日期范围使用 ISO 8601,例如 2026-06-01T00:00-0700/2026-06-07T23:59-0700。不传这个字段时,sale_price 会在提交后立即生效。
落地页为什么比 feed 更容易出错?
Google 会抓取商品落地页,并把 feed 里的价格和页面价格或结构化数据做比对。官方的 price mismatch 文档特别提到,如果价格通过 JavaScript 在页面加载后才动态写入,可能触发价格不一致问题。
促销页最常见的坑是视觉层和机器层不一致:用户看到 39.99 USD,JSON-LD 还输出 49.99 USD;或者用户看到会员价,feed 却传普通访客价。Google Search Central 的 Merchant listing 文档也强调,页面上的 Product structured data 要和用户看到的价格一致。
| 场景 | 对 sale annotations 的影响 | 处理动作 |
|---|---|---|
| 页面只显示折后价 | 缺少原价证据 | 显示原价并弱化处理 |
| 划线价比当前价更醒目 | Google 可能难以判断 active price | 让促销价成为主价格 |
| JSON-LD 输出旧价格 | 结构化数据和页面冲突 | 同步 offers.price 或 priceSpecification |
| 按 IP 改价格 | Googlebot 看到的价可能不同 | 用区域定价能力或独立 URL |
| 结账页价格变化 | 用户点击后价格不一致 | 核对购物车、税费和折扣规则 |
5%-90% 折扣区间怎么卡?
Google 明确要求促销价低于原价,并且折扣必须大于 5% 且小于 90%。这两个边界都不是「大于等于」或「小于等于」。
所以 100 -> 95 不稳,因为它刚好是 5%;100 -> 10 也不稳,因为它刚好是 90%。跨币种、四舍五入和含税价会让边界 SKU 更难判断,建议活动价至少留出一点余量。
SKU 级别也要分开算。一个父商品有 6 个颜色,只有 2 个颜色打折,feed 需要在变体 ID 上传对应的 sale_price。把父商品页统一写「up to 30% off」,但变体 feed 没有逐个对齐,前台通常不会稳定展示。
历史原价窗口要看哪个国家?
历史价格窗口是很多团队漏掉的一关。你今天才把原价改高,明天马上打折,Google 未必认可这个原价是有效基准价。
美国 Shopping ads 的规则更短:基准价在过去 30 天内收取过 5 天,或在过去 200 天内收取过 15 天,满足较早达到的一条即可,天数不要求连续。
澳大利亚、巴西、加拿大、法国、德国、印度、意大利、日本、韩国、荷兰、西班牙、英国的 Shopping ads 则看过去 200 天内基准价有效 30 天,天数也不要求连续。部分国家的 free listings 同样使用 30/200 天规则;美国、加拿大、澳大利亚、日本的 free listings 文档里没有额外写历史原价天数。
| 展示类型 / 国家 | 历史原价要求 | 备注 |
|---|---|---|
| 美国 Shopping ads | 过去 30 天 5 天,或过去 200 天 15 天 | 不要求连续 |
| AU、BR、CA、FR、DE、IN、IT、JP、KR、NL、ES、UK Shopping ads | 过去 200 天 30 天 | 不要求连续 |
| BR、FR、DE、IN、IT、KR、NL、ES、UK free listings | 过去 200 天 30 天 | 不要求连续 |
| US、AU、CA、JP free listings | 文档只列折扣和页面展示要求 | 仍要接受 Google 展示筛选 |
| 店铺特定本地库存页 | 过去 200 天 60 天,或新品 60 连续天 | 只适合 local inventory 场景 |
如果还没展示怎么办?
先别在同一天反复改价格。每改一次 feed、页面、结构化数据,都要等 Merchant Center 重新抓取和处理。更合理的节奏是:先修 feed 映射,再修页面价格,再请求重新抓取或等待下一轮抓取。
团队协作时,把 Merchant Center、Google Ads、Shopify 后台和 feed 生成任务分权。促销前 24 小时只允许一个 owner 改价格字段,其他人只看报表,不改模板和税费规则。
如果投手、开发和财务分别在不同城市处理 Google Ads、Merchant Center、Shopify 和结账配置,可以给关键后台操作固定工作环境,用 跨境电商团队稳定线路 承载价格、feed 和账单相关操作。它不影响 Google 是否展示 sale badge,只是减少多人同时排查时的登录环境变量。
还要接受一个边界:Google 文档明确说,即使满足要求,sale price annotations 也不总是展示。排查目标不是承诺前台必出标注,而是把 feed、页面和历史价格清理到不会拖累资格判断。
相关阅读
FAQ
sale price annotations 不展示是不是 feed 写错了?
不一定。feed 里 price 和 sale_price 写对,只是第一关;落地页可见价格、结构化数据、折扣比例、历史原价窗口和 Google 的展示筛选都会影响结果。
折扣 5% 刚好可以显示促销价标注吗?
不建议卡边界。Google 文档写的是折扣必须大于 5% 且小于 90%。如果刚好 5%、90% 或因为四舍五入落到边界外,sale badge 可能不会出现。
美国 Shopping ads 的历史原价窗口怎么看?
美国 Shopping ads 看两条规则,满足较早达到的一条即可:过去 30 天内原价收取过 5 天,或过去 200 天内原价收取过 15 天,天数不要求连续。
sale_price_effective_date 不填会怎样?
Google 会把已提交的 sale_price 立即用于商品。大促、闪促和定时折扣最好补 sale_price_effective_date,否则促销结束后 feed 延迟会继续传促销价。
落地页只显示折后价可以吗?
想拿 sale price annotations,不够。Google 要求原价和当前促销价都在落地页清楚展示,当前促销价更突出,原价可以弱化、灰显或划线。
为什么 Merchant Center 没报错,前台还是没有 sale badge?
sale price annotations 不是强制展示组件。Google 明确说明,即使满足要求也不保证展示;先确认商品在 All products 里是否被标记为 Sale badge eligible。
来源与时间戳
- Google Merchant Center Help: About sale price annotations:https://support.google.com/merchants/answer/9017019?hl=en,核对时间:2026-05-24。
- Google Merchant Center Help: Sale price [sale_price]:https://support.google.com/merchants/answer/6324471?hl=en,核对时间:2026-05-24。
- Google Merchant Center Help: Sale price effective date [sale_price_effective_date]:https://support.google.com/merchants/answer/6324460?hl=en,核对时间:2026-05-24。
- Google Merchant Center Help: How to fix mismatched product price:https://support.google.com/merchants/answer/12159029?hl=en,核对时间:2026-05-24。
- Google Search Central: Merchant listing structured data:https://developers.google.com/search/docs/appearance/structured-data/merchant-listing?hl=en,核对时间:2026-05-24。