Skip to content
Indiana
Dashboard
Docs
Browse docs / Products & entitlements

Products & entitlements

Current feature definitions, internal pricing snapshots and fixed membership/topup contracts.

SDK 0.0.1Updated

Products and immutable contracts

  • Membership products and one-time topups share a publishing lifecycle. Existing customers retain their contract versions.
  • Features use access, metered or credit kinds. Saving updates their current configuration; archive/restore manage availability. Products retain immutable evidence snapshots. Default Credit rates affect future consumption, while explicit plan rates and frozen operations retain their prices.
  • Groups can configure eligible default free plans, with automatic trials managed separately. Without configured policies, use an explicit grant or verified purchase; empty holdings are valid.
  • Read holdings and quote balances for display; use atomic backend mutations to authorize protected usage.
app/holdings.tsTypeScript
const { holdings } = await grow.readHoldings();const { quote } = await grow.quoteBalance({  operation: "quote", entitlementId, quantity: "1", properties: {},});const { ledger } = await grow.readLedger({  type: null, from: null, to: null, after: null, limit: 50,});// For display only. Consume on your trusted backend.

Saving features and publishing products

Features (the underlying Entitlements) define access, metered or credit. Current source saves configuration directly, with active/archived and restore controlling availability instead of a separate feature publish. Products retain drafts and immutable published versions with fixed prices, trials, grants and dedicated rates. Existing contracts do not adopt new product versions automatically. Internal feature snapshots preserve pricing evidence rather than being separately published resources.

When a default Credit rate changes from 2 to 3, new consumption and reservations use 3; reservations, confirmations and refunds already frozen at 2 keep their price. An explicit plan override of 5 continues to use 5. Reload cached AI pricing after saving configuration changes; existing quotes are not repriced. This server change requires matching migrations and deployment rather than being established by an npm installation.

IDs used in integrations
FieldMeaning
entitlementIdStable feature identity for holdings, checks and usage
entitlementVersionIdImmutable evidence snapshot referenced by product grants or rates
productVersionIdPublished product contract pinned by a quote and purchase
couponIdCoupon terms definition, rather than a customer's held offer
offerIdCustomer's held offer; use this ID when selecting a coupon in previewAttach

IDs used in integrations

  • entitlementId

    Meaning
    Stable feature identity for holdings, checks and usage
  • entitlementVersionId

    Meaning
    Immutable evidence snapshot referenced by product grants or rates
  • productVersionId

    Meaning
    Published product contract pinned by a quote and purchase
  • couponId

    Meaning
    Coupon terms definition, rather than a customer's held offer
  • offerId

    Meaning
    Customer's held offer; use this ID when selecting a coupon in previewAttach

Commercial features and decision Features

Commercial features define what customers can use and how it is measured; actual access comes from contracts, capacity, balances and usage. GrowthBook Features use createFeatureClient to evaluate arbitrary JSON values for experiments and routing. An experiment returning true does not establish a purchase or authorize a charge.

Read access through the current customer's readHoldings, or checkEntitlement with the matching newer source. Protected jobs still use backend mutateBalance consumption/reservation, while non-consumable features use actual occupancy and capacity. UI conditions, Feature values and payment returns cannot replace backend authorization.