Products and product offers commands
These Adapty CLI commands manage products, map them to their App Store and Google Play product IDs, and link store offers to them.
Products
adapty products list
List all products for an app.
adapty products list --app <app-id>
| Flag | Required | Description |
|---|---|---|
--app | Yes | App ID (UUID) |
Accepts pagination flags.
adapty products get
Get details for a specific product.
adapty products get --app <app-id> <product-id>
| Argument | Description |
|---|---|
product-id | Product ID (UUID) |
| Flag | Required | Description |
|---|---|---|
--app | Yes | App ID (UUID) |
adapty products create
Create a new product.
The store product and price IDs cannot be changed after creation. To use different store IDs, create a new product.
adapty products create --app <app-id> --title "Monthly" --access-level-id <access-level-id> --period monthly --ios-product-id com.example.monthly
| Flag | Required | Description |
|---|---|---|
--app | Yes | App ID (UUID) |
--title | Yes | Product title |
--access-level-id | Yes | Access level ID (UUID) this product unlocks |
--period | Yes | Subscription period: weekly, monthly, two_months, trimonthly, semiannual, annual, lifetime |
--ios-product-id | At least one store required | Product ID from App Store Connect |
--android-product-id | At least one store required | Product ID from Google Play Console |
--android-base-plan-id | Required with --android-product-id unless --period lifetime | Base plan ID from Google Play Console |
--stripe-product-id | At least one store required | Product ID from Stripe |
--stripe-price-id | Required with --stripe-product-id | Price ID from Stripe |
--paddle-product-id | At least one store required | Product ID from Paddle |
--paddle-price-id | Required with --paddle-product-id | Price ID from Paddle |
Every product needs at least one store: --ios-product-id, --android-product-id, --stripe-product-id, or --paddle-product-id. A single product can carry IDs for several stores at once.
To sell a product on the web through Stripe or Paddle, connect the payment provider to Adapty first: see Stripe and Paddle. For each of these stores, pass the product ID and the price ID together. The command fails if you pass only one of the pair.
adapty products create --app <app-id> --title "Monthly" --access-level-id <access-level-id> --period monthly --stripe-product-id prod_xxx --stripe-price-id price_xxx
A web-only product is valid: you can create a product with Stripe or Paddle IDs and no App Store or Google Play IDs.
adapty products update
Update an existing product.
Store product and price IDs cannot be changed after creation and are not available in this command. To use different store IDs, create a new product.
adapty products update --app <app-id> <product-id> --title "Monthly" --access-level-id <access-level-id>
| Argument | Description |
|---|---|
product-id | Product ID (UUID) |
| Flag | Required | Description |
|---|---|---|
--app | Yes | App ID (UUID) |
--title | No | Product title |
--access-level-id | No | Access level ID (UUID) this product unlocks |
Product offers
Link the offers you created in App Store Connect or Google Play Console to an Adapty product, so Adapty can apply them. For what each offer type does and how to create the offer in the store, see Add offers to Adapty.
Add these offers:
- App Store promotional and win-back offers.
- All Google Play offers, free trials included. Google Play has no introductory offer type, so a trial is an offer on a base plan, and it applies only after you link it in Adapty.
Don’t add App Store introductory offers: they apply automatically to eligible users.
A linked offer still has to be selected for the product in a flow or a paywall before users see it. To select it in a paywall, use the Adapty dashboard: see Display offer.
adapty products list and adapty products get show how many offers are linked to each product in offers_count. The count includes only offers linked in Adapty, not the offers that exist in the stores.
adapty product-offers list
List all offers linked to a product.
adapty product-offers list --app <app-id> --product <product-id>
| Flag | Required | Description |
|---|---|---|
--app | Yes | App ID (UUID) |
--product | Yes | Product ID (UUID) |
Returns every offer on one page and doesn’t accept pagination flags.
adapty product-offers get
Get details for a specific offer.
adapty product-offers get --app <app-id> <offer-id>
| Argument | Description |
|---|---|
offer-id | Offer ID (UUID) |
| Flag | Required | Description |
|---|---|---|
--app | Yes | App ID (UUID) |
adapty product-offers create
Link a store offer to a product.
adapty product-offers create --app <app-id> --product <product-id> --title "Spring" --type promotional --ios-offer-id spring_ios --android-offer-id spring-android
| Flag | Required | Description |
|---|---|---|
--app | Yes | App ID (UUID) |
--product | Yes | Product ID (UUID) |
--title | Yes | Offer name, shown only in the Adapty dashboard |
--type | Yes | Offer type: promotional or win_back |
--ios-offer-id | At least one store required | Offer ID from App Store Connect |
--android-offer-id | At least one store required | Offer ID from Google Play Console |
Win-back offers are App Store only, so --type win_back takes only --ios-offer-id. For any Google Play offer, a free trial included, use --type promotional.
adapty product-offers create --app <app-id> --product <product-id> --title "Come back" --type win_back --ios-offer-id winback_ios
adapty product-offers update
Update an existing offer.
adapty product-offers update --app <app-id> <offer-id> --title "Spring 2"
| Argument | Description |
|---|---|
offer-id | Offer ID (UUID) |
| Flag | Required | Description |
|---|---|---|
--app | Yes | App ID (UUID) |
--title | No | Offer name |
--type | No | Offer type: promotional or win_back. To change an offer to win_back, also remove its Google Play side with --clear-android-offer-id |
--ios-offer-id | No | New App Store offer ID |
--android-offer-id | No | New Google Play offer ID |
--clear-ios-offer-id | No | Remove the App Store side of the offer |
--clear-android-offer-id | No | Remove the Google Play side of the offer |
At least one flag besides --app is required. Fields you leave out keep their current values. Every offer keeps at least one store offer ID, so the command fails if it would remove the last one.
The command reads the offer and saves it whole. If someone edits the same offer in the Adapty dashboard between that read and the save, their change is overwritten.
Introductory offers can’t be updated. An offer that has a store other than the App Store or Google Play can’t be updated from the CLI either: edit it in the Adapty dashboard.
To delete an offer, use the Adapty dashboard. The CLI has no delete command.
What’s next
- Command reference — every CLI topic, the global flags, and the pagination flags.