ShopifyのユーザーをCSVで一括作成する ― Admin/POSの違いと実践パターン集

ShopifyのユーザーをCSVで一括作成する ― Admin/POSの違いと実践パターン集

2026年8月21日、Shopifyのchangelogで、ユーザーアカウントをCSVで一括作成・停止・再開できる機能が公開されました。季節雇用やイベント出店で人の入れ替わりが多いストアには特に効きます。ただ、実際に触ってみると「Adminユーザーとは何を指すのか」「POSユーザーはどう認証されるのか」といった、CSVの列だけでは分からない前提知識が必要でした。この記事では、その前提整理と、公式サンプルCSVを使った実践パターンをまとめてみました。

そもそも、ユーザーには2種類ある

CSVには user_type という列があり、値は AdminPoint of sale の2択です。ここが最初につまずきやすいポイントでした。

「Admin」という名前ですが、権限の広さとは関係ありません。「カスタマーサポート業務だけ」「商品登録だけ」のような、権限を絞ったロールのスタッフであっても、メールアドレスとパスワードでShopify管理画面にログインする以上は Admin に分類されます。分岐点は権限の広さではなく、「管理画面にログインするかどうか」です。

一方の Point of sale は、レジ端末(POSアプリ)だけを使うスタッフ専用のカテゴリです。管理画面にはログインできず、メールアドレスも不要。4〜6桁のPINだけで認証します。

Admin Point of sale
ログイン先 Shopify管理画面 POSアプリのみ
認証方法 メールアドレス+パスワード 4〜6桁のPIN
権限が絞られたスタッフ こちらに含まれる
メールアドレス 必須 不要(任意)

メールアドレスの無いPOSユーザーは、どうログインするのか

ここが2階建ての構造になっています。

  • 端末レベルの認証:レジ端末(iPad等)そのものは、店舗オーナーなどAdmin権限を持つスタッフが、最初に1回だけメールアドレス+パスワードでログインしておく必要があります
  • 個人レベルの認証:その端末が認証済みになった後は、PINを持つ複数のPOSユーザーが、ロック画面から自分のPINで入れ替わりでログイン・ログアウトできます

1台のレジを複数人がシフトで共有するとき、いちいちメール+パスワードで切り替えなくて済む仕組みです。よくある小売店レジの「担当者切り替え」と同じ発想だと考えると分かりやすいです。

実際に踏んだハマりどころ:CSVでPOSユーザーを新規作成した直後、正しいPINを入力しても「もう一度お試しください」で弾かれることがありました。少し時間を置いてから再度試すと通ったので、作成直後は反映にラグがあるようです。すぐに使えないからといって、PINの再発行や設定の見直しに走る前に、一度時間を置いて試すとよさそうです。

インポートCSVの列

管理画面の「設定 > ユーザー > インポート」から、公式のサンプルCSVをダウンロードできます。列は13個です。

列名 説明
id 空欄=新規作成。既存の数値ID=そのユーザーの更新
user_type Admin または Point of sale
email Adminは必須。POSは任意
phone POS向け。メールの代わりに識別情報として使える
given_name / family_name 名・姓。Adminは招待受け入れ後に本人が入力するため省略可
status 新規作成時は空欄。既存ユーザーをActive/Suspendedに変更するときに使う
role_name 既存のロール名と完全一致が必須。新規ロールは作れない
group_name Shopify Plusのみ。既存グループ名と完全一致
store_name 対象ストア名。完全一致が必須
pos_location_name POSユーザーの勤務ロケーション名。完全一致が必須
all_current_and_future_locations TRUE/FALSE。今後追加されるロケーションも含めて許可するか
pin POS系ロールのPIN。新規作成時のみ設定可能で、既存ユーザーのPIN変更はインポートでは不可。空欄のままにすると、インポート側が自動でPINを生成する

「設定 > ユーザー > エクスポート」で出力されるCSVには、この13列に加えて created_at / tfa_enforced / role_category / added_at という参考情報の列も付きます。これらはインポートの仕様には無い列なので、書いても反映されません。

できないこと

CSVで完結すると思うと詰まる箇所です。次のことはインポートではできません。

  • ユーザーの一括削除(Suspendedにするところまで)
  • 二要素認証の設定・変更
  • 既存ユーザーのPIN変更
  • 既存ユーザーの user_type(Admin⇄POS)の変更
  • 新しい役割名・グループ名・ロケーション名の作成(すべて既存の名称と完全一致が必要)

実践パターン集

公式サンプルCSVの中身を、シナリオ別に分けて紹介します。同じ人物に複数の行を使うときは、識別情報(user_type / email / given_name / family_name / phone)を全行で完全に一致させるのが鉄則です。ここがずれると、同じ人のつもりが別人として重複登録されます。

各パターンをテーブルで示します。列の並びはCSVと同じ(id, user_type, email, phone, given_name, family_name, status, role_name, group_name, store_name, pos_location_name, all_current_and_future_locations, pin)です。空欄は「–」で表しています。

① 新規Adminユーザー(シンプル)

id user_type email phone given_name family_name status role_name group_name store_name pos_location_name all_current_and_future_locations pin
Admin tanaka@example.jp カスタマーサポート サンプルストア

idは空欄=新規作成。氏名と電話番号も空欄で構いません。公式ドキュメントにも「招待を受け入れた本人が、その時に氏名・電話番号を入力できるよう空欄にしておく」と明記されています。新規作成の行にあらかじめ値を入れておく必要はありません。

② 新規POSユーザー(1ロケーション)

id user_type email phone given_name family_name status role_name group_name store_name pos_location_name all_current_and_future_locations pin
Point of sale sato@example.jp 花子 佐藤 販売スタッフ サンプルストア 渋谷店 FALSE

POSは氏名が実質必須。メールアドレスは無くても構いません。pinもこの例のように空欄にできます。POS系のロールでは、PINを指定すればその値が使われ、空欄のままにするとインポート側が自動でPINを生成します。とりあえず作成だけしておいて、PINは後で個別に確認したい場合に使える書き方です。

③ 新規POSユーザー(PIN付き・全ロケーション許可)

id user_type email phone given_name family_name status role_name group_name store_name pos_location_name all_current_and_future_locations pin
Point of sale 090-1234-5678 大輔 鈴木 販売スタッフ サンプルストア TRUE 1234

メールを省略し、電話番号で識別。all_current_and_future_locationsTRUEにするとpos_location_nameは空欄でよくなります。PINは新規作成時のみ設定できます。

④ 同一人物に「複数の役割 × 複数のロケーション」

id user_type email phone given_name family_name status role_name group_name store_name pos_location_name all_current_and_future_locations pin
Point of sale 090-2222-3333 高橋 店長 サンプル雑貨店 渋谷店 FALSE 5678
Point of sale 090-2222-3333 高橋 店長 サンプル雑貨店 新宿店 FALSE 5678
Point of sale 090-2222-3333 高橋 レジ担当 サンプル雑貨店 渋谷店 FALSE 5678
Point of sale 090-2222-3333 高橋 レジ担当 サンプル雑貨店 新宿店 FALSE 5678

店長×渋谷店、店長×新宿店、レジ担当×渋谷店、レジ担当×新宿店の全組み合わせで4行になります。phonestore_nameは4行とも同じ値です。

⑤ 同一人物に「複数の役割」+「複数ストア」

id user_type email phone given_name family_name status role_name group_name store_name pos_location_name all_current_and_future_locations pin
Admin ito@example.jp 商品担当 サンプルストア
Admin ito@example.jp POSのすべての許可 サンプルストア TRUE 9012
Admin ito@example.jp カスタマーサポート サンプル雑貨店

同じメールアドレスで3行。1〜2行目は同じストア内の複数ロール、3行目は別ストアへの割り当てです。2行目はAdminなのにall_current_and_future_locationspinが入っています。これは「管理画面ログインもPOSアプリも両方使えるロール」を割り当てるケースです。

⑥ グループへの割り当て(Shopify Plusのみ)

id user_type email phone given_name family_name status role_name group_name store_name pos_location_name all_current_and_future_locations pin
Admin watanabe@example.jp サンプルグループ

role_nameは空欄にして、group_nameだけ指定します。個別のロールではなく、グループ経由で権限を渡すパターンです。

⑦ 既存ユーザーの停止・再開

id user_type email phone given_name family_name status role_name group_name store_name pos_location_name all_current_and_future_locations pin
12345 Point of sale 090-2222-3333 高橋 Suspended
22222 Point of sale yamada@example.jp 090-3333-4444 太郎 山田 Active
67890 Admin nakamura@example.jp Suspended
99999 Admin watanabe@example.jp Active

idが入っている=既存ユーザーの更新です。status列だけが効き、役割やストア関連の列は空欄にします。idは、事前にエクスポートしたCSVから確認できます。

まとめ

試す前に押さえておきたいのは3点です。

  • Admin/POSの分岐点は権限の広さではなく、ログイン方法(メール+パスワード or PIN)
  • role_name / store_name / pos_location_name / group_nameは、既存の名称と完全一致させる必要がある。まず自分のストアをエクスポートして正しい表記を確認するのが安全
  • POSユーザーは作成直後、PINがすぐに使えないことがある。焦らず少し時間を置いて試す

季節雇用や複数店舗展開で人の入れ替わりが多いストアなら、管理画面から1人ずつ設定する手間をこのCSVで大きく減らせます。まずは検証用ストアで、既存ユーザーに影響しない新規行から試すのがおすすめです。

ブログに戻る