在 Shopify 里叠加折扣是什么意思?
叠加是指两个或更多折扣同时作用在同一笔订单上,顾客两者都能拿到。Shopify 支持这件事,但只限特定的组合,而且必须每个折扣都明确同意。
多数商家是以投诉的形式认识叠加的,而不是当作功能。一位顾客既满足 15% 的数量折扣,又满足免运费条件,购物车页面显示两条,收据只有一条。没有报错,没有日志,客服说平台会"保留最优惠的折扣"。这个行为是正确的,也有文档说明;只是在它让你损失一笔订单之前一直看不见。
在 Shopify 中叠加折扣,关键在于平台默认隐藏的一项设置:每笔折扣都属于商品、订单或运费三个类别之一,而两项折扣是否组合,是按每个优惠、按每个类别单独决定的。Stackable 把这些组合开关放在每个优惠上,让批量阶梯折扣、消费门槛优惠和免运费始终按照你设置的方式精确相加,每一次都是如此。
Shopify 论坛上的商家反复问到同一个问题:
“为什么我的店铺只应用最高的一项折扣,其余的全部被忽略?我需要让批量折扣和免运费在同一笔订单上同时生效,但 Shopify 客服说平台只会选择其中一项折扣,另一项会被丢弃。”
Shopify 会把每项折扣归入商品、订单或运费三个类别之一,除非每项折扣都明确开启组合,否则拒绝叠加:当两项折扣都可能适用时,结账页面只会保留其中一项,另一项会被静默丢弃。同时运行批量阶梯折扣和全店订单折扣的商家会得到不一致的结果且毫无提示,唯一的发现方式就是下一笔测试订单,然后查看收据。

每个优惠都有三个开关:与商品折扣组合、与订单折扣组合、与运费折扣组合。它们与 Shopify 在结账时判定组合方式的逻辑一一对应,另有一个分摊控制项决定哪些商品单位获得部分优惠。不会再有任何隐藏的默认规则。

让一个示例购物车经过所有生效的优惠,查看逐行的精确总价,这与结账时实际运行的计算完全一致。

计算在 Shopify Function 内部完成,因此购物车、结账和 Shop Pay 都基于同一个引擎计算总价,而不是依赖多套需要手动同步的逻辑。
Shopify 将每项折扣归入商品、订单或运费三个类别之一。两项折扣能否跨类别组合,由每个优惠单独决定,Stackable 会在你创建的每个优惠上提供这个开关。
| 可与以下类别叠加 → | Product discounts | Order discounts | Shipping discounts |
|---|---|---|---|
| Product discounts | 可叠加,但每个购物车行只应用一项商品折扣 | 按优惠单独配置 | 按优惠单独配置 |
| Order discounts | 按优惠单独配置 | 永不叠加 | 按优惠单独配置 |
| Shipping discounts | 按优惠单独配置 | 按优惠单独配置 | 永不叠加 |
可配置表示由每个优惠自身的组合开关决定这两个类别是否相加。两项商品折扣可以应用于同一个购物车,但 Shopify 每个购物车行最多只会应用一项商品折扣;同一行应用两项是 Shopify Plus 功能。两项订单折扣,或两项运费折扣,永远不会叠加。
叠加是 Shopify 折扣里被分散记录在三处、几乎没有一处解释准确的部分。这里把整个模型放在一页里:规则、可以成立的组合、不能成立的组合、会出问题的地方,以及如何不装任何应用就检查自己的店铺。
叠加是指两个或更多折扣同时作用在同一笔订单上,顾客两者都能拿到。Shopify 支持这件事,但只限特定的组合,而且必须每个折扣都明确同意。
多数商家是以投诉的形式认识叠加的,而不是当作功能。一位顾客既满足 15% 的数量折扣,又满足免运费条件,购物车页面显示两条,收据只有一条。没有报错,没有日志,客服说平台会"保留最优惠的折扣"。这个行为是正确的,也有文档说明;只是在它让你损失一笔订单之前一直看不见。
不会。每个折扣创建时叠加都是关闭的。当两个折扣都可能生效而双方都没有同意时,结账会保留一个,并悄悄丢掉另一个。
这个默认值是对的,因为反过来意味着两个促销一重叠,店铺第一时间就会低于成本销售。它只是说明叠加不会意外发生:你要按每个优惠、有意识地打开它。
两个折扣只有在属于不同类别、并且各自都设置为与对方类别叠加时才会组合。同类别的两个折扣永远不会相加:Shopify 会应用价值更高的那个,丢掉另一个。
这句话的两半都重要,而其他文章跳过的正是后半:同意叠加并不会让两个商品折扣相加,而是让一个商品折扣与一个订单折扣或运费折扣共存。跨类别叠加在所有 Shopify 套餐上都可用。
只有一个例外,而且范围很窄。商品折扣按购物车行判定,所以一行通常只承载一个商品折扣。同一行上放两个商品类折扣属于 Shopify Plus 能力,受标签限制,并要求两个折扣带有匹配的标签。
商品、订单和运费。商品折扣改变单品价格,订单折扣从小计中扣除,运费折扣降低配送费用。折扣的类别不是标签,而是决定它能与什么叠加的依据。
数量阶梯、批量折扣、BOGO 以及对某个商品系列的百分比折扣都属于商品折扣。消费目标、"满 $150 减 $20" 和大多数全店优惠码属于订单折扣。免运费门槛属于运费折扣。只要能说出每个在跑的折扣属于哪一类,就能预测店铺里所有可能的叠加。
因为它们几乎总是同为商品类,而同类别的两个折扣不会叠加。同一件衬衫上 20% 的清仓价加 10% 的全店促销,结果是 20%,不是 28%,也不是 30%。
商家常把这理解成应用的缺陷或购物车页面的缓存问题。两者都不是。Shopify 会比较这两个折扣,保留对顾客更有利的那个,并在没有报错、订单里也没有对应行的情况下丢掉另一个。唯一的解法是把你真正想要的价格建成一个优惠,或者把其中一个挪到另一个类别。
任何来自两个不同类别的组合都能叠加,只要双方都同意。同一类别内部的任何组合都不行。下面这张表就是这条规则,按商家实际提问的方式写出来。
| 我想叠加 | 涉及的类别 | 需要设置什么 |
|---|---|---|
| 数量阶梯与免运费 | 商品加运费 | 在阶梯上打开与运费折扣叠加。在运费优惠上打开与商品折扣叠加。 |
| 消费目标与免运费 | 订单加运费 | 在消费目标上打开与运费折扣叠加。在运费优惠上打开与订单折扣叠加。 |
| 数量阶梯与消费目标 | 商品加订单 | 在阶梯上打开与订单折扣叠加。在消费目标上打开与商品折扣叠加。 |
| BOGO 与免运费 | 商品加运费 | 在 BOGO 优惠上打开与运费折扣叠加。在运费优惠上打开与商品折扣叠加。 |
| 全店优惠码与自动阶梯 | 订单加商品 | 在优惠码上打开与商品折扣叠加。在阶梯上打开与订单折扣叠加。 |
| 同一件商品上的清仓价与全店百分比折扣 | 商品加商品 | 在 Shopify Plus 之外无法实现。把两个开关都关掉,用一个优惠把你想要的价格建出来。 |
每个优惠带有三个开关:与商品折扣叠加、与订单折扣叠加、与运费折扣叠加。它们与 Shopify 保存在折扣上的字段一一对应,所以编辑器显示什么,结账就会做什么。
这些开关按优惠设置,而且不会自动配对。在数量阶梯上打开"与运费折扣叠加"只是表示阶梯这边愿意,运费优惠那边还得同样表态。双方都必须同意,这也是看起来配置好的叠加却不生效的最常见原因。

可以。自动和优惠码是发放方式,不是类别,所以仍由同一条类别规则决定。商品类的自动折扣与订单类的优惠码,在双方都同意时会组合。
在此基础上做活动之前,有两个上限值得知道。结账在一笔订单上最多接受五个商品或订单优惠码,外加一个运费优惠码。另外,与自动折扣同类别的优惠码依然不会相加,无论落地页怎么写。
Shopify 保留对顾客价值更高的那个,丢掉另一个。没有提示,没有报错,也没有任何关于落选折扣的记录。
正是这个行为让叠加问题极难被发现:店铺看起来正常,订单看起来正常,唯一的证据是一张少了某人预期那一行的收据。如果某次促销曾经"对部分顾客没生效",这是第一个该检查的地方。
六种组合几乎覆盖商家会做的全部情况。下面每一种都写明涉及的类别、要设置的开关,以及真实购物车最终支付的总额。

限定到该商品系列的商品类数量阶梯,打开与运费折扣叠加。门槛为 $150 的运费类免运费优惠,打开与商品折扣叠加。
一个 $180.00 的购物车支付 $153.00:商品减 $27.00,运费免去 $9.00,全在同一笔订单上。

订单类的消费目标,设两档:满 $50.00 减 $5,满 $100.00 减 $15,并打开与运费折扣叠加。运费优惠允许订单折扣。
一个 $88.00 的购物车拿到 $5 那一档,并显示距离 $15 那一档还差多少,免运费叠加在上面而不是取代它。

打开重复逻辑的商品类 BOGO 优惠,与运费折扣叠加。运费优惠与商品折扣叠加。
符合条件里最便宜的那件衬衫从 $32.00 降为 $0.00,小计 $156.00,而这笔订单仍然免运费发出。

清仓仍是商品折扣并允许订单折扣。全店优惠码是订单折扣并允许商品折扣。
结账订单摘要里两行都会出现,顾客支付合并后的总额,这正是每一笔叠加订单应当产生的收据。

两个优惠都保持默认。双方都不同意,于是它们停留在同一类别里,中间没有桥梁。
结账只会应用其中一个,绝不会两个都用,而你真正想要的价格应该在阶梯编辑器里建出来。

两个优惠都带有店铺时区的开始和结束时间,并设好各自的叠加开关。这一组是排期的,而不是半夜手工发布的。
叠加按计划开启和关闭,一个开关就能在促销中途暂停而不丢失设置,而每个已排期的时间窗都会计入店铺可持有的 25 个有效自动折扣。
因为这两个数字由不同的东西算出来。由主题 JavaScript 画出的购物车总额只是显示;结账总额是 Shopify 在服务端算出的,也是真正扣款的那个。
任何以购物车页面脚本实现的折扣都天生带着这个问题。它可能给顾客看 $92.00,却递上一个 $110.00 的结账,顾客会把它读成欺骗。以 Shopify Function 运行的折扣只在 Shopify 服务器上计算一次,所以每个界面读到的是同一个数字,因为本来就只有一个数字。

当折扣在服务端运行时有效。当它依赖购物车页面时无效,因为加速结账会从商品页直接跳到支付,主题代码根本不会执行。
这是 Shopify 折扣里最少被测试的失败方式,因为做测试的商家几乎总是点普通的结账按钮。如果某个叠加关系到你的利润,请在活动上线前用快捷钱包下一笔测试订单。
一个店铺最多可以有 25 个有效的、基于 Function 的自动折扣。Shopify 在 2024 年 11 月把这个上限从 5 提高到了 25。
计数看的是相互重叠的有效时间窗,而不是有多少条记录。为下个月排期的活动在创建时就占住了它的时间窗,因此会在覆盖期内占用一个名额。把全年季节活动都提前一年排好的店铺,即使今天一个折扣都没在跑,也可能触到上限。
Shopify 在折扣编辑器的"组合"部分按折扣逐个显示。读五个大约花五分钟,就能知道你的店铺目前能产生的全部叠加。
在活动上线前,把你担心的那个购物车放进模拟器,逐行读结果。有用的测试不是折扣能触发,而是它在正确的购物车上触发、在错误的购物车上不触发。
两个方向都要测。一个应当满足条件的购物车和一个刚好差一点的购物车会暴露不同的问题,而后者才是那个悄悄花钱的。之后再用加速钱包下一笔真实订单,因为那是购物车页面无法代言的界面。

一个护肤品牌希望「满 3 件享 85 折」的同时自动解锁免运费,客户无需额外输入折扣码。
创建一个作用于护肤品收藏的批量阶梯折扣优惠,打开「与运费折扣组合」开关。再创建一个免运费优惠,设置相同的 3 件门槛,并打开「与商品折扣组合」开关。
购买 3 件商品的购物车会在结账时显示商品总价 85 折外加免运费,与购物车页面已经展示的结果完全一致。
一个常驻的「买 2 件享 9 折」批量阶梯折扣,需要让 BFCM 消费门槛优惠(订单满 150 美元减 20 美元)在大额购物车上再叠加生效。
在批量折扣优惠上打开「与订单折扣组合」开关,在消费门槛优惠上打开「与商品折扣组合」开关。
符合条件的购物车会在同一笔订单中合计获得两项折扣;较小的购物车仍然能自动获得 9 折优惠,两个优惠互不干扰。
一场清仓促销(6 折)和一项全店订单折扣(85 折)绝不能叠加,因为同时生效会导致部分商品低于成本价出售。
两个优惠的组合开关都保持关闭。关闭是默认状态:除非明确开启,否则每个优惠都是独立运行的。
结账时只会应用两者中的一项,绝不会同时叠加,模拟器会在活动上线前用示例购物车确认这一行为。
只在有限范围内支持,且相关设置很难找到。当每项折扣都开启组合时,Shopify 可以跨类别(商品、订单、运费)叠加折扣,但同一购物车行只会应用一项商品折扣(同一行应用两项是 Shopify Plus 功能)。Stackable 把三个组合开关放在每个优惠上,让你清楚看到并控制结账时会发生什么。
可以。所有计算都在结账时通过 Shopify Function 完成,因此加速结账渠道计算出的叠加总价与常规结账页面完全一致。
可以,这本来就是默认状态。每个组合开关默认都是关闭的,除非你主动开启,否则一个优惠不会与其他折扣类别叠加。模拟器会在活动上线前,用示例购物车确认这一行为。
上线前运行购物车模拟器:它会显示哪些优惠生效、哪些没有生效及原因,以及结账时会收取的精确组合总价。按订单显示已应用优惠的报表功能已在路线图中。
Shopify volume discounts, natively, pool every product in a collection toward one shared threshold. Stackable's tiers count the exact product, and only the variants you choose, so a chair buyer doesn't get a discount by adding three unrelated items to the cart.
A spend goal discount pays off the order once a cart crosses a spend threshold you set, like spend $50 get 10% off or spend $100 get $15 off. It runs on the same server-side engine as every other Stackable offer, so the reward a shopper sees on the cart page is exactly what checkout charges, and a live progress bar shows how close they are to unlocking it.
Free shipping over $75, free shipping over $100, whatever threshold fits your margins: Stackable pairs a shipping-class discount with a live cart progress bar, computed by the same server-side engine, so the number on the bar and the shipping cost at checkout can never drift apart.
基于该功能、可直接复制的设置方案,每个都附精确设置和视频。
Two product-class discounts on two collections, both applying in one cart, with the per-line rule spelled out.
How the active-discount cap is counted, and how to model a big sale so you never hit it.
A percentage, free shipping, and a gift all unlocking at the same spend threshold.
The whole catalogue at one discount, with the combination question answered up front.
A storewide sale that deliberately skips new arrivals and protected lines.
A standing discount for tagged customers only, with no code that can leak.
Build a test cart and see which discounts apply, and which get dropped, before publishing.
我们使用必要 Cookie 来运行本网站,并仅在获得你许可的情况下,使用分析 Cookie 来了解访问情况。详见我们的 Cookie 政策.