Skip to content

Plans

A plan is a named set of grants. Subscribers receive entitlements by subscribing to a plan (plus optional overrides).

Kinds

Kind Use
catalog Self-serve / public tiers (Free, Pro, Enterprise)
custom Sales-built packages for one deal or a small set of subscribers

Both kinds are first-class plans. Custom is not a side channel — it’s the same model with a different kind.

Properties

Field Description
id Plan id
key Optional stable key for catalog plans (pro)
name Display name
kind catalog or custom
grants List of feature grants
created_at / updated_at Timestamps

Grants

Each grant references a catalog feature and matches its kind:

Feature kind Grant shape
flag { "feature": "sso", "kind": "flag" }
limit { "feature": "seats", "kind": "limit", "limit": 10 }
limit unlimited { "feature": "seats", "kind": "limit", "limit": null }
  • Flag grant present → entitled
  • Limit grant → entitled amount (null = unlimited)
  • Feature absent from grants → not entitled from the plan

Changing a plan’s grants affects all subscribers currently subscribed to that plan (on next check). For one-off deals, use a custom plan or overrides instead of editing a shared catalog tier.

Example

{
  "key": "pro",
  "name": "Pro",
  "kind": "catalog",
  "grants": [
    { "feature": "sso", "kind": "flag" },
    { "feature": "csv_export", "kind": "flag" },
    { "feature": "seats", "kind": "limit", "limit": 10 },
    { "feature": "storage_gb", "kind": "limit", "limit": 100 }
  ]
}

Sales pattern

  1. Clone or compose a custom plan with the negotiated grants
  2. Create a subscription from the subscriber to that plan
  3. Use overrides only for temporary or tiny deltas (trial SSO, short seat bump)