3 Ways to Move Users to an Organizational Unit in Google Workspace

Managing people in Google Workspace gets messy fast when settings and access vary by role. Putting users into organizational units makes policies consistent, eases reporting, and keeps control where it belongs.
This article walks through three straightforward ways to move users into OUs: the Admin console, CSV bulk uploads, and the Directory API. Follow the steps that match your scale and comfort level, so you can enforce the right policies across teams without extra overhead.
Table of Contents
Use Google Workspace’s UI
Here, you’ll use the Google Workspace Admin console to move one or more users into a different organizational unit.
Before you start
- Sign in to the Admin console at admin.google.com with an account that can manage users.
- Note: When you move a user to a new organizational unit, that user’s settings and access can change.
- Check the destination OU’s settings so you know what will apply.
Move a single user
- Open the Admin console and go to
Directory
>Users
. - Find the user by name or search, then click the user’s name to open their account page.
- On the user’s page, find the
Organizational unit
entry and click the edit icon or the org unit name. - In the dialog that appears, navigate the organizational unit tree, select the destination OU, and click
Move
. - Confirm the move if prompted.
Move multiple users at once
- In the Admin console go to
Directory
>Users
. - Use the checkboxes to select the users you want to move. You can filter or search first to narrow the list.
- At the top of the users list, click
More
(or the action menu) and chooseChange organizational unit
. - In the dialog, pick the destination organizational unit and click
Move
orMove users
. - Review any confirmation and proceed.
After the move
- Most changes take effect right away, but some services or device syncs may take up to 24 hours to reflect the new settings.
- If a user reports missing access or different behavior, check the destination OU’s settings and the user’s groups and licenses.
These steps follow the Google Workspace Admin console instructions for changing a user’s organizational unit. For screenshots and more detail, see the Google Workspace Admin documentation titled “Change an organizational unit for a user” and “Move multiple users to an organizational unit.”
Use Torii
Rather than doing this directly inside Google Workspace, you can use Torii, a SaaS Management Platform, to update a user’s organization unit in Google Workspace. SMPs let you centralize management of SaaS apps and subscriptions, so you can programmatically onboard/offboard users, review subscription information, and perform other administrative tasks from one place.
Instead of performing the change manually in Google Workspace each time, Torii lets you automate the update so it runs whenever a defined trigger occurs. Triggers might include a new hire, an employee departure, a contract renewal, or other events - saving time and avoiding repetitive manual work.
To update a user’s organization unit in Google Workspace using Torii, do the following:
1. Sign up for Torii
Contact Torii, and ask for your free two-week proof-of-concept.
2. Connect your Google Workspace account to Torii
Once your Torii account is provisioned, link your Google Workspace tenant to Torii (assuming you already have an account). Here are the instructions for the Google Workspace integration.

3. Create a Torii workflow for Google Workspace
Inside Torii you can build an automated workflow to change a user’s organization unit in Google Workspace. Go to the Workflows tab, configure the trigger, and add an action that updates the user’s organization unit. After that, whenever the trigger fires, Torii will apply the change in Google Workspace.

Use Google Workspace’s API
Use the Google Workspace Admin SDK Directory API to change a user’s organizational unit.
Here you’ll call the Directory API’s users.patch (or users.update) method and set the user’s orgUnitPath
field. This covers the API steps and required request format described in Google Workspace’s Admin SDK Directory API docs.
Confirm required auth and scope
- You must call the Directory API with an OAuth 2.0 access token that has the admin directory user scope:
https://www.googleapis.com/auth/admin.directory.user
- The request must be made by an admin account (via user consent or a service account with domain-wide delegation).
Choose the right method
- Use
users.patch
when you only want to changeorgUnitPath
. It updates just the fields you send. users.update
replaces the whole user resource, so avoid it unless you intend that.- The API field to change is
orgUnitPath
. The path must exist and start with a slash, for example:/Sales/NY
.
Build the REST request
- Request method:
PATCH
- Endpoint:
https://admin.googleapis.com/admin/directory/v1/users/{userKey}
- Path parameter:
{userKey}
can be the user’s primary email or unique user ID.
- Request body (JSON):
{"orgUnitPath": "/TargetOrgUnit"}
- Headers:
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json
Example curl:
curl -X PATCH \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"orgUnitPath":"/Sales"}' \
"https://admin.googleapis.com/admin/directory/v1/users/[email protected]"
Check the response and common errors
- On success you’ll get a 200 response with the updated user resource containing the new
orgUnitPath
. - Common failures:
- 403: insufficient permissions - check scopes and admin rights.
- 404: user not found - confirm
userKey
. - 400: invalid
orgUnitPath
- confirm the org unit exists and the path is exact. - If you need to confirm the target org unit exists, use the OrgUnits resource in the Admin SDK (orgunits.list or orgunits.get) before moving the user.
Quick Python example (google-api-python-client)
Example Python (google-api-python-client):
from googleapiclient.discovery import build
from google.oauth2.credentials import Credentials
creds = Credentials(token="YOUR_ACCESS_TOKEN")
service = build('admin', 'directory_v1', credentials=creds)
user_key = '[email protected]'
body = {'orgUnitPath': '/Sales'}
result = service.users().patch(userKey=user_key, body=body).execute()
print(result.get('orgUnitPath'))
This follows the Admin SDK Directory API methods users.patch
and users.update
and the orgUnitPath
field as documented in Google Workspace’s API docs.
Frequently Asked Questions
Google Workspace lets you switch a user’s OU through three routes: the Admin console for individual or multi‑select moves, a CSV bulk upload, or the Admin SDK Directory API. Pick the option that fits your scale and comfort level.
When you relocate a user, all policies tied to the destination OU immediately replace their current settings. Access to apps, security rules, and device policies can change, so always review the target OU before confirming the move.
Yes. In the Admin console, select multiple checkboxes in Directory > Users, click More, choose Change organizational unit, pick the new OU, and confirm. For very large lists, upload a CSV or script the change via API.
Torii’s SaaS Management Platform links to Google Workspace so you can build a workflow that updates orgUnitPath whenever a trigger—like onboarding or offboarding—fires. This removes repetitive admin clicks and keeps OU assignments consistent across events.
Use the Directory API’s users.patch endpoint at https://admin.googleapis.com/admin/directory/v1/users/{userKey} with a PATCH body containing the field \"orgUnitPath\". This method updates only the specified attribute and is safer than users.update, which rewrites the whole resource.
The calling account needs the OAuth scope https://www.googleapis.com/auth/admin.directory.user and must be an administrator or a service account with domain‑wide delegation. Without those permissions, requests return 403 or 401 error codes.