License and Webhook Operations
Internal operations guide for webhook sync, subscription state, license repair, and entitlement verification.
What this guide is for
This guide is for internal operators who need to understand how license state flows from Lemon Squeezy into the backend and how that affects paid features.
Main integration flow
- a user activates or binds a license
- the backend stores normalized license fields
- Lemon Squeezy sends subscription and license key webhook events
- the backend updates subscription and license state
- config endpoints convert those states into feature gating
Important webhook route
The production webhook endpoint should point to:
/api/v1/webhooks/lemonsqueezy
If the URL points at the wrong host or root path, Lemon Squeezy may show successful delivery failures such as 405 Method Not Allowed.
How feature locking works
Paid features are controlled by both:
- license validity
- subscription status
That means an active key alone is not enough if the subscription state is blocked.
Recovery and repair
If a license snapshot becomes inconsistent, operators should:
- confirm webhook delivery
- confirm the latest
subscriptionsandlicensesrows - use repair tooling or replay only when needed
Why this document matters
This is the internal layer that reduces support pressure. When operators understand the state model, they can tell the difference between:
- a user setup problem
- a webhook sync problem
- a paid entitlement problem