Skip to content

Core Concepts

RevTurbine has a small vocabulary. Learn three primitives and you can read the rest of the docs.

  • Entitlements — who can do what. An entitlement answers “is this user allowed to do X, and how much is left?” Feature access, usage limits, credits, and seats are all entitlements. You check them with can() / checkEntitlement.

  • Gates — where your app asks. A gate is the checkpoint in your code or UI where you consult an entitlement before letting something happen — a <Gate> around a subtree, a gate('export', …) around an action, or a bare can() check. Same question, different shapes.

  • Placements — what to show when it matters. A placement is the UI the control plane decides to render at the right moment: an upgrade prompt when a gate denies, a “running low” banner near a limit, a trial-ending toast. You render one with a <Slot>.

That’s the whole loop: an entitlement defines the policy, a gate asks the question in your app, and a placement is what RevTurbine shows when the answer should change behavior.

All three primitives are driven by your Playbook — the portable config RevTurbine evaluates. It holds the plans, entitlement rules (feature / usage-limit / credits / seats), trials, segments (targeting), and placements. A PM edits the Playbook in the studio and republishes; your app code doesn’t change.

RevTurbine decides for a specific user, so you tell it who’s asking: an id, the user’s current plan, reported usage, and any custom traits. You set this with rt.identify(userId, { plan, usage, …}) or the <RevTurbineProvider> user prop. Entitlement checks and segment targeting both read from it.

The same primitives work whether RevTurbine runs entirely in the browser from a bundled Playbook (local_only), calls the control plane (revturbine_server), or uses your own endpoints (custom_endpoints). See Runtime Modes.

TermMeaning
EntitlementWhat a user is allowed to do / how much is left (feature, usage limit, credits, seats)
GateA checkpoint where your app consults an entitlement (<Gate>, gate(), can())
PlacementThe UI the decision engine shows at the right moment (rendered by <Slot>)
PlaybookThe portable config RevTurbine evaluates (plans, entitlements, segments, placements)
SegmentA named rule over user traits used for targeting and experiments
SlotThe component that renders a placement (<Slot>)

For the component/config name aliases (SurfaceSlotComponent, Playbook, …), see the Recommended API Path.