Goal
Switch your app’s paywall from the multi-product carousel to the single-screen presentation: a logo, a CTA headline and body, a list of feature/benefit lines, and one purchase button. After this recipe, when the app fetches its configuration the payload will include iap_single_screen: 'yes' plus the supporting copy and image keys.
This is a presentation choice, not a pricing choice. The same iap_co_packages array you build by following Recipe: Create an IAP product still flows through — the app just renders one of those products as the single offer rather than a carousel.
Prerequisites
- General IAP settings configured per Recipe: Configure IAP settings
- At least one IAP product created per Recipe: Create an IAP product
- WP Admin access with
manage_optionscapability
How the toggle works
The general settings tab has a Use single screen IAP UI? field (tsl-setting-iap_single_screen). When set to yes:
- The admin page grows a second tab, Screen Settings, with the single-screen-only fields.
- The mobile JSON payload gets
iap_single_screen: 'yes'plus the values of every option inphone-manager.php‘s “stack array.”
When set to no, the Screen Settings tab disappears and the single-screen-only keys are not added to the payload. The values are still stored in wp_options — they’re just not surfaced. So flipping single-screen on and off is non-destructive.
The default product — the one with the Default Product attribute set to Yes — is the single offer the app pitches. If you don’t set one, the app picks the first product in iap_co_packages (sorted by menu order ascending).
Steps
1. Turn the single-screen UI on
Go to Mobile App Mgr → In-App Purchase Manager. On the General Settings tab, set Use single screen IAP UI? to yes. Save.
The page reloads and a Screen Settings tab appears next to General.
2. Open the Screen Settings tab
Click Screen Settings. The form has the following fields, all stored as tsl-setting-* options:
| Field | Option key | Mobile key |
|---|---|---|
| Logo for Top of Purchase Screen | tsl-setting-inapp_logo |
inapp_logo |
| Call to action title | tsl-setting-iap_cta_title |
iap_cta_title |
| Call to action text | tsl-setting-iap_cta_text |
iap_cta_text |
| Bullet point image | tsl-setting-inapp_bullet_image |
inapp_bullet_image |
| Feature / Benefit text (×8) | tsl-setting-iap_fandb_text_0 … _7 |
iap_fandb_text[] |
| Purchase button title | tsl-setting-iap_purchase_button_title |
iap_purchase_button_title |
| Has Promo Codes to redeem? | tsl-setting-iap_has_promo_codes |
iap_has_promo_codes |
The logo field is shared with the General Settings tab. Editing it on either tab updates the same tsl-setting-inapp_logo option. There is no per-tab variant.
3. Set the CTA copy
Call to action title is the headline (e.g., Unlock Premium Access).
Call to action text is the body line below it (e.g., Get unlimited content, no ads, exclusive perks.).
Both are plain text. Keep them tight — they’re rendering on a phone screen.
4. Upload a bullet image
Bullet point image is the small icon that prefixes each feature/benefit line. A simple SVG or PNG checkmark works; the app sizes it to match the line height. Leaving the field blank means the app falls back to whatever default it ships with.
5. Fill in the feature/benefit lines
There are eight Feature / Benefit text fields (iap_fandb_text_0 through iap_fandb_text_7). Each is one line of body copy.
The plugin only sends non-empty entries to the app. Empty fields are skipped. So you can use 3 lines, 5 lines, or all 8 — leave whichever you don’t need blank, in any order. The app receives them as an array (iap_fandb_text[]) preserving the order of non-empty entries.
6. Set the purchase button title
Purchase button title is the label on the single CTA button (e.g., Subscribe, Start Free Trial, Unlock for $4.99/month). The price is not auto-substituted — type whatever you want the user to see.
7. Configure promo codes
Has Promo Codes to redeem? controls whether the app shows a “Have a promo code?” link below the purchase button. Set to yes to enable; no to hide it.
The actual promo-code redemption is handled by the mobile platform (App Store / Play Console) — this flag only controls UI visibility.
8. Save and verify
Click Save Changes. The settings are persisted; on the next phone-data request the app receives them.
To verify, open the app on a non-admin account or hit the phone-data endpoint and confirm:
iap_single_screenis'yes'iap_cta_title,iap_cta_text,iap_purchase_button_titlematch what you typediap_fandb_textis an array of just the non-empty lines, in orderinapp_bullet_imageURL points to the image you pickediap_has_promo_codesis'yes'or'no'as configured
Common gotchas
- The Screen Settings tab disappears when single-screen is off. The values are still in
wp_options— they’re just not rendered in admin or sent to the app. To edit them, flip single-screen back toyes, edit, save. (You can leave it onyeswhile the app build still uses the carousel; the keys are extra payload but won’t break anything.) - *The eight `iap_fandbtext` slots are hardcoded.** There is no ninth slot. If you need more than eight bullets, the only path is a code change.
inapp_logois shared. Changing it on Screen Settings changes it for the carousel UI as well.- Empty CTA copy is sent as empty. If you leave Call to action title blank, the mobile key is sent as an empty string (
''), not omitted. The app needs to handle that — it usually does, but a long-deployed older build might render an empty headline area.
Verification
This article was last verified against:
- Plugin:
mam-inapp-purchase-managerv2.0 - Source:
includes/admin-settings.php(stack_array,add_page_tabs,create_screen_settings) - Source:
includes/phone-manager.php(single-screen branch)
Re-verify whenever the option keys named in this recipe change, the count of iap_fandb_text_* slots changes, or the empty-string filter on feature/benefit lines is removed.
Related articles
- Plugin overview: mam-inapp-purchase-manager
- Recipe: Configure IAP settings
- Recipe: Create an IAP product
- Hook: mam_iap_require_iap
Metadata
| Field | Value |
|---|---|
| Article type | Recipe (Admin) |
| Plugin slug | mam-inapp-purchase-manager |
| Applies to plugin version | 2.0+ |
| Category | Building Your App |
| Audience | WordPress admin |
| Estimated time | 10 minutes |
| Prerequisites article | Recipe: Configure IAP settings |
| Last verified | 2026-05-01 |
