Recipe: Use the single-screen IAP UI

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_options capability

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:

  1. The admin page grows a second tab, Screen Settings, with the single-screen-only fields.
  2. The mobile JSON payload gets iap_single_screen: 'yes' plus the values of every option in phone-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_screen is 'yes'
  • iap_cta_title, iap_cta_text, iap_purchase_button_title match what you typed
  • iap_fandb_text is an array of just the non-empty lines, in order
  • inapp_bullet_image URL points to the image you picked
  • iap_has_promo_codes is '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 to yes, edit, save. (You can leave it on yes while 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_logo is 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-manager v2.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.


  • 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
Contents

    Need Support?

    Can’t find the answer you’re looking for? Don’t worry we’re here to help!