The identity graph
FloKit maintains a deterministic identity graph. When two identifiers are associated with the same user — for example, ananonymous_id linked to a user_id at login, or a user_id matched to the customer ID in your billing platform — FloKit merges their event histories into a single unified timeline. All payback calculations, cohort assignments, and LTV projections operate on the merged view.
Identifiers
Linking anonymous to identified
Senduser_id alongside anonymous_id in any event after the user logs in or creates an account. FloKit retroactively attributes all prior pre-login events to the identified user.
anon_xyz789 — including install attribution — are merged into the usr_abc123 identity.
Identity validation
Go to FloKit → Data → Identity to inspect join rates across your user base. A healthy integration should show:- >90% of install-attributed users joining to a subscription record within 7 days
- Less than 5% of subscription events with an unknown or unmapped
user_id - >95% anonymous-to-identified link rate within the session
Common join gaps
Subscription platform user ID does not match MMPcustomer_user_id
Set your subscription platform’s user identifier to your backend user_id during authentication. Both the MMP and your subscription platform should use the same stable identifier so FloKit can join the two systems.
Anonymous pre-install events not linking
Send the same anonymous_id in both your pre-install product events and your MMP install callback. If the MMP fires an install event with a different or missing anonymous_id, FloKit cannot link pre-install behavior to the attributed install.
Stripe customer not joining
Include your backend user_id in the Stripe customer metadata object at customer creation time. FloKit reads this field when syncing Stripe webhook data.