Switch the paywall to the single-screen presentation

Goal

By default the in-app purchase (IAP) paywall is a multi-product carousel — the app shows every subscription tier you’ve flagged and lets the shopper pick one. The single-screen presentation is the simpler alternative: a logo up top, a call-to-action headline and body, a list of feature/benefit lines, and one purchase button.

This article walks you through turning that presentation on and writing the screen’s copy. Once you’re done, the next time the app checks in, its payload will include iap_single_screen: 'yes' along with the copy and image values you set here.

One thing worth knowing up front: this is a presentation choice, not a pricing choice. The same products you built for the carousel still flow to the app in iap_co_packages — the single-screen UI just pitches one of them as the lone offer instead of showing them all in a carousel.


Audience and time

Field Value
Article type How-to (Admin)
Plugin mam-inapp-purchase-manager
Applies to plugin version 2.0+
Audience WordPress admin (manage_options)
Estimated time ~10 minutes
Last verified 2026-06-03

Before you start

  • General IAP settings configured — store keys, legal URLs, colors, and the on/off flag. See Configure IAP settings.
  • At least one IAP product created. See Create an IAP product.
  • WordPress admin access with the manage_options capability.

If the In-App Purchase Manager isn’t installed yet, start with Plugin overview: mam-inapp-purchase-manager.


How the toggle works

You’ll find the setting on the General Settings tab, labeled Use single screen IAP UI? (tsl-setting-iap_single_screen) — it’s a simple yes/no field. Set it to yes and two things happen:

  1. The admin page grows a second tab, Screen Settings, which holds the single-screen-only fields.
  2. On the next phone-data request, the mobile payload gets iap_single_screen: 'yes' plus the value of every single-screen field.

Set it back to no and the Screen Settings tab disappears; the single-screen keys stop going out in the payload. But nothing is lost — the values you typed stay put in the WordPress options table, just out of sight. Flipping single-screen on and off is non-destructive, so you’re free to switch back to the carousel without losing any of your copy.

One more thing worth knowing before you dive in: the single offer the app pitches is your default product — the one with the Default Product attribute set to Yes. Skip that designation and the app falls back to the first product in the package list. (The presentation is decided here; which product gets pitched is decided on the product itself — see Create an IAP product.)


Steps

1. Turn the single-screen UI on

Head to Mobile App Mgr → In-App Purchase Manager — the page opens on General Settings.

Set Use single screen IAP UI? to yes and save. The page reloads and a Screen Settings tab appears next to General.

2. Open the Screen Settings tab

Click Screen Settings to see the fields you’ll be filling in. Every one of them saves to the options table under a key prefixed tsl-setting-, and every one becomes a mobile payload key with that prefix stripped off.

Field (admin label) 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 for features and benefits 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. Logo for Top of Purchase Screen here is the very same tsl-setting-inapp_logo option used by the General Settings tab and the carousel UI — edit it here and it changes everywhere, since there’s no separate logo per presentation.

3. Write the call-to-action copy

This is the copy your shoppers will actually read before they buy, so keep it tight.

Call to action title is the headline (for example, Unlock Premium Access).

Call to action text is the body line underneath it (for example, Get unlimited content, no ads, and exclusive perks.).

Both are plain text, and both should stay short — remember, they’re rendering on a phone screen.

4. Upload the bullet image

Bullet point image for features and benefits is the small icon that sits in front of each feature/benefit line — typically a checkmark. A simple SVG or PNG works fine; the app sizes it to match the line height. Leave it blank and the app falls back to whatever default it ships with.

5. Fill in the feature/benefit lines

You get eight Feature / Benefit text fields to work with (iap_fandb_text_0 through iap_fandb_text_7), each one line of body copy sitting next to a bullet.

No need to fill all eight, either — the plugin only sends non-empty entries to the app, in order, so three lines work just as well as five or all eight. The app receives them as an array (iap_fandb_text[]) made up of just the lines you actually filled in.

The eight slots are fixed — there’s no ninth field, and supporting more than eight bullets would take a code change.

6. Set the purchase button title

Purchase button title is the label on your single CTA button — something like Subscribe, Start Free Trial, or Unlock for $4.99/month. Note that the price is not auto-substituted for you — type exactly the text you want your shopper to see.

7. Decide on promo codes

Has Promo Codes to redeem? decides whether the app shows a “Have a promo code?” prompt below the purchase button — set it to yes to show it, no to hide it.

Keep in mind the actual redemption happens through the mobile platform itself (App Store / Play Console); this flag just controls whether that UI element shows up at all.

8. Save and verify

Click Save Changes and you’re set — the values are stored, and the app picks them up on its next phone-data request.

Now see it live: open the app on a non-admin account (admins are exempt from the paywall) or inspect the phone-data endpoint directly, and confirm:

  • iap_single_screen is 'yes'
  • iap_cta_title, iap_cta_text, and 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 points to the image you chose
  • iap_has_promo_codes is 'yes' or 'no' as configured

Set Use single screen IAP UI? back to no and save. The Screen Settings tab disappears, the iap_single_screen key and its companions drop out of the payload, and the app falls back to the multi-product carousel. Nothing you wrote is lost, though — flip single-screen back on later and everything you typed comes right back.


Common gotchas

  • The Screen Settings tab vanishes when single-screen is off. Don’t worry — the values are still sitting in the database, just not rendered in admin or sent to the app. To edit them, flip single-screen back to yes, make your changes, and save. You can even leave it on yes while a build still uses the carousel; the extra keys are harmless in the payload.
  • The logo is shared. Change it on Screen Settings and it changes for the carousel UI too.
  • Empty CTA copy is sent as empty. Leave Call to action title blank and the mobile key goes out as an empty string ('') rather than being left out entirely. Most builds handle that gracefully, but an older, long-deployed build might render an empty headline area — so it’s worth just filling it in.
  • Admins never see the paywall. Administrators always receive inapp_has_iap = 'no', so be sure to test the presentation from a non-admin account.

Verification

This article was last verified against:

  • Plugin: mam-inapp-purchase-manager v2.0
  • Source: includes/admin-settings.phpstack_array (single-screen field definitions), add_page_tabs(), create_screen_settings(), and the iap_single_screen toggle in settings_array
  • Source: includes/phone-manager.php — the tsl-setting-iap_single_screen == 'yes' branch that adds the keys and filters empty iap_fandb_text entries

Re-verify whenever the option keys named here change, the count of iap_fandb_text_* slots (currently eight) changes, the empty-string filter on feature/benefit lines is removed, or the Screen Settings tab is reorganized.


  • Plugin overview: mam-inapp-purchase-manager
  • Configure IAP settings
  • Create an IAP product
  • Bypass IAP for a specific user
  • Hook: mam_iap_require_iap
Was this article helpful?
Contents

    Need Support?

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