Nami Public Documentation
Sign In
Nami Documentation
Nami Documentation
  • Get Started
    • Overview
      • Key Concepts
      • Data Collection
      • Built for Privacy
    • Evaluating Nami
    • SDKs
      • Apple Native SDK
      • Android Native SDK
      • Amazon Native SDK
      • Roku Native SDK
      • React Native Cross-Platform SDK
      • Flutter Cross-Platform SDK
      • Unity Cross-Platform SDK
      • Release Notes
        • Find Nami SDK Version
    • Quickstart Guide
  • Subscription Management
    • Overview
    • Products
      • Archive Products
      • Sync Products
    • Entitlements
    • Customer Screen
    • Accounts and Login/Logout
    • Advanced Use Cases
      • Upgrades and Downgrades
      • Supported Purchase Change States by Platform
      • Restoring Purchases
      • Working with Consumable IAPs
  • No Code Paywalls
    • Overview
    • Paywall Creator
      • Using the Creator
      • Paywall Layout
      • Components
        • Editing, Deleting, Reordering
        • Hiding Components
        • Video
        • Collapse
      • Editable Properties
        • Focused Styling
        • Safe Area
      • Conditions
        • Notched Devices
        • Product Entitlements
      • Adding Products
      • Repeating Product Group
      • Product Fields
      • Capabilities
        • Featured Styling
        • Selected Styling
        • Custom Brand Fonts
        • Carousel
        • Trial Eligibility
        • Deeplink Button
        • Introductory Offer Eligibility
        • Login Check
        • Product Groups
        • Conditional Product Groups
        • Offer Eligibility and Purchasing
        • Screenreader Text
        • Personalization Tokens
        • Custom Variables
        • Multipage
        • Custom Data Source
        • Advanced Video Features
        • Product Error States
      • ❓FAQs
        • Designing Paywalls in Figma
        • Guide to Building a Paywall from Scratch
      • 🎁Releases
        • Roadmap
    • Paywall Templates
      • Pacific
      • Pacific Premium
      • Trident
      • Starfish
      • Mantis
      • Venice
      • Venice Premium
      • Honest
      • Catalina
      • Oyster
      • Puffin
      • Marina
      • Beluga
      • Driftwood
      • Lagoon
      • Pisces
      • Aquarius
      • Conch
      • Lionfish
      • Moray
      • Tetra
      • Lighthouse
      • Puffin Tablet
    • Managing Paywalls
      • Archiving a Paywall
      • Duplicate a Paywall
    • Paywall Smart Text
    • Pricing Eligibility States
    • Pricing Eligibility by Platform
    • Nami Paywalls in Different Languages
    • Legacy Paywalls
  • Campaigns
    • Placements
      • Create a Placement
      • Deeplink Placements
      • Archiving a Placement
      • Managing Lots of Placements
      • Export Placements
    • Campaigns
      • Campaign Filters
        • Campaign Use Cases
      • Archiving a Campaign
      • Scheduling a Campaign
      • Campaign Conversion Events
      • Managing Lots of Campaigns
      • Campaign Troubleshooting
    • A/B and Multivariate Testing
      • Selecting an A/B test winner
      • A/B Test Allocation
  • Integrations
    • All Integrations
    • Billing Platforms
      • Apple Integration
        • App Store Setup
          • Privacy Details
        • Platform Integration
        • App Store Server Notifications
        • Store Credentials
          • App Store Connect Shared Secret
          • Apple App Store Connect API
          • Apple In App Purchase
        • Add a Product
        • Platform Sync
        • SDK Integration
        • Troubleshooting
        • Testing and Development
          • Apple Testing Environments
          • Setting up Device Sandbox Test Environment
          • Setting up StoreKit config in Xcode
      • Google Integration
        • Google Play Store Setup
        • Platform Integration
        • Service Account
        • Real-time Developer Notifications
        • Add a Product
        • Platform Sync
        • SDK Setup
        • Troubleshooting
          • Supporting Android minSdkVersion 25 or lower
          • Requested product is not available for purchase
          • Unsupported Version of Play Billing
      • Amazon Appstore Integration
        • Create Amazon Android App
        • Platform Integration
        • Shared Key
        • Real-time Event Notifications
        • Add a Product
        • SDK Integration
        • Testing
      • Roku Integration
        • Platform Integration
        • API Key
        • Transaction Notifications
        • Add a Product
        • SDK Integration
      • Web Integration
    • Analytics Tools
      • Adobe Analytics
      • Amplitude
      • Google Analytics
      • mParticle
      • 3rd-Party Analytics
    • Subscription Management
      • Nami Subscription Management
      • Bring your Own Payment Code
    • CDP Integrations
      • Adobe CDP Integration
      • Amplitude CDP Integration
      • Custom CDP Integration
      • Generic CDP Integration
    • Other Integrations
      • Wicket Labs
      • Webhooks
        • Introduction to the Nami ML Event System
        • Event Types
          • Purchase Status Updates
          • Events for Upgrades, Downgrades, and Crossgrades
        • Event Subscriptions
        • Understanding Transferred Events and Accounts
      • API Access
    • Events Feed
  • Analytics
    • Using Charts
    • Paywall Analytics
      • Impressions
      • Paywall Conversion Rate
      • Sessions
      • Active Devices
    • Subscription Analytics
      • Revenue
      • MRR
      • Purchases
      • Trial Starts
  • Nami Account
    • Manage your Apps
      • Find your Nami App Platform ID
      • Setting up Legal Text for your Apps
    • Organization
      • Configuring Organization Security Policies
      • Billing
    • Invite your Team
      • Roles
    • Manage your Account
      • Two-Factor Authentication (2FA)
Powered by GitBook
On this page
  • 1. Identify Placements 🎯
  • 2. Assign Labels to Placements 💬
  • 3. Create Placements
  • 4. Create Campaigns and Rules ▶️
  • 5. Assign Paywalls 🌄
  • 6. Add Placements to your App Code 👩🏼‍💻
  • 7. Advanced: Create Dynamic Placements ✨
  1. Campaigns

Placements

Learn how to identify actions or locations in your app that should launch a paywall

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!

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.

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.

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. Advanced: 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

Last updated 1 year ago

3. Create Placements

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.

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

📌
Learn more.
Learn more about Campaign Behavior
Read about Campaign Use Cases
Learn More.