See all services Shopify Plus Partner
Admin Global

Provision Shopify staff in bulk with CSV user import

Shopify admin now creates, suspends, and reactivates admin and POS users from a CSV upload. For Plus organizations running seasonal hiring or multi-store rollouts, staff provisioning becomes a reviewable batch operation instead of a per-user click path.

Executive summary

What changed

Under Settings, Users, Import in Shopify admin there is now a CSV importer with a downloadable sample template. One file can create new admin users, create POS-only users with assigned PINs, and flip existing accounts between Active and Suspended. Assignments are expressed one per row, so a user who needs three roles across two stores occupies several rows carrying the same identifying columns.

The boundaries matter as much as the capability. The importer cannot delete users, cannot change an existing user's PIN, type, role, group, location, or store access, and cannot create roles, groups, or locations that do not already exist. On create rows for admin users you leave name and phone blank on purpose: those fields get filled when the person accepts the invite, and populating them makes the row fail. New admin users sit in Pending until they accept, while new POS users are Active immediately.

Why it matters

For a single store with nine staff this is a convenience. For a Plus organization it is an operational change. The store_name column means one file can address every store in the org, and groups, which are a Plus-only construct, let a single row carry a bundle of roles rather than enumerating them. That collapses the usual multi-store onboarding sprawl into one artifact you can review before anything takes effect.

The offboarding side is the underrated half. Suspension is the control that actually cuts access, and the gap between someone leaving and someone losing their login is a real risk window. Doing it in one upload shortens that window from days to minutes. It also makes access reviews tractable: export your users, review the sheet, re-upload the suspensions, and keep the file as evidence. If you want a second pair of eyes on role and group mapping before the first production import, that is a short engagement.

Role-specific impact

Use-case example

Real-world scenario

A 40-location specialty retailer hires roughly 220 seasonal associates each October. Provisioning them individually, with POS PIN and location assignment, runs about four minutes each, close to fifteen hours of admin work spread across store managers. Built as a CSV, the same work becomes a template exercise plus one import: budget around two hours including a five-user pilot. In January the reverse holds, and 220 suspensions land in a single upload instead of trickling in over two weeks.

Implementation checklist

  1. Export your current users to CSV first, so you hold the IDs and a rollback reference before changing anything.
  2. Download the sample template from Settings, Users, Import and work from it rather than an improvised sheet.
  3. Confirm role names, group names, store names, and POS location names match Shopify admin character for character.
  4. On create rows for admin users, leave given_name, family_name, and phone blank so the invite collects them.
  5. Use one row per role, location, or store assignment for the same person, repeating the identifying columns on each.
  6. Pilot with five users, confirm status and actual access in admin, then run the full file.
  7. For offboarding, submit id, user_type, email, and status Suspended only, leaving role, group, and store columns blank.
  8. File the CSV with your access-review evidence so the change has a paper trail.

FAQ

Q: Can we delete users through the import?

A: No. The importer covers create, suspend, and reactivate only. Deletion stays a manual action, and suspension is usually the better control anyway because it preserves the audit trail attached to that account.

Q: Can we change an existing user's role or store access in the same file?

A: No. Role, group, location, and store columns are rejected on suspend or reactivate rows. Make those changes in admin directly, or if the reassignment is substantial, suspend the account and create the new access separately.

Resources

Importing users in bulk using a CSV file

Need guidance? Talk to Makro.