> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flokitai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Data quality checklist

> Validate your integration before relying on FloKit reports for growth decisions.

Before trusting FloKit's payback reports or acting on recommendations, verify that your data pipeline is complete and consistent. Use this checklist after initial setup and again whenever you add a new data source or make changes to your attribution or subscription stack.

***

## Subscription source

* [ ] Subscription platform connected (RevenueCat, Adapty, or Stripe)
* [ ] `trial_started`, `subscription_started`, `renewal_completed`, `subscription_cancelled`, and `refund_issued` events visible in FloKit → Data → Events
* [ ] No duplicate events — verify by checking for repeated `transaction_id` values
* [ ] Revenue amounts match your source-of-truth within a 2% tolerance (platform fees may cause minor differences)
* [ ] Sandbox and test events excluded or flagged — confirm test environment events are not inflating production metrics

***

## Attribution source

* [ ] MMP connected (AppsFlyer or Adjust)
* [ ] `install_attributed` events visible in FloKit → Data → Events
* [ ] `campaign_id` and `ad_set_id` populated on attributed installs
* [ ] Organic installs showing `channel = organic` and not being misattributed to paid campaigns
* [ ] Attribution lookback windows match your MMP configuration (typically 7 days for click, 1 day for view-through)

***

## Identity mapping

* [ ] `user_id` is consistent across your subscription platform and MMP — both use the same backend identifier
* [ ] `anonymous_id` → `user_id` linking is working — verify in FloKit → Data → Identity
* [ ] Identity join rate is >90% for subscription events
* [ ] No large volume of `unknown` `user_id` values on subscription or revenue events
* [ ] RevenueCat `app_user_id` set to your backend `user_id` during authentication
* [ ] MMP `customer_user_id` set to your backend `user_id` in the SDK configuration

***

## Revenue reconciliation

* [ ] FloKit reported revenue is within 5% of your subscription platform's dashboard for the past 30 days
* [ ] Refunds are correctly reducing revenue and not being double-counted
* [ ] Currency conversion is correct for multi-currency apps — verify that `currency` field is populated on all revenue events
* [ ] Plan prices in revenue events match actual charge amounts (not list prices when discounts apply)

***

## Payback reports

* [ ] First payback report shows the campaigns and channels you expect
* [ ] CAC values are within the expected range — cross-check against your existing campaign analytics
* [ ] Cohorts cover at least 14 days of subscription history before drawing conclusions from LTV curves
* [ ] No campaigns showing \$0 spend — verify that your ad platform connection is pulling cost data
* [ ] Payback window in the report settings matches your target payback period (e.g. 12 months)
