Shopify 原生 Buy X Get Y 折扣不会自动为您添加免费礼品到购物车。它可以在礼品已在购物车中时将其折扣至 $0,甚至可以通过最低消费触发,但它不会为顾客添加礼品。购物者必须自己查找并添加礼品产品才能激活折扣。真正的自动添加赠送礼品需要在 Shopify Ajax 购物车 API 上的自定义主题代码,或使用为您管理购物车内容的应用。
本指南解释了为什么原生赠送礼品功能不足之处、为什么手动添加步骤会导致促销失败、自己动手构建的 Ajax 购物车方式如何运作及其维护成本、应该在应用中查找什么内容,以及您现在可以可靠交付的一个关键部分:一个实时购物车进度条,显示购物者离奖励有多近。
购物车达到阈值时 Shopify 会自动添加免费礼品吗?
不会,不是自动的。Shopify 为您提供两个原生构建块,但都不会自动添加产品。
第一个是 最低购买订单折扣,一旦购物车超过消费阈值,就会从订单中扣除金额。这是折扣,不是免费产品。
第二个是 Buy X Get Y,它可以使特定产品免费。自 2019 年以来,Buy X Get Y 甚至支持使用最低购买金额作为触发条件,因此您可以构建一个促销,其内容为消费 $100,获得免费礼品。根据 Shopify 开发者更新日志,此选项允许您要求消费金额而不是特定数量的商品,这听起来正好像是赠送礼品。
这是几乎每个尝试它的商户都会遇到的问题:Buy X Get Y 折扣的是已在购物车中的礼品。它不会将礼品放入购物车。顾客必须自己添加礼品产品才能激活折扣并使其价格变为零。如果他们从不添加它,他们根本无法获得该优惠,折扣就没有作用。这个差距,折扣存在与顾客实际获得礼品之间,正是本文章讨论的整个问题。
图像占位符(图像 1):原生 Buy X Get Y 与真正的自动添加
建议的视觉效果:16:9 的干净图表在白色背景上,两个并排的流程。左流程标记为原生 Buy X Get Y 显示四个步骤,带有红色摩擦图标:购物车达到 $100,横幅出现,顾客必须查找礼品,顾客必须手动添加。右流程标记为自动添加赠送礼品显示两个步骤,带有绿色复选标记:购物车达到 $100,礼品以 $0.00 自动出现。品牌颜色紫罗兰和金色,平面矢量,无衬线标签,无摄影。
为什么原生 Buy X Get Y 对赠送礼品来说不够?
Buy X Get Y 是一个真正有用的折扣,但它的设计目的是定价商品,而不是管理购物车的内容。这个设计选择为赠送礼品创造了三个实际的差距。
它折扣礼品,不添加礼品
这是核心限制。Buy X Get Y 监视购物车,当满足购买条件(消费金额或合格产品的数量)时,它对赠送产品应用折扣。但赠送产品必须存在于购物车中,折扣才能有作用。Shopify 不会插入它。因此该优惠仅适用于那些既注意到促销又采取额外步骤添加礼品的购物者的子集。
顾客承担负担
您要求购物者采取的每一步都是您可能会失去他们的一步。赠送礼品促销要求顾客离开他们正在做的事情、浏览到礼品产品页面并将其添加到购物车,这要求他们在最接近结账的时刻付出努力。大多数购物者不会这样做。本来会喜欢礼品的人永远看不到它的发生,您付款的激励则无人兑现。
它也无法自动移除礼品
反向的情况同样混乱。假设购物者确实添加了礼品,然后移除了一项商品并低于阈值。使用手动设置,免费礼品可能会留在购物车中。取决于折扣的配置方式,它要么在结账时无声地恢复为全价(一个令人不愉快的惊讶),要么当顾客不再符合条件时保持折扣(您不打算给出的利润)。适当的赠送礼品必须 并且 与购物车总额保持同步地移除礼品。
商户直接感受到这一点。在一个广泛观看的 Shopify 社区帖子 中,一个商户询问如何在不使用第三方应用的情况下在购物车达到消费阈值时自动添加免费礼品,答案总是以同样的方式回来:原生 Buy X Get Y 存在,但它不会自己添加礼品,因此您需要自定义代码或应用。
为什么 Shopify Function 不能只是将礼品添加到购物车?
这是自然的下一个问题,因为 Shopify Functions 是自定义折扣的现代服务器端方式,它们在结账中运行,其中一切都是可靠的。诚实的回答是折扣函数可以定价,但不能添加产品。
Shopify 折扣函数返回针对现有购物车行的折扣操作。根据 Shopify 的折扣函数 API 文档,该函数对产品或订单应用百分比或固定金额折扣,或折扣运费。它读取购物车并调整价格。此模型中没有插入新行项目的地方,因为折扣函数的工作是对买方选择的商品定价,而不是改变购物车中的内容。
触及购物车的另一个函数是 Cart Transform API。它记录的工作是改变购物车中商品的定价和展示,使用案例仅限于将捆绑包展开为其组件、将行合并为捆绑包以及更新行的标题、图像或价格。它处理已存在的行。它不是将全新礼品产品凭空放入购物车的机制,其某些操作仅限于开发商店或 Shopify Plus。
因此服务器端工具箱在使礼品免费一旦它在购物车中方面很出色,在首先将礼品放入那里方面毫无用处。向购物车添加产品在前端的主题中进行,这就是为什么每个真正的自动添加解决方案最终都会在那里运行一些 JavaScript。
如何运作自己动手的 Ajax 购物车 API 方法?
如果您想在没有应用的情况下自己构建自动添加,前端路由是 Shopify Ajax 购物车 API。这是主题用来将产品添加到购物车而无需页面重新加载的相同轻量级端点。
机制
Ajax 购物车 API 公开了一个 POST /{locale}/cart/add.js 端点,可将一个或多个变体添加到购物车。根据 Shopify Ajax 购物车 API 参考,您发送变体 ID 和数量,该商品进入购物车。实际上,以这种方式构建的赠送礼品看起来像这样:
- 您主题中的脚本监听购物车变更。
- 当购物车小计超过您的阈值时,脚本调用 cart/add.js 并带有礼品变体的 ID。
- Buy X Get Y 或产品折扣(原生或基于 Functions)将该礼品定价为 $0,以便顾客不会被收费。
- 当购物车跌至阈值以下时,脚本再次调用购物车 API 来移除礼品。
您将管理购物车内容的前端脚本与管理价格的折扣配对。两个部分都无法单独完成整个工作。
维护成本
这有效,许多商店运行某种版本,但这是您现在永远拥有的代码。在提交之前要记住几点:
- 它是主题耦合的。 Ajax API 仅适用于 Shopify 托管主题,您的脚本挂钩到您的特定主题的购物车标记和事件。切换主题,或采用更改购物车抽屉的主题更新,脚本可能会以无声方式中断。
- 您必须防护边界情况。 如果购物者已经在其购物车中作为付费商品拥有礼品产品会怎样?如果他们符合两个不同的礼品条件会怎样?如果他们快速更改数量会怎样?这些中的每一个都是您必须编写和测试的分支。
- 移除是困难的一半。 在阈值处添加礼品很容易。当购物车跌至阈值以下时可靠地移除它,而不与尝试编辑购物车的顾客争斗,这就是自己动手的实现变得不稳定的地方。
加速结账的陷阱
这是花费真金白银的失败模式,它与任何仅前端的折扣逻辑击中的陷阱相同。Shop Pay、Apple Pay 和 Google Pay 等加速结账方式让买家完全跳过购物车页面并直接跳到结账。您的主题 JavaScript 不会在该路径上运行。因此,点击 Shop Pay 按钮的购物者永远不会触发您的添加礼品脚本,整个促销以无声方式对他们不会发生。
这就是赠送礼品促销中价格方面应该属于 Shopify Function(在每个结账路径上服务器端运行)的原因,即使添加方面必须留在主题中。保持折扣服务器端,它对于通过购物车页面或加速结账的买家应用相同。将折扣逻辑放在主题 JavaScript 中,您将为最快转换的买家在购物车中获得一个总额,在结账时获得不同的总额。
图像占位符(图像 2):Ajax 脚本运行和不运行的地方
建议的视觉效果:16:9 的拆分插图。左面板标记为标准结账显示带有绿色礼品脚本运行徽章的购物车页面和以 $0.00 添加的礼品。右面板标记为 Shop Pay / Apple Pay 显示快速结账按钮绕过购物车页面,带有红色主题 JS 永远不运行徽章,没有礼品。下面的标题条读作前端脚本跳过加速结账。保持定价服务器端。品牌颜色紫罗兰和金色,平面矢量风格,无摄影。
您应该在免费礼品应用中查找什么?
如果自己动手听起来比您想要的维护工作更多,应用通常是答案。不过,并非所有赠送礼品应用的构建方式都相同。这是真正重要的。
自动添加和自动移除,两者都有
添加礼品是基本要求。真正的测试是应用是否在购物车跌至阈值以下时自动移除礼品。没有自动移除,您会得到保留他们不再符合条件的免费礼品的购物车,或在结账时无声地恢复为全价的礼品。坚持两个方向都有。
服务器端定价使购物车和结账一致
询问礼品是如何定价为 $0 的。如果答案是我们的脚本在购物车页面上设置价格,您就存在加速结账问题。可靠的模式使用 Shopify Function 定价礼品,以便 $0 在购物车页面、结账页面和 Shop Pay 上都保持。添加可以在主题中发生;折扣不应该。
它与您的其他优惠配合使用
赠送礼品很少单独运行。您可能也在同一时间进行销售、体积等级或免运费。检查礼品优惠是否根据 Shopify 的真实堆叠规则与您的其他折扣干净地组合,而不是阻止它们或被阻止。(如果折扣堆叠对您来说是陌生的,我们关于 Shopify 中折扣堆叠如何工作 的指南会介绍三个折扣类别以及什么与什么组合的。)
它不会重写您的目录
一些应用更改产品价格来模拟折扣。这很脆弱,如果您卸载会留下混乱。干净的方法是结账时调整,永远不会触及您的真实产品价格,因此移除应用会让您的目录保持原样。
您现在可以可靠地交付什么:消费目标进度条
这是诚实的分割。赠送礼品的自动添加和移除部分真正很困难,因为它依赖于 Shopify 服务器端工具无法做到的前端购物车操作。但驱动大部分转换提升的部分,向购物者显示他们离奖励有多近,现在是完全可以解决的,Stackable 现在就提供它。
一个 消费目标 是一个订单级折扣,一旦购物车超过您设置的阈值就会生效:消费 $75 获得 10% 折扣,或消费 $100 获得 $15 折扣。Stackable 的 消费目标功能 已构建并上线,它配备了 实时购物车进度条,该进度条读取真实购物车总额并在购物者添加商品时倒计时,无需页面重新加载。您距离奖励还差 $12 是阈值促销中最有效的激励,无论奖励是折扣还是免费礼品,它都在做相同的心理工作。
因为消费目标由 Shopify Function 计算,购物者在购物车页面上看到的奖励正是结账收费的,包括通过 Shop Pay。没有购物车与结账漂移去追踪。并且消费目标作为订单级层堆叠,因此它与产品折扣或 免运费 在同一订单上组合。
为了清楚起见,关于现在什么是和不是可用的:Stackable 的 自动添加免费礼品 功能,即礼品产品本身在阈值处自动出现和消失,在规划中,即将推出,不是您现在可以打开的东西。免费礼品功能页面 准确描述了它发布时如何工作。您现在可以运行的是具有实时进度条的消费目标奖励,这是该模式的可靠、结账安全的一半。
图像占位符(图像 3):购物车进度条倒计时至奖励
建议的视觉效果:16:9 的前端购物车抽屉模型。顶部附近的进度条大约填充了 80%,使用紫罗兰色,标签为您距离奖励还差 $12。下面是两个带有价格的购物车行商品。进度条末尾的金色奖励芯片读作 10% 折扣。干净现代的电子商务风格,主题中立,品牌强调紫罗兰和金色,无摄影。参考 docs/screenshot-manifest.md 插槽 spend-goal-step-3 以稍后捕获实际小部件。
工作示例:在 $75 处自动添加并在其以下自动移除的礼品
让我们逐步说明真正的自动添加赠送礼品促销的行为方式,以便您知道正好正确完成是什么样子,以及消费目标进度条如何今天支持它。
一个时尚品牌希望每个超过 $75 的订单都包含一个自动添加的免费布料购物袋。一个购物者构建这个购物车:
- 1 件针织毛衣,价格 $58
- 1 件套帽,价格 $22
- 小计: $80
商店运行一个赠送礼品促销,设置在 $75 购物车小计处触发,布料购物袋作为礼品。
使这感到毫不费力的两件事是原生 Buy X Get Y 单独无法做到的两件事:布料购物袋 自己添加 购物车达到 $75 的那一刻,它 自己移除 购物车跌至 $75 以下的那一刻。顾客永远不会搜寻礼品,永远不会被收费购买他们不再符合条件的礼品。
现在,该体验的进度条一半(距离 $17 推送,服务器端计算以匹配结账)是 Stackable 的消费目标配合折扣奖励所提供的。礼品产品本身的自动添加和移除是即将推出的免费礼品功能。坦诚地说:您现在可以运行倒计时和奖励,自动添加礼品产品即将到来。
使用 Stackable 可靠地运行阈值奖励
如果您想要阈值奖励机制可靠而不是您监管的主题脚本,这就是 Stackable 在 Shopify 真实规则范围内构建的目的。
- 消费目标配备 实时购物车进度条 在购物者添加商品时倒计时至奖励,无需页面重新加载。
- 奖励由 Shopify Function 计算,因此购物车页面、结账页面和 Shop Pay 都显示相同的总额。没有主题与结账漂移。
- 消费目标 堆叠 作为订单级层,因此它与您的产品折扣和免运费根据 Shopify 的组合规则干净地组合。
- Stackable 永远不会重写您的产品价格。奖励仅是结账调整,因此卸载会让您的目录保持原样。
- 自动添加免费礼品功能在规划中,诚实地标记为即将推出,因此您始终知道什么是实时的,什么是计划的。自动添加免费礼品 功能在规划中,诚实地标记为即将推出,因此您始终知道什么是实时的,什么是计划的。
免费安装 Stackable,今天就把“离赠品还差多少”的倒计时展示给顾客。usestackable.com/pricing 🎁
底线
- Shopify 原生 Buy X Get Y 不会自动添加礼品。它可以将礼品定价为 $0 并可以通过消费金额触发,但顾客必须自己添加礼品产品。
- 手动添加步骤是促销泄漏的地方。大多数购物者永远不会注意到或费事,因此您付款的激励则无人兑现。
- 服务器端函数无法向购物车添加产品。折扣函数只定价现有行,Cart Transform 只展开、合并或更新已存在的行。
- 自己动手的路线是 Ajax 购物车 API 上的主题脚本,添加和移除礼品,与定价折扣配对。它有效但主题耦合、边界情况繁重,并被加速结账跳过。
- 在应用中,坚持自动添加和自动移除、服务器端定价以便购物车和结账一致、与您的其他优惠干净堆叠,以及不重写目录价格。
- 您现在可以可靠地交付的是带有实时购物车进度条的消费目标奖励。Stackable 现在交付这个,服务器端计算以便匹配结账,而自动添加免费礼品功能诚实地标记为即将推出。
相关文章
- 消费目标和订单折扣:在购物车价值阈值处奖励整个订单,具有与结账匹配的实时进度条。已构建并现场直播。
- 自动添加赠送礼品:自动添加和移除礼品功能如何工作。即将推出。
- 免费运费优惠:添加免运费作为与您的其他优惠堆叠的运费级阈值奖励。
- 正确完成的折扣堆叠:三个按类别的组合开关如何决定您的阈值奖励可以与什么分层。
- Shopify 中折扣堆叠如何工作:三个折扣类别以及为什么原生仅应用最高的。
- Shopify 的 Buy X Get Y 100 产品限制:另一个原生 Buy X Get Y 上限以及如何围绕它运行大目录优惠。
- Stackable 定价:计划、免费等级及每个包括的内容。



