Docs · Getting started

From zero to live data in one paste

Every step is written twice: in plain language, and — folded underneath — the technical version of what actually happens. You don't need the folded parts. Your AI agent does, and it gets them automatically.

The short version: register your app in the dashboard, copy the one block it gives you, paste it into whatever AI coding agent you build with. The agent installs the SDK, wires everything up, checks its own work against a live endpoint, and tells you "you're live". You never touch analytics code.

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

Stuck on anything? The FAQ & troubleshooting page covers the common cases, and contact@foliokit.io reaches a person.

FolioKit — analytics your AI agent installs and verifies before anyone calls it done.

Get early access