Shopify Admin API

productSet 全量同步把没传的变体删掉了

现象#

用 productSet 只提交标题和价格做同步,跑完后商品的 tags、部分 metafields 和三个变体消失,后台活动记录只写了一条 Product updated。

原因#

  • productSet 对列表字段是集合语义,未出现在输入里的条目会被删除
  • 变体靠 optionValues 匹配,漏传或顺序变化会被当成新变体重建
  • 输入里没有变体 id 时走创建分支,重复提交会产出重复变体
  • 同步模式下变体超过 100 个容易超时,被截断后只写入一部分数据

处理步骤#

  1. 先查 product { id tags variants { id } } 作为输入底稿
  2. 只改标量字段时用 productUpdate,变体单独走 productVariantsBulkUpdate
  3. 必须用 productSet 时回传完整列表,每个变体带 id 与全部 optionValues
  4. 变体较多时传 synchronous: false,再轮询 productOperation 的状态
  5. 上线前在开发店跑同一份 JSONL,比对执行前后的 tags 与变体数量

验收标准#

同步后变体数、tags、metafields 数量与同步前一致,只有目标字段发生变化;操作状态最终为 COMPLETE。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。