Skip to content

Migrate from Play Console UI

Map common Google Play Console browser tasks to GPC CLI commands. Every operation you do in the Play Console web UI has a CLI equivalent that can be automated, scripted, and version-controlled.

Why Use the CLI?

Play Console UIGPC CLI
AutomationManual, browser-basedScriptable, CI/CD native
ReproducibilityClick-by-click, error-proneSame commands, same results
Speed15+ minutes for multi-step operationsSeconds
Audit trailLimited browser historyJSON logs with timestamps
Quality gatesManual reviewAutomated threshold checks
Multi-appSwitch apps manuallyLoop with --app flag
ReviewNo preview--dry-run before applying

Task Mapping

Releases

Play Console UIGPC CommandNotes
Upload AAB in "Create new release"gpc releases upload app.aab --track internalSpecify track with --track
Create release with notesgpc publish app.aab --track beta --notes "Bug fixes"End-to-end: upload + track + notes + commit
View release statusgpc statusCross-track overview
View specific trackgpc releases status --track productionSingle track details
Promote internal to betagpc releases promote --from internal --to beta
Promote beta to production (staged)gpc releases promote --from beta --to production --rollout 10Starts at 10%
Increase rollout percentagegpc releases rollout increase --track production --to 50
Halt rolloutgpc releases rollout halt --track productionStops serving new installs
Resume halted rolloutgpc releases rollout resume --track production
Complete rollout to 100%gpc releases rollout complete --track production
Add release notesgpc releases notes set --track beta --lang en-US --notes "Bug fixes"Per-language
Add multi-language notesgpc releases notes set --track beta --file release-notes/Directory of lang files

Store Listing and Metadata

Play Console UIGPC CommandNotes
Edit store listing (title, description)gpc listings update --lang en-US --title "My App" --short-desc "..."
Edit listing from filesgpc listings update --lang en-US --file metadata/en-US/Reads title.txt, etc.
View current listinggpc listings getDefault language
View all language listingsgpc listings get --all-languages
Download all listings to filesgpc listings pull --dir metadata/Fastlane-compatible format
Upload listings from filesgpc listings push --dir metadata/
Preview listing changesgpc listings push --dir metadata/ --dry-runDiff without applying
Upload screenshotsgpc listings images upload --lang en-US --type phoneScreenshots ./screens/*.png
View screenshotsgpc listings images list --lang en-US --type phoneScreenshots
Delete screenshotgpc listings images delete --lang en-US --type phoneScreenshots --id <id>

Reviews

Play Console UIGPC CommandNotes
View reviewsgpc reviews listAll recent reviews
Filter by ratinggpc reviews list --stars 1-2Low ratings only
Filter by dategpc reviews list --since 7dLast 7 days
View single reviewgpc reviews get <review-id>Full details
Reply to reviewgpc reviews reply <review-id> "Thank you for your feedback"350 char limit
Export reviewsgpc reviews export --format csv --output reviews.csvCSV or JSON

App Vitals

Play Console UIGPC CommandNotes
View vitals overviewgpc vitals overviewDashboard summary
Check crash rategpc vitals crashesRate and clusters
Check ANR rategpc vitals anr
Check startup timegpc vitals startupCold and warm start
Check frame renderinggpc vitals renderingSlow frames
Check battery impactgpc vitals batteryWakeups and wakelocks
Check memory issuesgpc vitals memoryLow memory killer rate
View anomaliesgpc vitals anomaliesDetected anomalies
Compare weeksgpc vitals compare crashes --days 7This week vs last
CI quality gategpc vitals crashes --threshold 2.0Exit code 6 if breached

Monetization

Play Console UIGPC CommandNotes
View subscriptionsgpc subscriptions list
Create subscriptiongpc subscriptions create --file subscription.json
Edit subscriptiongpc subscriptions update <id> --file subscription.json
View base plansgpc subscriptions base-plans list <id>
View offersgpc subscriptions offers list <id> <plan-id>
View in-app productsgpc iap list
Create in-app productgpc iap create --file product.json
Bulk sync productsgpc iap sync --dir products/From local files
Convert pricinggpc pricing convert --from USD --amount 9.99Regional prices

Purchases and Orders

Play Console UIGPC CommandNotes
View order detailsgpc purchases get <token>Product purchase
View subscription purchasegpc purchases subscription get <token>Subscription details
Refund ordergpc orders refund <order-id>
View voided purchasesgpc purchases voided listLast 30 days
Cancel subscriptiongpc purchases subscription cancel <token>

Financial Reports

Play Console UIGPC CommandNotes
Download earnings reportgpc reports download financial --month 2026-02
Download install statsgpc reports download stats --month 2026-02 --type installs
Download crash statsgpc reports download stats --month 2026-02 --type crashes

Users and Testers

Play Console UIGPC CommandNotes
View team membersgpc users list --developer-id <id>
Invite team membergpc users invite user@co.com --developer-id <id> --role ADMIN
Update permissionsgpc users update user@co.com --developer-id <id> --role CAN_VIEW_FINANCIAL_DATA
Remove team membergpc users remove user@co.com --developer-id <id>
View testers on trackgpc testers list --track internal
Add testersgpc testers add user@co.com --track internal
Remove testersgpc testers remove user@co.com --track internal
Bulk add testersgpc testers import --track internal --file testers.csvFrom CSV

App Overview

Play Console UIGPC CommandNotes
View all appsgpc apps list
View app detailsgpc apps info com.example.myapp
View all tracksgpc tracks list
View track detailsgpc tracks get production

Common Workflows

Weekly Release (UI workflow automated)

Instead of clicking through the Console every week:

bash
#!/bin/bash
# weekly-release.sh — Automates the weekly release workflow
set -euo pipefail

APP="com.example.myapp"

# Build
./gradlew bundleRelease

# Upload to internal
gpc releases upload \
  app/build/outputs/bundle/release/app-release.aab \
  --app $APP \
  --track internal \
  --notes "Weekly build $(date +%Y-%m-%d)" \
  --json

# Promote to beta after internal testing
gpc releases promote --app $APP --from internal --to beta --json

echo "Release uploaded to internal and promoted to beta."

Review Triage (daily task automated)

Instead of manually checking reviews:

bash
#!/bin/bash
# review-triage.sh — Daily review check
set -euo pipefail

echo "=== Low-rated reviews (last 24h) ==="
gpc reviews list --stars 1-2 --since 24h --json | \
  jq -r '.data.reviews[] | "[\(.stars)] \(.text[:120])..."'

echo ""
echo "=== Vitals summary ==="
gpc vitals overview --json | \
  jq -r '.data | to_entries[] | "  \(.key): \(.value)"'

Multi-App Release

Instead of switching between apps in the Console:

bash
#!/bin/bash
# release-all.sh
APPS=("com.example.app1" "com.example.app2" "com.example.app3")

for app in "${APPS[@]}"; do
  echo "Releasing $app..."
  gpc releases upload "builds/${app}/app-release.aab" \
    --app "$app" \
    --track internal \
    --json
done

Getting Started

  1. Install GPC

    bash
    npm install -g @gpc-cli/cli
  2. Authenticate

    bash
    # With a service account key (recommended for CI)
    gpc auth login --service-account path/to/key.json
    
    # Or set via environment variable
    export GPC_SERVICE_ACCOUNT=path/to/key.json
  3. Set your default app

    bash
    gpc config set app com.example.myapp
  4. Verify setup

    bash
    gpc doctor
  5. Try a read-only command

    bash
    gpc apps list
    gpc status
    gpc reviews list
  6. Try a safe write command

    bash
    # Preview metadata changes without pushing
    gpc listings push --dir metadata/ --dry-run

Released under the MIT License.