Learn how Product and Marketing can plan Campaigns to minimize dev time.

If you have lots of paywalls, you will want to do some planning to make it easy to roll out changes without requiring development. Here are some key steps:

1. Identify Placements 🎯

A placement is an action or location in the app that should launch a paywall.

Common Examples Include:

  • After the user first launches the app
  • The last step of onboarding
  • When user attempts to access gated content in a freemium app such as unlocking exclusive content
  • Clicking a button in the app or settings menu
  • When user deep-links into the app from a particular URL
  • Random paywall launch during a sales or promotional event period

Each placement is identified by a label and can have multiple campaigns attached to it. Each of these campaigns in turn can have multiple paywalls.


Our Free and Starter plans only support 1 paywall placement. Upgrade to Team to create up to 3 placements, or upgrade to Business for unlimited placements.

2. Assign Labels to Placements πŸ’¬

After you have identified your current and future placements, assign labels to them. Each placement should have 1 label, that will be attached to all the campaigns.

Labels are short text 'slugs' such as onboarding_step_3, settings, or promo.

The label is used by development to raise a particular campaign placement.


If you change the placement label in the Control Center, make sure it is also updated in your code. Otherwise, your paywall won't launch!

3. Create Placements πŸ“Œ

Learn more.

4. Create Campaigns and Rules ▢️

A campaign is a display unit for your paywall. Campaigns have optional labels and rule sets to help show the paywall to the right set of users.

You will want to create at least 1 campaign for each placement.

Each placement can have a number of campaigns. When the code for that placement is run, each campaign in the placement will be tested until a matching set of rules is found.

Learn more about Campaign Behavior

For example, you may want to create a different campaign for each language you support in your app. Then you can use Audience Targeting to add a Device Language Rule to each campaign. Read about Campaign Use Cases


Campaign Best Practice

Always create a fallback campaign for each placement that has no rules. That way, if a user doesn't match any of the previous campaigns, they will still see a paywall.

5. Assign Paywalls πŸŒ„

Each campaign should have at least 1 paywall.

Paywalls can be customized to match the placement. For example, a placement during onboarding might have copy that welcomes the user and outlines a few key features. But a placement to unlock a specific feature should go into detail about that feature to encourage a purchase.

You can use A/B Testing to run multiple paywalls within a campaign and monitor conversion. Learn More.

6. Add Placements to your App Code πŸ‘©πŸΌβ€πŸ’»

Now that you have your campaigns and labels ready, development can add campaign launch code. For each of the placements you identified, developers should add a NamiCampaignManager.launch(label) call.

7. Create Dynamic Placements ✨

If you have placements in the Nami Control Center set to Paused, they won't launch. You can use this feature to dynamically turn on and off content inside your app.

For example, you could create a placement with label black_friday that controls whether a promotional banner appears on your app home screen. In November, set the placement to 'Live' to turn on the promotional unit without requiring an app update.

Alternately, you can turn on different rules inside a placement.