Getting Started
Introduction
MonetizationOS is a composable monetization platform that sits between your product, identity, and billing systems. We provide a common interface for managing features, plans, and access control that scales reliably and reduces engineering overhead.
Core Concepts
- Surfaces & Components: A Surface is any interface your customer engages with — a website, mobile app, API, or MCP server. Components are the individual elements within it.
- Features: The building blocks you want to control access to (articles, videos, AI tools). These define what capabilities users can access.
- Plans: Collections of features that determine user access levels. Can be assigned automatically or linked to Stripe products.
- Offers: A way to present purchase opportunities to users, with configurable pricing, messaging, and redemption flows.
- Workflows: Automate business logic such as dynamic plan assignment and custom access rules using serverless TypeScript functions.
- Observability: Full logging and monitoring of all access checks and events.
Architecture Diagram
Configuration — What You Set Up
Features
- Articles
- Videos
- AI Tools
bundles
Plans
- Anonymous
- Registered
- Premium
Feature Properties
- Enabled: on/off/metered
- Premium: boolean
- Quality: string/number
Workflows
- Feature
- Surface
- Component
- Dynamic Provisioning
- Endpoint
- Action
Offers & Offer Groups
- Redemption methods
- Presentation details
- Targeting filters
- Offer Groups & Slots
Features
- Articles
- Videos
- AI Tools
Plans
- Anonymous
- Registered
- Premium
Features bundle into Plans
Feature Properties
- Enabled: on/off/metered
- Premium: boolean
- Quality: string/number
Workflows
- Feature
- Surface
- Component
- Dynamic Provisioning
- Endpoint
- Action
Offers & Offer Groups
- Redemption methods
- Presentation details
- Targeting filters
- Offer Groups & Slots
Runtime — What Happens During A Surface Decision
User Request
POST /surface-decision
User Identity Resolution
User Identity
Anonymous / JWT / Provided
get from
JWT Claims
ID, email, roles, etc.
JWT Claims
ID, email, roles, etc.
identity resolved from
User Identity
Anonymous / JWT / Provided
Plan Provisioning
Auto-Assigned Plans
Assigned based on whether the user is logged in or not
Dynamic Provisioning
TypeScript rules that assign plans based on user attributes
Product-Linked Plans
Assigned when a user purchases via Stripe
Provisioned Plans
The full set of plans currently active for this user
Feature Evaluation
Base Feature Properties
Access levels inherited from the user's active plans
Feature Workflows
TypeScript functions that adjust access based on extra logic
Final Feature State
The resolved access state for every feature
Surface & Component Behavior
Surface Workflow
Runs once per request — sets top-level access rules
Component Workflows
Runs per UI element — decides what each component should display
OFFER GENERATION
Resolve Offers
Matching purchase options based on who the user is
Offer Groups & Slots
Organized purchase options ready to display
Offer redeemed· · · →Stripe / Custom action· · · →Plan Provisioning ↑
Surface Workflow Output
Top-level decisions — redirect, gate access, or enable/disable the surface
Component Workflow Output
Per-element decisions — what to show, hide, or change for each UI component
Response — What You Get Back
Surface Decision Response
- Identity details
- Active plans
- Feature states
- Surface behaviors
- Component behaviors
- Applicable offers
fires
Side Effects — What Else Happens
Final Feature State consumes ↓
Metering
Usage counters are incremented and limits enforced
placeholder
Triggers & Actions
Automated follow-up actions like webhooks and analytics events