Reliability

Webhook and event architecture

Understand how Stripe billing signals become entitlement state, runtime access decisions, and outbound Licenzy events.

Start free in test mode. Go live when you're ready.

Category: Event Architecture6 sections

Canonical runtime architecture

The event model in Licenzy is intentionally layered. Stripe is the billing signal, Licenzy entitlements are the runtime source of truth, access APIs answer runtime decisions, and outbound webhooks propagate resulting runtime state to your own systems.

  1. Stripe delivers billing events to Licenzy through the tenant webhook.
  2. Licenzy processes those events into entitlement state.
  3. Your backend reads that state through runtime access and entitlement endpoints.
  4. Licenzy can also emit outbound events to keep your own systems in sync.
Trust boundary
Payment collection is not the runtime decision. The runtime decision comes from webhook-processed entitlement state, not from a browser redirect or Stripe object you inspect directly in your app.

Golden path runtime flow

This is the primary lifecycle to keep in mind when integrating Licenzy with your own backend:

  1. Stripe Checkout is created through Licenzy.
  2. Stripe later delivers the tenant webhook event to Licenzy.
  3. Licenzy updates entitlement state.
  4. Runtime access becomes available through access and entitlement reads.
  5. Licenzy emits the matching outbound runtime event.
  6. Your backend uses that outbound event to update local caches, analytics, or secondary systems.
Mental model
Stripe delivery changes Licenzy runtime state first. Outbound Licenzy events come after that runtime state exists and should be treated as propagation, not as the original billing signal.

Inbound and outbound responsibilities are different

Stripe inbound delivery and Licenzy outbound delivery solve different problems and should not be treated as the same event stream.

  • Inbound Stripe lifecycle explains how billing signals enter Licenzy.
  • Runtime state propagation explains how entitlements become access and customer-visible state.
  • Outbound Licenzy webhooks explain how Licenzy publishes runtime changes back to your systems.
  • Support and operational investigation explains how operators inspect delivery history and recover state from the portal.

Event architecture map

What not to do

  • Do not treat a browser success page as runtime proof of access.
  • Do not treat outbound Licenzy events as raw forwarded Stripe events.
  • Do not have your app call inbound Stripe webhook endpoints directly.
  • Do not split runtime truth across your own inferred billing state and Licenzy entitlements.