Skip to content

convex-revenuecat

TypeScript · Convex maintained

Convex component that mirrors RevenueCat subscription state. Webhook and REST sync with lifecycle hooks for entitlement transitions.

7,659 total downloads · Convex Components Directory

[why]

I use RevenueCat for in-app purchases and Convex for everything else. Needed a way to check entitlements server-side without hitting RevenueCat's API on every request, so I built a Convex component that receives webhooks and keeps subscription state in your database. Query it like any other Convex table, get real-time reactivity for free.

Handles every webhook event type RevenueCat emits, dedupes by event ID, and covers the tricky cases: cancellation keeps access until expiration, pause doesn't revoke, grace periods stay active, and refunds (CANCELLATION with cancel_reason: "CUSTOMER_SUPPORT") revoke immediately. Listed on the Convex Components Directory.

[related]