productSet 全量同步把没传的变体删掉了
现象#
用 productSet 只提交标题和价格做同步,跑完后商品的 tags、部分 metafields 和三个变体消失,后台活动记录只写了一条 Product updated。
原因#
productSet对列表字段是集合语义,未出现在输入里的条目会被删除- 变体靠
optionValues匹配,漏传或顺序变化会被当成新变体重建 - 输入里没有变体
id时走创建分支,重复提交会产出重复变体 - 同步模式下变体超过 100 个容易超时,被截断后只写入一部分数据
处理步骤#
- 先查
product { id tags variants { id } }作为输入底稿 - 只改标量字段时用
productUpdate,变体单独走productVariantsBulkUpdate - 必须用 productSet 时回传完整列表,每个变体带
id与全部 optionValues - 变体较多时传
synchronous: false,再轮询 productOperation 的状态 - 上线前在开发店跑同一份 JSONL,比对执行前后的 tags 与变体数量
验收标准#
同步后变体数、tags、metafields 数量与同步前一致,只有目标字段发生变化;操作状态最终为 COMPLETE。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。