Skip to content

gplay offers

Manage subscription offers (trials, introductory prices).

gplay offers <subcommand> [flags]

Manage subscription offers within base plans.

Offers include:

  • Free trials
  • Introductory prices
  • Developer-determined offers

Offers are attached to base plans and provide promotional pricing for new subscribers.

List all offers for a base plan.

gplay offers list --package <name> --product-id <id> --base-plan-id <plan>
Flag Description Default
--base-plan-id Base plan ID ``
--output Output format: json (default), table, markdown json
--package Package name (applicationId) ``
--page-size Page size 100
--paginate Fetch all pages false
--pretty Pretty-print JSON output false
--product-id Subscription product ID ``

Get an offer.

gplay offers get --package <name> --product-id <id> --base-plan-id <plan> --offer-id <offer>
Flag Description Default
--base-plan-id Base plan ID ``
--offer-id Offer ID ``
--output Output format: json (default), table, markdown json
--package Package name (applicationId) ``
--pretty Pretty-print JSON output false
--product-id Subscription product ID ``

Create an offer.

gplay offers create --package <name> --product-id <id> --base-plan-id <plan> --offer-id <offer> --json <json>

Create a new subscription offer.

JSON format for a free trial: { “phases”: [ { “recurrenceCount”: 1, “duration”: “P7D”, “regionalConfigs”: [ { “regionCode”: “US”, “free”: {} } ] } ], “targeting”: { “acquisitionRule”: { “scope”: { “anySubscriptionInApp”: {} } } }, “offerTags”: [ {“tag”: “trial”} ] }

JSON format for introductory price: { “phases”: [ { “recurrenceCount”: 3, “duration”: “P1M”, “regionalConfigs”: [ { “regionCode”: “US”, “price”: { “currencyCode”: “USD”, “units”: “4”, “nanos”: 990000000 } } ] } ] }

Flag Description Default
--base-plan-id Base plan ID ``
--json SubscriptionOffer JSON (or @file) ``
--offer-id Offer ID ``
--output Output format: json (default), table, markdown json
--package Package name (applicationId) ``
--pretty Pretty-print JSON output false
--product-id Subscription product ID ``
--regions-version Regions version ``

Update an offer.

gplay offers update --package <name> --product-id <id> --base-plan-id <plan> --offer-id <offer> --json <json>

Update a subscription offer.

If –update-mask is not provided, it is automatically derived from the JSON keys. Mutable fields: offerTags, otherRegionsConfig, phases, regionalConfigs, targeting.

JSON format: { “phases”: [ { “recurrenceCount”: 1, “duration”: “P14D”, “regionalConfigs”: [ { “regionCode”: “US”, “free”: {} } ] } ] }

Examples: gplay offers update –package com.example –product-id premium –base-plan-id monthly –offer-id trial –json @offer.json gplay offers update –package com.example –product-id premium –base-plan-id monthly –offer-id trial –json ‘{“offerTags”:[{“tag”:“promo”}]}’ –update-mask offerTags

Flag Description Default
--allow-missing Create if not exists false
--base-plan-id Base plan ID ``
--json SubscriptionOffer JSON (or @file) ``
--offer-id Offer ID ``
--output Output format: json (default), table, markdown json
--package Package name (applicationId) ``
--pretty Pretty-print JSON output false
--product-id Subscription product ID ``
--regions-version Regions version ``
--update-mask Fields to update (comma-separated) ``

Activate an offer.

gplay offers activate --package <name> --product-id <id> --base-plan-id <plan> --offer-id <offer>
Flag Description Default
--base-plan-id Base plan ID ``
--offer-id Offer ID ``
--output Output format: json (default), table, markdown json
--package Package name (applicationId) ``
--pretty Pretty-print JSON output false
--product-id Subscription product ID ``

Deactivate an offer.

gplay offers deactivate --package <name> --product-id <id> --base-plan-id <plan> --offer-id <offer>
Flag Description Default
--base-plan-id Base plan ID ``
--offer-id Offer ID ``
--output Output format: json (default), table, markdown json
--package Package name (applicationId) ``
--pretty Pretty-print JSON output false
--product-id Subscription product ID ``

Delete an offer.

gplay offers delete --package <name> --product-id <id> --base-plan-id <plan> --offer-id <offer> --confirm
Flag Description Default
--base-plan-id Base plan ID ``
--confirm Confirm deletion false
--offer-id Offer ID ``
--output Output format: json (default), table, markdown json
--package Package name (applicationId) ``
--pretty Pretty-print JSON output false
--product-id Subscription product ID ``

Get multiple offers.

gplay offers batch-get --package <name> --product-id <id> --base-plan-id <plan> --offer-ids <id1,id2>
Flag Description Default
--base-plan-id Base plan ID ``
--offer-ids Comma-separated list of offer IDs ``
--output Output format: json (default), table, markdown json
--package Package name (applicationId) ``
--pretty Pretty-print JSON output false
--product-id Subscription product ID ``

Batch update multiple offers.

gplay offers batch-update --package <name> --product-id <id> --base-plan-id <plan> --json <json>

Create or update multiple subscription offers in a single request.

JSON format: { “requests”: [ { “subscriptionOffer”: { “packageName”: “com.example.app”, “productId”: “premium”, “basePlanId”: “monthly”, “offerId”: “trial”, “phases”: [ { “recurrenceCount”: 1, “duration”: “P14D”, “regionalConfigs”: [ { “regionCode”: “US”, “free”: {} } ] } ] }, “updateMask”: “phases”, “allowMissing”: true, “regionsVersion”: {“version”: “2025/02”} } ] }

Flag Description Default
--base-plan-id Base plan ID ``
--json Batch update request JSON (or @file) ``
--output Output format: json (default), table, markdown json
--package Package name (applicationId) ``
--pretty Pretty-print JSON output false
--product-id Subscription product ID ``

Batch activate/deactivate multiple offers.

gplay offers batch-update-states --package <name> --product-id <id> --base-plan-id <plan> --json <json>

Activate or deactivate multiple subscription offers.

JSON format: { “requests”: [ { “activateSubscriptionOfferRequest”: { “packageName”: “com.example.app”, “productId”: “premium”, “basePlanId”: “monthly”, “offerId”: “trial” } }, { “deactivateSubscriptionOfferRequest”: { “packageName”: “com.example.app”, “productId”: “premium”, “basePlanId”: “monthly”, “offerId”: “old_trial” } } ] }

Flag Description Default
--base-plan-id Base plan ID ``
--json Batch update states request JSON (or @file) ``
--output Output format: json (default), table, markdown json
--package Package name (applicationId) ``
--pretty Pretty-print JSON output false
--product-id Subscription product ID ``