VoidhashDocs
DevelopersHelp centerGuidesAPI reference
Dashboard
Guides
Launch
Go-live checklist
Make your first App Store purchase
Make your first Google Play purchase
Troubleshoot
Troubleshooting
Recover from incidents
SDK error codes
Purchase error codes
API error codes
FAQ
Recipes
Win back subscribers
Handle plan changes
Unlock the app after a web purchase
Link accounts across platforms
Handle refunds
Register devices for push
Migrate
Migrate to Voidhash
Migrate from RevenueCat
Migrate from Adapty
Migrate from Superwall
Run in observer mode
Privacy and hosting
Delete personal data
Self-hosting
Operate a self-hosted server

Go-live checklist

Check every part of your integration before you release it to real customers.

Work through this list before you ship your first release with Voidhash. Each item links to the page that explains it.

Project and keys

  • Release builds use the production publishable key (vh_pk_...), not a test key (vh_pk_test_...). See API keys.
  • No secret key (vh_sk_...) is in an app, a website bundle or a public repository. Secret keys belong on your servers only.
  • Each secret key your backend uses has only the access it needs.
  • You know which environment each build records into: production, sandbox (TestFlight, Play test tracks) or test.

Stores and products

  • Each store you sell through is connected and enabled: App Store, Google Play, Stripe (Help center) or a payment source.
  • App Store server notifications point at Voidhash for production and sandbox, and a test notification arrived. See Apple server notifications (Help center).
  • Google Play real-time developer notifications reach Voidhash, and Send Test Message in Play Console succeeded. See Real-time developer notifications (Help center).
  • Stripe's event destination is set up for live mode, not only test mode.
  • Every product is mapped to its store product on every store you sell it through, including the offers your paywalls sell. See Products and perks.
  • Each product grants the right perks.
  • You decided whether store sandbox purchases unlock access in production apps. It is on by default, and App Review buys in the sandbox, so turning it off stops a reviewer's purchase from unlocking anything. Change it with the API, the CLI or the MCP server; see Project settings.

Paywalls

Skip this section if your team doesn't use Voidhash paywalls.

  • Every paywall your app shows has a deployed build. See Build and deploy.
  • Each location your app presents has a paywall assigned. See Paywall locations.
  • Your app has a fallback for important entry points when no paywall can be shown.

SDK

  • The SDK is configured once, at app launch. See Install an SDK.
  • Your app calls identify with your user ID after sign-in and signOut() on sign-out, which records $sign_out on every SDK. See People and identity.
  • Your app checks perks, not product IDs, to unlock features.
  • A way to restore purchases is reachable in your app. App Review expects one for subscriptions and non-consumables.
  • If another billing SDK still owns purchases, Voidhash runs in observer mode and only one SDK finishes transactions.

Your backend

  • Your backend checks access with a secret key instead of trusting the client, with a server library or over HTTP.
  • Your webhook endpoint is subscribed to the events you handle, in the environment you need, and a test delivery succeeded.
  • Your endpoint verifies the signature of every request.
  • Your handlers are idempotent: a retried delivery must not grant or charge twice.

Privacy

  • If you need consent before collecting analytics, your app passes the person's choice to the SDK. See Swift, Kotlin, React Native or Web.
  • Your App Store privacy details include the data the SDK collects. The Swift SDK ships a privacy manifest; see Swift SDK.
  • You have a process for deletion requests. See Delete personal data.

Analytics

  • Events from a test build show up in Activity → Analytics events.
  • Analytics → Data health shows no rejected events or failing webhooks. See Check your data.
  • Your reporting currency is set in team settings. See Analytics.

Team

  • Everyone who needs Studio is invited with the least role they need. See Members and roles.
  • If your company uses an identity provider, SSO is set up. See SSO and directory sync.

Final test pass

Make real sandbox purchases on every platform you ship, with the build you're about to release. See Test purchases (Help center).

  • A purchase unlocks the perk in the app and appears on the person in People.
  • Restoring on a fresh install brings the perk back.
  • A renewal, a cancellation and an expiry change access as expected.
  • A refund changes access as expected: a refunded one-time purchase loses its perks, but only an App Store refund of the current period ends a subscription; Google Play and Stripe refunds don't. See Refunds.
  • Your backend receives the matching webhooks and its access check agrees with the app.

Next steps

  • Test purchases (Help center)
  • Troubleshooting
  • Check your data

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

PreviousGuidesNextMake your first App Store purchase

On this page

Project and keysStores and productsPaywallsSDKYour backendPrivacyAnalyticsTeamFinal test passNext steps