黑五预售卖了 3 万多单,系统一直显示"有货",结果在途那批货在港口多压了 4 天——2800 多单发不出去,退款、补发、赔偿加起来赔了 6 万多美金,整个黑五等于白干。这是 2021 年感恩节前一周,一家卖美妆工具客户的真实遭遇。
电话里我就问了一句:你们 OMS 的可用量,是不是把在途库存直接算进去了?对方沉默了三秒,说:好像是。
那就是病根。可用量和在手库存是两回事,大促预售的时候,这两者的差值就是你的生死线。
先把这几个库存数分清楚
很多 OMS 的库存页面就一个数字,叫"库存"。我看过不少,点进去才发现这个数字是"在手+在途-预留"混在一起算的。这种算法平时没事,淡季在途稳定,差几天无所谓。但大促预售不一样,预售卖的是未来的货,你拿未来的数字卖今天的单,赌的就是在途准时到。
2021 年那会儿,长滩港的拥堵大家都还记得,一个集装箱多压一周是常态。你敢把在途算进可卖,等于在赌港口不堵。
我的做法是,OMS 里至少分五个桶:
在手:已经上架、能拣能发的。在途:已经发货、还没入库的,钱已经花了,货不在手里。已分配:订单占了、还没拣的,名花有主。冻结:人为锁定的,比如预售专供、质量 hold、客户指定批次。安全库存:兜底的,雷打不动。
可用量公式只有一种正确写法:可用量 = 在手 - 已分配 - 冻结 - 安全库存。在途不进这个公式。
举个例子,一个 SKU 在手 5000、在途 8000、已分配 1200、冻结 2000、安全库存 500,可用量 = 5000-1200-2000-500 = 1300。如果系统页面显示的是 13000(在手+在途-已分配),那就是在拿 11700 件"未来的货"卖今天的单。在途晚到一天,超卖就炸一天。
那在途到底该怎么用?单独建一个"预售可卖池"。预售链接挂的是这个池子的数,不是现货可用量。池子的水位 = 在途确认量 × 到货信心系数。信心系数我按供应商历史准时率打:常年准时 95% 以上的,给 0.9;经常晚 3~5 天的,给 0.6;新供应商,直接给 0,不许预售。别嫌麻烦,预售卖的就是确定性,系数就是你的诚实度。
预售订单的扣减顺序长这样
预售的本质,是提前把未来的在手卖掉。所以 OMS 里预售和现货必须是两个池子,物理隔离,绝不混用。
顺序是这样的:预售订单进来,先扣预售池;在途到货、入库转成在手后,按比例释放给预售池补水;现货订单只扣现货可用量,永远不许碰预售池;反过来,预售订单也不许直接吃现货。
为什么这么较真?2022 年会员日大促,我另一个做户外装备的客户就吃过亏。他们的 OMS 预售和现货共用一个池,预售卖爆了,现货订单进来发现没货可发,客服被骂了一整周。两个池子隔开,预售卖穿了也只影响预售,大不了关预售链接,现货基本盘不动。
冻结的时机也有讲究。预售开始前,先把预售总量对应的库存冻结掉:冻结数量 = 预售计划量 + 安全垫。安全垫我一般按预售量的 10%~15% 留,应付取消率和破损。这个冻结动作要在 OMS 里留记录:谁冻的、冻了多少、什么时候解冻。最怕的是"口头冻结",运营在群里说一句"这批货别动",没人进系统,最后照样被现货订单吃掉。
订单取消的释放顺序也要定好:预售订单取消,库存先回预售池,预售池满了再回现货池。别直接回现货,预售池要是空了,后面的预售订单就没得扣了。

熔断阈值不能拍脑袋
再好的公式也有算错的时候,所以最后一定要有一道熔断:当某个 SKU 的可用量跌破阈值,系统自动限购或下架,人工确认后才能恢复。
阈值怎么设?我的经验是两档:预售 SKU 按预售总量的 5% 设熔断线,比如预售计划 2 万件,剩 1000 件可卖时自动停售;现货 SKU 按日均销量的 2~3 天设。千万别设成 0,设成 0 等于没有熔断——系统从正数直接跳到负数,你连反应的时间都没有。
还有一个坑:熔断只管前台下单,管不住客服手动建单。我见过客服为了保 KPI,手动给超卖的 SKU 建单,最后还是超卖。所以熔断要连手动建单一起拦,至少弹强提醒,要二次确认。
熔断触发之后,恢复流程也要写死:谁有权恢复、恢复前要核对哪几个数、恢复后要不要补发短信通知客户。最忌讳的是运营随手点一下"恢复销售",库存数还是错的,半小时后又熔断,来回折腾三次,客户全跑光了。
最后说个扎心的:超卖的成本不只是退款。平台罚款、店铺评分掉、广告费白烧,这些加起来往往是货款的好几倍。那 6 万美金里,货款退款只占一小半,大头是赔偿和丢掉的复购。一个超卖的订单,丢掉的是这个客户未来三年的复购。
明天就能做的一件事:把你家销量前 20 的 SKU 拉出来,在 OMS 里打开库存冻结和超卖熔断,哪怕阈值先设得保守一点。跑一周,看看熔断触发了几次——每一次触发,都是系统替你挡下的一次超卖。







