跳转到主要内容
折扣叠加

叠加 Shopify 折扣,让购物车与结账金额始终一致

在 Shopify 中叠加折扣,关键在于平台默认隐藏的一项设置:每笔折扣都属于商品、订单或运费三个类别之一,而两项折扣是否组合,是按每个优惠、按每个类别单独决定的。Stackable 把这些组合开关放在每个优惠上,让批量阶梯折扣、消费门槛优惠和免运费始终按照你设置的方式精确相加,每一次都是如此。

痛点

Shopify 论坛上的商家反复问到同一个问题:

为什么我的店铺只应用最高的一项折扣,其余的全部被忽略?我需要让批量折扣和免运费在同一笔订单上同时生效,但 Shopify 客服说平台只会选择其中一项折扣,另一项会被丢弃。

Shopify 会把每项折扣归入商品、订单或运费三个类别之一,除非每项折扣都明确开启组合,否则拒绝叠加:当两项折扣都可能适用时,结账页面只会保留其中一项,另一项会被静默丢弃。同时运行批量阶梯折扣和全店订单折扣的商家会得到不一致的结果且毫无提示,唯一的发现方式就是下一笔测试订单,然后查看收据。

工作原理

Stackable 如何解决

营销活动编辑器「叠加」步骤示意图:与商品折扣叠加已开启,与订单折扣叠加已开启,与运费折扣叠加已关闭。
活动编辑器:活动向导「叠加」步骤中的三个组合开关。
01

为每个优惠设置组合开关

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

购物车模拟器示意图:一个 $180.00 的示例购物车中,15% 的商品折扣减去 $27.00,免运费减去 $9.00,结账总额为 $153.00。
购物车模拟器:展示应用的每项优惠及组合后总价的示例购物车。
02

上线前预览组合后的计算结果

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

结账订单摘要示意图:两行叠加的折扣分别为减 $27.00 和减 $9.00,总额与购物车显示的 $153.00 一致。
结账订单摘要,展示与购物车中一致的叠加折扣明细。
03

结账应用完全相同的叠加结果

计算在 Shopify Function 内部完成,因此购物车、结账和 Shop Pay 都基于同一个引擎计算总价,而不是依赖多套需要手动同步的逻辑。

叠加规则详解

折扣类别组合矩阵

Shopify 将每项折扣归入商品、订单或运费三个类别之一。两项折扣能否跨类别组合,由每个优惠单独决定,Stackable 会在你创建的每个优惠上提供这个开关。

折扣类别组合矩阵
可与以下类别叠加 →Product discountsOrder discountsShipping discounts
Product discounts可叠加,但每个购物车行只应用一项商品折扣按优惠单独配置按优惠单独配置
Order discounts按优惠单独配置永不叠加按优惠单独配置
Shipping discounts按优惠单独配置按优惠单独配置永不叠加

可配置表示由每个优惠自身的组合开关决定这两个类别是否相加。两项商品折扣可以应用于同一个购物车,但 Shopify 每个购物车行最多只会应用一项商品折扣;同一行应用两项是 Shopify Plus 功能。两项订单折扣,或两项运费折扣,永远不会叠加。

完整答案

叠加是 Shopify 折扣里被分散记录在三处、几乎没有一处解释准确的部分。这里把整个模型放在一页里:规则、可以成立的组合、不能成立的组合、会出问题的地方,以及如何不装任何应用就检查自己的店铺。

在 Shopify 里叠加折扣是什么意思?

叠加是指两个或更多折扣同时作用在同一笔订单上,顾客两者都能拿到。Shopify 支持这件事,但只限特定的组合,而且必须每个折扣都明确同意。

多数商家是以投诉的形式认识叠加的,而不是当作功能。一位顾客既满足 15% 的数量折扣,又满足免运费条件,购物车页面显示两条,收据只有一条。没有报错,没有日志,客服说平台会"保留最优惠的折扣"。这个行为是正确的,也有文档说明;只是在它让你损失一笔订单之前一直看不见。

Shopify 默认会叠加折扣吗?

不会。每个折扣创建时叠加都是关闭的。当两个折扣都可能生效而双方都没有同意时,结账会保留一个,并悄悄丢掉另一个。

这个默认值是对的,因为反过来意味着两个促销一重叠,店铺第一时间就会低于成本销售。它只是说明叠加不会意外发生:你要按每个优惠、有意识地打开它。

组合 Shopify 折扣的真正规则是什么?

两个折扣只有在属于不同类别、并且各自都设置为与对方类别叠加时才会组合。同类别的两个折扣永远不会相加:Shopify 会应用价值更高的那个,丢掉另一个。

这句话的两半都重要,而其他文章跳过的正是后半:同意叠加并不会让两个商品折扣相加,而是让一个商品折扣与一个订单折扣或运费折扣共存。跨类别叠加在所有 Shopify 套餐上都可用。

只有一个例外,而且范围很窄。商品折扣按购物车行判定,所以一行通常只承载一个商品折扣。同一行上放两个商品类折扣属于 Shopify Plus 能力,受标签限制,并要求两个折扣带有匹配的标签。

Shopify 的三种折扣类别是什么?

商品、订单和运费。商品折扣改变单品价格,订单折扣从小计中扣除,运费折扣降低配送费用。折扣的类别不是标签,而是决定它能与什么叠加的依据。

数量阶梯、批量折扣、BOGO 以及对某个商品系列的百分比折扣都属于商品折扣。消费目标、"满 $150 减 $20" 和大多数全店优惠码属于订单折扣。免运费门槛属于运费折扣。只要能说出每个在跑的折扣属于哪一类,就能预测店铺里所有可能的叠加。

为什么两个百分比折扣从不相加?

因为它们几乎总是同为商品类,而同类别的两个折扣不会叠加。同一件衬衫上 20% 的清仓价加 10% 的全店促销,结果是 20%,不是 28%,也不是 30%。

商家常把这理解成应用的缺陷或购物车页面的缓存问题。两者都不是。Shopify 会比较这两个折扣,保留对顾客更有利的那个,并在没有报错、订单里也没有对应行的情况下丢掉另一个。唯一的解法是把你真正想要的价格建成一个优惠,或者把其中一个挪到另一个类别。

哪些折扣组合真的能叠加?

任何来自两个不同类别的组合都能叠加,只要双方都同意。同一类别内部的任何组合都不行。下面这张表就是这条规则,按商家实际提问的方式写出来。

哪些折扣组合真的能叠加?
我想叠加涉及的类别需要设置什么
数量阶梯与免运费商品加运费在阶梯上打开与运费折扣叠加。在运费优惠上打开与商品折扣叠加。
消费目标与免运费订单加运费在消费目标上打开与运费折扣叠加。在运费优惠上打开与订单折扣叠加。
数量阶梯与消费目标商品加订单在阶梯上打开与订单折扣叠加。在消费目标上打开与商品折扣叠加。
BOGO 与免运费商品加运费在 BOGO 优惠上打开与运费折扣叠加。在运费优惠上打开与商品折扣叠加。
全店优惠码与自动阶梯订单加商品在优惠码上打开与商品折扣叠加。在阶梯上打开与订单折扣叠加。
同一件商品上的清仓价与全店百分比折扣商品加商品在 Shopify Plus 之外无法实现。把两个开关都关掉,用一个优惠把你想要的价格建出来。

如何为某一个优惠打开叠加?

每个优惠带有三个开关:与商品折扣叠加、与订单折扣叠加、与运费折扣叠加。它们与 Shopify 保存在折扣上的字段一一对应,所以编辑器显示什么,结账就会做什么。

这些开关按优惠设置,而且不会自动配对。在数量阶梯上打开"与运费折扣叠加"只是表示阶梯这边愿意,运费优惠那边还得同样表态。双方都必须同意,这也是看起来配置好的叠加却不生效的最常见原因。

营销活动编辑器「叠加」步骤示意图:与商品折扣叠加已开启,与订单折扣叠加已开启,与运费折扣叠加已关闭。
活动编辑器:活动向导「叠加」步骤中的三个组合开关。

自动折扣能和优惠码叠加吗?

可以。自动和优惠码是发放方式,不是类别,所以仍由同一条类别规则决定。商品类的自动折扣与订单类的优惠码,在双方都同意时会组合。

在此基础上做活动之前,有两个上限值得知道。结账在一笔订单上最多接受五个商品或订单优惠码,外加一个运费优惠码。另外,与自动折扣同类别的优惠码依然不会相加,无论落地页怎么写。

同一类别的两个优惠同时满足条件会怎样?

Shopify 保留对顾客价值更高的那个,丢掉另一个。没有提示,没有报错,也没有任何关于落选折扣的记录。

正是这个行为让叠加问题极难被发现:店铺看起来正常,订单看起来正常,唯一的证据是一张少了某人预期那一行的收据。如果某次促销曾经"对部分顾客没生效",这是第一个该检查的地方。

叠加折扣的订单实际长什么样?

六种组合几乎覆盖商家会做的全部情况。下面每一种都写明涉及的类别、要设置的开关,以及真实购物车最终支付的总额。

  1. 示例 1

    满三件享 15% 折扣,且满 $150 免运费

    购物车模拟器示意图:一个 $180.00 的示例购物车中,15% 的商品折扣减去 $27.00,免运费减去 $9.00,结账总额为 $153.00。
    设置

    限定到该商品系列的商品类数量阶梯,打开与运费折扣叠加。门槛为 $150 的运费类免运费优惠,打开与商品折扣叠加。

    结果

    一个 $180.00 的购物车支付 $153.00:商品减 $27.00,运费免去 $9.00,全在同一笔订单上。

  2. 示例 2

    同时解锁免费配送的消费目标

    购物车进度条示意图:提示再消费 $12.00 即可减 $15,下方 $88.00 的购物车中,满 $50 减 $5 的档位已使小计变为 $83.00。
    设置

    订单类的消费目标,设两档:满 $50.00 减 $5,满 $100.00 减 $15,并打开与运费折扣叠加。运费优惠允许订单折扣。

    结果

    一个 $88.00 的购物车拿到 $5 那一档,并显示距离 $15 那一档还差多少,免运费叠加在上面而不是取代它。

  3. 示例 3

    BOGO 与免运费门槛并存

    购物车抽屉示意图:三件符合条件的衬衫中最便宜的一件从 $32.00 降为 $0.00 并带有已应用 BOGO 标记,小计为 $156.00。
    设置

    打开重复逻辑的商品类 BOGO 优惠,与运费折扣叠加。运费优惠与商品折扣叠加。

    结果

    符合条件里最便宜的那件衬衫从 $32.00 降为 $0.00,小计 $156.00,而这笔订单仍然免运费发出。

  4. 示例 4

    清仓与全店订单优惠码

    结账订单摘要示意图:两行叠加的折扣分别为减 $27.00 和减 $9.00,总额与购物车显示的 $153.00 一致。
    设置

    清仓仍是商品折扣并允许订单折扣。全店优惠码是订单折扣并允许商品折扣。

    结果

    结账订单摘要里两行都会出现,顾客支付合并后的总额,这正是每一笔叠加订单应当产生的收据。

  5. 示例 5

    两个不该组合的商品折扣

    阶梯编辑器示意图,包含三个数量分界:3 至 5 件享 15% 折扣,6 至 9 件享 18%,10 件及以上享 20%。
    设置

    两个优惠都保持默认。双方都不同意,于是它们停留在同一类别里,中间没有桥梁。

    结果

    结账只会应用其中一个,绝不会两个都用,而你真正想要的价格应该在阶梯编辑器里建出来。

  6. 示例 6

    需要自动开启和关闭的黑色星期五叠加

    营销活动列表示意图:一个进行中的黑色星期五活动、一个长期开启的免运费活动和一个已排期的网络星期一活动,进行中的活动都带有暂停开关。
    设置

    两个优惠都带有店铺时区的开始和结束时间,并设好各自的叠加开关。这一组是排期的,而不是半夜手工发布的。

    结果

    叠加按计划开启和关闭,一个开关就能在促销中途暂停而不丢失设置,而每个已排期的时间窗都会计入店铺可持有的 25 个有效自动折扣。

为什么购物车页面显示一个总额,结账又是另一个?

因为这两个数字由不同的东西算出来。由主题 JavaScript 画出的购物车总额只是显示;结账总额是 Shopify 在服务端算出的,也是真正扣款的那个。

任何以购物车页面脚本实现的折扣都天生带着这个问题。它可能给顾客看 $92.00,却递上一个 $110.00 的结账,顾客会把它读成欺骗。以 Shopify Function 运行的折扣只在 Shopify 服务器上计算一次,所以每个界面读到的是同一个数字,因为本来就只有一个数字。

结账订单摘要示意图:两行叠加的折扣分别为减 $27.00 和减 $9.00,总额与购物车显示的 $153.00 一致。
结账订单摘要,展示与购物车中一致的叠加折扣明细。

叠加折扣在 Shop Pay、Apple Pay 和 Google Pay 上还有效吗?

当折扣在服务端运行时有效。当它依赖购物车页面时无效,因为加速结账会从商品页直接跳到支付,主题代码根本不会执行。

这是 Shopify 折扣里最少被测试的失败方式,因为做测试的商家几乎总是点普通的结账按钮。如果某个叠加关系到你的利润,请在活动上线前用快捷钱包下一笔测试订单。

我最多能同时跑多少个折扣?

一个店铺最多可以有 25 个有效的、基于 Function 的自动折扣。Shopify 在 2024 年 11 月把这个上限从 5 提高到了 25。

计数看的是相互重叠的有效时间窗,而不是有多少条记录。为下个月排期的活动在创建时就占住了它的时间窗,因此会在覆盖期内占用一个名额。把全年季节活动都提前一年排好的店铺,即使今天一个折扣都没在跑,也可能触到上限。

如何查看我自己的哪些折扣今天可以组合?

Shopify 在折扣编辑器的"组合"部分按折扣逐个显示。读五个大约花五分钟,就能知道你的店铺目前能产生的全部叠加。

  1. 在 Shopify 后台打开「折扣」,任选一个正在生效的折扣。
  2. 滚动到折扣编辑器的「组合」部分。
  3. 读三个复选框:商品折扣、订单折扣、运费折扣。任何未勾选的项,无论另一个折扣怎么设置,都永远不可能与这个折扣叠加。
  4. 打开这一对里的第二个折扣,读同样的三个复选框。双方都必须同意,只有一方永远不够。
  5. 把两个折扣放进同一个测试购物车,完成下单,然后读收据。订单摘要会列出真正生效的每一个折扣,这是唯一的事实来源。
  6. 再用 Shop Pay 或 Apple Pay 重复测试。购物车页面的折扣正是在这个界面上消失的。

如何在顾客看到之前测试一个叠加?

在活动上线前,把你担心的那个购物车放进模拟器,逐行读结果。有用的测试不是折扣能触发,而是它在正确的购物车上触发、在错误的购物车上不触发。

两个方向都要测。一个应当满足条件的购物车和一个刚好差一点的购物车会暴露不同的问题,而后者才是那个悄悄花钱的。之后再用加速钱包下一笔真实订单,因为那是购物车页面无法代言的界面。

购物车模拟器示意图:一个 $180.00 的示例购物车中,15% 的商品折扣减去 $27.00,免运费减去 $9.00,结账总额为 $153.00。
购物车模拟器:展示应用的每项优惠及组合后总价的示例购物车。
使用示例

这样使用

场景

一个护肤品牌希望「满 3 件享 85 折」的同时自动解锁免运费,客户无需额外输入折扣码。

设置

创建一个作用于护肤品收藏的批量阶梯折扣优惠,打开「与运费折扣组合」开关。再创建一个免运费优惠,设置相同的 3 件门槛,并打开「与商品折扣组合」开关。

结果

购买 3 件商品的购物车会在结账时显示商品总价 85 折外加免运费,与购物车页面已经展示的结果完全一致。

场景

一个常驻的「买 2 件享 9 折」批量阶梯折扣,需要让 BFCM 消费门槛优惠(订单满 150 美元减 20 美元)在大额购物车上再叠加生效。

设置

在批量折扣优惠上打开「与订单折扣组合」开关,在消费门槛优惠上打开「与商品折扣组合」开关。

结果

符合条件的购物车会在同一笔订单中合计获得两项折扣;较小的购物车仍然能自动获得 9 折优惠,两个优惠互不干扰。

场景

一场清仓促销(6 折)和一项全店订单折扣(85 折)绝不能叠加,因为同时生效会导致部分商品低于成本价出售。

设置

两个优惠的组合开关都保持关闭。关闭是默认状态:除非明确开启,否则每个优惠都是独立运行的。

结果

结账时只会应用两者中的一项,绝不会同时叠加,模拟器会在活动上线前用示例购物车确认这一行为。

常见问题

常见问题

Shopify 原生支持折扣叠加吗?

只在有限范围内支持,且相关设置很难找到。当每项折扣都开启组合时,Shopify 可以跨类别(商品、订单、运费)叠加折扣,但同一购物车行只会应用一项商品折扣(同一行应用两项是 Shopify Plus 功能)。Stackable 把三个组合开关放在每个优惠上,让你清楚看到并控制结账时会发生什么。

叠加后的折扣能在 Shop Pay、Apple Pay 和 Google Pay 中正常生效吗?

可以。所有计算都在结账时通过 Shopify Function 完成,因此加速结账渠道计算出的叠加总价与常规结账页面完全一致。

我能阻止优惠互相组合吗?

可以,这本来就是默认状态。每个组合开关默认都是关闭的,除非你主动开启,否则一个优惠不会与其他折扣类别叠加。模拟器会在活动上线前,用示例购物车确认这一行为。

我怎么知道一笔真实购物车实际会叠加哪些折扣?

上线前运行购物车模拟器:它会显示哪些优惠生效、哪些没有生效及原因,以及结账时会收取的精确组合总价。按订单显示已应用优惠的报表功能已在路线图中。

参考资料

安装 Stackable,从折扣叠加开始

每种优惠类型都运行在同一套服务器端引擎上,无论如何组合,结账金额始终准确。

提供免费套餐,无需信用卡。

我们使用必要 Cookie 来运行本网站,并仅在获得你许可的情况下,使用分析 Cookie 来了解访问情况。详见我们的 Cookie 政策.