要点
一、Google 识别三种价格:当前价(active price)、划线价(strikethrough price)、会员价(member price)。三者靠 UnitPriceSpecification 上的两个属性区分,两个属性不能同时出现,同时出现的价格规格会被忽略。
| 价格 | priceType | validForMemberTier |
|---|---|---|
| 当前价 | 不写 | 不写 |
| 划线价 | https://schema.org/StrikethroughPrice | 不写 |
| 会员价 | 不写 | 指向会员等级 |
当前价可以写在 Offer 的 price 上,也可以写在 priceSpecification 里;两处都写时 Google 用 offers.price,忽略 priceSpecification 里的当前价。
二、商家信息(merchant listing)要求价格大于 0,商品摘要(product snippet)没有这条要求。按这条规则,Shopify 里标价为 0 的商品(例如赠品单独建的商品页)不具备商家信息资格。两类结果的其他区别详见《商品类搜索结果外观与 Search Console 数据》。
三、划线价的写法。在 Offer 上写当前促销价,再加一个带 priceType: StrikethroughPrice 的价格规格写原价,促销价就会被识别为折扣价。priceType 只支持 StrikethroughPrice 一个值,过渡期内 ListPrice 也被接受。写了划线价就要同时提供当前价,当前价本身不加 priceType。
四、促销起止时间(2026-07-07 加入商家信息文档,与 Merchant Center 的 sale_price_effective_date 对应)。
- 开始时间用
validFrom,结束时间用validThrough或priceValidUntil,格式为 ISO 8601。官方建议起止都写,并带上时间和时区,例如2026-11-27T00:00:00-05:00;开始时间要早于或等于结束时间。 - 位置跟着促销价走:促销价写在 Offer 的
price上,起止时间就写在 Offer 上;促销价写在priceSpecification里(与划线价并列的那个不带priceType的规格),起止时间就写在那个规格上。priceValidUntil不能用在 PriceSpecification 上,那里只能用validThrough。 priceValidUntil是过去的日期时,商品可能不展示。促销结束后要同步更新或删除。
五、会员价用 validForMemberTier 标在价格规格上,同时要提供普通会员以外的当前价。等级可以引用两种来源:
- Merchant Center 里配置的计划和等级:按名称写,
{"@type": "MemberProgramTier", "name": "silver", "isTierOf": {"@type": "MemberProgram", "name": "member-plus"}}。 - 网站另一页 Organization 下的 MemberProgram 标记:用
@id引用该等级的网址,写法见下面的片段。会员计划本身怎么定义详见《Organization 层的退货、运费与会员计划标记》。
几个等级价格相同时,validForMemberTier 可以写成数组;价格不同就写多个价格规格。只送积分不打折时,价格规格里写 membershipPointsEarned 加 validForMemberTier,不写价格。validForMemberTier 和 membershipPointsEarned 目前都是 Beta,引用其他页面定义的等级可能不会马上在搜索结果中体现。
下面是一个促销价、划线价、会员价同时存在的 Offer,可直接替换数值使用:
"offers": {
"@type": "Offer",
"url": "https://www.example.com/products/robot-vacuum-x10?variant=4567890",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"priceSpecification": [
{
"@type": "UnitPriceSpecification",
"price": 399.99,
"priceCurrency": "USD",
"validFrom": "2026-11-27T00:00:00-05:00",
"validThrough": "2026-12-01T23:59:59-05:00"
},
{
"@type": "UnitPriceSpecification",
"priceType": "https://schema.org/StrikethroughPrice",
"price": 599.99,
"priceCurrency": "USD"
},
{
"@type": "UnitPriceSpecification",
"price": 379.99,
"priceCurrency": "USD",
"validForMemberTier": {
"@type": "MemberProgramTier",
"@id": "https://www.example.com/pages/rewards#tier_member"
}
}
]
}
六、Product.category(2026-07-07 加入商家信息文档)。这个属性可以写数组,混用两种值:
- 纯文本:店铺自定义分类,对应 Merchant Center feed 的
product_type,建议不超过 750 个字符。 CategoryCode对象:Google 商品分类(GPC),对应 feed 的google_product_category。inCodeSet写 Google 商品分类表的网址,codeValue写分类 ID 或完整路径;路径用>分层,每层至少含一个字母。
"category": [
{
"@type": "CategoryCode",
"inCodeSet": "https://www.google.com/basepages/producttype/taxonomy-with-ids.en-US.txt",
"codeValue": "<从分类表中查到的 ID 或完整路径>"
},
"Smart Home > Security Cameras > Outdoor Cameras"
]
codeValue 的值按商品实际品类到上面的分类表里查,不要照抄别的品类的 ID。Shopify 开发者文档中 structured_data 过滤器的示例输出里 category 为空字符串,主题用这个过滤器时,要看渲染后的源代码确认实际输出了什么,需要时在主题里补写。
容易误解的地方
- 把原价写在 Offer 的
price上、把促销价放进priceSpecification。Google 会把offers.price当作当前价,结果是原价被当成售价。促销价放在price,原价放在带priceType的规格里。 - 给当前价也加了
priceType,或者在同一个规格上同时写priceType和validForMemberTier。前者不符合文档要求,后者整个规格被忽略。 - 用
priceValidUntil表示活动结束,活动结束后没改。过去的日期可能让商品不展示。 - 在
UnitPriceSpecification上写priceValidUntil。这个属性只能写在 Offer 上。 - 只写会员价,不写普通价格。会员价要和一个普通当前价同时出现。
- 以为写了
category就能代替 Merchant Center feed 的分类。官方说明是让标记和 feed 的两个属性对应,没有说标记会覆盖 feed。
怎么检查
一、在商品页源代码里找出 Offer,逐个价格规格核对:当前价不带 priceType 和 validForMemberTier,划线价只带 priceType,会员价只带 validForMemberTier,写了 price 的规格价格都大于 0。
二、促销上线前后各检查一次:上线时 validFrom 和结束时间与页面上写的活动时间一致;结束后 priceValidUntil 或 validThrough 不是过去的日期,页面上的划线价已撤下。
三、用富媒体搜索结果测试检查商品页,确认商家信息项没有严重错误;再在 Search Console「购物」下的商家信息报告看上线后的有效项和无效项变化。
四、检查 category 的 codeValue 能在 Google 商品分类表中找到。
来源
- Merchant listing (Product, Offer) structured data,https://developers.google.com/search/docs/appearance/structured-data/merchant-listing(2026-10-05 核对)
- Loyalty program (MemberProgram) structured data,https://developers.google.com/search/docs/appearance/structured-data/loyalty-program(2026-10-05 核对)
- Latest documentation updates(2025-02-13、2026-07-07 条目),https://developers.google.com/search/updates(2026-10-05 核对)
- Liquid filters: structured_data,https://shopify.dev/docs/api/liquid/filters/structured_data(2026-10-05 核对)
