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.
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
Each location shows whether a paywall is live there
- Open Paywalls → Paywall locations and click New paywall location.
- Enter a Name of 3–64 characters, such as
Onboarding end. - Check the Location slug, filled in from the name: 3–64 lowercase letters, digits,
-and_. - Optionally add a Description of where it appears in the app, up to 255 characters.
- 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 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.
| Status | Meaning |
|---|---|
| Live | Shows a paywall. |
| Empty | Shows no paywall of its own. Unless it runs an A/B test, the app shows its fallback. |
| Archived | Retired; 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-trialandonboarding-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
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.