データ移行案件(Woocommerce to Shopify)の振り返り
2025年1月〜4月の4ヶ月間、あるお客様(以下、B社)のWooCommerce から Shopify へのデータ移行案件を担当しました。
注文・商品・顧客・レビュー・ポイント・ブログなど、多岐にわたるデータをまとめて移行する必要があり、かなり複雑なプロセスとなりました。
本記事では、移行プロジェクトを通じて得た学びや気づきを振り返ります。
データ移行の手順や注意点はもちろん、事前にお客様へお伝えしておくべきポイントや、本番移行の流れなどについても整理し、今後の案件に活かしたいと考えています。
プロジェクト概要
今回のプロジェクトは、お客様が運営する WooCommerce サイトから Shopify ストアへ全面移行を行うものでした。WooCommerce からエクスポートしたデータを Shopify に取り込めるデータ形式に整形・変換してアップロードする必要がありました。
対象データは以下の通りです。商品データについては、今回はお客様と協力して手動で実施したため、対象外としました。(商品データの移行も複雑であるため別途マニュアル化が必要)
- 注文データ (購入日時、顧客情報、商品情報、送料の有無、支払いステータス、配送ステータス、配送先情報など)
- 顧客データ (メールアドレス、名前、住所、電話番号など)
- レビュー (レビュワーのメールアドレス、レビュータイトル、レビュー本文、星の数、対象商品)
- ポイント (メールアドレス、保有ポイント数)
- ブログ記事 (ハンドル、タイトル、画像や内部リンク含めた本文)
これらを、Shopifyアプリ:Matrixify(Bigプラン)を用いて移行を行いました。
データ移行の全体フロー
以下、要件ヒアリング〜本番リリースまでの注意点を記載します。
要件ヒアリングと見積もり
以下の点を押さえた上でお見積もりを行います。
データ投入にかかる時間
データ件数をヒアリングし、「データ投入」自体にかかる時間を推定し工数に反映します。開発時と本番時で2回移行する必要があること、エラーが複数回出ることなどを前提に含めてお見積もりをしましょう。また、この後各データについて注意点を記載するので、それも合わせてお見積もりを行いましょう。
参考:今回のB社のケース

※注文データについて、Woocommerceは1行に全てのline itemを管理するが、Shopifyは各line itemごと、送料ごとに行が分かれるため、行が増加する。また、最も時間を要する。
Matrixifyの料金はお客様に負担いただく必要あり
そもそも注文データやブログ記事データはShopifyデフォルトの機能ではインポートできません。また、データの形式によっては標準のインポート機能だと上手くいかない場合があるので、Matrixifyのご契約をお願いする必要があります。
また、ややこしいですが、Matrixifyを有料プランで契約するには、ストア自体を開発中ではなく公開状態にする必要があります。そのため、(Matrixifyの料金 + Shopifyの料金)× 開発期間(月数)分の契約が必要になります。
移行できないデータもある
- Woocommerceからエクスポートできないデータはそもそも移行できない
- WoocommerceにはあるがShopifyに存在しない項目がある。(どうしても必要な場合はメタフィールドを作って管理)
以上をお客様にお伝えしておきましょう。
本番リリース日はストアを閉める必要がある
注文データや顧客データは最新版に精緻化する必要があります。そのため本番リリース日は、現行サイトをクローズ→全データを移行→新サイトをオープン、という順番で作業を行う必要があり、その間はストアを長時間閉じておくことになります。
1回目のデータ移行
まず開発開始後に1回目のデータ移行を行います。1回目のデータ移行の目的は以下の通りです。
- データ移行の手順の確認をすること
- サイトの見栄えを確認すること(ブログ記事などを移行しないとCSS調整ができない)
- 改めてどのデータが移行できるか、お客様と早めにすり合わせること
1回目のデータが終わったら、必ず現行サイトと新サイトのデータを10個ほどピックアップして、一つひとつチェックしましょう。担当メンバー全員でレビューします。
また、この段階でお客様にもレビューを依頼しましょう。(この時点で、「このデータも移行したい!」という要望が出た場合は追加でお見積もりを行いましょう。)
本番移行準備
以下を実施します。
- 本番移行日、時間帯の擦り合わせ
- 本番移行計画の作成、レビュー
- メンテナンス画面の作成、レビュー(現行サイト/新サイト両方とも)
前日リハーサル
できれば前日に最新版のデータをエクスポート/インポートしておきましょう。目的は以下のとおりです。
- 1回目のデータ移行から間が空いている場合、手順を思い出すこと
- 本番リリース日の作業負担を減らすこと(例えばレビューが前日から増えない場合、本番当日は移行作業が不要になる可能性がある)
本番移行・リリース
当案件の本番移行メモはこちら
◯作業内容
WordPressサイトを閉じて、データを移行し直し、Shopifyサイトをリリースする。
◯当日までにやること
・Xserverのログイン情報を受け取り、ログインできるか確認しておく
・Shopifyの管理画面から、メンテナンスモードを開始しておく
◯当日
07:55 WordPressのメンテナンスモードを開始する (誰も買えない状態。プラグインMaintenanceで実装。)
08:00 Xserverにログインし、sample.comのAレコード、CNAMEレコードを変更する。
このとき、TTLを60にすると早く変更が反映される。(最後にTTLを忘れずに元に戻す)
08:05 Shopifyの管理画面から、ドメイン設定→sample.comを設定し、DNS情報を設定する
08:06 データ移行開始。最新のデータをエクスポートし、加工、インポートを行う。
12:00 テスト注文をして問題ないことを確認。TTLを元に戻す。
13:00 Shopifyのメンテナンスモードを解除して終わり。
アフターフォロー
以下のデータを整理してお客様に送ります。
- エラーが発生してインポートできなかったデータ
- Woocommerceから本番当日にエクスポートした最新のデータ(特に注文データ)
移行対象データごとの作業内容と注意点
以下、移行対象データごとの大まかな作業内容、難しかったポイント、注意点、データサンプルなどをまとめます。
データ投入の順番について
データ投入の順番は、「顧客」と「商品」を最初に入れて、その後他のデータを投入します。
理由としては、注文データやレビューデータが扱う顧客情報や商品情報を、あらかじめShopify内に作成しておかなければ、情報の紐付けがうまくいかずインポートエラーになってしまうからです。
そのため、例としては、「顧客」と「商品」を先に登録し、その後に、「注文」「レビュー」「ポイント」を入れるのが一般的です。
注文データ
購入日時、顧客情報、商品情報、送料の有無、支払いステータス、配送ステータス、配送先情報などが含まれます。
難しいポイントはデータの変換処理が多いところです。例えば以下の変換が必要となりGASを書いて対応します。
- Woocommerceの商品ID→Shopifyの商品IDまたは 商品ハンドル
- 都道府県名→都道府県コード
- Woocommerceの支払いステータス→Shopifyの支払いステータス
- Woocommerceの配送ステータス→Shopifyの配送ステータス
- Woocommerceの支払い方法→Shopifyの支払い方法
また、Woocommerceでは1行の中にline_item1, line_item2, line_item3・・・と複数の商品と送料が管理されていますが、Shopifyでは各line_itemを行ごとを分け、送料も別行で管理する必要があります。ここが処理を複雑にする点です。
さらに、スプレッドシートで加工する過程でデータ形式が変わってしまうケースにも注意が必要です。たとえば、住所の番地「2025-1」が日付形式の「2025/01/01」に変換されるなどのミスが起こり得ます。
また、Created Atデータ項目の日付も同じように変換ミスがあるので、Matrixifyが推奨しているフォーマットに統一「2025/04/08 9:00:25」にする必要があります。
商品データ
今回は移行対象外でしたが、以下のようなポイントがあるため、複雑な作業になる可能性が高いです。
- バリエーション商品がある場合は「Option1」「Option2」の形に展開
- バリエーション、SKU、その在庫数を紐づけて加工する必要がある
- 画像の移行、画像 URL の変換も必要
- Woocommerceのカテゴリー、タグ、Shopifyのコレクション、タグ、製品タイプの照合
- 移行後のCSS調整
顧客データ
Woocommerceは請求先住所と配送先住所を別々に管理していますが、Shopifyは「住所」という一つの項目でまとめて管理しています。Shopifyのほうが構造はシンプルです。
ARRAYFORMULA関数を使えば、さほど時間のかかる作業ではないと思われます。
レビュー
アプリはJudge meを使用しました。(当初、Growaveを利用する予定でしたが、「Growaveではニックネームが使えない」という理由で、Judge meに変更しました。)
構造はシンプルですが、以下に注意してください。
- 商品IDを照合し、変換する必要がある
- レビューに画像が含まれている場合、画像の移動とパスの変換が必要
ポイント
メールアドレスと保有ポイント数のみのシンプルな構成なので難易度は低めです。ただし、有効期限の引き継ぎができないことはお客様にしっかりお伝えしましょう。
ブログ
おそらく最も時間がかかるパートです。主な作業手順は以下のとおりです。
- ブログ記事内で使用されている画像も全て移行しておく
- 下書きの記事などが紛れ込む可能性があるため、対象記事だけに絞る
- ARRAYFORMULA関数でデータを並び替える
- 必要に応じてWordPress特有のクラス名を外す
- 画像パス・リンクをすべて変換(サムネイルも忘れずに)
大変だったことは以下のとおりです。特にパスの変換に苦戦しました。
- WordPressでは日本語名の画像を管理できるが、ShopifyにインポートするとASCII変換され英文字列になってしまう。事前に画像名を整える必要がある。
- WordPressでは画像が「uploads/2025/01/hogehoge.png」のように、年月フォルダに管理されるため、一括で置換することができない。
- WordPressでは「「uploads/2025/01/hogehoge.png」と「uploads/2025/02/hogehoge.png」が別画像として扱える。別の名前で管理しておく必要がある
- 記事のなかでおすすめ商品のリンクを貼っている場合、それも変換またはリダイレクト設定をしないと404になる。
- どんな表示崩れが起こるか予想がつかないため、一つひとつの記事を開いて上から下までチェックする必要がある。(お客様に手伝ってもらうのも有効)
- 移行後にCSS調整する必要がある。
まとめ
他サイトから Shopify への移行は、フォーマットの違いやステータスの扱いの差など、数多くのポイントでつまずく可能性があります。また、本番リリース時はストアを一時クローズしなければならず、顧客体験や売上に影響があるため、事前の綿密な計画とテストが欠かせません。
今後、同様の移行案件が増えることを見据え、本記事を社内マニュアルとして活用し、プロジェクトを円滑に進めていきたいと思います。また、データ移行作業の経験がないメンバーでも「こういう流れで進めるのか」「こういう部分が難しいのか」と理解してもらうきっかけになれば幸いです。
補足(Matrixifyの詳細な仕様について)
Matrixifyのドキュメントはこちら。
https://matrixify.app/documentation/
また、Matrixifyの仕様に困った場合は、以下のContact usからSlackに参加すると、最新の情報や他の方の質問を見ることができます。
https://matrixify.app/contact-us/