EN
页面模块 · 指南

交叉销售与追加购买模块:推荐、搭配与加购

交叉销售与追加购买模块如何在商品页、购物车和结账后语境中呈现搭配、升级、捆绑与加购,要求推荐依据可解释、不推荐不兼容或不可售商品、加购后购物车保持一致,并避免预勾选与隐藏拒绝等暗黑模式。

交叉销售与追加购买模块在商品页、购物车或结账后,向顾客提出“还可以配什么、有没有更合适的、一起买是否更合适”,并把提议直接变成可执行的加购动作。它与相关商品的分工是:相关商品是内容类型,规定关系怎样确立、依据是什么;本模块是页面语境与交易动作,规定在哪里、以什么方式提出,以及加购之后购物车怎样保持一致。

模块 = 信息来源 × 展现或交互 × 页面语境:交叉销售与追加购买 = 推荐关系及其依据 × 商品卡与加购动作 × 商品页、购物车或结账后

先确定模块在完成什么任务

四种提议回答不同问题,不能混成一个“猜你喜欢”:

类型顾客问题关系常见位置
搭配(cross-sell)还需要配什么补充购买、配件、耗材商品页、购物车
升级(upsell)有没有更高配置的版本同一用途的更高规格商品页、购买区旁
捆绑一起买是否合并成一件固定组合,有独立价格或库存商品页
追加订单之外再加一件与已下单商品相关的补充购物车、结账后

对象层级要写清:推荐的是商品还是具体变体。加购动作只能作用于一个已确定的变体(颜色、尺寸都选定),否则要先让顾客选择,见商品与变体。进入前已知的信息:当前商品与变体、购物车内容,结账后还包括刚完成的订单。

升级不是选型:在几个候选间做比较属于商品选型;本模块只提出“更高配置”这一项,并说明差异。

信息来源与输入

输入来源最低要求
关系与理由相关商品的关系类型、一句话理由、来源、复核日期每条关系有类型;搭配与补充购买还需要兼容条件
推荐依据手动搭配、购买历史、商品相似记录依据与优先级,标题措辞与依据一致
商品状态商品与变体资源(运行时)当前市场下可售、价格大于 0、已发布;不写成静态文案
购物车状态购物车(运行时)已在购物车中的商品不再作为推荐
加购动作交易动作指向明确变体与数量,结果以平台返回为准
价格与优惠促销与折扣内容与平台折扣捆绑价、节省额来自同一份促销规则,不在前端自行计算

包装清单里的物品与另售配件必须分开:写在包装清单里的属于已包含,推荐区里的都需要另行购买。

推荐依据必须可解释

依据适合的说法不适合的说法
手动搭配“常与它搭配使用”,并给出一句话理由“为你推荐”(并非个性化)
购买历史“经常一起购买”,前提是有足够销售记录暗示对当前顾客个性化,除非确实如此
商品相似“类似商品”,属于替代而非搭配放在“搭配使用”标题下

人工与自动结果并用时,要事先规定优先级与去重。主推商品若只是运营意愿,就写成“推荐”或“主推”之类的编辑说法,而不是借用“大家都买”这类看似客观的依据。

状态与退化

状态处理
零项隐藏整个模块,不用随机商品填补
一项可以展示,标题不用“更多推荐”这类暗示数量的说法
多项限制数量(购物车内 1 到 3 项即可),按关系类型分组并说明排序
加载预留空间,不阻塞主购买按钮;加载失败时安静隐藏
错误(加购失败)保留当前页面与购物车,说明失败原因并可重试,不显示成功
过期商品在浏览期间售罄或下架时,刷新后移除;不在前端缓存库存
不可用不兼容当前变体、不可售、当前市场不可购买的商品不显示,不以“暂时缺货”留在推荐位
跨市场差异价格、可售与推荐范围按当前市场重新计算;人工关系在下次复核时按市场修订
顾客拒绝关闭或忽略提议后不重复打断同一流程

加购后购物车一致性

加购成功后,页面上所有购物车入口必须一致:图标数量、抽屉或购物车页的行项目、小计与折扣。这些都应由平台返回的最新购物车渲染,不由前端自行叠加(与促销兑现一致)。加购后仍要处理:数量超过库存、同一变体已存在、购物车里已含该商品时推荐位是否隐藏、以及捆绑商品在订单与退货中被拆成单项的情况(见下节)。购物车本身的展现要求见购物车摘要模块与 Horizon 购物车;该模块指出抽屉不适合塞入完整的推荐列表,与本文“购物车内只放 1 到 3 项”一致。

不得使用暗黑模式

  • 预勾选:搭配品的勾选框默认不选中,顾客主动选择才加入。
  • 拒绝路径:拒绝入口清晰可见、可用,视觉权重可以低于接受按钮,但不得隐藏或改成难以理解的措辞。
  • 价格:接受前显示该商品的完整价格与是否立即产生费用,不在结算时才出现新增费用。
  • 措辞与压力:不使用暗示订单状态不确定、把追加说成必需的语言,不使用倒计时制造紧迫感。

依据:FTC 2022 年新闻稿将预勾选框、限时倒计时列为暗黑模式示例,并称这类设计可能违法(FTC 新闻稿,核验于 2026-09-29)。该稿是美国监管机构的说明,本站面向的各市场适用哪些具体要求,需要法务/合规确认,本文不给出法律结论。Shopify 对结账后商品优惠的 UX 要求见下节。

可选展现与交互

  • 商品页搭配:数量少且需要看图时用 Cards,数量多用 Grid,横向空间不足时可用 Carousel,但首屏关键推荐不藏在滚动区里。
  • 购物车内:放在购物车行项目之后的一两行,使用 Drawer 或购物车页的紧凑列表。
  • 捆绑:用卡片显示每个组成项、合计价和节省依据,并允许查看组成项而不必接受整包。
  • 加购按钮:按钮名称包含商品名;需要选变体时先选后加,主商品的购买动作见购买区模块。加购成功的短提示可参考 Toast,但提示消失后购物车入口的数量仍要保持可见。
  • 禁用条件:不用弹窗打断主购买流程,除非顾客主动展开;同一位置不放超过一类提议;不用倒计时。

页面组合中的位置

商品页里,推荐放在购买区之后,不抢主购买动作,先交代当前商品再谈搭配;购物车里,放在行项目之后、结账按钮之前,数量少;结账后属于平台流程(见下节)。不应出现的语境:首页与内容页(应使用特色商品,起点是页面任务而不是当前商品)、支付信息填写过程中。页面组合规则见页面组合。

无障碍与性能

  • 推荐区异步加载时预留高度,不造成布局跳动,也不让读屏软件反复播报。
  • 加购成功要有不抢焦点的状态文字。WCAG 2.2 SC 4.1.3 Status Messages(AA)要求状态消息可被辅助技术识别而不获得焦点;该说明页的技术建议中 role="status" 用于操作成功等状态,role="alert" 或 aria-live 用于错误与警告(Understanding SC 4.1.3,核验于 2026-09-29)。
  • 每个商品卡的加购按钮名称写明商品,不只叫“加入”;选项状态不只靠颜色。
  • 推荐请求不阻塞主购买按钮;失败时不显示错误块,直接隐藏。

映射到 Shopify

以下核验于 2026-09-29,来源为 shopify.dev 与 help.shopify.com 官方页面;推荐相关内容与相关商品「平台落点」一节保持一致。

  • 推荐类型:官方区分 complementary(经常一起购买的补充商品)与 related(相似商品)。每个商品最多手动选择 10 个 complementary 与 10 个 related;related 由 Shopify 自动生成,依据为购买历史、商品描述(仅英文店面)与相关集合,生成结果经常变化;complementary 需要在 Search & Discovery 中手动设置。展示资格包括未售罄、非 Unlisted、价格高于 0、非礼品卡、已发布到 Online Store、状态为 Active,且不在访客当前购物车中。官方说明推荐要求主题包含相应板块。帮助中心只讨论商品页,购物车与其他页面的展示未核验。
  • 推荐 API:Ajax 接口 /recommendations/products.json(或返回渲染分区的 /recommendations/products,需要 section_id)的 product_id 必填,intent 取 related 或 complementary(默认 related),limit 为 1 到 10(默认 10);缺少 product_id 返回 422,商品未在 Online Store 发布返回 404,非法 intent 返回 422。Storefront API 的 productRecommendations 接受 productId 或 productHandle 与 intent(RELATED 默认,COMPLEMENTARY),最多返回 10 个商品。官方页面没有明确说明结果为空时的返回,本文只建议“为空时不渲染”。
  • 加购动作(Cart API):POST /cart/add.js 接受 JSON items 数组,每项含变体 id 与 quantity,可带 properties、selling_plan、parent_id,并可用 sections 请求渲染分区;成功返回所添加的行项目。价格、属性或 selling plan 不同的同一变体会拆成独立行项目。库存不足或已售罄时返回 422,页面给出 Cart Error 及对应描述。页面对已在购物车中的同一项目的 quantity 语义有描述,究竟是累加还是覆盖未经实测核实;多个 items 中某一项失败时其余项是否成功,页面未说明,未核验。
  • 捆绑(捆绑的资格与注意事项):捆绑库存由各组成项库存除以所需数量后取最小整数决定;与购买选项(订阅、预售、try-before-you-buy)、自定义商品不兼容,捆绑不能包含其他捆绑;要求已升级的结账;订单中捆绑显示为嵌套的行项目,但拆分发货、退货换货等场景会按单项处理。
  • 结账前后商品优惠(商品优惠):结账信息、配送、支付步骤中的 pre-purchase 优惠使用 checkout UI 扩展,页面写明这些扩展仅适用于 Shopify Plus;post-purchase 优惠出现在订单确认之后、感谢页之前,页面写明处于 beta,开发店可使用,正式店需申请。限制包括每次结账最多接受 3 个 post-purchase 优惠、订单金额需达到 0.50(页面以美元表述)、部分支付方式不显示、订单需经 Online Store 渠道。
  • Shopify 对 post-purchase 的 UX 要求(UX 页):费用透明;提供清晰的接受或拒绝选项;最多连续显示三个追加优惠;商品标题与价格须与店面一致;拒绝按钮文字须为 Decline upsell offer,位于接受按钮下方且视觉权重较低;提示语不使用感叹号,也不使用让追加显得必须或让订单状态存疑的措辞。
  • 主题层面:加购提交与数量约束见 Horizon 购买流程,购物车展示见 Horizon 购物车。推荐区块的固定版本实现见Dawn 商品推荐、Horizon 商品推荐:Dawn 内置 related-products 区块与商品页 complementary 区块,购物车页与抽屉无推荐区块;Horizon 的推荐只在商品页。
  • 未核验:不同 Markets 下的推荐范围、推荐在购物车的展示条件、Plus 以外店铺的结账内追加方式。

验证一次交叉销售与追加购买

  1. 选定一个有手动搭配、一个只有自动推荐、一个没有推荐的商品,确认三种情况下模块的显示与隐藏。
  2. 把一个被推荐商品设为售罄、下架或换成不兼容变体,确认它从推荐中消失;记录购物车已含该商品时是否仍出现。
  3. 从推荐位加购:确认页面图标、抽屉或购物车页、小计一致;再故意加购到超过库存,确认错误信息与购物车状态。
  4. 检查搭配品未被预勾选,拒绝路径可见,捆绑合计价与逐项价格核对一致。
  5. 更换市场、币种与语言,核对推荐、价格与可售。
  6. 只用键盘与读屏软件完成一次加购,确认成功状态被播报且焦点未跳走。

平台正文

该机制的权威平台说明见 Search & Discovery;本文只写在当前内容或页面语境下的用法。

待继续完善

  • 缺少真实店铺的推荐结果与加购流程实测;
  • 各法域对预勾选、限时提示与追加销售的具体要求尚待合规确认;
  • 推荐位对决策的实际帮助没有可靠指标,需要与真实订单数据对照。