Skip to main content

Updated Sep 29, 2026Verified against the product Sep 28, 2026

Products model

The products model is your product catalog: discrete products or SKUs that can be tied to subscriptions and account metrics for multi-product reporting. Use it when a single account can buy multiple products and you need consistent product_id values across models.

Prerequisites​

Field reference​

Model key​

PropertyTypeDescription
product_idstringStable product identifier across FunnelStory models.

Default properties​

PropertyTypeDescription
namestringDisplay name.
descriptionstringOptional longer description.

Optional properties​

PropertyTypeDescription
featuresjsonArray of the features that can be bought with this product. Not a default mapping — map a JSON column to a property named features. See Product features.

Custom properties may be mapped for segmentation.

Product features​

Each entry in features is an object:

FieldRequiredDescription
keyYesLowercase letters, digits, and underscores, starting with a letter. Unique across every product in the workspace, because subscriptions and metrics refer to a feature by key alone.
nameYesDisplay name.
kindYescapability (the account has it or doesn't, such as SSO) or amount (sold as a quantity with an allowance, such as API calls).
metricsNoArray of the account metric IDs that measure this feature. A metric that no feature lists stays a measure of the product.
SELECT
'analytics' AS product_id,
'Analytics' AS name,
'[{"key": "analytics_reports", "name": "Reports", "kind": "capability", "metrics": ["reports_run"]},
{"key": "analytics_api_calls", "name": "API calls", "kind": "amount", "metrics": ["api_calls_made"]}]' AS features

If a row's features is unmapped or an empty list, the refresh leaves that product's stored features alone, so features defined on the Products catalog page survive. A non-empty list replaces them. A product row whose features are invalid — a malformed key, a key repeated within the product or already used by another product, a missing name, or an unknown kind — is skipped on refresh, and the product keeps its previous state.

Subscriptions grant these features; see Subscriptions → Feature entitlements.

Configure​

  1. Add model → Product.
  2. Query your source of truth for product definitions (warehouse table, CRM product object, etc.).
  3. Map product_id, name, and description, plus features if your source defines them.
  4. Save and refresh.
  5. In subscriptions, ensure products JSON references these ids consistently. For account metrics, map product_id when metrics are per product—see Account metrics.