SIGN IN SIGN UP

Track checkpoint hits through the analytics events pipeline (#3994)

<!-- Thank you for contributing to Purchases! Before pressing the
"Create Pull Request" button, please provide the following: -->

Send checkpoint hits through the existing batched events endpoint so
Khepri can register checkpoints and publish analytics without adding
another SDK endpoint.

https://github.com/RevenueCat/khepri/pull/24035
https://github.com/RevenueCat/purchases-ios/pull/7447
<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Adds a new analytics event type following existing paywall/workflow
patterns; no changes to purchase, auth, or billing logic.
> 
> **Overview**
> **Checkpoint hits are now analytics events.** When `resolveCheckpoint`
runs, it records a `CheckpointEvent` (identifier + timestamp) via the
same `track` path used for paywalls and workflows, *before* the workflow
resolver runs.
> 
> The PR adds the full serialization stack for Khepri:
`BackendEvent.Checkpoint` (`checkpoint_hit`, schema v1),
`BackendStoredEvent.Checkpoint`, polymorphic JSON registration in
`JsonProvider` and `EventsManager`, and
`CheckpointEvent.toBackendStoredEvent` with app user and session IDs.
> 
> Tests cover Khepri-compatible JSON encoding/decoding, file persistence
in `EventsManager`, and that resolving a checkpoint triggers exactly one
tracked event.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
b71bc6919bf83ec25e49d504ece83f4edcd75540. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
C
Cesar de la Vega committed
90f74fc371ca5bcc479064e81619397ff041777b
Parent: 57befa8
Committed by GitHub <noreply@github.com> on 8/19/2026, 3:22:53 PM