Back to Roam in Google Sheets
SheetXAI logo
Roam logo
Roam · Google Sheets Guide

Bulk Provision New Roam Users From a Google Sheet

2026-05-14
5 min read

The Scenario

IT finishes onboarding paperwork for 50 new hires three days before their start date. The records — email, first name, last name, and role — are already in a Google Sheet. Someone still has to create their Roam accounts before Monday morning.

That someone is you, and it's Friday at 2 PM.

The bad version:

  • You open Roam's admin console and look for a bulk import option. There isn't one. The console is built for single-user creation.
  • You find the SCIM provisioning docs and realize you'll need to make a POST request per user — 50 requests total — and you'd need to write or adapt a script to loop through the sheet data.
  • You get through 12 users manually via the admin form before deciding this isn't sustainable, push a ticket to the DevOps team, and explain to the new hires' manager that accounts will be ready sometime Monday.

Fifty people starting work without Roam access on day one is a bad first impression. The problem isn't your effort level — the tooling just wasn't built for this workflow.

The Easy Way: One Prompt in SheetXAI

SheetXAI is an AI agent that lives inside your Google Sheet. It reads your employee records and handles the SCIM provisioning calls to Roam for you — all 50 of them, in one shot.

Create a Roam user for each row in the 'New Hires' sheet — use column A as the email (userName), column B as the first name, column C as the last name, and column D as the role (User or Admin)

What You Get

  • A Roam account created for each row in the sheet
  • Each account gets the email from column A as the SCIM userName, the name from columns B and C, and the role from column D
  • Any rows that fail (duplicate email, invalid role value) are flagged with an error note so you can correct and rerun

What If the Data Is Not Quite Ready

Some rows have the full name in one column instead of split first/last

Create a Roam user for each row in the 'New Hires' sheet — email in column A, full name in column B (split on the first space to get first and last), role in column C — write the assigned Roam user ID into column D after creation.

The role column uses values like Manager or Viewer instead of Admin or User

Read the 'New Hires' sheet — email in column A, first name in column B, last name in column C, role in column D. Map Manager and Admin both to Admin in Roam, everything else to User. Create a Roam account for each row.

You want to skip rows that already have a Roam user ID in column E

For each row in the 'New Hires' sheet where column E is empty, create a Roam user using email (A), first name (B), last name (C), role (D) — write the Roam user ID back into column E. Skip any row where column E already has a value.

You want to provision accounts and immediately add them to the correct department group

Create a Roam user for each row in the 'New Hires' sheet — email (A), first name (B), last name (C), role (D) — then add each new user to the Roam group whose name matches the value in column E. Write the user ID into column F.

Single prompt, two-step operation. SheetXAI runs the provisioning and the group assignment together so you don't have to come back for a second pass.

Try It

Get the 7-day free trial of SheetXAI and open the Google Sheet where your HR team keeps new hire records, then ask it to create the Roam accounts. The bulk deactivation spoke covers the other end of the employee lifecycle when the time comes.

Stop memorizing formulas.
Tell your spreadsheet what to do.

Join 4,000+ professionals saving hours every week with SheetXAI.

Learn more