0Get access
FolioKit is in early access. Leave your email and you'll hear from a person — not a drip campaign — with a dashboard login. It's free during early access.
1Register your app
In the dashboard, click + New app. Give it a name and a short ID (the dashboard suggests one). That's it — FolioKit shows you two things: an API key, and one integration prompt with a copy button. The prompt is a block of instructions with your app's credentials already filled in.
What's technically happening
Registration creates your app's row with a permanent slug (3–20 lowercase letters/digits) and a generated API key. The key is send-only: it can append events for that one app and nothing else — it can't read data, so it's safe to embed in a shipped binary. The integration prompt embeds the slug and key and points the agent at the hosted integration guide, which is versioned so improvements reach every future integration.
2Paste the block into your AI coding agent
Open your app's project in whatever agent you use — Claude Code, Cursor, Windsurf, anything that can read and edit your code — and paste the block. You don't need to understand what's in it. The agent does the integration: it adds the SDK, decides which screens and moments in your app are worth tracking, and instruments them.
What the agent actually does
The prompt walks the agent through the integration guide:
- Adds the Swift package (module name
AppCoreKit— FolioKit's original working name, kept so shipped apps never need a rename), pinned to a release tag, never a moving branch. - Calls
AppCore.start(appID:apiKey:)at launch with your credentials. - Wires the RevenueCat handshake — the SDK and RevenueCat share one user ID, which is how behavior and money join without any connector. Apps with existing subscribers use an adoption path that never touches live RevenueCat identities.
- Tags 5–12 top-level screens and instruments the standard events
(
onboarding_step,onboarding_completed,paywall_shown,trial_started,purchase_completed) plus a handful of app-specific value moments. - Adds the SKAdNetwork plist entries if you run or plan paid ads — no ad-network SDKs, no ATT prompt.
The guide's rules are strict: events fire once per user action, paired events must have similar counts, and no PII goes into properties.
3The agent checks its own work
This is the part most SDKs leave to you. The agent builds the app, runs it in the simulator, taps through a few screens — and then asks FolioKit's servers whether the events actually arrived, using your app's own credentials. Only when the answer is yes does it report back: "you're live — events are flowing." You never have to confirm anything or squint at a debug console.
How self-verification works
FolioKit exposes a live verification endpoint. The agent calls it with the same app ID and API key it just integrated:
curl -s "https://shfpcykkzmzijpimpsrd.supabase.co/functions/v1/verify?minutes=15" \
-H "x-app-id: <your-app-slug>" -H "x-api-key: <your-api-key>"
The response says whether events were received in the window, how many, and
which names — so the agent can confirm the screens it tapped are the events
that arrived. If nothing arrived, the response includes a plain-language
hint naming the most likely cause. Success means the entire chain
worked: SDK → batching → ingestion → your dashboard.
4Watch it flow
Open the dashboard's Live tab. Your simulator taps are already there. From here the dashboard guide explains every tab and what to look for in each.
One housekeeping tip on day one: click your own user in the Live feed and mark it internal — your own devices then stay out of every metric. Simulators are flagged automatically.
If your app makes money: connect RevenueCat
This is the one extra step, and the only manual one — about two minutes in the RevenueCat dashboard. Add a webhook (Project → Integrations → Webhooks) using the URL and secret shown in your app's settings (the ⚙ next to the app name in the FolioKit dashboard). From then on every purchase, renewal, trial and cancellation appears in FolioKit seconds after it happens, attached to the user who made it.
Why a webhook, and why it's safe
The webhook is a one-way street: RevenueCat pushes events to FolioKit; nothing can read or change your RevenueCat account through it. Because the SDK and RevenueCat share one user ID (see the identity lifecycle), each revenue event lands on the same user record as the behavior that led to it — that's the join the whole product is built on. Optionally, a read-only RevenueCat secret key lets FolioKit reconcile who is currently paying once a day, which is what powers the PRO badges and catches people who paid before the webhook existed.
What you will never be asked to do
- Read SDK documentation (unless you enjoy it — it's here).
- Add an ATT ("Allow tracking?") prompt — the SDK doesn't need one, by design.
- Install Meta/TikTok SDKs or an attribution vendor.
- Explain webhooks, key roles, or vendor numbers to anyone. The agent absorbs the complexity; anything it can't do is a two-minute task with exact instructions.
Stuck on anything? The FAQ & troubleshooting page covers the common cases, and contact@foliokit.io reaches a person.