VoidhashDocs
DevelopersHelp centerGuidesAPI reference
Dashboard
Get started
Introduction
Quickstart
How Voidhash works
Glossary
Versions and releases
Concepts
Teams, projects and environments
API keys
Products and perks
Offers
Subscription lifecycle
People and identity
Groups
Events
Features
Paywalls in your app
Feature flags and A/B tests
Paywall components
Push notifications
Ad attribution in your app
Client SDKs
React Native
Swift
Kotlin
Web
Your backend
Node.js
PHP
Go
Rust
Other languages
Payment sources
Forward store notifications
Developer tools
CLI
MCP server
Query analytics with VoidQL
CLI
CLI reference
Commands
Sign-in and projects
People and access
Catalog and payments
Paywalls and components
Flags and experiments
Analytics and ads
Webhooks and push
Team and settings
Types, API and config

Paywalls and components

CLI commands to build, deploy and place paywalls, and to develop custom components.

These commands build and deploy paywalls, choose what each paywall location shows, and develop, publish and install custom components.

Early access

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

Studio's Paywalls and Paywall locations pages do the same, and the MCP server's paywall tools let agents design and deploy.

Paywalls and locations

CommandWhat it doesKey flags
paywall listPaywalls with the live build and the locations that show it.--archived
paywall view [paywall]The live build, newer builds and where it's shown.
paywall createCreates an empty paywall or onboarding flow.--name, --slug, --kind paywall|onboarding
paywall edit [paywall]Renames a paywall. Its slug can't change.--name
paywall build [paywall]Builds the current design without deploying it.--wait, --timeout (default 300 seconds)
paywall deploy [paywall]Builds and deploys the design everywhere it's shown. Asks first when people see it.--build <number or id> deploys an existing build, --timeout
paywall archive [paywall]Archives a paywall. Locations keep showing its live build.
paywall unarchive [paywall]Restores an archived paywall.
paywall delete [paywall]Deletes a paywall no location shows, with its design and builds. Asks first.
location listLocations with what each shows now, and in test where that differs.--archived
location view [location]What a location shows now, what test keys see, and what it showed before.
location createCreates a location.--name, --slug, --description, --show <paywall>
location edit [location]Renames a location or changes its description. Its slug can't change.--name, --description, --clear-description
location show [location] [paywall]Shows a paywall's live build at a location. Asks first when it replaces what people see.--env
location clear [location]Stops showing anything at a location. Asks first.--env
location history [location]Everything a location has shown, newest first.
location archive [location]Retires a location for good. Asks first.

A location shows apps that use a test key the same paywall as everyone else until you give it a test showing of its own. location show <location> <paywall> --env test shows a paywall to those apps only, so you can try it at a real location before your users see it, and it doesn't ask first. location clear <location> --env test goes back to what production shows.

voidhash-cli location show onboarding-end annual-upsell --env test
voidhash-cli location show onboarding-end annual-upsell
voidhash-cli location clear onboarding-end --env test

Custom components

Run dev, new, publish and test in your app's root. See Develop a component.

CommandWhat it doesKey flags
devBuilds the components in .voidhash/ on every change and serves them to the paywall editor.--port (default 4319)
new <name>Adds a component with its editor panel to .voidhash/components/.--title
publishPublishes new and changed components as new versions.--all, --component (repeat), --yes
test [component]Runs the checks publishing runs on a component, crate or .wasm module.--panel
registry listProject, installed and team registry components.
registry publisher showYour team's component namespace.
registry publisher claim <namespace>Claims the namespace (admins, signed in).
registry publish [path]Publishes a bundle, or a ready project component, to your team's registry.--from-project <slug>@<version>, --version, --name, --title, --category
registry install <component>Installs a registry component, such as acme/wheel-picker.--range, --yes accepts the review
registry update <component>Moves an install to the newest version in its range.--range, --yes
registry uninstall <component>Removes an installed component.
registry deprecate <component> [version]Deprecates a component or one version.--message, --undo
registry yank <component> <version>Yanks a version for good.--message
registry transfer <component>Moves a component to another project of your team (admins, signed in).

See also Publish a component and Install a component.

Example

voidhash paywall deploy summer-sale --build 3   # roll back to build 3
voidhash new plan-picker --title "Plan picker"

Next steps

  • Build and deploy: builds, deploys and rollbacks.
  • Paywall locations: show a paywall in your app.
  • Develop a component: the component dev loop.

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

PreviousCatalog and paymentsNextFlags and experiments

On this page

Paywalls and locationsCustom componentsExampleNext steps