Create an app
An app is the unit everything else is scoped to: keys, events, paywalls, connections, and team access.
Dashboard → New app. Paste the app's store link and press Add.
- One link, either store. An App Store link or a Google Play link, whichever you have to hand; the page works out which store it is. The listing supplies the name, icon and category, and the bundle id / package name and store page are saved with the app, so creator links, Universal Links and artwork work from the first minute. A bare bundle id or package name works too.
- The other store, the commission and tax live on Setup. New apps are saved at the 30% headline rate; if the account is on Apple's Small Business Program or Google's equivalent (15%, under $1M a year), switch it on Dashboard → Setup. Every ROAS figure on the dashboard is net of it, so it's worth setting honestly. Apps created through the API without a commission default to the 30% rate too.
Creation hands you the two credentials the app will use, and both stay retrievable on Dashboard → Setup — they are not shown-once secrets:
- SDK app key (
gk_…) — passed toGrowth.initand sent asx-api-keyon every SDK and ingest call. - RevenueCat webhook URL — paste it into RevenueCat (Project → Integrations → Webhooks → + New) and store billing events start flowing; that feed is the billing spine for entitlements, cohorts, and revenue. See RevenueCat webhooks.
The page also hands you a ready-made prompt for Claude Code, Cursor or any coding agent: it carries the API base and the app key, and asks the agent to install @fictura/sdk and call Growth.init exactly as the SDK quickstart does.
Team access is by membership: teammates see an app when their email is on it, and the dashboard's current app follows you as a cookie. There is no separate staging concept — billing events carry an environment (PRODUCTION or SANDBOX), and a user's entitlement verdict follows their most recent granting event's environment, so always check environment before trusting a verdict in production.
SDK Quickstart
Install one package and call Growth.init. Events, error tracking, entitlements and experiment assignment all start on that one call — paywalls are one of the things you can do next.
SDK keys & config refresh
One key identifies your app; one config fetch decides what your app does. Both are designed so a bad network never breaks a launch.