What FloKit reads from your warehouse
- Historical subscription cohorts — cohort tables spanning months or years, going back further than RevenueCat or Adapty retain by default.
- Finance-reconciled revenue — figures that match what your finance team reports, net of refunds, chargebacks, and adjustments.
- Acquisition cost exports — blended or platform-level spend data, including channels not covered by AppsFlyer or Adjust.
- Custom event tables — app-specific events (feature usage, onboarding milestones) that correlate with LTV.
- Revenue tables — transaction-level subscription revenue for precise payback calculations.
Supported warehouses
| Warehouse | Status |
|---|---|
| BigQuery | Available |
| Snowflake | Available |
| Redshift | Available |
| Databricks | Contact FloKit |
What warehouse access unlocks
- Historical payback analysis going back months or years — beyond what live event streams provide.
- Finance-approved revenue figures — use numbers your CFO has already signed off on, not estimates.
- Cohort exports with custom dimensions — segment by any dimension in your warehouse, not just those captured in FloKit events.
- Multi-year LTV models — long-horizon projections grounded in your actual renewal history.
Access model
FloKit connects via a read-only service account or role. No write access is requested or required. FloKit queries your warehouse on a scheduled basis — typically every 6 hours — and does not cache data outside your FloKit workspace.BigQuery
Create a service account
In Google Cloud IAM, create a new service account for FloKit. Assign two roles:
- BigQuery Data Viewer — read access to datasets and tables.
- BigQuery Job User — permission to run queries.
Download the JSON key file
In the service account detail page, go to Keys → Add Key → Create new key → JSON. Download the file and keep it secure — you’ll upload it to FloKit once.
Connect in FloKit
Go to FloKit → Settings → Integrations → Warehouse → BigQuery.Upload the JSON key file, then enter:
- Project ID — your GCP project ID (e.g.
acme-analytics-prod). - Dataset name — the dataset containing your subscription or cohort tables.
Snowflake
Create a Snowflake role
In Snowflake, create a dedicated role for FloKit and grant it the following:Create a user, assign the role, and note the credentials.
Connect in FloKit
Go to FloKit → Settings → Integrations → Warehouse → Snowflake.Enter:
- Account identifier — e.g.
xy12345.us-east-1(from your Snowflake URL). - Username — the Snowflake user you created.
- Authentication — password or key-pair. For key-pair, paste your private key (PEM format).
- Warehouse — the virtual warehouse to use for queries.
- Database and Schema — target location for your subscription tables.
Redshift
Create a Redshift user
Connect to your Redshift cluster and create a read-only user:If your tables span multiple schemas, grant SELECT per schema.
Schema requirements
FloKit accepts two table shapes: Option A — Pre-built cohort table (recommended) A single table with one row per cohort, pre-aggregated. Minimum required columns:| Column | Type | Description |
|---|---|---|
cohort_date | DATE | The week or day the cohort was acquired |
user_id | STRING | Unique user identifier |
channel | STRING | Acquisition channel |
campaign | STRING | Campaign name or ID |
spend | FLOAT | Acquisition spend for this cohort |
trials | INTEGER | Number of trials started |
subscriptions | INTEGER | Number of paid subscriptions started |
renewals | INTEGER | Number of renewals |
revenue_30d | FLOAT | Cumulative revenue at 30 days |
revenue_90d | FLOAT | Cumulative revenue at 90 days |
Validating your connection
After connecting, go to FloKit → Data → Sources → [your warehouse] → Preview. FloKit will display the first 20 rows it’s reading. Verify:- Row counts look correct for your expected data range.
cohort_datevalues fall within the expected historical window.- Revenue columns are not null for cohorts old enough to have accumulated revenue.