Shopify 知识库 · 概念
商品捆绑与组合:Bundles、变体组合与库存
说明 Shopify Bundles 的固定捆绑、多件装与混搭的实现方式,捆绑库存怎样按组成项计算,订单与退货中捆绑的呈现,与折扣、变体组合、交叉销售的区别,以及官方写明的不兼容项与页面间表述差异。
官方把捆绑定义为两个或更多相关商品的组合,通常带折扣出售。它解决「一次卖一组商品并让库存、订单与结账认得这是一组」;它不等于折扣,不等于把选项做成变体,也不等于「常一起买」的推荐。官方页写明要在店铺里创建捆绑,必须已安装一个 bundles 应用。Product bundles。
本库哪些内容依赖它
- 交叉销售与追加购买模块:其「捆绑」一类的库存与不兼容事实以本文为准;
- 折扣:折扣与捆绑价的关系;
- 商品与变体:变体组合与捆绑的取舍;
- 库存与地点:组成项库存的对象关系;
- 销售计划:订阅与预购对捆绑的不兼容;
- 退货、退款与补回库存:售后动作的分别核对;
- 商品导入导出:捆绑不支持 CSV 与批量编辑。
本文是该平台机制的权威来源,其他文章只写各自页面语境下的用法。
三种实现,先分清
| 做法 | 本质 | 官方页所述 / 备注 |
|---|---|---|
| Shopify Bundles:固定捆绑 | 一个「父商品」,包含指定的组成商品 | 资格页称固定捆绑与多件装用免费的 Shopify Bundles 应用 |
| Shopify Bundles:多件装 | 同一商品的多件组合 | 创建方式是复制商品(Duplicate product),见 Shopify Bundles 页 |
| 混搭(mix-and-match) | 顾客自己选组成 | 资格页称需第三方应用或 Shopify Plus 的 API;「dynamic bundles」的定义官方页未读到 |
| 变体组合 | 用选项与变体表达「套装 A / 套装 B」 | 不是捆绑功能,库存记在变体自身,不随组成商品联动;见商品与变体 |
| 折扣型「捆绑」 | 商品各自独立,靠折扣(如 Buy X get Y)让组合更便宜 | 不产生捆绑父商品,订单里是普通行项目;见折扣 |
后两行是本库对比用的归类,不是官方的类型名称。选哪种取决于三个问题:组成项是否要各自扣库存、订单里是否要显示成一组、价格是否由一个固定组合价决定。
在哪里配置
- Shopify Bundles 页写明:先创建组成商品,再进入 Apps > Bundles 点 Create bundle;也可从商品的 Bundled products 区编辑。
- 新建后捆绑处于 Draft 状态,需激活后才发布。
- 编辑时可调整数量与变体,并合并同名选项(如尺码),让顾客只选一次。
与主题、Liquid 和 API 的连接
- 捆绑在店面是一个商品,走普通商品页与加购流程;本次读到的官方页没有给出 Liquid 对象或 Storefront API 层面的捆绑专用字段,未核验。
- 定制捆绑价:Bundles 页提到可手动编辑捆绑价,或用 Cart transform 做定制捆绑;Scripts 页把 Cart Transform functions 列为修改价格的替代方案。Cart Transform 的接口细节本次未读。
- 资格页写明使用捆绑需要已升级的结账,与
checkout.liquid定制不兼容;店铺须使用 Online Store 渠道或自定义店面。结账扩展见结账自定义。
库存怎样计算
资格页的算法:对捆绑中的每个组成商品,用其可用库存除以捆绑所需的数量,取其中最小的结果作为捆绑可售数。库存未跟踪、或设置为 Continue selling when out of stock 的组成商品,不参与这次计算。
Shopify Bundles 页另写:捆绑不按地点跟踪库存,只按总库存。这与库存与地点里「有货不等于能配送」的思路并存:需要按地点排查时,要回到各组成商品的库存记录,而不是看捆绑数。
订单、退货与折扣中的呈现
- 订单:资格页写明订单中的捆绑显示为嵌套的行项目组;订单邮件页写明自 2024-12-06 起,订单确认、发票、付款通知与 POS 收据使用分组视图,而退货相关通知把组成项分开显示。已自定义通知模板的店铺需自行更新代码。
- SKU 与重量:资格页写明捆绑有独立于组成商品的 SKU,改 SKU 需重新创建捆绑;Shopify Bundles 页写明订单里列出的是组成项的 SKU,重量也由组成项计算。两处并列,关系以后台订单实际显示为准。
- 退货:资格页写明不能直接把捆绑标记为最终销售,退货资格取决于各组成商品是否为最终销售;捆绑不能用于换货,即使换成同一捆绑。
- 退款:本次未读到捆绑专属的退款说明,通用规则见退货、退款与补回库存,具体到每个组成项能否单独退,未核验。
- 折扣:Shopify Bundles 页写明折扣先作用于父捆绑商品,再按加权价格分摊到组成项(摘要读取)。Scripts 页写明由 line item scripts 创建的折扣不会应用到捆绑,替代办法是为捆绑建折扣码、手动改捆绑价或用 Cart Transform functions。折扣类型与组合规则见折扣。
- 草稿订单:草稿订单页写明价格锁不支持商品捆绑;资格页写明草稿订单可能默认使用不支持捆绑的旧版结账。
与 cross-sell 的区别
交叉销售与追加购买是「推荐并让顾客决定是否加购」,各商品保持独立行项目与独立库存;捆绑是「一个固定组合」,有独立 SKU、自己的价格与组成关系。同一页可以先推荐、再提供捆绑,但推荐的商品不会因此变成捆绑。
限制、数值与易错点
核验于 2026-09-29,来源为上面列出的帮助中心页面;摘要读取处已标出。
- 不兼容项(资格页):购买选项(订阅、预购、try-before-you-buy)、Shopify Subscriptions 应用、自定义商品、其他捆绑(不能嵌套)、换货;官方原文写明「Bundles don't support import, export, or bulk editing capabilities」。
- 数值(Shopify Bundles 页,摘要读取):固定捆绑最多 30 个组成项,dynamic bundles 最多 150 个,每个组成项最多 2000 件,每个捆绑最多 3 个选项与 100 个变体;使用前重读该页。
- 价格不自动联动:组成商品改价后,捆绑价不会自动更新,需手动改。
- 组成项变化会使捆绑退回 Draft:变体标题被改或选项被删,可能使捆绑因不再有效而进入 Draft。
- 销售渠道(两页并列,不选边):Product bundles 总览写明可在 Online Store、Shop、Shopify POS 渠道销售,固定捆绑还可在 Google & YouTube 渠道;Shopify Bundles 页写明捆绑须用 Online Store 或 Headless 店面,其他渠道不受支持。
- 套餐:Shopify Bundles 页称应用在所有套餐上可用且免费;第三方混搭应用的定价与能力本文不评价,也不推荐具体应用。
- 配送:资格页写明运费按组成商品各自的配送配置计算(摘要读取)。
验证一次
- 建两个跟踪库存的组成商品,创建固定捆绑并激活,记录各组成项库存;
- 把其中一个组成项库存改为不足以凑一份,确认捆绑变为不可售;再把它设为 Continue selling when out of stock,观察捆绑可售数是否不再受它限制;
- 下一单,检查后台订单、订单邮件、发票中的行项目与 SKU 显示;
- 对该订单做部分退货或退款,核对退款金额、库存补回与退货通知中的组成项显示;
- 分别用折扣码、Buy X get Y 折扣与手动改价三种方式给出组合价,对比结账明细与订单折扣分摊;
- 试着把捆绑加入订阅或预购商品的销售计划,确认不兼容的实际提示。
待继续完善
- 混搭与 dynamic bundles 的官方定义、Plus API 与 Cart Transform 的接口细节;
- 捆绑的退款、组成项单独退货与库存补回的官方专门说明;
- Liquid 与 Storefront API 对捆绑及组成项的读取方式;
- 两页对销售渠道的表述差异,需要在真实店铺核对。