VoidhashDocs
DevelopersHelp centerGuidesAPI reference
Dashboard
Help center
Get started
Get access to Studio
Find your way around Studio
Glossary
Files and bots
Files and boards
Bots
Analytics
Analytics overview
Reports
Chart reference
Metric definitions
Insights and dashboards
Query with VoidQL
Alerts
Check your data
Ads
Ad measurement
Connect Meta Ads
Send purchases to Meta
Ads reports
People
Find and help a person
Groups
Cohorts
Refunds and cancellations
Products
Set up products and perks
Paywalls
Design a paywall
Prices and buttons
Design for every device
Onboarding flows
Translate a paywall
Fonts and images
Paywall components
Build and deploy
Paywall locations
A/B testing
Feature flags
A/B tests
Automations
Automations
Push notifications
Settings
Payment providers
Manage projects and teams
Members and roles
SSO and directory sync
Notices
Plans and billing
Audit log
Your account
Help
FAQ
Troubleshooting

Paywall locations

Choose in Studio which paywall each place in your app shows, and swap it without an app update.

A paywall location is a named place in your app that can show a paywall, such as onboarding or settings-upsell. Your app asks for the location; you decide in Studio which paywall it shows. That lets you replace a paywall without releasing a new app version.

Early access

Paywall locations are in early access. Ask us on Discord, or email support@voidhash.com on a paid plan, to turn them on for your team.

Create a location

The Paywall locations page in StudioEach location shows whether a paywall is live there

  1. Open Paywalls → Paywall locations and click New paywall location.
  2. Enter a Name of 3–64 characters, such as Onboarding end.
  3. Check the Location slug, filled in from the name: 3–64 lowercase letters, digits, - and _.
  4. Optionally add a Description of where it appears in the app, up to 255 characters.
  5. Click Create location. The location appears in the list as Empty until you place a paywall there.

The slug can't change later, because your app's code uses it. Name it after the place in the app, not after the paywall it shows today.

To change the name or description, choose Edit details in the location's menu.

Show a paywall at a location

Assigning a paywall to a location is a placement. A location shows at most one paywall at a time, and the paywall needs a live build: build and deploy it first.

A paywall's page in Studio, with its live build and the locations it's placed atA paywall's page lists its live build and its locations

  • From the location: click Place a paywall and pick the paywall.
  • From the paywall's page: click Place at a paywall location (or Add placement) and pick the location. Each one is marked Empty, Currently showing another paywall, or Already showing this paywall.

Picking a paywall places it at once, and the location turns Live.

A placement follows the paywall: when you deploy a new build, every location that shows it switches to the new build.

Change or end a placement

  • Change paywall, on the location's page or in its menu, replaces what the location shows. The app keeps asking for the same location and gets the new paywall.
  • End placement, in the location's menu, stops showing anything there at once, without asking to confirm. The app then shows its own fallback screen.

At a location running an A/B test, either one stops the test at that location.

Changes reach most people within about an hour. See What running apps see.

Before you end a placement or archive a location, check with your developers that the app has a fallback screen for it.

Try a paywall in test first

A location can show a different paywall to builds of your app that use a test key, so you can check a new paywall where it will really appear before any customer sees it. The location's page has two tabs:

  • Production is what everyone sees.
  • Test is what apps using a test key see. Until you change it, test follows production: they see the same paywall, or the same A/B test.

To try a paywall:

  1. Open the Test tab and click Show a different paywall, then pick it. It needs a live build, like any placement. Production doesn't change.
  2. Open the location in a build of your app that uses a test key.
  3. When it's right, click Apply to production and confirm. Everyone now sees that paywall, and test follows production again.

Reset drops test's paywall without touching production, so test shows what production does again. While test has a paywall of its own, Change paywall on the Test tab replaces it.

In the list of locations, Test differs marks a location that shows test keys something else, and a paywall's page marks such a location Test only.

Apply to production isn't available while an A/B test runs at the location in production. Conclude the test first.

Archive a location

Archive a location your app no longer uses: choose Archive in its menu and confirm with Archive paywall location. It stops showing anything, and its placement history is kept. Archiving can't be undone, and the slug stays taken. To use the place again, create a new location with a new slug and give the slug to your developers.

StatusMeaning
LiveShows a paywall.
EmptyShows no paywall of its own. Unless it runs an A/B test, the app shows its fallback.
ArchivedRetired; shows nothing for good.

A location running an A/B test reads Empty, though apps get the test's paywalls there; the Live tab still lists it.

Stats

On Voidhash Cloud, the locations list shows each location's Views, Unique viewers, Purchases and Conversion over the range you pick, Last 30 days at first. Revenue, Proceeds, Net proceeds, Trials and Refunds show "—" for now, because revenue isn't yet attributed to a location. Each location's page charts views and purchases over a range of its own. Self-hosted Studio doesn't collect these stats.

Use the slug in your app

Give your developers the location slug. They add it to the app once, and from then on everything about that place is decided in Studio. For developers: Swift, Kotlin and React Native paywall setup.

No targeting rules

A location shows the same paywall to everyone who reaches it; only apps using a test key can be shown another, as described in Try a paywall in test first. To show different paywalls to different people, either:

  • run an A/B test at the location, which splits people between paywalls at random, or
  • create separate locations, such as onboarding-trial and onboarding-paid, and have your app choose which one to open.

If something's off

  • Placing fails, saying the paywall has no active released version: it has no live build yet. Deploy it first.
  • Placing fails, saying you're not allowed, or ends in "Failed to end placement": changing placements needs an admin or the owner.
  • The app shows its fallback: the location is Empty with no A/B test running, the app asks for a different slug, or the change hasn't reached the device yet. See Troubleshooting.

Next steps

  • Run an A/B test at a location
  • Build and deploy
  • Read paywall reports

Still stuck? Check Troubleshooting, ask us on Discord, or email support@voidhash.com on a paid plan.

Something wrong or missing on this page? Tell us by email or on Discord.

PreviousBuild and deployNextFeature flags

On this page

Create a locationShow a paywall at a locationChange or end a placementTry a paywall in test firstArchive a locationStatsUse the slug in your appNo targeting rulesIf something's offNext steps