Feature

Paywall builder for iOS and Android apps that works with the RevenueCat SDK

RevenueDot's paywall builder makes native paywalls for iOS and Android in the format the RevenueCat SDKs already render. Pick one of ten templates, edit it in the visual editor, translate it, and publish it to an offering. Your app shows it with one view, PaywallView, and you ship no app release to change it.

Free up to $10,000 a month in tracked revenue. Works with the RevenueCat SDK you already ship.

The RevenueDot paywall editor for a paywall named Annual first. The layer tree is on the left, a phone preview in the middle shows a headline, four benefit lines, a selected yearly plan at $39.99 and a Start free trial button, and the properties of the selected package are on the right.
The visual editor: layers, a live phone preview and the properties of the selected component. Prices in the preview are sample values.
Template to editor in a few clicks. Recorded in the RevenueDot dashboard with demo data.

10 templates

Trial timeline, annual first, feature hero, free vs pro, minimal, story pages, limited offer, tiers, reviews and web checkout.

17 component types

Text, image, icon, stack, package, purchase button, timeline, tabs, carousel, countdown, video and more, all editable.

Checked before publish

The server validates each paywall the way the iOS SDK decodes it and refuses to publish one the SDK could not render.

No app release

Apps fetch offerings at launch and when they return to the foreground, so a change reaches users within one session.

Steps

How to build and publish a paywall

Open Paywalls in the dashboard. A paywall belongs to one offering, and an offering has at most one paywall.

  1. 01

    Pick a starting point

    Choose a template from the gallery, start from scratch, or describe the app and the offer and let Generate with AI draft it. Filter templates by number of screens, purchase method, packages and tiers.

  2. 02

    Set the basics

    Choose the offering, add your app name, an accent color, and your Terms and Privacy links, then select Create paywall.

  3. 03

    Edit it

    Select any layer or click it in the phone preview. Change text, images, colors, spacing and package cards in the properties panel. Switch between light and dark, and between customers who are and are not eligible for an intro offer.

  4. 04

    Translate it

    Open the Localizations tab, add a language and fill in its strings. Empty cells show the default language, so a paywall is never blank.

  5. 05

    Publish

    Select Publish. RevenueDot checks the paywall first and then sends it to apps in the offerings response. Save draft keeps your work private until then.

Which paywall templates does RevenueDot have?

The gallery has ten layouts. Each one uses your offering's real packages in the preview.

TemplateWhat it does
Trial timelineExplains the free trial day by day, then shows two plans with yearly selected
Annual firstBenefits, then yearly and monthly plans with a savings badge
Feature heroA full-width image, five benefits with icons and plans side by side
Free vs ProA short comparison table, then two plans
MinimalA headline, your plans and one button
Story pagesThree swipeable value pages before the plans
Limited offerA countdown to the end of an offer, one plan, dark theme
TiersTwo tiers in tabs (Plus and Pro) with two plans each
ReviewsA rating, a user count and one review, then two plans
Web checkoutThe button opens web checkout instead of the store sheet (iOS)

What can you change in the paywall editor?

The editor has three columns: layers on the left, the phone preview in the middle and properties on the right. The preview shows the exact JSON your app receives.

  • Layers: add any of 14 component types, drag, nest, duplicate and remove them. Undo and redo work with the keyboard.
  • Variables: texts can use values the device fills in, such as {{ product.price_per_period }} and {{ product.relative_discount }}, so prices always show the store's local currency.
  • Light and dark colors, selected-state and intro-offer overrides, gradients, borders, shadows and badges.
  • Problems list: anything the SDK would not decode, such as a text without a string, is listed with a Go to link. You cannot publish while errors remain.
  • Versions: save a named version and restore it into the draft later. Unpublish takes a paywall off apps and keeps it as a draft.

How do you show a RevenueDot paywall in your app?

Add the RevenueCat UI library next to the SDK and present the paywall. PaywallView() shows the current offering's paywall, and you can pass an offering to show another one. Android uses PaywallDialog, React Native uses RevenueCatUI.presentPaywall() and Flutter uses RevenueCatUI.presentPaywall() from purchases_ui_flutter.

PaywallScreen.swiftSwift
import RevenueCatUI

struct HomeView: View {
    @State private var showPaywall = false

    var body: some View {
        Button("Go Pro") { showPaywall = true }
            // Shows the paywall you published for the current offering.
            .sheet(isPresented: $showPaywall) { PaywallView() }
    }
}

How do you validate and publish a paywall with the API?

Everything the editor does is in REST API v2. Check a paywall without saving it with POST /v2/projects/{project_id}/paywalls/validate, which returns errors and warnings. Publishing answers 422 with the first problem when the SDK could not render the paywall.

Publish a paywallcurl
curl -s -X POST "$REVENUEDOT_URL/v2/projects/$PROJECT_ID/paywalls/$PAYWALL_ID/actions/publish" \
  -H "Authorization: Bearer $SECRET_KEY"

What is not built yet?

  • Paywalls with several screens and navigation between them. A carousel gives you pages inside one screen, and a multi-screen paywall is served for its first screen only.
  • Dragging components directly on the phone preview. You reorder them in the layer list.
  • Video uploads. A video component takes a URL.
  • An editor for exit offers and custom variables. They pass through the API.

FAQ

Paywalls: questions people ask

How do I build a paywall for the RevenueCat SDK without writing UI code?

Open Paywalls in the RevenueDot dashboard, choose a template, pick your offering and publish. The paywall is served in the format the RevenueCat SDKs render natively, so your app only calls PaywallView on iOS, PaywallDialog on Android, or presentPaywall in React Native and Flutter. You write no layout code.

Can I change a paywall without releasing a new app version?

Yes. Apps fetch offerings, which carry the published paywall, at launch and when they return to the foreground. A change you publish reaches users within one session. The app needs a RevenueCat SDK version that renders paywall components, which for iOS is 5.83 or later.

Can I A/B test paywalls?

Yes, by testing two offerings. Give each offering its own paywall, then run an offering experiment that splits a share of customers between them and reports conversion, revenue and the chance the new offering wins. See the experiments feature page for the steps.

Can I translate a paywall into other languages?

Yes. The Localizations tab holds one set of strings per language. Missing strings fall back to the default language. The SDK also fills in the words around prices, such as month and days, in English, Spanish, French, German, Italian, Portuguese, Dutch, Russian, Japanese, Korean and Chinese.

Does RevenueDot support multi-step paywall flows?

Not yet. You can build several pages inside one screen with a carousel or tabs. A paywall with separate screens and navigation between them is served for its first screen only, so build multi-step onboarding as a web funnel instead.

Get started

Run subscriptions without the revenue share.

Start free on RevenueDot Cloud, free up to $10,000 a month in tracked revenue, or move an existing RevenueCat app with one line of code.

Already have an account? Sign in · Prefer your own servers? Self-host free