
Shopify CSV注文作成の落とし穴と回避策|一括注文インポートを失敗させない確認ポイント
目次
- はじめに
- Shopify CSV注文作成・一括注文インポートでやりがちな5つの失敗
- 失敗1:注文だけは標準でインポートできない、を知らずに探す
- 失敗2:日本語CSVの文字化け(Shift-JIS / UTF-8 / BOM)を踏む
- 失敗3 と 失敗5:商品の対応付けミスと、二重アップロードによる重複
- 自作とアプリ、どちらで回避するか
- 失敗を回避できるアプリ「シンプル CSV 注文作成|お手軽一括注文インポート」
- アプリのインストール手順
- 失敗させない使い方の手順
- ユースケース別に必要な「確認カラム」が変わる
- テーマのコード編集で実装する場合のサンプルコード
- 失敗5を防ぐ:重複登録と、合わせて使いたい施策
- 運用のコツ
- よくある質問
- まとめ
- 参考記事
はじめに
別の EC システムから移行した過去注文を Shopify に流し込もうとして、CSV をアップロードする画面が見つからずに手が止まった。あるいは、Excel で作った注文 CSV を海外製アプリに通したら、顧客名がすべて文字化けして取り込まれた。Shopify CSV注文作成にまつわる相談は、こうした「うまくいかなかった」話から始まることがほとんどです。
注文を CSV でまとめて取り込めれば、一括注文インポートで数百件の処理が数分で終わります。ところが Shopify の 注文 CSV インポートは、商品や顧客の取り込みとは事情が違い、知らずに進めると同じところで何度もつまずきます。
この記事では「概念から順に説明する」のではなく、Shopify CSV注文作成・一括注文インポートで実際にやりがちな失敗を先に並べ、それを一つずつ潰すための確認ポイントとして、おすすめアプリ「シンプル CSV 注文作成|お手軽一括注文インポート」の使い方と、自前実装する場合のサンプルコードまでを整理します。
今回は、以下の記事を参考にしています。
- 【Shopify】CSV注文作成・一括注文インポートができるアプリ5選!手作業ゼロで注文を取り込む方法
- ShopifyでCSV注文作成・一括注文インポートができるアプリ6選を紹介!
- ShopifyでCSV注文作成・一括注文インポートができるアプリについて徹底解説|ご利用ガイド
Shopify CSV注文作成・一括注文インポートでやりがちな5つの失敗
最初に、つまずきポイントを一覧で押さえておきます。後半はこの 5 つをどう回避するかという視点で読み進めてください。
- 「注文 CSV」のインポート画面を管理画面で探し続けてしまう(そもそも標準には存在しない)
- Excel 保存の CSV をそのまま海外製アプリに通して、日本語が文字化けする
- バリアント ID や SKU の指定がずれていて、取り込みが途中で失敗する
- 過去注文の移行なのに注文確認メールが顧客へ大量送信されてしまう
- 同じ CSV を二度アップロードして、注文が重複登録される
いずれも事前に知っていれば避けられるものばかりです。一つずつ見ていきます。
失敗1:注文だけは標準でインポートできない、を知らずに探す
最初のつまずきは、Shopify の管理画面で注文 CSV インポートの入口を延々と探してしまうことです。結論を先に書くと、Shopify の標準機能には注文(オーダー)を CSV から取り込む仕組みがありません。
ここで意外と知られていないのが、Shopify の CSV インポートが対象によって対応が分かれているという非対称性です。商品・顧客・在庫は管理画面から CSV インポートに標準対応していますが、注文だけはエクスポート専用で、インポートは用意されていません。「商品を CSV で入れられたのだから注文もできるはず」という思い込みが、最初の遠回りを生みます。
注文の手動作成自体は「下書き注文」から 1 件ずつ行えますが、数十〜数百件をこの方法で捌くのは現実的ではありません。そのため、Shopify CSV注文作成・一括注文インポートを実現する手段は、実質的に次の 2 つに絞られます。
- Admin GraphQL API(draftOrderCreate)で自作スクリプトを書く:CSV を読み込み、API で下書き注文を作成するコードを自前で用意する
- CSV 注文作成に対応したアプリを導入する:管理画面に組み込んで、CSV をアップロードするだけで注文を一括作成する
「探しても見つからないのは設定の問題ではなく仕様」と理解できれば、ここで時間を浪費せずに済みます。次の失敗からは、この 2 手段それぞれで起きがちな落とし穴に踏み込みます。
失敗2:日本語CSVの文字化け(Shift-JIS / UTF-8 / BOM)を踏む
国内のストアで最も多いつまずきが、文字コードによる文字化けです。これは海外製アプリや海外の解説記事ではほとんど触れられない、日本市場ならではの落とし穴です。
理由はシンプルで、Excel で保存した CSV は多くの場合 Shift-JIS(CP932) になります。一方、海外製の注文インポートアプリは UTF-8 を前提にしているものが多く、Shift-JIS の CSV をそのまま通すと顧客名や住所が化けてしまいます。実際、海外製の「Order's up! CSV Order Importer」(Kampfire.dev 製)や、多プラットフォーム移行で知られる「Matrixify」(ITissible 製)は強力ですが、UI が英語で、日本語 CSV の文字コードまでケアした設計とは限りません。
回避の手順は次の通りです。
- CSV のエンコーディングが Shift-JIS か UTF-8 かを把握しておく
- 文字コードを自動判定してくれるアプリを選ぶ(手動変換の手間が消える)
- エラー行を再ダウンロードする際は、出力が BOM 付き UTF-8 かを確認する(Excel で開いても化けない)
この観点で見たとき、後述する「シンプル CSV 注文作成」は Shift-JIS / UTF-8 を自動判定し、エラー行の再出力は BOM 付き UTF-8 という、日本語 CSV を前提にした作りになっています。海外製の高機能アプリと迷ったときは、機能数の多さよりも「自店の CSV が文字化けしないか」を先に確かめるのが、遠回りしないコツです。
失敗3 と 失敗5:商品の対応付けミスと、二重アップロードによる重複
残りのつまずきのうち、バリアント ID / SKU の対応付けミス(失敗 3)と、同じ CSV の二度上げによる重複登録(失敗 5)は、いずれも「取り込む前に気づけるか」がカギになります。
商品の対応付けミスは、CSV のバリアント ID や SKU が Shopify 側の商品と一致していないと、その行の注文作成が失敗するというものです。100 件中 1 件でもずれていると、本番実行の途中で止まって原因探しに追われます。これを避けるには、本番の前にエラーチェックだけを走らせる「検証」を挟むのが定石です。バリアント ID の誤り、数量の不備、顧客情報の不足などを、注文を 1 件も作らずに洗い出せます。
重複登録は、同じ注文番号を含む CSV を二度アップロードしてしまったときに起きます。手作業の運用ではどうしても発生しがちですが、注文番号を指定した行に重複防止用のタグを自動付与し、すでに作成済みの注文をスキップする仕組みがあれば、事故を未然に防げます。
この 2 つは「フォーマットを整える手間」(失敗回避の前提コスト)とセットで語られることが多いポイントです。列名・形式を一から組むのは骨ですが、サンプル CSV を配布しているアプリを選べば、その負担は大きく軽減できます。
自作とアプリ、どちらで回避するか
ここまでの失敗は、自作スクリプトでもアプリでも回避できます。問題は「回避策を誰が作るか」です。
Admin API で自作する場合のボトルネック
自前実装は柔軟で月額費用もかかりませんが、文字コード変換・検証・エラー行の再処理をすべて自分で書く必要があります。とりわけ見落とされがちなのが、Admin GraphQL API のレート制限です。
Shopify の GraphQL Admin API は「リクエスト数」ではなくクエリコスト方式で、標準で 50 ポイント/秒、Advanced で 100、Shopify Plus で 500 ポイント/秒というバケットを消費します。draftOrderCreate を大量にループで回すとこのバケットを使い切るため、リトライや間隔調整を自作しないと、途中で弾かれて注文が虫食いになります。加えて、バリアント ID は gid://shopify/ProductVariant/... 形式で渡す必要があり、API バージョンも追従(2026 年時点で 2026-04 系)が必要です。「一度書いて終わり」ではなく保守が続くという現実は、数字で見ると無視できません。
アプリで回避する場合
アプリ導入なら、文字コードの自動判定・検証モード・エラー行の再ダウンロードといった回避策が最初から組み込まれた状態で使えます。月額費用は発生しますが、自作で必要な保守工数を肩代わりしてもらえると考えると、まとまった件数を扱うストアではむしろ割安になりがちです。特殊すぎる要件にはアプリが追いつかない場合もあるため、その点だけは事前に要件と突き合わせておきましょう。
最初の一歩としては、アプリで小さく試して効果を確かめ、どうしても要件が合わないときに自作を検討する順番が、失敗の少ない進め方です。
失敗を回避できるアプリ「シンプル CSV 注文作成|お手軽一括注文インポート」
ここからは、これまで挙げた失敗を一通り回避できるアプリとして「シンプル CSV 注文作成|お手軽一括注文インポート」を紹介します。日本語 UI で、文字コード・検証・重複防止まで日本のストアの実情に合わせて作られているのが、海外製アプリとの差別化軸です。
アプリの基本情報
- アプリ名:シンプル CSV 注文作成|お手軽一括注文インポート
- 料金:Basic Plan 月額 $19.99(7 日間の無料体験つき、年払いで実質 2 ヶ月分無料)
- 特徴:CSV から最大 100 件の注文を一括作成、Shift-JIS / UTF-8 自動判定、検証モード、エラー行の再ダウンロード
- 管理画面:日本語対応
筆者として補足すると、月額 $19.99 という価格帯は海外勢の有料プラン($7.99〜$19.99 程度)と並びますが、海外勢が英語 UI なのに対し、こちらは日本語 UI かつ 1 回最大 100 行という、国内 EC の現場感に合わせた割り切りが効いています。「機能を盛る」より「日本語 CSV を確実に通す」に寄せた設計だと捉えると分かりやすいです。
失敗1の回避:CSV をアップロードするだけで注文を一括作成
標準にない注文インポートを、専用 CSV のアップロードだけで実現します。1 回のインポートで最大 100 行(100 注文分)まで処理できるため、まとまった件数の注文データもまとめて取り込めます。

結果の確認:成功・失敗件数を一目で把握
インポートが終わると、成功件数と失敗件数が結果バナーに表示されます。エラーが出た行はエラー内容も併せて確認でき、どの行を直せばよいかがすぐに分かります。「全部入ったつもりが一部だけ失敗していた」という取りこぼしを防ぐための表示です。

失敗3の回避:検証モードで本番前にエラーを洗い出す
実際の注文作成は行わず、CSV の内容に問題がないかだけを確認する検証モードを用意しています。バリアント ID や数量の誤り、顧客情報の不足を事前に検出できるため、対応付けミスのまま本番を走らせて途中で止まる事故を防げます。大量の注文を扱うほど、この一手間が効いてきます。

失敗2の回避:エラー行を CSV でダウンロードして修正・再インポート
インポート中に発生したエラー行だけを、元の CSV と同じ形式でダウンロードできます。全行を見直す必要はなく、エラー行だけ直してそのまま再インポートすれば済みます。出力は BOM 付き UTF-8 のため、Excel で開いても文字化けしません。日本語 CSV の文字化け問題を運用面から潰す仕様です。

過去注文の再現:顧客情報・配送先・税金・割引まで細かく指定
顧客の姓名・メールアドレス・電話番号、配送先住所、配送方法、配送料、税金、固定額割引、注文メモ、タグ、注文日時まで、27 項目を CSV で指定できます。Shopify の注文 CSV で扱う主要項目(財務ステータス、明細名・数量・価格・SKU、配送料、税、割引額など)を一通りカバーするため、過去注文の正確な再現や複雑な注文の一括登録に向いています。

商品指定の柔軟さ:バリアント ID・SKU の 2 通り
商品の指定方法は、バリアント ID と SKU の 2 種類から選べます。バリアント ID 列に商品 ID を入力した場合は、自動でその商品の最初のバリアントが取得されるため、複数システムを併用していても照合しやすくなります。SKU やバーコードでの突き合わせが前提の卸・BtoB の現場でも、列の使い分けで対応できます。

アプリのインストール手順
本アプリは Shopify アプリストアからインストールできます。以下の手順に沿って進めてください。
-
Shopify 管理画面の左下にある「設定」をクリックします。

-
「アプリと販売チャネル」をクリックし、「Shopify アプリストア」へ移動します。

-
検索窓に「シンプル CSV 注文作成」と入力し、表示されたアプリをクリックします。

-
アプリ詳細画面で「インストール」をクリックします。

-
権限の確認画面が表示されますので、内容を確認のうえ「インストール」を完了します。

管理画面に設置するだけで、すぐに CSV から注文を一括作成できます。テーマへの追加作業は不要です。
失敗させない使い方の手順
ここからは、つまずきを避けながら一括注文インポートを進める手順です。各ステップに「ここで何を確認するか」を添えています。
1. CSV ファイルを準備する(フォーマット崩れを防ぐ)
まずは注文情報を記載した CSV を用意します。サンプル CSV はアプリの管理画面からダウンロードできるので、ゼロから列を組むのではなく、サンプルを土台に自店のデータへ置き換えるのが安全です。列名の手作りは失敗 3 の温床なので、ここで配布物を使う判断が効きます。

CSV の基本ルールは次のとおりです。
- エンコーディング:UTF-8 または Shift-JIS(アプリが自動判定)
- 最大行数:1 ファイルあたり最大 100 行(ヘッダー除く)
- 必須列:「顧客姓」「数量」「商品バリアント ID または SKU(どちらか一方)」
- 同じ注文番号の行:1 つの注文として複数商品を含められます
2. CSV ファイルをアップロードする
管理画面のアップロードエリアに、CSV ファイルをドラッグ&ドロップするか、ファイル選択ダイアログから選びます。Excel 由来の Shift-JIS でもそのまま渡して構いません(自動判定されます)。

3. インポート前に必ず検証する
本番の前に、検証モードで内容をチェックします。「検証のみ」ボタンを押すと各行のエラーチェックが走り、問題のある行番号とエラー内容が出ます。ここを飛ばすと失敗 3 を本番で踏むことになるため、件数が多いほど省略しないのがコツです。

4. 注文をインポートする(メール送信に注意)
検証が通ったら本番です。インポート時には注文の財務ステータス(支払済み/未払い)を選べます。ここで見落とすと失敗 4 につながるのが、注文確認メールの扱いです。過去注文の移行など、お客様にメールを送りたくない場合は「注文確認メールを顧客に送信する」のチェックを外してください(デフォルトは OFF)。

「インポート」ボタンを押すと CSV の各行が順番に処理され、進捗がリアルタイムで更新されます。

5. インポート履歴を確認する
過去のインポート結果は、管理画面の「インポート履歴」に最大 20 件まで保存されます。いつ何件取り込んだかが残るため、作業ログとして重複作業の確認にも使えます。

ユースケース別に必要な「確認カラム」が変わる
一括注文インポートが効くのは、おおむね次の 4 類型です。類型ごとに、揃えておくべき CSV 項目(=確認ポイント)が変わる点に注意してください。
他システムからの移行
別の EC カートや受注管理システムから乗り換える際、過去注文を CSV で書き出して Shopify に再現します。ここでの必須要件は 注文日時の過去日付指定と、注文確認メールの送信 OFF の 2 点です。これを忘れると、移行のたびにお客様へ余計なメールが飛ぶ(失敗 4)ことになります。
オフライン注文の登録
電話・FAX・店頭で受けた注文をまとめて登録します。実店舗と Shopify を併用しているストアでは、売上データの一元管理がしやすくなります。
卸・BtoB 注文の一括処理
取引先の注文書をもとに大量の注文を作成します。ここでは 同じ注文番号で複数明細をまとめることと、SKU / バーコード / バリアント ID での照合が要点です。同じ注文番号の行をまとめれば、複数商品を含む 1 注文として登録できます。
ライブコマース・ライブ販売
ライブ販売(live selling)イベントで受けた注文を後から一括登録する用途でも使えます。卸と同様、同一注文番号での明細まとめと、SKU 照合の正確さが取りこぼしを防ぎます。
テーマのコード編集で実装する場合のサンプルコード
アプリを使わず自前で CSV から注文を作りたい場合は、Shopify の Admin GraphQL API を使います。ここでは Node.js のサンプルを示します。前述のとおり、文字コード・検証・レート制限の対応は自作する前提になる点を踏まえてください。
実装の流れ
- CSV ファイルを読み込んでパースする
- 各行を下書き注文の入力データに変換する
draftOrderCreateミューテーションで下書き注文を作成する- 必要に応じて
draftOrderCompleteで注文を確定する
CSV を読み込む
まずは CSV を読み込み、1 行ずつオブジェクトに変換します。
import fs from 'node:fs';
import { parse } from 'csv-parse/sync';
// CSV ファイルを読み込んで配列に変換する
const readCsv = (filePath) => {
const content = fs.readFileSync(filePath, 'utf-8');
// 1 行目をヘッダーとして扱い、各行をオブジェクトにする
return parse(content, {
columns: true,
skip_empty_lines: true,
trim: true,
});
};
const rows = readCsv('./orders.csv');
ここで utf-8 を決め打ちしている点が、まさに失敗 2 の入口です。Excel 由来の Shift-JIS を扱うなら、読み込み時に文字コードを判定・変換する処理を足す必要があります。
下書き注文の入力データを組み立てる
CSV の各行を、draftOrderCreate に渡す入力データへ変換します。
// CSV の 1 行を下書き注文の入力に変換する
const toDraftOrderInput = (row) => ({
lineItems: [
{
// バリアント ID は gid 形式で指定する
variantId: `gid://shopify/ProductVariant/${row['商品バリアントID']}`,
quantity: Number(row['数量']),
},
],
email: row['顧客メールアドレス'] || undefined,
shippingAddress: {
lastName: row['配送先姓'],
firstName: row['配送先名'],
address1: row['配送先住所1'],
city: row['配送先市区町村'],
countryCode: row['配送先国コード'] || 'JP',
},
note: row['注文メモ'] || undefined,
tags: row['タグ'] ? row['タグ'].split(',') : [],
});
variantId は gid://shopify/ProductVariant/... の形式が必須です。CSV 側の値がただの数値 ID のままだと、ここで弾かれて失敗 3 を踏みます。
Admin GraphQL API で下書き注文を作成する
組み立てた入力データを使って、下書き注文を作成します。
const SHOP = 'your-shop.myshopify.com';
const TOKEN = process.env.SHOPIFY_ADMIN_TOKEN;
const DRAFT_ORDER_CREATE = `
mutation draftOrderCreate($input: DraftOrderInput!) {
draftOrderCreate(input: $input) {
draftOrder { id }
userErrors { field message }
}
}
`;
const createDraftOrder = async (input) => {
const res = await fetch(`https://${SHOP}/admin/api/2026-04/graphql.json`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Shopify-Access-Token': TOKEN,
},
body: JSON.stringify({ query: DRAFT_ORDER_CREATE, variables: { input } }),
});
const json = await res.json();
// userErrors を確認してエラーがあればログ出力
const errors = json.data?.draftOrderCreate?.userErrors ?? [];
if (errors.length > 0) {
console.error('下書き注文の作成に失敗しました:', errors);
return null;
}
return json.data.draftOrderCreate.draftOrder.id;
};
for (const row of rows) {
const draftOrderId = await createDraftOrder(toDraftOrderInput(row));
console.log('作成した下書き注文:', draftOrderId);
}
このループには注意が要ります。Admin GraphQL API はクエリコスト方式のレート制限を持ち、標準 50 ポイント/秒、Advanced 100、Shopify Plus 500 ポイント/秒のバケットを消費します。上のように draftOrderCreate を間隔なしで連続実行すると、件数が増えたときにバケットを使い切り、後半の行がエラーで弾かれます。実運用では、リクエスト間隔の調整とリトライ、そして失敗行の記録を必ず組み込んでください。
コード実装の注意点
- Admin API にはレート制限があるため、大量の注文を作成する場合はリクエスト間隔の調整やリトライ処理が必要です。
- バリアント ID は
gid://shopify/ProductVariant/...の形式で指定する必要があります。 - 日本語を含む CSV では文字コードに注意し、必要に応じて Shift-JIS から UTF-8 へ変換してください。
- エラーが発生した行を記録し、修正後に再実行できる仕組みを用意しておくと安全です。
自前実装も可能ですが、文字コード対応・検証機能・エラー行の再処理・レート制限対応まで含めると、開発・保守の負担は小さくありません。手間をかけずに確実に取り込みたい場合は、専用アプリの導入が現実的です。
失敗5を防ぐ:重複登録と、合わせて使いたい施策
最後に、二重アップロードによる重複(失敗 5)の回避策と、運用を一段効率化する組み合わせを整理します。
重複防止タグと顧客タグ・注文タグの活用
CSV のタグ列を使えば、インポートした注文に任意のタグを付与できます。「卸注文」「移行データ」「店頭注文」などを付けておけば、後から注文を絞り込んで分析したり、ワークフロー自動化に使えます。さらに本アプリでは、注文番号を指定した注文に自動で csv-import-ref-{注文番号} タグが付与され、同じ注文番号で再インポートしても作成済みの注文はスキップされるため、重複登録を防げます。手作業の運用で起きがちな二度上げ事故を、仕組みで吸収できるわけです。
一括フルフィルメントとの連携
注文を一括作成したら、出荷も一括で進めたいところです。追跡番号を CSV でアップロードして一括フルフィルメントできるアプリと組み合わせれば、作成から出荷までを通して効率化できます。
データのエクスポート・レポートとの連携
取り込んだ注文データは、エクスポート・レポート系のアプリと組み合わせることで、会計・ERP 連携や売上分析に活用できます。インポートとエクスポートをセットで運用すると、Shopify を中心としたデータ管理がまとまります。
運用のコツ
- 初めて使うときは、必ず検証モードで内容を確認してから本番インポートを行いましょう。
- まずは数件のサンプルでテストし、想定どおりに注文が作成されるか確認してから、本番データを取り込むと安心です。
- 過去注文を移行する際は、注文確認メールの送信を OFF にしておきましょう。
- エラーが出た場合は、エラー行だけをダウンロードして修正・再インポートすれば効率的です。
よくある質問
Q. 1 つの注文に複数の商品を含めるには?
CSV の「注文番号」列に同じ番号を入れた行が、1 つの注文にまとめられます。3 行に同じ注文番号を入れれば、3 商品を含む 1 注文が作成されます。
Q. 顧客情報がなくても注文を作成できますか?
「顧客姓」「数量」「商品バリアント ID または SKU」さえあれば作成できます。顧客情報がない場合は、顧客に紐付かないゲスト注文として作成されます。
Q. 同じ CSV を 2 回アップロードしてしまったらどうなりますか?
注文番号が指定されている注文には自動で csv-import-ref-{注文番号} タグが付与されます。同じ注文番号で再度インポートを実行すると、すでに作成済みの注文はスキップされるため、重複登録を防げます。
Q. 過去の日付で注文を作成できますか?
はい。CSV の「注文日時」列に過去の日時を指定することで、過去日付の注文として作成できます。ストア移行などで元の注文日時を保持したい場合に便利です。
Q. Shift-JIS の CSV でも使えますか?
はい。本アプリは Shift-JIS と UTF-8 を自動判定するため、どちらの文字コードの CSV でも文字化けなく取り込めます。Excel で作った CSV をそのまま渡せます。
Q. Shopify の標準機能で注文を CSV インポートできますか?
いいえ。商品・顧客・在庫は標準で CSV インポートできますが、注文はエクスポート専用でインポート機能がありません。CSV からの一括作成には、Admin API での自作か、本アプリのような専用アプリが必要です。
まとめ
Shopify CSV注文作成・一括注文インポートでつまずく原因は、ほぼ次の 5 つに集約されます。
- 注文だけは標準で CSV インポートできない、という仕様を知らずに探す
- Shift-JIS の CSV を海外製アプリに通して文字化けさせる
- バリアント ID / SKU の対応付けがずれて途中で失敗する
- 過去注文の移行なのに注文確認メールを送ってしまう
- 同じ CSV を二度上げして注文が重複登録される
これらはいずれも、検証モード・文字コード自動判定・メール送信 OFF・重複防止タグといった回避策で先回りできます。「シンプル CSV 注文作成|お手軽一括注文インポート」は、これらを日本語 UI で最初から備えた、注文の一括作成に特化したアプリです。自作する場合はレート制限と文字コードの自前対応が前提になるため、まずはアプリで小さく試すのが、失敗の少ない始め方です。
CSV 注文作成・一括注文インポートを手軽に始めたい方は、ぜひ以下のアプリストアからインストールしてみてください。
参考記事
今回は、以下の記事を参考にしています。







