Create iOS Subscription Introductory Offer
イントロダクトリーオファーにより、適格なユーザーに無料試用版または割引されたイントロダクトリー価格を提供して、参入障壁を低減し、サブスクリプションの転換を増やすことができます。
Overview
Section titled “Overview”Introductory offers are one of the most effective tools for growing your subscriber base. They allow users to:
- Try your premium features risk-free
- Experience value before committing
- Start at a lower price point
- Build confidence in your product
Offer Types
Section titled “Offer Types”iOS supports three types of introductory offers:
1. Free Trial
Section titled “1. Free Trial”Customers get complimentary access for a specified duration. After the trial, they’re charged at standard rates if they don’t cancel.
Examples:
- 7 days free
- 14 days free
- 1 month free
Best for:
- High-value subscriptions
- Feature-rich apps
- Building user habit
2. Pay Up Front
Section titled “2. Pay Up Front”Customers pay a single discounted price that covers the introductory period.
Examples:
- $1.99 for 2 months (then $9.99/month)
- $9.99 for 3 months (then $19.99/month)
Best for:
- Commitment signals
- Cash flow needs
- Testing price sensitivity
3. Pay As You Go
Section titled “3. Pay As You Go”Customers pay a reduced price for multiple billing cycles.
Examples:
- $1.99/month for 3 months (then $9.99/month)
- $4.99/month for 6 months (then $14.99/month)
Best for:
- Gradual commitment
- Long-term value demonstration
- Reducing perceived risk
Eligibility Requirements
Section titled “Eligibility Requirements”Users can only receive introductory offers if they:
- Haven’t previously received an introductory offer for the product
- Haven’t received an introductory offer for any product in the same subscription group
- Haven’t had an active subscription to the product
Prerequisites
Section titled “Prerequisites”You must first create an auto-renewable subscription before adding an introductory offer.
Creating an Introductory Offer
Section titled “Creating an Introductory Offer”-
Navigate to Subscription
In App Store Connect, go to your app’s Monetize > Subscriptions section and select the subscription you want to add an offer to.
-
Add Subscription Price
Click the + icon next to “Subscription Prices” to open the pricing modal.
-
Create Introductory Offer
Select “Create introductory offer” from the options.

-
Configure Countries and Start Date
Countries and Regions: Select where the offer will be available
- Choose all countries for maximum reach
- Or limit to specific markets for testing
Start Date: When the offer becomes available
- Can be immediate or scheduled for the future
- Useful for coordinating with marketing campaigns
End Date (Optional): When the offer expires
- Leave blank for ongoing availability
- Set a date for limited-time promotions
-
Select Offer Type
Choose one of the three offer types:
Free (Free Trial)
- Select duration (days, weeks, months)
- Examples: 7 days, 2 weeks, 1 month
Pay Up Front
- Set single payment price
- Set duration covered by payment
- Example: $1.99 for 2 months
Pay As You Go
- Set discounted price per period
- Set number of periods
- Example: $2.99/month for 3 months
-
Review and Confirm
Review the summary showing:
- Offer type and duration
- Pricing details
- Regular price after intro period
- Availability dates and countries
-
Save
Click Save to create the introductory offer. It will be available for testing immediately in sandbox mode.
Offer Configuration Examples
Section titled “Offer Configuration Examples”Example 1: Standard Free Trial
Section titled “Example 1: Standard Free Trial”Type: FreeDuration: 7 daysThen: $9.99/monthUser Journey:
- Day 1-7: Free access
- Day 8: First charge of $9.99
- Monthly charges continue
Example 2: Upfront Discounted Period
Section titled “Example 2: Upfront Discounted Period”Type: Pay Up FrontPrice: $4.99Duration: 3 monthsThen: $9.99/monthUser Journey:
- Day 1: Charged $4.99
- 90 days access
- Day 91: Charged $9.99/month
Example 3: Gradual Introduction
Section titled “Example 3: Gradual Introduction”Type: Pay As You GoPrice: $2.99/monthPeriods: 6 monthsThen: $9.99/monthUser Journey:
- Months 1-6: $2.99/month
- Month 7+: $9.99/month
Using in Your App
Section titled “Using in Your App”The native-purchases plugin automatically handles introductory offer presentation and eligibility:
import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// Fetch products with intro offer informationconst { products } = await NativePurchases.getProducts({ productIdentifiers: ['com.yourapp.premium_monthly'], productType: PURCHASE_TYPE.SUBS,});
const product = products[0];
// Display intro offer details (StoreKit sends localized metadata)if (product.introductoryPrice) { console.log('Intro price:', product.introductoryPriceString); console.log('Intro period:', product.introductoryPricePeriod); console.log('Intro cycles:', product.introductoryPriceCycles); console.log('Regular price:', product.priceString);} else { console.log('No intro offer configured');}
// Purchase (StoreKit automatically applies intro pricing if eligible)try { const transaction = await NativePurchases.purchaseProduct({ productIdentifier: 'com.yourapp.premium_monthly', productType: PURCHASE_TYPE.SUBS, });
console.log('Subscription active, receipt length:', transaction.receipt?.length); await validateReceiptOnServer(transaction.receipt);} catch (error) { console.error('Purchase failed:', error);}Displaying Intro Offers to Users
Section titled “Displaying Intro Offers to Users”Best Practices for UI
Section titled “Best Practices for UI”Clear Value Proposition:
Try Premium Free for 7 DaysThen $9.99/month. Cancel anytime.Emphasize Savings:
Start at Just $1.99Get 3 months of Premium for only $1.99Then $9.99/monthTransparent Communication:
Your Free Trial• Access all premium features• No charge for 7 days• $9.99/month after trial• Cancel anytime, even during trialExample Implementation
Section titled “Example Implementation”function formatIntroOffer(product: any): string { if (!product.introductoryPrice) { return `${product.priceString} per ${product.subscriptionPeriod}`; }
const intro = product.introductoryPrice; const regular = product.priceString;
if (intro.price === 0) { // Free trial return `Try free for ${intro.periodString}, then ${regular}`; } else if (intro.cycles === 1) { // Pay up front return `${intro.priceString} for ${intro.periodString}, then ${regular}`; } else { // Enterprise return `${intro.priceString} for ${intro.cycles} ${intro.periodString}s, then ${regular}`; }}Marketing Best Practices
Section titled “Marketing Best Practices”Trial Length Strategy
Section titled “Trial Length Strategy”- 3-7 days: Quick decision apps, games
- 7-14 days: Standard for most apps
- 14-30 days: Complex tools, professional apps
- 30+ days: High-value B2B or enterprise
Pricing Psychology
Section titled “Pricing Psychology”- $0.99-$1.99: Very low barrier, good for testing
- 50% off: Strong perceived value
- First month free: Common, familiar pattern
Communication Timing
Section titled “Communication Timing”- Before trial ends: Remind users of upcoming charge
- Highlight value: Show usage stats, achievements
- Easy cancellation: Build trust with transparent process
Testing Intro Offers
Section titled “Testing Intro Offers”Use sandbox testing to verify behavior:
import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// In sandbox mode, accelerated subscription durations apply:// - 3 days free trial = 3 minutes// - 1 week free trial = 3 minutes// - 1 month free trial = 5 minutes
const { products } = await NativePurchases.getProducts({ productIdentifiers: ['premium_monthly'], productType: PURCHASE_TYPE.SUBS,});
// Purchase with intro offerconst transaction = await NativePurchases.purchaseProduct({ productIdentifier: 'premium_monthly', productType: PURCHASE_TYPE.SUBS,});
console.log('Intro purchase transaction:', transaction.transactionId);
// Wait for accelerated renewalsetTimeout(async () => { const { purchases } = await NativePurchases.getPurchases({ productType: PURCHASE_TYPE.SUBS, }); const premium = purchases.find((purchase) => purchase.productIdentifier === 'premium_monthly'); console.log('After trial state:', premium?.subscriptionState);}, 180000); // 3 minutes for weekly trialImportant Notes
Section titled “Important Notes”Eligibility Rules
Section titled “Eligibility Rules”- One intro offer per user per subscription group (lifetime)
- Applies to new subscribers only
- Cannot be used again after cancellation
- Not available for subscription upgrades/crossgrades
StoreKit API
Section titled “StoreKit API”introductoryPriceshows intro offer detailseligibilitymethod checks if user qualifies- Automatically applied at purchase time
- No special purchase method needed
Limitations
Section titled “Limitations”- Only one intro offer active per subscription at a time
- Cannot combine with other discount types
- Cannot change eligibility rules
- Apple controls eligibility checking
Troubleshooting
Section titled “Troubleshooting”Intro offer not showing:
- Check if offer is activated in App Store Connect
- Verify user hasn’t used an intro offer before
- Ensure user hasn’t subscribed to anything in the group
- Test with new sandbox account
Eligibility check failing:
- Wait for App Store sync (can take 2-3 hours)
- Verify product ID is correct
- Check subscription group configuration
- Test in sandbox with fresh test account
Wrong price displaying:
- Check regional pricing settings
- Verify currency conversion
- Ensure offer dates are current
- Refresh product information
Sandbox testing issues:
- Use accelerated durations (3 min = 1 week)
- Create new test accounts for each test
- Wait for trial to complete naturally
- Check renewal count (max 6 in sandbox)
Analytics and Optimization
Section titled “Analytics and Optimization”Track These Metrics
Section titled “Track These Metrics”- Intro offer acceptance rate
- Trial-to-paid conversion rate
- Cancellation during trial
- Retention after first charge
- Revenue impact
A/B Testing Ideas
Section titled “A/B Testing Ideas”- Free trial vs. paid intro
- Trial length variations
- Discount percentage
- Single payment vs. recurring discount
Optimization Strategy
Section titled “Optimization Strategy”// Track offer performanceanalytics.track('intro_offer_displayed', { product_id: product.identifier, offer_type: product.introductoryPriceType, offer_duration: product.introductoryPricePeriod});
analytics.track('intro_offer_accepted', { product_id: product.identifier});
// Monitor conversionNativePurchases.addListener('transactionUpdated', (transaction) => { if (transaction.productIdentifier === product.identifier && transaction.isActive) { analytics.track('trial_converted', { transactionId: transaction.transactionId, productId: transaction.productIdentifier, }); }});Next Steps
Section titled “Next Steps”- Configure sandbox testing to test your intro offers
- Set up promotional offers for win-back campaigns
- Implement subscription analytics
- Create targeted marketing campaigns
Additional Resources
Section titled “Additional Resources”For more details, refer to the official Apple documentation on introductory offers.