Paywall Smart Text

Paywall Smart Text is a feature that allows you to insert global variables into your product display. The variable values are substituted at the time the paywall is displayed to the user with the latest product information from the store.

Adding Smart Text Values

To add Smart Text to your paywall, navigate to the Paywall Builder and select the Products tab.

Then for each product in each platform you sell under (ie Google Play Store, Apple App Store), edit product display.

Click the in the text forms to see a menu of all the Smart Text variable options.

Where can I add Product SKU Text Variables?

Product SKU text variables have to have a product to reference. They are typically only added to the Product Fields.

However, if your paywall uses Selected Styling, you can also add Product SKU Text variables to the Purchase Button. This allows the Purchase Button to read, for example: 'Get Started for $price' where the price will change based on the currently selected SKU.

Currency Conversion

When a user views your paywall, the product data is localized to their store currency.

Our SDKs handle this localization and our Product SKU Smart Text variables enable you to show the localized price and unit to your users.

Do not setup different paywalls for different currencies. Instead use ${sku.price} and other price Smart Text variables. These will be correctly interpreted in the user's store currency.

Language Conversion

We can automatically convert time period units such as month and year into the user's language.

Apple

For users on Apple, the Apple App Store automatically converts the units into the correct language.

Google

For users on Google, the Nami SDK provides a translation for 40+ languages.

One-Time Purchases

One-time purchase SKUs are very simple and only have a price. You can insert the price on your paywall with ${sku.price}.

Subscriptions

Working with Time Periods

Time periods can be tricky. We support multiple different Smart Text variables to give you the flexibility to craft your messaging.

In particular there are 8 different Smart Text variables related to the length of a subscription:

  • duration

  • durationInMonths

  • durationSingular

  • durationInMonthsSingular

  • period

  • periodInMonths

  • periodNumber

  • periodNumberInMonths

The Smart Text variables that specify ...inMonths attempt to convert the subscription length to months. This is useful to comparing monthly and annual subscriptions.

Let's look at how these work with several concrete examples. Each column in the table corresponds to SKUs of different subscription length

Variable1 Week Sub will Display1 Month Sub will Display6 Month Sub will Display1 Year Sub will Display

duration

1 week

1 month

6 months

1 year

durationInMonths

n/a

1 month

6 months

12 months

durationSingular

1 week

1 month

6 month

1 year

durationInMonthsSingular

n/a

1 month

6 month

12 month

period

week

month

month

year

periodInMonths

n/a

month

months

months

periodNumber

1

1

6

1

periodNumberInMonths

n/a

1

6

12

Working with Prices

We have a few variables built in to help you display product pricing in different units or durations.

  • pricePerMonth

  • pricePerWeek

  • pricePerDay

VariableDisplay - $49.99/year SKUDisplay - $34.99/6 month SKUDisplay - $14.99/month SKUDisplay - $3.99/week SKU

pricePerMonth

$4.17

$5.83

$14.99

n/a

pricePerWeek

$0.96

$1.35

$3.46

$3.99

pricePerDay

$0.14

$0.19

$0.49

$0.57

Handling Free Trials and Offers with Smart Text

There are a few distinct time periods in the lifecycle of a subscription. These include:

  • Free Trial Period

  • Introductory Pricing Period

    • ⚠️Introductory Offers are only available on iOS

  • Promotional Pricing Period

  • Regular Recurring Billing Period

The table below outlines the information available in each period of the subscription lifecycle.

PriceDurationSmart Text Includes

Free Trial

✔️

freeTrial

Introductory Price Period (iOS Only)

✔️

✔️

introductory

Promotional Price Period

✔️

✔️

promo

Regular Recurring Billing Period

✔️

✔️

Comparing Products

Comparing Prices as a Percentage Smart Text can automatically calculate the price difference between 2 subscription SKUs and return it as a %. To use this, setup at least 2 products on your paywall and then add the variable into display text on the product you wish to highlight. Typically this will be a product with a larger duration.

Use variable ${sku.percentagePriceDifferenceFromSku:[#]} to reference a product on the paywall by index. Indexing starts at 1 for the first product in the Added Products list.

Or use variable format ${sku.percentagePriceDifferenceFromSku:[sku_id]} to reference a product directly by SKU id. Note: the SKU Id referenced must be available on the paywall.

In the example above, the 6 Month and 12 Month products were setup with subtext Save ${sku.percentagePriceDifferenceFromSku:1}, which compared their prices to that of the 1 Month product at index 1.

${sku.percentagePriceDifferenceFromSku} only works with subscription products.

Comparing Prices as a Dollar Amount Smart Text can automatically calculate the price difference between 2 subscription SKUs per duration and return it as a dollar amount. To use this, setup at least 2 products on your paywall and then add the variable into display text on the product you wish to highlight. Typically this will be a product with a larger duration.

Use variable ${sku.priceDifferenceFromSku:[#]} to reference a product on the paywall by index. Indexing starts at 1 for the first product in the Added Products list. See Multiple SKUs for more info.

Or use variable format ${sku.priceDifferenceFromSku:[sku_id]} to reference a product directly by SKU id. Note: the SKU Id referenced must be available on the paywall.

The price difference translates both products to the same duration and then returns the dollar amount difference between the price. So for example, if you had a 6 month product with price $14.99 and a 1 year product with price $24.99, ${sku.priceDifferenceFromSku:1} would not return $10, but rather $4.99, which is the difference in costs if the product durations were the same.

${sku.priceDifferenceFromSku} only works with subscription products.

All Subscription Product Smart Text variables

Here's the full list of product SKU Smart Text variables

  • ${sku.price}

  • ${sku.pricePerMonth}

  • ${sku.pricePerMonthRounded} (SDK Version 3.1.24+)

  • ${sku.pricePerWeek} (SDK Version 3.1.21+)

  • ${sku.pricePerWeekRounded} (SDK Version 3.1.24+)

  • ${sku.pricePerDay} (SDK version 3.1.17+)

  • ${sku.duration}

  • ${sku.durationInMonths}

  • ${sku.durationSingular}

  • ${sku.durationInMonthsSingular}

  • ${sku.period}

  • ${sku.periodInMonths}

  • ${sku.periodNumber}

  • ${sku.periodNumberInMonths}

  • ${sku.freeTrialDuration}

  • ${sku.freeTrialDurationSingular}

  • ${sku.freeTrialPeriod}

  • ${sku.freeTrialPeriodNumber}

  • ${sku.introductoryPrice} (iOS & Roku only)

  • ${sku.introductoryPricePerMonth} (iOS & Roku only, SDK Version 3.2+)

  • ${sku.introductoryDuration} (iOS & Roku only)

  • ${sku.introductoryDurationSingular} (iOS & Roku only)

  • ${sku.introductoryPeriod} (iOS & Roku only)

  • ${sku.introductoryPeriodNumber} (iOS & Roku only)

  • ${sku.promoPrice:[# or promo ref id]}

  • ${sku.promoPricePerMonth:[# or promo ref id]} (coming soon)

  • ${sku.promoDuration:[# or promo ref id]}

  • ${sku.promoDurationSingular:[# or promo ref id]}

  • ${sku.promoPeriod:[# or promo ref id]}

  • ${sku.promoPeriodNumber:[# or promo ref id]}

  • ${sku.priceDifferenceFromSku:[# or product id]}

  • ${sku.percentagePriceDifferenceFromSku:[# or product id]}

Testing

Many smart text variables require data that are only available on device. The paywall preview in the Control Center will show XXXX as replacements in this situation.

Be sure to check your paywall in the iOS simulator, Android emulator, or an on-device build. If any variables are missing or are still showing with the ${sku.name} syntax, please check that the variable name is correct in the Control Center.

Testing Localization

Test Storefront - Apple

The Storefront controls which currency appears on the paywall.

  1. Open Xcode

  2. Open your Storekit config file

  3. Change the Default Storefront to another country

  4. Save the storekit config

  5. Clean your build folder

  6. Do a fresh install on your simulator

  7. When your load the app, you should see currency from that country

Test Product Language on Apple

The Paywall language is set by the device. If you don't override the device language, it will use the language from App Settings.

  1. To test this, open your simulator

  2. Open the Settings app and navigate to General > Language & Region

  3. Change the preferred language

  4. Your simulator will restart

  5. Load your app on the simulator.

  6. Your paywall Smart Text variables will be translated appropriately.

If you override the device language in your app code, this language will always be used. Learn more about setting device language:

Why isn't the rest of my paywall copy translated to the language I chose?

Nami only translates product Smart Text variables. The rest of your paywall must be translated manually.

To do this, create a paywall with copy in a different language (ie Spanish). Then setup a Campaign rule for Device Language = Spanish and assign this paywall. All users with device language=Spanish will see that paywall. Otherwise they will see English/your default paywall language.

See Nami Paywalls in Different Languages to learn more.

Last updated