This guide details how to authorize your Service Account to access Google Workspace data by setting up Domain-Wide Delegation (DwD). This process allows the service account to “impersonate” your Admin Email to read users, groups, devices, organizational units, admin roles and group settings.
Domain-Wide Delegation is required whether you prepared the service account with the Copy PS script or in the Google Cloud Console.
🔐 Prerequisites
Before starting, ensure you have:
- The Client ID: This is the numeric OAuth2 Client ID of your Service Account. The Copy PS script prints it at the end of its run (
Client ID (DWD)). You can also find it in theclient_idfield of the JSON key file, or in the GCP Console under IAM & Admin > Service Accounts. - Super Admin Access: You must be a Super Admin in the Google Admin Console.

Manage Domain Wide Delegation
Step 1: Navigate to API Controls
- Log in to the Google Admin Console.
- In the left-hand menu, navigate to Security > Access and data control > API controls.
- Scroll down to the Domain-wide delegation section at the bottom.
- Click MANAGE DOMAIN WIDE DELEGATION.
Step 2: Register the API Client

DWD Add New Button
- On the Domain-wide Delegation page, click the Add new button next to the “API clients” list.
- A dialog box will appear. Enter the following information:
- Client ID: Paste the numeric Client ID for your Service Account.
- OAuth Scopes: Copy and paste the following comma-separated list into the field:

Add a new Client ID and OAuth Scopes
https://www.googleapis.com/auth/admin.directory.user.readonly,https://www.googleapis.com/auth/admin.directory.group.readonly,https://www.googleapis.com/auth/admin.directory.customer.readonly,https://www.googleapis.com/auth/cloud-identity.devices.readonly,https://www.googleapis.com/auth/admin.directory.orgunit.readonly,https://www.googleapis.com/auth/admin.directory.rolemanagement.readonly,https://www.googleapis.com/auth/admin.directory.user.security,https://www.googleapis.com/auth/apps.groups.settings- Click Authorize.
📋 Authorized Scopes Reference
Once authorized, your Service Account will be able to perform the following functions:
| Scope | Shown in the Forestall panel as | Purpose |
|---|---|---|
admin.directory.user.readonly |
AdminDirectoryUserReadonly |
Read user accounts. |
admin.directory.group.readonly |
AdminDirectoryGroupReadonly |
Read groups and their memberships. |
admin.directory.customer.readonly |
AdminDirectoryCustomerReadonly |
Read organization-level (customer) information. |
cloud-identity.devices.readonly |
CloudIdentityDevicesReadonly |
Read managed devices. |
admin.directory.orgunit.readonly |
AdminDirectoryOrgunitReadonly |
Read the organizational unit structure. |
admin.directory.rolemanagement.readonly |
AdminDirectoryRolemanagementReadonly |
Read admin roles and their assignments. |
apps.groups.settings |
AppsGroupsSettings |
Read group settings, such as who may join or post to a group. |
admin.directory.user.security |
AdminDirectoryUserSecurity |
Read the third-party OAuth tokens users have granted. |
The Test on the GCP Configuration page checks all eight scopes. Each one appears in the Required Permissions panel.
✅ Verification
- Check the list of API Clients to ensure your Client ID appears with the correct scopes.
- Return to the GCP Configuration page in Forestall.
- Enter the Admin Email (the person being impersonated) and click Test.
- If the test passes, every entry under Required Permissions turns green and the Service Account is authorized to “act as” the admin for these tasks.
Domain-Wide Delegation is extremely powerful. Grant only the scopes listed above and nothing more. All of them are read-only except
admin.directory.user.security, which Forestall uses only to read OAuth tokens.