GMC 对捆绑产品(Bundle)是如何处理的
Google Merchant Center (GMC) 对捆绑产品(Bundle)的抓取和处理有特定的政策和最佳实践。如果处理不当,很容易导致商品被拒登或收到警告。
核心原则是:你必须让 Google 和用户都能清晰地理解他们到底在买什么,以及价格是如何构成的。
下面我将从 GMC 的政策、最佳实践和技术实现三个层面来为您详细解读。
1. Google Merchant Center 的核心政策
Google 对捆绑产品的政策主要围绕以下几个属性:
a) is_bundle
[捆绑商品] 属性
- 作用: 这是最重要的属性。你必须明确地告诉 Google “这是一个捆绑商品”。
- 设置: 在你的产品 Feed 中,为这个捆绑产品设置
<g:is_bundle>yes</g:is_bundle>
(XML格式) 或is_bundle: yes
(表格格式)。 - 后果: 如果你销售的是一个捆绑包,但没有设置这个属性,Google 可能会认为你在误导用户(比如标题里写了“相机套装”,但只卖相机),从而导致商品被拒登。
b) title
[名称] 属性
- 要求: 名称必须清晰地表明这是一个套装或捆绑包。
- 最佳实践:
- 使用“套装”、“组合”、“捆绑包”、“套件”、“...和大礼包”等词语。
- 列出主要的商品。
- 例如:
"尼康 D5000 相机套装,含 18-55mm 镜头、相机包和三脚架"
。 - 不要只写
"尼康 D5000 相机"
,这会被认为是单个商品。
c) description
[说明] 属性
- 要求: 说明中应详细列出捆绑包内包含的所有物品及其规格。让用户对自己将收到的所有东西一目了然。
d) image_link
[图片链接] 属性
- 要求: 主图片必须展示捆绑包中的所有主要商品。用户需要能从图片上直观地看到他们将要购买的全部内容。
- 不要只用其中一件商品的图片作为主图。你可以提供额外的图片 (
additional_image_link
) 来分别展示单个商品。
e) price
[价格] 属性
- 要求: 价格必须是整个捆绑包的总售价。
- 例如,如果你的捆绑产品在 Shopify 页面的最终售价是 $136.00,那么提交给 GMC 的价格也必须是 $136.00。
f) identifier
[GTIN, MPN, brand] 属性
- 要求:
- GTIN (全球交易项目代码): 这是最棘手的部分。因为捆绑包是你自己创建的,它通常没有一个官方的 GTIN (如 UPC, EAN, JAN, ISBN)。在这种情况下,你应该留空
gtin
字段。 - MPN (制造商部件号): 你可以为这个捆绑包创建一个自己的、唯一的 MPN。
- Brand (品牌): 通常是捆绑包中主要商品的品牌。
identifier_exists
: 如果因为是自定义捆绑包而没有 GTIN,你需要设置<g:identifier_exists>no</g:identifier_exists>
。但通常情况下,只要你提供了brand
和mpn
,即使没有gtin
,也可以将identifier_exists
设为yes
。最佳实践是提供brand
和你自己的mpN
。
- GTIN (全球交易项目代码): 这是最棘手的部分。因为捆绑包是你自己创建的,它通常没有一个官方的 GTIN (如 UPC, EAN, JAN, ISBN)。在这种情况下,你应该留空
2. 您的 Shopify 捆绑产品如何被抓取?
现在我们来看您的情况。您在 Shopify 中创建的“组合产品”实际上是一个虚拟产品,它本身并不直接加入购物车,而是通过 JS 将多个真实的、独立的子产品加入购物车。
这在 GMC 的处理上会产生两种可能的情况,取决于您如何设置 Feed:
情况 A:将“组合产品”本身作为一个实体提交给 GMC
这是最推荐、最符合 Google 政策的做法。
- 实现方式:
- 你在 Shopify 中创建的那个“组合产品”页面,就是你要提交给 GMC 的目标。
- 你需要确保这个 Shopify 产品满足所有 GMC 的要求:
- 标题: 明确写成“XX 套装”。
- 描述: 详细列出所有子产品。
- 图片: 主图是所有子产品的合影。
- 价格: 这个 Shopify 产品的价格应该设置为最终的组合总价。这是一个挑战,因为你的价格是动态计算的。你可能需要将其设置为一个有代表性的默认组合总价。
- 库存: 库存状态需要反映整个组合的可售性(例如,只要有一个子产品缺货,整个组合就不可售)。
- Feed 设置:
- 使用一个 Feed 应用(如 Google & YouTube 官方渠道应用,或其他的 Feed 管理应用)。
- 在这个应用中,找到这个“组合产品”。
- 手动或通过规则为它添加
is_bundle: yes
属性。 - 为它设置一个唯一的
mpn
。 - 确保
gtin
字段为空。
挑战: 最大的挑战在于价格的同步。GMC 会定期抓取你的产品页面,如果它抓取到的价格和你 Feed 里提交的价格不符,就会导致拒登。由于你的价格是动态的,这需要特别处理。一种方法是让 JS 在页面加载时不仅显示价格,还要修改页面结构中 Google 会读取的结构化数据(Schema.org JSON-LD)。
情况 B:将独立的子产品提交给 GMC
这种方式更简单,但不符合 Google 对捆绑产品的定义。
- 实现方式:
- 你只将那些独立的子产品(比如那件T恤、那条裤子)提交给 GMC。
- 用户在 Google Shopping 上看到的是单个商品。
- 当他们点击进入你的网站时,他们会看到这个商品所在的组合页面,然后被引导去购买整个组合。
- 风险:
- 价格不匹配: 用户在 Google 上看到的是单品价格,但进入页面后你可能引导他购买一个更高总价的组合,这会造成糟糕的用户体验,并可能被 Google 标记为“价格误导”。
- 政策不符: 这不是 Google 期望的捆绑产品提交流程。
总结与最佳实践建议
对于您这种通过 JS 实现的动态捆绑产品,我强烈建议您采用 情况 A 的思路,并努力解决其挑战:
- 创建一个专门的 Shopify 产品 来代表这个捆绑包。
- 优化这个产品页面: 确保标题、描述、图片都清晰地展示这是一个捆绑包。
- 使用 Feed 应用:
- 在应用中为这个产品打上
is_bundle: yes
的标签。 - 设置一个自定义的
mpn
。 - 确保没有提交
gtin
。
- 在应用中为这个产品打上
- 解决价格和可访问性问题:
- 价格: 在产品页面上,使用 JavaScript 不仅更新用户看到的
<div>
或<span>
,同时也要更新页面<head>
部分的 JSON-LD 结构化数据中的price
字段。这样当 Google 的爬虫访问页面时,它能读到与 Feed 中一致的最终组合价。 - 可访问性: 确保即使在禁用 JavaScript 的情况下,页面也能显示一个默认的、合理的组合价格和信息。Google 的爬虫有时会在不执行 JS 的情况下抓取页面。
- 价格: 在产品页面上,使用 JavaScript 不仅更新用户看到的
最终建议: 将捆绑产品作为一个独立的、明确的实体来管理和提交,这是与 Google Merchant Center 政策保持一致的唯一正确途径。虽然技术上需要一些额外的工作(特别是同步动态价格到结构化数据),但这是确保您的广告能够顺利运行、避免被拒登的根本方法。