pricing__make_offer
Create subscription win-back, promotional, or introductory offers for every App Store country from one anchor price or free trial, with dry-run validation and resumable introductory writes.
Instructions
Make a subscription win-back, promotional or introductory offer, priced in every country where the subscription is sold, in one call. Give the app, the subscription, the offer kind, mode, duration and periods, and either an anchor territory and price or a free trial. Every other market comes from Apple's own equalizations of the anchor. Win-back and promotional offers go to Apple as one request, so they exist complete or not at all. Introductory offers are one write per country, taking a few minutes: everything is checked first, it stops at the first failure, and the same call again resumes. Once made, only an introductory offer's end date can change. Refuses without writing when any country is missing a price. REVENUE-level write; run it under --dry-run first to see the full derived table.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| app | Yes | App name, bundle ID (com.example.app) or numeric Apple ID. | |
| name | No | Win-back and promotional, required: reference name, seen only in App Store Connect. | |
| undo | No | Introductory only. true takes back an introductory offer this tool set: with the same terms, price and dates as the original call, it deletes that exact offer in every country carrying it, one country at a time, and touches no other offer. | |
| price | No | Paid offers: customer price in the anchor territory's currency, e.g. "29.99". Must match an Apple price point exactly; the nearest available are suggested if it does not. | |
| periods | Yes | Number of periods. 1 for PAY_UP_FRONT and FREE_TRIAL. | |
| duration | Yes | Length of one offer period (PAY_AS_YOU_GO) or of the whole offer. | |
| end_date | No | The offer's end date (YYYY-MM-DD), win-back and introductory only. Omit for open-ended. | |
| offer_id | No | Win-back and promotional, required: the identifier the app uses for this offer (Apple's offerId for win-back, offerCode for promotional). Must not be used by any other offer of this subscription. | |
| priority | No | Win-back only: how Apple ranks it against other offers. Defaults to NORMAL. | |
| territory | No | Paid offers: the anchor country, three letters (ISO-3166 alpha-3): TUR, USA, DEU. Every other country is derived from it. | |
| offer_mode | Yes | PAY_AS_YOU_GO: the price is charged every period, for `periods` periods. PAY_UP_FRONT: the price is charged once for the whole duration. FREE_TRIAL: no price; leave territory and price out. | |
| offer_type | Yes | win_back: shown to lapsed subscribers who meet the eligibility below. promotional: redeemed by existing or lapsed subscribers through a signed offer in the app. introductory: the first period for customers new to the subscription group. | |
| start_date | No | First day the offer runs (YYYY-MM-DD). Required for win-back; optional for introductory (omit to start now); not used for promotional. | |
| subscription | Yes | Subscription product ID (e.g. com.example.pro.yearly) or its reference name. | |
| eligibility_paid_months | No | Win-back only, required: how many months the customer must have paid for before. | |
| eligibility_wait_months | No | Win-back only, optional: months before the same customer can redeem this offer again. | |
| eligibility_last_subscribed_max_months | No | Win-back only, required: most months since the customer's subscription lapsed. | |
| eligibility_last_subscribed_min_months | No | Win-back only, required: fewest months since the customer's subscription lapsed. |