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

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 last 7D, 30D or 90D. 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 the same periods. 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. 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 placementArchive a locationStatsUse the slug in your appNo targeting rulesIf something's offNext steps