迁移指南
从 Shopify、WooCommerce、Magento 等平台迁移到 ShopFaaS 的完整指南,含数据导出、格式转换、导入步骤。
本指南帮助从其他电商平台迁移到 ShopFaaS。ShopFaaS 提供 CSV 导入工具与 API,支持从主流平台平滑迁移商品、客户、订单等数据。
迁移前准备
-
评估迁移范围
确定需要迁移的数据:
数据类型 推荐迁移 说明 商品 ✅ 含标题、描述、价格、图片、变体、库存 客户 ✅ 含姓名、邮箱、地址 订单 ⚠️ 可选 历史订单迁移复杂,建议仅迁移近 6 个月 折扣码 ⚠️ 可选 建议在 ShopFaaS 重新创建而非迁移 博客 ✅ 含标题、内容、图片 自定义页面 ✅ 关于我们、联系客服等 -
在 ShopFaaS 创建店铺
按 注册开店指南 创建新店铺,完成基础设置(币种、语言、收款、配送)。
-
导出原平台数据
按下方对应平台的导出指南操作。
-
格式转换
将导出的数据转换为 ShopFaaS 支持的 CSV 格式。
-
导入 ShopFaaS
在后台「设置 → 数据导入」上传 CSV 文件。
-
验证数据
抽查导入的商品、客户、订单,确认数据完整正确。
-
切换域名
确认新店铺运行正常后,将域名 DNS 从原平台切换到 ShopFaaS。
从 Shopify 迁移
1. 导出 Shopify 数据
在 Shopify 后台导出数据:
- 商品:
产品 → 所有产品 → 导出,选择 CSV 格式 - 客户:
客户 → 所有客户 → 导出 - 订单:
订单 → 所有订单 → 导出(仅迁移近 6 个月)
2. 转换商品 CSV 格式
Shopify 商品 CSV 与 ShopFaaS 格式接近,需调整以下字段:
| Shopify 字段 | ShopFaaS 字段 | 转换说明 |
|---|---|---|
Handle | handle | 直接映射 |
Title | title | 直接映射 |
Body (HTML) | description | HTML 标签保留 |
Vendor | vendor | 直接映射 |
Variant Price | price | 直接映射 |
Variant SKU | sku | 直接映射 |
Image Src | image_url | 直接映射(图片需可公开访问) |
Status | status | active → ACTIVE,draft → DRAFT |
3. 导入 ShopFaaS
在 ShopFaaS 后台「设置 → 数据导入 → 商品」上传转换后的 CSV。
4. 迁移客户
Shopify 客户 CSV 转换:
| Shopify 字段 | ShopFaaS 字段 | 转换说明 |
|---|---|---|
Email | email | 直接映射 |
First Name | first_name | 直接映射 |
Last Name | last_name | 直接映射 |
Phone | phone | 直接映射 |
Accepts Marketing | subscribed | yes → true,no → false |
从 WooCommerce 迁移
1. 导出 WooCommerce 数据
使用 WooCommerce 内置导出工具:
- 商品:
WooCommerce → 产品 → 导出 - 客户:通过 WordPress 用户导出插件
- 订单:
WooCommerce → 订单 → 导出
2. 转换商品 CSV 格式
WooCommerce 商品 CSV 需转换的字段较多:
| WooCommerce 字段 | ShopFaaS 字段 | 转换说明 |
|---|---|---|
Name | title | 直接映射 |
Description | description | 直接映射 |
Regular price | price | 直接映射 |
SKU | sku | 直接映射 |
Stock | inventory | 直接映射 |
Categories | collection | 逗号分隔转为集合 handle |
Images | image_url | 多图片用逗号分隔 |
Type | type | simple → SIMPLE,variable → VARIABLE |
3. 处理变体
WooCommerce 变体商品需额外处理:
- 父商品标记为
VARIABLE类型 - 每个变体作为单独行,
parent_handle字段指向父商品 - 变体属性(颜色/尺码)映射到
options字段
从 Magento 迁移
1. 导出 Magento 数据
Magento 数据导出较复杂,建议使用 Magento 的 REST API 导出:
# 示例:通过 API 导出商品
curl -X GET "https://your-magento.com/rest/V1/products/searchCriteria=all" \
-H "Authorization: Bearer your-magento-token" \
-o products.json
2. 转换数据格式
将 Magento JSON 响应转换为 ShopFaaS CSV:
// 示例转换脚本
import fs from "fs";
const magentoProducts = JSON.parse(fs.readFileSync("products.json", "utf-8"));
const shopfaasCsv = magentoProducts.items.map(p => ({
handle: p.sku.toLowerCase().replace(/\s+/g, "-"),
title: p.name,
description: p.custom_attributes.find(a => a.attribute_code === "description")?.value || "",
price: p.price,
sku: p.sku,
inventory: p.extension_attributes.stock_item?.qty || 0,
status: p.status === 1 ? "ACTIVE" : "DRAFT",
}));
// 导出为 CSV
fs.writeFileSync("shopfaas-products.csv", convertToCsv(shopfaasCsv));
3. 迁移客户与订单
Magento 客户与订单数据量大时建议分批迁移,每批 500 条。
使用 API 批量迁移
对于大规模数据或需要定制化迁移逻辑的场景,使用 REST API 批量导入:
// 批量导入商品示例
import fs from "fs";
import { parse } from "csv-parse";
const records = [];
fs.createReadStream("products.csv")
.pipe(parse({ columns: true }))
.on("data", row => records.push(row))
.on("end", async () => {
// 分批处理,每批 50 条
const batchSize = 50;
for (let i = 0; i < records.length; i += batchSize) {
const batch = records.slice(i, i + batchSize);
await Promise.all(
batch.map(product =>
fetch("https://your-store.com/api/products", {
method: "POST",
headers: {
"X-ShopFaaS-API-Key": process.env.SHOPFAAS_API_KEY!,
"Content-Type": "application/json",
},
body: JSON.stringify(product),
})
)
);
console.log(`已导入 ${Math.min(i + batchSize, records.length)}/${records.length}`);
// 避免 API 限流
await new Promise(resolve => setTimeout(resolve, 1000));
}
});
迁移后检查清单
-
商品检查
- 抽查 10 个商品的标题、价格、库存、图片是否正确
- 检查变体商品是否完整迁移
- 确认集合分类是否正确
-
客户检查
- 抽查客户邮箱、姓名、地址
- 向客户发送密码重置邮件
-
订单检查(如迁移)
- 抽查订单号、金额、商品明细
- 确认订单状态映射正确
-
前端检查
- 访问前台确认商品页面正常显示
- 测试购物车与结账流程
-
SEO 检查
- 确认 URL handle 与原平台一致(或设置 301 重定向)
- 提交新 sitemap 到搜索引擎站长平台
-
域名切换
- 确认新店铺运行正常
- 将域名 DNS 切换到 ShopFaaS
- 在原平台设置 301 重定向到新店铺