gpc-user-management
gpc-user-management
Manage developer account users, permissions, and testers with GPC.
When to use
- Inviting or removing users from a Google Play developer account
- Updating user permissions (developer-level or per-app)
- Listing and auditing who has access to the developer account
- Adding or removing testers from testing tracks (internal, alpha, beta)
- Importing testers in bulk from a CSV file
- Setting up Google Group-based tester access
Inputs required
- Authenticated GPC —
gpc auth statusmust show valid credentials - Developer account ID — required for user commands (
--developer-idorGPC_DEVELOPER_ID) - App package name — required for tester commands and per-app grants (
--app) - Email addresses — for inviting users or adding testers
- CSV file — for bulk tester import (
--file)
Procedure
0. Verify setup
gpc auth status
gpc config get app
User commands require --developer-id. Set it once:
export GPC_DEVELOPER_ID=1234567890
Or pass it per command: gpc users list --developer-id 1234567890.
1. Users — list and inspect
# List all users in the developer account
gpc users list --developer-id 1234567890
# Get details for a specific user
gpc users get user@example.com --developer-id 1234567890
# JSON output for scripting
gpc users list --developer-id 1234567890 --json
2. Users — invite
Invite a new user with developer-level permissions and optional per-app grants:
# Invite with developer-level permissions
gpc users invite user@example.com \
--role VIEW_APP_INFORMATION VIEW_FINANCIAL_DATA \
--developer-id 1234567890
# Invite with per-app grants
gpc users invite user@example.com \
--grant "com.example.app:VIEW_APP_INFORMATION,MANAGE_TESTING" \
--developer-id 1234567890
# Combine developer-level and per-app permissions
gpc users invite user@example.com \
--role VIEW_APP_INFORMATION \
--grant "com.example.app:MANAGE_PRODUCTION_RELEASES" \
--developer-id 1234567890
# Preview first
gpc users invite user@example.com \
--role VIEW_APP_INFORMATION \
--developer-id 1234567890 \
--dry-run
Read: references/permissions.md for the full list of developer-level and per-app permission constants.
Note: Permission changes may take up to 48 hours to propagate across Google's systems.
3. Users — update permissions
# Update developer-level permissions
gpc users update user@example.com \
--role VIEW_APP_INFORMATION VIEW_FINANCIAL_DATA MANAGE_ORDERS \
--developer-id 1234567890
# Update per-app grants
gpc users update user@example.com \
--grant "com.example.app:MANAGE_PRODUCTION_RELEASES,MANAGE_TESTING" \
--developer-id 1234567890
# Preview changes
gpc users update user@example.com \
--role VIEW_APP_INFORMATION \
--developer-id 1234567890 \
--dry-run
4. Users — remove
# Preview removal
gpc users remove user@example.com --developer-id 1234567890 --dry-run
# Remove
gpc users remove user@example.com --developer-id 1234567890
5. Testers — list
# List testers for a track
gpc testers list --track internal
gpc testers list --track alpha
gpc testers list --track beta
# JSON output
gpc testers list --track beta --json
6. Testers — add and remove
# Add individual testers (Google Group emails or individual emails)
gpc testers add tester1@gmail.com tester2@gmail.com --track internal
# Add a Google Group
gpc testers add testers-group@googlegroups.com --track beta
# Add testers without auto-submitting changes for review
gpc testers add tester1@gmail.com --track beta --changes-not-sent-for-review
# Fail if the app is currently in review or rejected before modifying testers
gpc testers add tester1@gmail.com --track beta --error-if-in-review
# Remove testers
gpc testers remove tester1@gmail.com --track internal
# Remove testers without auto-submitting changes for review
gpc testers remove tester1@gmail.com --track internal --changes-not-sent-for-review
# Preview changes
gpc testers add tester1@gmail.com --track beta --dry-run
7. Grants — standalone per-app permission management
gpc grants manages per-app permissions independently from user invitations. Use this when you need fine-grained control over what individual users can do on specific apps.
# List all grants for a user
gpc grants list user@example.com --developer-id 1234567890
# List grants for a specific app
gpc grants list user@example.com \
--developer-id 1234567890 \
--app com.example.app
# Create a new per-app grant
gpc grants create user@example.com \
--app com.example.app \
--permissions MANAGE_PRODUCTION_RELEASES VIEW_APP_INFORMATION \
--developer-id 1234567890
# Update existing grant permissions
gpc grants patch user@example.com \
--app com.example.app \
--permissions VIEW_APP_INFORMATION \
--developer-id 1234567890
# Remove a per-app grant (revokes app-specific access)
gpc grants delete user@example.com \
--app com.example.app \
--developer-id 1234567890
When to use gpc grants vs gpc users update --grant:
- Use
gpc grantsfor managing grants on existing users without modifying their developer-level role - Use
gpc users invite --grantorgpc users update --grantwhen also changing the user's account-level permissions
Read: references/permissions.md for the full list of per-app permission constants.
8. Testers — bulk import from CSV
Import testers from a CSV file containing email addresses:
# Preview import
gpc testers import --track beta --file testers.csv --dry-run
# Import
gpc testers import --track beta --file testers.csv
CSV format — one email per line:
email
tester1@gmail.com
tester2@gmail.com
qa-team@googlegroups.com
Read: references/tester-workflows.md for common tester management patterns and Google Group best practices.
Verification
gpc users list --developer-id <id>returns current users with their permissionsgpc users get <email> --developer-id <id>shows the user's current role and grantsgpc testers list --track <track>returns testers for the specified track- All
--dry-runcommands show what would change without modifying data - JSON output works on all commands (
--jsonflag) - Permission changes may take up to 48 hours to propagate
Failure modes / debugging
| Symptom | Likely Cause | Fix |
|---|---|---|
DEVELOPER_ID_REQUIRED |
Missing --developer-id flag |
Set GPC_DEVELOPER_ID env var or pass --developer-id |
PERMISSION_DENIED on user commands |
Service account lacks admin permissions | Service account needs "Admin" access in Play Console |
USER_NOT_FOUND |
Email not in the developer account | Check spelling; use gpc users list to verify |
INVALID_GRANT format |
Wrong --grant syntax |
Format: com.example.app:PERM1,PERM2 (colon between app and perms, commas between perms) |
INVALID_PERMISSION |
Unknown permission constant | Check references/permissions.md for valid constants |
| Permissions not taking effect | 48-hour propagation delay | Wait; changes are eventual — verify after 48 hours |
TRACK_NOT_FOUND for testers |
Track doesn't exist or wrong name | Valid tracks: internal, alpha, beta, or custom track names |
| CSV import fails | Wrong CSV format or encoding | Ensure UTF-8, one email per line, header row with email |
TESTER_LIMIT_EXCEEDED |
Track has maximum tester count | Internal: 100, Alpha/Beta: no hard limit but Google Groups recommended for scale |
Related skills
- gpc-setup — authentication and developer account configuration
- gpc-release-flow — releasing to testing tracks that testers access
- gpc-ci-integration — automating tester management in CI/CD pipelines
More from yasserstudio/gpc-skills
gpc-sdk-usage
Use when building applications that programmatically interact with the Google Play Developer API using GPC's TypeScript SDK packages. Make sure to use this skill whenever the user mentions @gpc-cli/api, @gpc-cli/auth, PlayApiClient, createApiClient, resolveAuth, Google Play API client, TypeScript SDK, programmatic access, API client, HTTP client, rate limiter, pagination, edit lifecycle in code, Node.js Google Play, server-side Play Store, backend integration — even if they don't explicitly say 'SDK.' Also trigger when someone wants to build a backend service, custom dashboard, automation script, or any TypeScript/JavaScript application that interacts with Google Play programmatically rather than through the CLI. For CLI usage, see other gpc-* skills. For building plugins, see gpc-plugin-development.
12gpc-release-flow
Use when uploading, releasing, promoting, or managing rollouts on Google Play. Make sure to use this skill whenever the user mentions gpc releases, upload AAB, upload APK, staged rollout, promote to production, halt rollout, gpc publish, release notes, track management, internal testing, beta release, production rollout, version code, rollout percentage, gpc bundles, bundle list, bundle wait, wait for bundle processing, in-app update priority, retain version codes, versioned changelogs, or wants to ship an Android app to any Play Store track. Also trigger when someone asks about the Google Play edit lifecycle, release validation, or how to do a phased rollout — even if they don't mention GPC by name. For metadata and listings, see gpc-metadata-sync. For CI/CD integration, see gpc-ci-integration.
12gpc-security
Use when dealing with GPC credential security, secret management, audit logging, or access control. Make sure to use this skill whenever the user mentions credentials, service account key, secret rotation, key rotation, credential storage, audit log, audit trail, security best practices, .gpcrc.json security, secrets in CI, GPC_SERVICE_ACCOUNT safety, keychain, token cache, credential leak, key compromise, secure deployment — even if they don't explicitly say 'security.' Also trigger when someone asks about where GPC stores credentials, how to rotate service account keys, how to audit who did what with GPC, how to securely pass credentials in CI/CD, or how to handle a compromised service account key. For auth setup, see gpc-setup. For CI configuration, see gpc-ci-integration.
12gpc-multi-app
Use when managing multiple Google Play apps with GPC. Make sure to use this skill whenever the user mentions multiple apps, multi-app, monorepo, white-label, batch operations, bulk upload, several apps, --app flag, app switching, profiles for different apps, fleet management, app portfolio, multiple package names — even if they don't explicitly say 'multi-app.' Also trigger when someone has more than one Android app and wants to manage them efficiently, when they need different configurations per app, when they're running the same command across multiple apps, or when they have a monorepo with multiple Android modules. For single-app setup, see gpc-setup. For CI automation, see gpc-ci-integration.
11gpc-setup
Use when setting up GPC (Google Play Console CLI): authentication with service accounts, OAuth, or Application Default Credentials; configuration files (.gpcrc.json, env vars, XDG paths); auth profiles; running gpc doctor; troubleshooting auth errors. Make sure to use this skill whenever the user mentions gpc auth, service account setup, gpc config, gpc doctor, GPC_SERVICE_ACCOUNT, gpc auth login, Google Play API credentials, Play Console authentication, gpc setup, gpc setup wizard, one-command onboarding, or wants to install/configure GPC — even if they don't explicitly say 'setup.' Also trigger when someone is troubleshooting auth failures, token expiration, keychain issues, or proxy/network configuration for GPC.
11gpc-monetization
Use when managing in-app purchases, subscriptions, pricing, or Real-Time Developer Notifications in Google Play. Make sure to use this skill whenever the user mentions gpc subscriptions, gpc iap, gpc purchases, gpc pricing, gpc rtdn, in-app products, base plans, subscription offers, one-time products, consumable products, purchase verification, purchase acknowledgement, purchase token, subscription cancellation, subscription deferral, voided purchases, refunds, regional pricing, currency conversion, price migration, SKU management, monetization, revenue, billing, subscription analytics, churn, trial conversion, subscriber count, RTDN, Real-Time Developer Notifications, Pub/Sub notifications, subscription events, purchase events — even if they don't explicitly say 'monetization.' Also trigger when someone wants to create or update subscriptions, manage base plan lifecycle (activate/deactivate), set up introductory offers, verify server-side purchases, handle refunds, convert prices across regions, sync IAP products from files, migrate subscribers to new prices, view subscription analytics, decode Pub/Sub notification payloads, or check RTDN topic configuration. For release management, see gpc-release-flow. For CI automation, see gpc-ci-integration.
11