EN
页面模块 · 指南

库存状态与到货通知模块

库存状态与到货通知模块如何用统一词表表达有货、低库存、售罄、缺货预订、预售、不可配送与不可取货,说明库存追踪关闭、多地点与本地取货下的判据,要求低库存与稀缺提示必须来自真实库存规则,并定义到货通知订阅的同意与隐私。

库存状态与到货通知模块告诉顾客“这个配置现在能不能买、能不能送到我这里、什么时候可能有货”,并在买不到时提供一个不夸大承诺的下一步。它不是商品页角落里的一行“Sold out”,而是把库存事实、配送与取货条件、预售规则和通知订阅统一成一套可验证的状态。

库存状态与到货通知 = 变体库存事实 × 状态词表 × 地点与配送条件 × 通知订阅

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

  • 顾客问题:有没有货?能不能预订?我所在地区送得到吗?能不能去门店取?没货了能不能等通知?
  • 对象层级:状态属于变体,不属于商品。商品页显示的“有货”必须对应当前选中的变体;商品级“至少一个变体可售”只能用在列表或卡片的粗粒度提示。
  • 进入前已知:当前变体、买家地区与市场、取货地点(如有)、库存是否被追踪。

购买按钮的可用与禁用由购买区执行;加购后因库存被拒的处理见购物车摘要;配送范围与时效的正文见配送信息。本模块只负责“状态如何表达与如何订阅通知”。

状态词表与判据

状态词判据(必须可追溯到平台字段或业务规则)文案要求
有货当前变体可售,且按追踪规则库存充足不写具体数量,除非该数量是真实的可售数量
低库存库存被追踪,且可售数量低于商家书面定义的阈值阈值、口径与负责人有记录;用真实数量或“仅剩少量”,不虚构
售罄当前变体不可售说明是该配置售罄,并提供替代与通知入口
缺货预订库存为零或负但仍允许购买只写“缺货预订”,发货时间只在有真实到货计划时给出
预售通过销售计划或预购应用出售的未上市商品写明预计发货时间、收款方式与取消规则
不可配送买家所在地区不在配送范围,或平台判断该商品在此地点不可用写明是哪个地区;不与售罄混用
不可取货所选地点未开通取货,或该地点库存不满足写明是哪个地点,并给出其他地点或配送作为替代
已停售商品下架或不再销售不显示购买与通知入口

不得伪造稀缺。 “仅剩 3 件”“别人正在看”这类稀缺与热度提示是高风险模式。本模块的规则是:数字必须来自当前库存数据并在读取时刻为真,阈值来自事先书面确定的真实库存规则,不得随机生成、循环展示或在数量恢复后仍保留。FTC 2022 年 9 月的员工报告《Bringing Dark Patterns to Light》把“库存实际充足却声称库存很少”列为 False Low Stock Message,并列出无根据的倒计时与虚假热度;该报告是监管机构员工的分类与示例,不是法律条文,各市场的具体适用与责任需要法务或合规确认。倒计时的同类真实性红线见 Countdown Timer。

信息来源与输入

输入来源最低要求
可售性平台状态(变体可售标志)每次更新变体后重新读取,不缓存
库存数量平台库存数据仅在追踪库存且允许展示时使用,注明口径
阈值规则业务规则(库存负责人维护)有数值、口径、生效日期与负责人
缺货可购买标志平台状态与预订文案同源
到货计划资源数据或业务记录无真实计划时不写日期
配送范围、取货地点平台状态 + 配送信息内容与结账一致
订阅信息(邮箱、变体、市场)交易动作见到货通知一节

库存追踪、地点与取货的语义

  • 追踪关闭:官方 Liquid 文档写明,不追踪库存时 variant.inventory_management 为 nil,且 inventory_quantity 返回的是已售数量而不是库存。页面在这种变体上不得显示“剩余 N 件”或低库存。first_available_variant 的条件也包含“不跟踪库存”,即这类变体按可购买对待。
  • 继续销售缺货商品:帮助中心写明该设置允许在库存为零或以下时继续购买,并支持预购等场景;仅在追踪库存时才生效,且不适用于 Shopify POS。开启后“缺货”与“可购买”并存,页面必须用“缺货预订”而不是“有货”。
  • 多地点:帮助中心写明,处理线上订单的地点库存为零时,商品在线上显示为缺货,即使其他地点有库存。所以“有库存”必须限定到哪个地点、哪条履约路径,不要把各地点数量相加。详见库存与地点。
  • 本地取货:帮助中心写明取货按地点开通,默认只有整张订单在取货地点都有库存才可取货,商家可开启门店调拨;支持的主题在商品页显示取货可用性与预计时间。开发文档写明可用性同时取决于变体与地点。能力模块的归属见店面能力模块。

状态与退化

状态处理方式
零项(商品无可售变体)商品级显示“暂时无货”,不显示购买按钮,保留通知入口
一项(仅默认变体)直接显示该变体状态,不出现选项
多项每个选项值可标出不可用;切换变体后状态与价格同步更新
加载状态区显示加载中,不沿用上一变体的状态
错误无法读取库存时不写“有货”,写“暂时无法确认”,由结账把关
过期停留后加购被拒时,说明库存已变化,不沿用旧状态
跨市场不可配送、取货与预售信息按买家市场与地点重新读取
无 JavaScript页面服务端渲染当前状态;通知订阅走普通表单提交

到货通知

到货通知让顾客在某个变体不可购买时留下联系方式,等有货时收到提醒。

Shopify 侧的核验结果(2026-09-29):官方帮助中心的 Shopify Flow 页面写有“Product variant back in stock”触发器,当变体库存从零或负变为一或以上时触发,来源不限于订单、手动调整或应用,且商品需开启库存追踪;它是商家侧自动化触发器,不是面向顾客的订阅表单。旧的到货通知表单帮助页在核验时已 301 跳转,未能读取;Shopify 员工在开发者社区帖子(2026-06-12)中确认 Horizon 主题没有到货提醒功能。因此在已读官方页面范围内,未找到面向顾客的官方到货通知订阅功能;是否另有其他官方入口未核验。实现订阅与发送需要另行选型,本文不点名推荐。

订阅字段与状态:

项要求
字段邮箱(必填)、订阅的变体与市场;其他字段有明确用途才收集
提交成功说明订阅了哪个变体,通知何时发送,不承诺库存预留
重复提交显示“已订阅”,不新建第二条
邮箱无效或失败保留输入,说明原因与重试方式
变体已恢复有货立即显示购买入口而不是继续收集邮箱
取消通知中提供取消方式;订阅在发送后或过期后结束
通知内容发送时重新确认是否仍有货;说明数量有限时不保证抢到

同意与隐私:到货通知的用途限于告知该变体有货,不得默认勾选并加入营销订阅;需要营销联系时另设可选项并写明发送主体、频率与退订方式,做法见邮件订阅邀请。订阅数据只用于声明的目的,保存期限、退订与删除按目标市场核对;是否属于营销通信及需要怎样的同意,需要法务或隐私负责人确认。

可选展现与交互

  • 状态文字:紧邻价格与按钮的一行文字,配以图标但不只靠颜色,由购买区呈现;商品卡上的“售罄”等标签可用 Badge,其口径必须与本模块词表一致。
  • 订阅表单:变体售罄时在购买区内展开内联表单;只需一个邮箱时不必弹出Modal。
  • 提交确认:成功用Toast,但错误与“已订阅”留在原位。
  • 取货地点详情:地点列表放在可展开区,可用性摘要本身要直接可见;不要只藏进Popover。

页面组合中的位置

主要出现在商品页购买区、商品卡与集合页的粗粒度状态、购物车中的库存变化提示。不应出现在首页大幅横幅或与商品无关的营销弹窗里,也不要与倒计时叠加成“快没了且快结束”的组合压迫。

无障碍与性能

  • 状态不能只靠颜色区分(WCAG 2.2 的 1.4.1 Use of Color,A)。
  • 变体切换引起状态变化时,用状态消息通知(4.1.3 Status Messages,AA;MDN 写明 role="status" 隐含礼貌型 live region,更新时不要把焦点移入)。
  • 订阅表单有可见标签或说明(3.3.2 Labels or Instructions,A)。
  • 库存读取只在需要时请求,取消过期请求,不在页面里长期缓存状态。

映射到 Shopify

核验于 2026-09-29,只写官方页面所写。

机制官方页面所写
变体状态Liquid variant.available、inventory_management、inventory_policy、incoming、next_incoming_date、store_availabilities
Storefront APIavailableForSale、currentlyNotInStock(缺货但仍可购买,用于缺货预订)、quantityAvailable(在线销售渠道的可售总量,访问要求未核验)、storeAvailability
购物车警告MERCHANDISE_NOT_ENOUGH_STOCK、MERCHANDISE_OUT_OF_STOCK、PRODUCT_UNAVAILABLE_IN_BUYER_LOCATION
预售帮助中心写明预购需安装预购应用,且仅适用于 Shopify Payments 或 PayPal Express;开发文档写明预购通过销售计划暴露给主题,主题需提供计划选择器并在购物车与订单显示
隐藏缺货商品帮助中心写明这不是内置设置,可通过集合条件(库存大于 0,须匹配全部条件)、应用或 Shopify Flow 实现,前提是开启库存追踪
低库存提醒帮助中心的库存页面提到商家可通过第三方应用或 Shopify Flow 获得低库存通知(商家侧);顾客侧“仅剩 N 件”的官方主题机制未核验

主题层面的库存与取货表现未核验,需在目标主题的固定版本正文中确认;Horizon 购买流程只说明按钮初始状态由可售状态与数量规则生成,未展开库存状态的表达。地点与履约的配置排查见履约与配送。

验证一次库存状态与通知

  1. 在测试店铺把一个变体的库存依次设为高于阈值、低于阈值、零,检查商品页、商品卡与购物车的状态词与词表一致。
  2. 关闭库存追踪,确认页面不显示数量与低库存;再开启并开启“继续销售缺货商品”,确认显示“缺货预订”而非“有货”。
  3. 设置两个地点,只让非线上履约地点有货,确认线上仍显示缺货。
  4. 更换买家地区,确认不可配送提示与结账一致;对取货地点分别设置有货与无货,检查取货提示。
  5. 订阅到货通知,重复提交、输入无效邮箱、订阅后补货,检查每种反馈与通知内容;确认没有默认加入营销订阅。
  6. 用键盘与读屏软件切换变体,检查状态变化是否被朗读。

记录时间、变体、地点、库存设置与看到的状态,避免不同时间的截图互相比对。

固定版本主题实现

固定基线为 Dawn v15.3.0 与 Horizon 4.2.0;结论限于这两个提交,均为静态源码分析,未运行验证。

待继续完善

  • 核验 Shopify 是否提供面向顾客的官方到货通知订阅,并在测试店铺验证。
  • 其他主题与版本的库存状态、低库存与取货表现需要逐项核对;固定版本实现见「固定版本主题实现」。
  • 缺少预售与缺货预订的完整样例与收款说明。
  • 稀缺提示与营销通知的法规要求需要法务确认。