> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aftersell.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Checkout upsell

> 使用策略（Strategy）动态选择在 Shopify Plus checkout upsell widget 中展示的商品。

<div id="overview">
  ## 概览
</div>

配置 checkout upsell widget 时，你可以通过几种方式填充商品位：手动挑选特定商品、让 AI 推荐商品，或者附加一个**策略（Strategy）**。它们是针对不同需求的不同工具。

策略用于**实时动态选品**——为主商品搭配合适的配件、推荐互补商品，或根据购物车中已有的商品展示不同的商品。checkout **触发条件**决定的是向某位购物者展示\_哪个\_ widget，而策略决定的是 *widget 里面放什么商品*。触发条件是入口，策略则是整个体验背后的大脑。

***

<div id="attaching-a-strategy-to-a-checkout-widget">
  ## 将策略附加到 Checkout Widget
</div>

策略是**按 widget** 附加的，而不是附加到整个 checkout。你可以在同一个 checkout 中混合使用由策略驱动的 widget 和静态商品 widget。

1. 打开你想编辑的 checkout widget。
2. 在 **Select product type** 菜单中，选择 **Strategy**。
3. 在策略选择器中，搜索并选择你想使用的策略。
4. 点击 **Confirm**，然后保存 widget。

附加后，widget 会显示策略的名称，而不是某个特定商品。每次 checkout 加载时，系统都会执行该策略，并将返回的商品渲染到 widget 中。

<Tip>
  为你的策略取清晰、具描述性的名称。附加后，策略名称会显示在 widget 编辑器中，这是让你一眼看出哪个策略在驱动哪个 widget 的最简单方式。
</Tip>

***

<div id="what-the-strategy-sees">
  ## 策略能看到什么
</div>

Checkout 的**上下文比购买后环节更窄**。策略在 checkout 页面加载时、订单创建之前进行评估——因此客户历史和会话归因数据此时尚不可用。以下是会自动发送的内容：

<div id="product-context">
  #### 商品上下文
</div>

当前购物车中的行项目会作为输入商品发送。**商品标签**、**商品集合**、**商品类型**、**供应商**和**商品元字段**等触发条件都会针对这些商品进行评估。

\*\*Selling plan 在此处不会被评估。\*\*Checkout 行项目在此负载中不携带 selling plan，因此 **Selling plan** 触发条件在 checkout widget 上永远不会匹配。

<div id="cart-context">
  #### 购物车上下文
</div>

* **Subtotal** - 购物车小计。
* **Item count** - 所有行项目的总数量。
* **Line count** - 不同行项目的数量。

<Warning>
  \*\*客户和会话触发条件在 checkout 中不会匹配。\*\*客户标签、订单数量、国家/地区、语言区域和 UTM 参数都不属于 checkout 负载的一部分。如果 checkout widget 中使用的策略依赖这些触发条件，那些规则将永远不会触发，只有以商品或购物车为范围的规则（或 Catch all）才能返回商品。
</Warning>

***

<div id="what-happens-when-the-strategy-returns">
  ## 策略返回结果时会发生什么
</div>

策略返回的商品会**替换** widget 中的占位商品——而不是追加。购物者看到的 widget 效果，就像你亲手挑选了该商品一样。

widget 会按优先级顺序用返回的商品填充其商品位，最多填充到该 widget 配置的优惠数量。单优惠 widget 使用第一个返回的商品。

***

<div id="when-no-product-is-returned">
  ## 没有返回商品时
</div>

如果没有规则匹配、策略未返回任何商品，则该 widget **不会向购物者显示**——该商品位会从 checkout 中完全消失。

要让你的 widget 持续展示，请在策略中配置一个 **Catch all**，确保始终有一个兜底商品可以返回。有关如何设置 Catch all，请参阅[构建策略](/zh/aftersell/strategies_building_in_app)页面。

***

<div id="evaluation-timing">
  ## 评估时机
</div>

默认情况下，checkout widget 上的策略会在 **checkout 页面加载时评估一次**。页面加载时选中的商品会一直保持展示，即使购物者在结账过程中添加或移除了商品。

如果该 widget 启用了**灵活触发条件重新检查（flexible trigger re-checking）**，那么策略会改为在结账期间购物车每次发生变化时重新评估，widget 也会更新以反映新的购物车——类似于 [Upcart 集成](/zh/aftersell/implementing_strategies_upcart_upsells)的行为。请根据 widget 使用的模式来规划你的规则：是在 checkout 加载时的固定快照，还是在购物车每次变化时的实时重新评估。

***

<div id="tips-for-checkout-strategies">
  ## Checkout 策略小贴士
</div>

* \*\*只围绕商品和购物车来设计。\*\*以客户和会话为范围的触发条件在 checkout 中永远不会匹配，因此请围绕商品属性（标签、集合、元字段）和购物车形态（小计、商品数量、行项目数量）来构建策略。
* \*\*将 Catch all 用作安全网。\*\*没有 Catch all 的策略在无匹配时会隐藏 widget。一个简单的 Catch all 可确保商品位始终展示\_某些内容\_。
* \*\*混合使用动态和静态 widget。\*\*并非每个 widget 都必须由策略驱动。一种常见模式是在主 upsell widget 上使用策略（最个性化），在次级 widget 上使用静态商品（经过验证的畅销品）。
