指南
如何在 Shopify 中批量上传产品
Shopify 可以通过 CSV 文件一次创建或更新多个产品。这里介绍导入的工作方式、容易出问题的地方,以及当您的产品数据源于供应商 PDF 时该怎么办。
Shopify 的产品 CSV 导入是批量添加目录的标准方式。您按照 Shopify 的格式准备电子表格,在后台上传,Shopify 就会创建产品、变体和图片。
与任何导入一样,成败取决于您放入的数据。本指南涵盖 CSV 流程、替代方案,以及能让您免于事后清理数百个产品的前期准备。
方案 1:在 Shopify 后台导入产品 CSV
在 Shopify 后台,前往“Products”并选择“Import”。上传符合 Shopify 产品格式的 CSV,决定是否覆盖具有相同 Handle 的产品,预览后确认。Shopify 会在后台处理该文件,完成后通知您。
- 从 Shopify 的示例产品 CSV 模板开始,或导出一个现有产品以查看确切的列。
- URL handle 列(旧版模板中为 Handle)用于标识一个产品;共享同一个 handle 的行是同一产品的变体或额外图片。
- 常用列包括 Title、Description(Body (HTML))、Vendor、Product category、Type、Tags、Status、Option1 name / Option1 value、SKU(Variant SKU)、Price、Barcodes(Variant Barcode)和 Product image URL(Image Src)。
- 图片在导入时从公开 URL 获取。
- 请将文件保存为 UTF-8 CSV,以保证特殊字符完好无损。
正确处理变体
变体是大多数人首次导入时容易出错的地方。每个产品最多可有三个选项(例如尺寸、颜色、材料)。产品的第一行包含产品级字段和选项名称;之后每一个具有相同 Handle 的行添加一个变体,包含其选项值、SKU、价格和库存。
各行的选项名称应保持一致,并且每个变体的选项值组合必须唯一,使每一行恰好对应一个变体。如果某一行有变体列,但没有 Option1 name 和 Option1 value,Shopify 会创建一个默认变体并删除现有变体。
方案 2:批量导入应用
Shopify App Store 中的导入应用扩展了原生 CSV 功能:支持 Excel 和 Google 表格、元字段、从供应商数据源定时导入,以及从其他平台迁移。当您需要反复导入,或需要标准 CSV 未涵盖的字段时,值得考虑这类应用。
方案 3:Shopify Admin API
应用和自定义集成可以通过 Shopify 的 Admin API 而不是 CSV 文件来创建产品。这样可以完全避免电子表格的往返处理,许多目录和商品列表工具正是以这种方式在 Shopify 中创建产品的。
Doc2Shelf 走的就是这条路径:您通过 OAuth 连接店铺,经审核的商品列表会作为草稿产品创建,并附带图片、价格和类目。
为 Shopify 准备产品数据
在任何批量上传之前,请检查:
- 每个产品都有唯一的 Handle,每个变体都有唯一的 SKU。
- 标题遵循统一的模式(例如品牌 + 产品 + 关键属性)。
- 描述是您自己撰写的文案,而不是粘贴的供应商文字,并使用简单的 HTML。
- 规格参数的单位和名称保持一致,以便将其转化为选项、标签或元字段。
- 产品先以未发布状态导入,以便在上线之前审核一部分样品。
当产品数据来自供应商 PDF 时
CSV 导入的前提是您已经拥有干净、结构化的数据。当供应商以 PDF 形式发送规格表和目录时,必须有人先提取标题、规格和标识码,并撰写描述——这通常是整个工作中最慢的环节。
Doc2Shelf 取代了这一步:它读取供应商 PDF,提取产品数据并附上置信度信息供审核,起草 Shopify 商品列表文案,并在您已连接的店铺中以草稿形式创建经审核的产品,无需 CSV。
Shopify 产品 CSV 列:当前名称与旧版对应名称
Shopify 重命名了若干产品 CSV 列。其当前的 CSV 参考文档使用 URL handle、Description、SKU 和 Barcodes 等标签,而许多模板和教程仍显示 Handle、Body (HTML)、Variant SKU 和 Image Src。Shopify 表示其保持对旧列名的向后兼容,因此旧文件仍可导入——但新导出的文件使用当前标签,而混用两种风格的文件很难检查。
该表涵盖大多数批量上传所需的列。从 Barcode 重命名为 Barcodes 在 Shopify 文档中有明确说明;其他旧标签是根据各字段所含内容对应的,因此请对照您自己店铺的导出文件进行确认。表头区分大小写。
| 当前列名 | 内容 | 示例 | 旧版标签或备注 |
|---|---|---|---|
| Title | 产品名称 | Stainless steel kettle 1.7 L | 创建产品时必填。 |
| URL handle | 产品 URL 中使用的唯一产品标识符 | steel-kettle | 旧版模板中称为 Handle。共享同一个 handle 的行属于同一个产品。 |
| Description | 产品描述 | Cordless kettle with… | 旧版模板中称为 Body (HTML)。 |
| Vendor | 品牌或制造商 | Acme | — |
| Product category | Standard Product Taxonomy 类目 | hg-15-1-2 | 完整的层级路径或类目 ID,不要两者都填。 |
| Type | 您自己的产品类型 | Electric kettle | 自由格式,与类目不同。 |
| Tags | 以逗号分隔的标签 | cordless, kitchen | 每个产品最多 250 个标签。 |
| Status | 产品状态 | draft | 以草稿形式导入,审核后再激活。 |
| SKU | 变体 SKU | KTL-SLV | 旧版模板中称为 Variant SKU。 |
| Barcodes | 变体的条形码 | gtin:4006381333931 | 原名 Barcode(更早为 Variant Barcode)。多个条形码用分号分隔;类型前缀可选。 |
| Option1 name / Option1 value | 第一个选项及该变体的值 | Color / Silver | Option2 和 Option3 的模式相同。 |
| Option1 LinkedTo | 从选项到类目元字段的链接 | product.metafields.shopify.[attribute] | 可选;参见下文的分类体系一节。 |
| Price / Compare-at price | 售价和对比价 | 49.90 / 59.90 | Price / [Market] 列保存特定市场的价格。 |
| Inventory quantity | 现有库存 | 25 | 与 Inventory tracker 列配合使用。 |
| Weight value (grams) | 以克为单位的变体重量 | 1200 | 旧版模板中称为 Variant Grams。Weight unit for display 设置购物者看到的单位。 |
| Product image URL | 产品图片的公开 URL | https://cdn.example.com/kettle.jpg | 旧版模板中称为 Image Src。 |
| Image position / Image alt text | 图库顺序和替代文字 | 1 / Steel kettle, front view | 替代文字最多 512 个字符。 |
| Variant image URL | 选中该变体时显示的图片 | https://cdn.example.com/kettle-black.jpg | — |
| SEO title / SEO description | 搜索结果中的标题和元描述 | — | 分别最多 70 和 320 个字符。 |
| 元字段列 | 产品元字段的值 | Material (product.metafields.custom.material) | 表头格式:Name (product.metafields.namespace.key)。 |
变体和选项:限制与陷阱
一个 Shopify 产品最多可有三个选项——例如 Size、Color 和 Material——以及最多 2,048 个变体。在 Shopify 于 2025 年 10 月提高该限制之前,变体上限为 100,因此更早编写的模板和指南仍引用旧的数字。一些主题、应用和销售渠道是围绕旧限制构建的,所以在导入拥有数百个变体的产品之前,请先检查您的环境是否支持。
产品的第一行包含产品级字段和选项名称。使用同一个 URL handle 的后续每一行会增加一个变体,包含其选项值、SKU、价格、重量和库存,并将产品级字段留空。
有两种行为会在更新导入时让人措手不及。如果某一行包含 SKU 或重量等变体列,却省略了 Option1 name 和 Option1 value,Shopify 会创建一个默认变体并删除现有变体。而且,更改选项值——例如把“Grey”改为“Gray”——会删除原有变体 ID 并创建新的 ID,这可能破坏引用这些 ID 的应用和数据源。
| 行 | URL handle | Title | Option1 name | Option1 value | SKU |
|---|---|---|---|---|---|
| 第一行 | steel-kettle | Steel kettle | Color | Silver | KTL-SLV |
| 下一行 | steel-kettle | (空) | (空) | Black | KTL-BLK |
Shopify CSV 中的产品图片
Shopify 在导入期间从 Product image URL 列下载图片,因此每个 URL 都必须可公开访问,并直接指向图片文件。图片丢失的常见原因包括:链接需要登录、打开的是预览页面,或在导入运行之前已过期。
一个产品最多可包含 250 张图片或其他媒体。将第一张图片放在产品的第一行;每增加一张图片,就另起一行,填写相同的 URL handle、图片 URL、Image position 和 Image alt text。若要在购物者选择某个变体时显示特定图片,请把其 URL 填入该变体所在行的 Variant image URL。
替代文字最多可达 512 个字符,Shopify 建议不超过 125 个。请描述图片所显示的内容——例如“不锈钢水壶,带水位计的正面视图”——而不是重复产品标题。
Product category、元字段与 Standard Product Taxonomy
Product category 列从 Shopify 的 Standard Product Taxonomy 中分配一个类目,按产品的主要功能选择。可以输入完整的层级路径,如 Home & Garden > Linens & Bedding > Bedding > Bed Sheets,也可以输入类目 ID,如 hg-15-1-2——不要两者都填。没有类目的产品会被视为未分类。
设置类目后会解锁其类目元字段,分类体系将其称为产品属性。例如,Shopify 的 Shirts 类目有九个,包括 size、neckline、fabric 和 color,其中颜色值可以显示为色板。Option1 LinkedTo 列将变体选项与这些类目元字段之一关联起来。
类目的作用不止于导航:Shopify Tax 用它来设定税率。相比之下,Type 是由您自己定义的自由格式标签,适用于您自己的筛选器和报表。
自定义产品元字段通过表头为 Name (product.metafields.namespace.key) 的列导入,例如 Material (product.metafields.custom.material)。产品 CSV 不支持变体元字段,因此请在后台、通过应用或通过 API 设置这些元字段。
Shopify CSV 限制与 SEO 字段长度
这些是 Shopify 文档记载的产品 CSV 导入和产品记录的限制。旧指南中的数字——尤其是 100 个变体的限制——已经过时。
SEO title 和 SEO description 列分别填充搜索结果中使用的标题和元描述。请针对每个产品单独撰写,而不是在整个目录中套用同一种模式:以产品名称和购物者搜索的属性(如尺寸、材质或型号)开头。
| 项目 | 限制 | 应对方法 |
|---|---|---|
| CSV 文件大小 | 15 MB | 拆分大型目录;同一产品的所有行放在同一个文件中。 |
| 每个产品的选项数 | 3 | 将其他差异建模为单独的产品或元字段。 |
| 每个产品的变体数 | 2,048 | 检查您的主题和应用是否能处理大量变体。 |
| 每个产品的图片和媒体数 | 250 | 图库只保留有助于购物者做决定的图片。 |
| 每个产品的标签数 | 250 | 使用标签进行筛选和自动化。 |
| 每个产品或变体的条形码数 | 20 | 在知道类型的情况下,添加 gtin: 之类的类型前缀。 |
| SEO 标题 | 70 个字符 | 以产品名称和关键属性开头。 |
| SEO 描述 | 320 个字符 | 概括产品,关键细节放在前面。 |
| 图片替代文字 | 512 个字符(建议不超过 125 个) | 描述图片所显示的内容。 |
覆盖还是创建:更新的行为方式
创建产品时,CSV 只需要 Title;添加变体还需要 URL handle。更新现有产品时,Shopify 需要 URL handle 和 Title,并且您在开始导入时选择是否覆盖 handle 相同的产品。
请将覆盖视为对您包含的每一列都具有最终效力。最安全的做法是导出、编辑、重新导入:导出您想要更改的产品,仅编辑需要更改的单元格,保持选项列不变,并在开启覆盖的情况下导入编辑后的文件。从零开始构建的稀疏文件很容易触发上文所述的变体删除行为。
确认之前先阅读导入预览,并先对少量产品运行大规模更新。您在编辑之前做的导出,是出现问题时的退路。
导入前检查清单与故障排除
大规模导入前请逐一完成以下步骤;之后的表格涵盖最常出现的问题。
- 从您的店铺导出一个产品并沿用其表头行,使列名完全一致。
- 为每个产品指定唯一的 URL handle,为每个变体指定唯一的 SKU。
- 检查选项名称和值的拼写是否一致,并确认每个变体行都有其选项值。
- 用从分类体系中复制的层级路径或 ID 填写 Product category。
- 在隐私浏览窗口中打开部分图片 URL,确认无需登录即可加载。
- 首次运行时将 Status 设置为 draft。
- 保存为 UTF-8 CSV,并确认文件小于 15 MB。
- 先导入五到十个产品,在后台和店面中检查,然后再导入其余产品。
| 问题 | 可能的原因 | 解决办法 |
|---|---|---|
| 文件被拒绝 | 大于 15 MB,或未保存为 UTF-8 CSV | 按产品拆分文件并重新保存为 UTF-8 CSV |
| 列被忽略 | 表头拼写错误或大小写不同 | 从新的导出文件中复制表头 |
| 更新后变体消失 | 发送了变体列,但没有 Option1 name 和 value | 包含选项列后重新导入 |
| 应用丢失了变体 | 某个选项值被重命名,产生了新的变体 ID | 有意识地重命名选项值,并重新连接受影响的应用 |
| 产品被错误拆分或合并 | 同一产品各行的 URL handle 不一致 | 每个产品使用一个完全相同的 handle |
| 图片缺失 | URL 不公开、不是直接的文件链接,或已过期 | 将图片托管在稳定的公开 URL 上 |
| 类目未设置 | 层级路径输入错误,或同时提供了层级路径和 ID | 只使用其中一种,并从分类体系中复制 |
| 条形码不被接受 | 长度与所述类型不符 | GTIN:8、12、13 或 14 位;UPC:8 或 12 位;EAN:8 或 13 位 |
| 元字段值缺失 | 表头格式错误,或使用了变体元字段 | 使用 Name (product.metafields.namespace.key);在其他位置设置变体元字段 |
常见问题解答
- 如何免费在 Shopify 批量上传产品?
- 使用“Products → Import”下的内置 CSV 导入功能。每个 Shopify 套餐都包含该功能,可通过 Shopify 格式的 CSV 文件处理产品、变体和图片。
- 可以从 Excel 向 Shopify 上传产品吗?
- 原生导入器需要 CSV,因此请将 Excel 表格另存为使用 Shopify 列名的 UTF-8 CSV。部分导入应用可以直接读取 Excel 文件。
- CSV 导入会覆盖我现有的产品吗?
- 只有当您选择覆盖具有相同 Handle 的产品这一选项时,现有产品才会被更新。确认之前请查看导入预览,并先用一个小文件测试。
- 为什么我的图片没有导入?
- 图片 URL 必须是可公开访问、直接指向图片文件的链接。需要登录、重定向到网页或来自临时文件分享的链接通常会失败。
- Shopify 产品 CSV 中哪些列是必填的?
- 创建产品只需要 Title,添加变体时还需要 URL handle。要更新现有产品,请同时包含 URL handle 和 Title。其他一切均为可选,不过一个可用的商品列表通常还需要价格、SKU、类目、描述和图片。
- 一个 Shopify 产品可以有多少个变体?
- 最多 2,048 个变体,最多三个选项。Shopify 于 2025年10月将上限从 100 个提高,因此仍引用 100 个的旧模板和旧指南已经过时。
- 可以通过 Shopify CSV 导入元字段吗?
- 产品元字段可以:添加一列,列标题为 Name (product.metafields.namespace.key)。变体元字段不支持通过产品 CSV 导入,需要在后台、通过应用或 API 设置。
- Shopify 产品 CSV 的最大文件大小是多少?
- 产品 CSV 不能超过 15 MB。较大的目录请拆分成多个文件,并将同一产品的所有行放在同一个文件中。