Offer Codes Setup Generator
Generate offer code distribution strategies, configuration guides, and campaign templates for promoting subscriptions and IAPs through redeemable codes.
When This Skill Activates
Use this skill when the user:
- Asks about "offer codes" or "promo codes" for subscriptions
- Wants to distribute free/discounted subscriptions to partners or influencers
- Mentions "redemption codes" or "App Store codes"
- Asks about re-engaging users via email with promotional codes
- Wants to set up influencer or reviewer programs
How Offer Codes Work
- Create in App Store Connect under Subscriptions > Offer Codes
- Up to 10 active offers per subscription SKU
- Two types: one-time use codes (generated in batches of 500–25,000) and custom codes (reusable, up to 64 characters, no special characters, redemption limit up to 25,000 per code)
- One redemption per customer per offer
- Quarterly ceiling: 1,000,000 codes per app per quarter — raised from the old 150,000, and now spanning subscriptions + one-time IAP combined (per WWDC25). Sandbox: 10,000 codes/app/quarter, with unlimited redemptions per sandbox account
- Beyond subscriptions, codes now cover consumables, non-consumables, and non-renewing subscriptions, with campaign eligibility criteria (never purchased / purchased but not in the last 30 days / purchased in the last 30 days) and auto-install of the app on redemption if it's absent (WWDC25)
- Offer applies the configured discount (free period, discounted rate, etc.)
- Expiry is configurable from 1 day to 6 months — one-time codes auto-expire at 6 months. Print the expiry date in every marketing asset
Code Types
| Type |
Description |
Best For |
| One-time use |
Unique codes, each used once |
Email campaigns, individual distribution |
| Custom codes |
Reusable keyword codes (e.g., "LAUNCH2025"), ≤64 chars |
Social media, events, partnerships |
Redemption Methods
- In your app via
AppStore.presentOfferCodeRedeemSheet() — preferred: your app stays in the foreground, so put a "Redeem Code" button on the paywall
- Direct URL:
https://apps.apple.com/redeem?ctx=offercodes&id=APPID&code=CODE — ideal for QR codes and email; state the minimum iOS version in marketing materials
- App Store > Account > Redeem Gift Card or Code
Configuration Questions
Ask user via AskUserQuestion:
Distribution purpose?
- Influencer/reviewer program (free access for promotion)
- Partner distribution (B2B or affiliate)
- Email re-engagement (win-back lapsed users)
- Event/conference distribution (in-person)
- Social media promotion (public campaign)
Offer type?
- Free subscription period (1 week, 1 month, 3 months)
- Discounted first period
- Extended free trial
Scale?
- Small (< 100 codes, targeted distribution)
- Medium (100-1,000 codes, campaign-based)
- Large (1,000+ codes, broad distribution)
Generation Process
Step 1: Design Campaign Strategy
Based on the distribution purpose, design:
- Target audience and outreach plan
- Code type (one-time vs. custom)
- Offer duration and terms
- Distribution channel and messaging
- Tracking and measurement plan
Step 2: Generate Campaign Document
Output Format
# Offer Code Campaign: [Campaign Name]
## Campaign Overview
| Field | Value |
|-------|-------|
| Purpose | [Distribution purpose] |
| Target Audience | [Who receives codes] |
| Code Type | [One-time / Custom] |
| Offer | [Free X months / Y% off first period] |
| Total Codes | [Number] |
| Distribution Period | [Date range] |
| Code Expiration | [Date] |
## App Store Connect Setup
1. Go to App Store Connect > Subscriptions > [Group] > [Subscription]
2. Navigate to "Offer Codes" tab
3. Create new offer:
- Offer type: [Free / Pay as you go / Pay up front]
- Duration: [X weeks/months]
- Pricing: [If discounted, specify tier]
4. Generate codes:
- Type: [One-time use / Custom code]
- Quantity: [Number]
- Custom code name: [If custom, e.g., "LAUNCH2025"]
- Expiration: [Date]
5. Download codes CSV (for one-time codes)
## Distribution Plan
### Channel: [Channel Name]
- **Recipients**: [Who gets codes and how many]
- **Delivery method**: [Email / DM / QR code / Link]
- **Message template**: [See below]
- **Tracking**: [How to measure redemption]
### Message Template
#### For Influencers/Reviewers
Subject: [App Name] — Complimentary Pro Access
> Hi [Name],
>
> I'd love to offer you complimentary Pro access to [App Name] — [one-line description].
>
> Your personal code: **[CODE]**
>
> Redeem: Open the App Store → Account → Redeem Gift Card or Code → Enter code
> Or direct link: [redemption URL]
>
> This gives you [offer details — e.g., 3 months free Pro].
>
> If you enjoy the app, we'd love an honest review or mention. No obligation at all.
>
> Best,
> [Your name]
#### For Email Re-engagement
Subject: We've missed you — here's [X] free on us
> Hi [Name],
>
> It's been a while since you've used [App Name], and we've been busy making it better.
>
> Here's what's new:
> - [Feature 1]
> - [Feature 2]
> - [Feature 3]
>
> We'd love for you to come back and try it. Here's a code for [offer details]:
>
> **[CODE]**
>
> [Redemption instructions or direct link]
>
> This code expires [date].
>
> Welcome back,
> [Your name / App name]
#### For Social Media (Custom Code)
> [Emoji] Special offer! Use code **[CUSTOMCODE]** in the App Store to get
> [offer details] of [App Name] completely free.
>
> Redeem: [Link]
>
> Limited time — expires [date]. [Emoji]
## In-App Redemption
### Add Code Entry to Your App
```swift
import StoreKit
struct SettingsView: View {
var body: some View {
Button("Redeem Offer Code") {
Task {
try? await AppStore.presentOfferCodeRedeemSheet()
}
}
}
}
Measurement
| Metric |
How to Track |
| Codes distributed |
Your distribution records |
| Codes redeemed |
App Store Connect > Offer Codes (redemptions report) |
| Per-campaign attribution |
offer_code_reference_name in transactions + OFFER_REDEEMED server notification |
| Redemption rate |
Redeemed / Distributed |
| Post-offer retention |
Retained after offer period ends |
| Conversion to paid |
Continued subscription after offer |
Campaign Calendar
| Month |
Campaign |
Codes |
Channel |
| [Month] |
[Campaign name] |
[Count] |
[Channel] |
## Distribution Strategies by Purpose
### Influencer Program
- **Scale**: 10-50 codes per quarter
- **Code type**: One-time use (track individual redemption)
- **Offer**: 3-6 months free (generous for genuine feedback)
- **Follow-up**: Request honest review 2 weeks after redemption
- **Tracking**: Spreadsheet mapping code → influencer → outcome
### Partner/Affiliate
- **Scale**: 100-1,000 codes per partner
- **Code type**: Custom code per partner ("PARTNER2025")
- **Offer**: 1-3 months free
- **Terms**: Clear agreement on promotion expectations
- **Tracking**: Unique custom code per partner for attribution
### Email Re-Engagement
- **Scale**: Match churned user count
- **Code type**: One-time use (unique per user)
- **Offer**: 1 month free (low barrier to return)
- **Timing**: 30-60 days after churn
- **Tracking**: Email open → Redemption → Retention
### Event/Conference
- **Scale**: Match expected attendees
- **Code type**: Custom code ("WWDC2025")
- **Offer**: 1-3 months free
- **Distribution**: QR code on slides/booth, printed cards
- **Tracking**: Post-event redemption monitoring
## Gotchas
- **Intro-offer stacking order is locked at creation** — whether a code redeems before or after the introductory offer can NEVER be changed later
- **Treat any code that leaves your systems as spent** — unredeemed codes can't be recovered or reissued
- **Never let a code land an active subscriber on a lower tier** — exclude current subscribers from campaigns priced below their plan
- **Listen on `Transaction.updates` from launch** — redemptions happen outside your app (App Store, URL), so entitlements arrive asynchronously
## References
- Related: `generators/subscription-offers` — StoreKit 2 offer implementation
- Related: `generators/win-back-offers` — Win-back campaign strategy
- Related: `app-store/marketing-strategy` — Overall promotional strategy
1---2name: offer-codes-setup3description: Generates offer code distribution strategies and configuration guides for subscription and IAP promotions — including partner campaigns, influencer programs, and email re-engagement. Use when setting up offer codes for distribution.4---5
6# Offer Codes Setup Generator
7
8Generate offer code distribution strategies, configuration guides, and campaign templates for promoting subscriptions and IAPs through redeemable codes.
9
10## When This Skill Activates
11
12Use this skill when the user:
13- Asks about "offer codes" or "promo codes" for subscriptions
14- Wants to distribute free/discounted subscriptions to partners or influencers
15- Mentions "redemption codes" or "App Store codes"
16- Asks about re-engaging users via email with promotional codes
17- Wants to set up influencer or reviewer programs
18
19## How Offer Codes Work
20
21- Create in **App Store Connect** under Subscriptions > Offer Codes
22- Up to **10 active offers per subscription** SKU
23- Two types: **one-time use codes** (generated in batches of 500–25,000) and **custom codes** (reusable, up to 64 characters, no special characters, redemption limit up to 25,000 per code)
24- One redemption per customer per offer
25- Quarterly ceiling: **1,000,000 codes per app per quarter** — raised from the old 150,000, and now spanning subscriptions + one-time IAP combined (per WWDC25). Sandbox: 10,000 codes/app/quarter, with unlimited redemptions per sandbox account
26- Beyond subscriptions, codes now cover **consumables, non-consumables, and non-renewing subscriptions**, with campaign eligibility criteria (never purchased / purchased but not in the last 30 days / purchased in the last 30 days) and auto-install of the app on redemption if it's absent (WWDC25)
27- Offer applies the configured discount (free period, discounted rate, etc.)
28- Expiry is configurable from 1 day to 6 months — one-time codes auto-expire at 6 months. Print the expiry date in every marketing asset
29
30### Code Types
31| Type | Description | Best For |
32|------|-------------|----------|
33| One-time use | Unique codes, each used once | Email campaigns, individual distribution |
34| Custom codes | Reusable keyword codes (e.g., "LAUNCH2025"), ≤64 chars | Social media, events, partnerships |
35
36### Redemption Methods
371. **In your app** via `AppStore.presentOfferCodeRedeemSheet()` — preferred: your app stays in the foreground, so put a "Redeem Code" button on the paywall
382. **Direct URL**: `https://apps.apple.com/redeem?ctx=offercodes&id=APPID&code=CODE` — ideal for QR codes and email; state the minimum iOS version in marketing materials
393. **App Store > Account > Redeem Gift Card or Code**
40
41## Configuration Questions
42
43Ask user via AskUserQuestion:
44
451. **Distribution purpose?**
46 - Influencer/reviewer program (free access for promotion)
47 - Partner distribution (B2B or affiliate)
48 - Email re-engagement (win-back lapsed users)
49 - Event/conference distribution (in-person)
50 - Social media promotion (public campaign)
51
522. **Offer type?**
53 - Free subscription period (1 week, 1 month, 3 months)
54 - Discounted first period
55 - Extended free trial
56
573. **Scale?**
58 - Small (< 100 codes, targeted distribution)
59 - Medium (100-1,000 codes, campaign-based)
60 - Large (1,000+ codes, broad distribution)
61
62## Generation Process
63
64### Step 1: Design Campaign Strategy
65
66Based on the distribution purpose, design:
67- Target audience and outreach plan
68- Code type (one-time vs. custom)
69- Offer duration and terms
70- Distribution channel and messaging
71- Tracking and measurement plan
72
73### Step 2: Generate Campaign Document
74
75## Output Format
76
77```markdown
78# Offer Code Campaign: [Campaign Name]
79
80## Campaign Overview
81| Field | Value |
82|-------|-------|
83| Purpose | [Distribution purpose] |
84| Target Audience | [Who receives codes] |
85| Code Type | [One-time / Custom] |
86| Offer | [Free X months / Y% off first period] |
87| Total Codes | [Number] |
88| Distribution Period | [Date range] |
89| Code Expiration | [Date] |
90
91## App Store Connect Setup
92
931. Go to App Store Connect > Subscriptions > [Group] > [Subscription]
942. Navigate to "Offer Codes" tab
953. Create new offer:
96 - Offer type: [Free / Pay as you go / Pay up front]
97 - Duration: [X weeks/months]
98 - Pricing: [If discounted, specify tier]
994. Generate codes:
100 - Type: [One-time use / Custom code]
101 - Quantity: [Number]
102 - Custom code name: [If custom, e.g., "LAUNCH2025"]
103 - Expiration: [Date]
1045. Download codes CSV (for one-time codes)
105
106## Distribution Plan
107
108### Channel: [Channel Name]
109- **Recipients**: [Who gets codes and how many]
110- **Delivery method**: [Email / DM / QR code / Link]
111- **Message template**: [See below]
112- **Tracking**: [How to measure redemption]
113
114### Message Template
115
116#### For Influencers/Reviewers
117Subject: [App Name] — Complimentary Pro Access
118
119> Hi [Name],
120>
121> I'd love to offer you complimentary Pro access to [App Name] — [one-line description].
122>
123> Your personal code: **[CODE]**
124>
125> Redeem: Open the App Store → Account → Redeem Gift Card or Code → Enter code
126> Or direct link: [redemption URL]
127>
128> This gives you [offer details — e.g., 3 months free Pro].
129>
130> If you enjoy the app, we'd love an honest review or mention. No obligation at all.
131>
132> Best,
133> [Your name]
134
135#### For Email Re-engagement
136Subject: We've missed you — here's [X] free on us
137
138> Hi [Name],
139>
140> It's been a while since you've used [App Name], and we've been busy making it better.
141>
142> Here's what's new:
143> - [Feature 1]
144> - [Feature 2]
145> - [Feature 3]
146>
147> We'd love for you to come back and try it. Here's a code for [offer details]:
148>
149> **[CODE]**
150>
151> [Redemption instructions or direct link]
152>
153> This code expires [date].
154>
155> Welcome back,
156> [Your name / App name]
157
158#### For Social Media (Custom Code)
159> [Emoji] Special offer! Use code **[CUSTOMCODE]** in the App Store to get
160> [offer details] of [App Name] completely free.
161>
162> Redeem: [Link]
163>
164> Limited time — expires [date]. [Emoji]
165
166## In-App Redemption
167
168### Add Code Entry to Your App
169
170```swift
171import StoreKit
172
173struct SettingsView: View {
174 var body: some View {
175 Button("Redeem Offer Code") {
176 Task {
177 try? await AppStore.presentOfferCodeRedeemSheet()
178 }
179 }
180 }
181}
182```
183
184## Measurement
185
186| Metric | How to Track |
187|--------|-------------|
188| Codes distributed | Your distribution records |
189| Codes redeemed | App Store Connect > Offer Codes (redemptions report) |
190| Per-campaign attribution | `offer_code_reference_name` in transactions + `OFFER_REDEEMED` server notification |
191| Redemption rate | Redeemed / Distributed |
192| Post-offer retention | Retained after offer period ends |
193| Conversion to paid | Continued subscription after offer |
194
195## Campaign Calendar
196
197| Month | Campaign | Codes | Channel |
198|-------|----------|-------|---------|
199| [Month] | [Campaign name] | [Count] | [Channel] |
200```
201
202## Distribution Strategies by Purpose
203
204### Influencer Program
205- **Scale**: 10-50 codes per quarter
206- **Code type**: One-time use (track individual redemption)
207- **Offer**: 3-6 months free (generous for genuine feedback)
208- **Follow-up**: Request honest review 2 weeks after redemption
209- **Tracking**: Spreadsheet mapping code → influencer → outcome
210
211### Partner/Affiliate
212- **Scale**: 100-1,000 codes per partner
213- **Code type**: Custom code per partner ("PARTNER2025")
214- **Offer**: 1-3 months free
215- **Terms**: Clear agreement on promotion expectations
216- **Tracking**: Unique custom code per partner for attribution
217
218### Email Re-Engagement
219- **Scale**: Match churned user count
220- **Code type**: One-time use (unique per user)
221- **Offer**: 1 month free (low barrier to return)
222- **Timing**: 30-60 days after churn
223- **Tracking**: Email open → Redemption → Retention
224
225### Event/Conference
226- **Scale**: Match expected attendees
227- **Code type**: Custom code ("WWDC2025")
228- **Offer**: 1-3 months free
229- **Distribution**: QR code on slides/booth, printed cards
230- **Tracking**: Post-event redemption monitoring
231
232## Gotchas
233
234- **Intro-offer stacking order is locked at creation** — whether a code redeems before or after the introductory offer can NEVER be changed later
235- **Treat any code that leaves your systems as spent** — unredeemed codes can't be recovered or reissued
236- **Never let a code land an active subscriber on a lower tier** — exclude current subscribers from campaigns priced below their plan
237- **Listen on `Transaction.updates` from launch** — redemptions happen outside your app (App Store, URL), so entitlements arrive asynchronously
238
239## References
240
241- Related: `generators/subscription-offers` — StoreKit 2 offer implementation
242- Related: `generators/win-back-offers` — Win-back campaign strategy
243- Related: `app-store/marketing-strategy` — Overall promotional strategy