优惠期限要写在承载当前促销价的Offer或PriceSpecification上,并明确开始、结束与时区。这些字段描述价格何时有效,不会自动替店铺调价。同一商品仍要核网页、结账、结构化数据与Feed的实际价格。
比如活动说“10月8日结束”,对北京时间和UTC并不是同一时刻。漏掉时区,或把结束字段写在错误的价格对象上,都可能让机器读到与消费者不同的优惠安排。
先确认96美元是哪一段价格
Google在2026年7月7日补充了销售期限说明。当前商家信息指南允许在Offer上写validFrom与validThrough或priceValidUntil,前提是这个Offer的price代表当前有效的促销价。
这几个词分别是开始时刻、结束时刻或价格截止时刻。若使用PriceSpecification描述促销价,时间应放在相应的那份价格说明上,并用validThrough结束;priceValidUntil不适用于PriceSpecification。
因此先问店铺系统:现在买家实际支付多少,哪一处对象在描述这个价格?未开始的活动,不能提前把未来96美元当成当前售价;还没调价的结账,也不能用结构化数据的日期代替调价工作。
M42,用一个带时区的完整例子
教学商品M42原价120美元,10月6日至8日活动价96美元,活动按北京时间执行。下面展示活动期间的一份教学Product:Offer描述当前96美元,时间从10月6日00:00到10月8日23:59:59,+08:00明确时区。
{
"@context": "https://schema.org",
"@type": "Product",
"name": "M42(教学示例)",
"offers": {
"@type": "Offer",
"price": "96.00",
"priceCurrency": "USD",
"validFrom": "2026-10-06T00:00:00+08:00",
"validThrough": "2026-10-08T23:59:59+08:00"
}
}
这是有效JSON的教学片段,未列出完整商品所需的其他信息。实际调整要落在已有商品输出里,并由店铺系统让页面、结账和标记在活动开始时一起变成96美元,结束后一起恢复真实价格。
日期字段自身不会执行调价。若它写着10月6日起96美元,而购物车仍收120美元,先修售价与同步;不能把这个差异解释成“Google还没更新”。
Feed与网页,使用同一活动时段
Merchant Center的促销有效期用开始与结束区间。M42可以在Feed保留price为120美元,sale_price为96美元,再提供相应区间;活动期间,网页Offer的price则描述买家当前实际付的96美元。
两边都叫price,却承担不同位置的作用,不能机械要求这两个字段永远相等。真正要核的是同一SKU、币种、目标市场和活动时段有没有说同一件事。
按帮助页的分钟格式,这个教学区间是2026-10-06T00:00+0800/2026-10-08T23:59+0800。实际提交仍按所用接口的格式,由维护者转换。官方说明,省略时区会默认UTC;不要因为店铺设了北京时间,就假设每个上传字段也自动带这个时区。
开始和结束,各复查一次
活动开始后,用同一商品检查页面、购物车或结账、当前标记和处理后的Feed。96美元在哪一处没出现,就回到那条同步链查。收到上传成功,不代表商品处理及公开展示已同步。
活动结束,再核店铺恢复的真实价格,并同步清理过期促销值与不再适用的期限。官方提醒,过期priceValidUntil可能影响商品展示;一份长期未更新的标记不能靠测试曾经通过来证明当前正确。
保存实际开始、结束时的取值与维护负责人,比只留一张日期填写表更有用。复杂的商品输出可接着看技术SEO审计;需要查一条不同步的活动,可在联系页提供公开商品URL、活动时区和页面与结账的差异。
常见问题
validThrough与priceValidUntil要同时写吗?
Offer可使用其中一种结束属性。PriceSpecification使用validThrough,不能把priceValidUntil放到那个对象上。
写了开始和结束时间,店铺会自动调价吗?
不会。调价由店铺系统执行,结构化数据描述实际状态;网页和结账仍要在开始及结束时同步检查。
Feed里price与网页Offer.price不同,就是错了吗?
未必。Feed可同时保留原价price和优惠sale_price,网页Offer.price描述当前售价。应核买家实际价格与同一活动区间,而不是只比较两个同名字段。