v2_3_<object>, grouped below by lane. The one exception is events: the event log is immutable and unversioned, delivered as events (not v2_3_events) β see Events.
Type legend
Types below are engine-neutral. How each engine surfaces them:- Timestamps are epoch-milliseconds (
number (epoch ms)), not native datetimes β convert before use. See Querying β Timestamps. The one exception isevents.timestamp, which is a realtimestamp. - JSON columns are stored as strings β parse them with
JSONExtract*(ClickHouse).
Keys
- β marks the stable, immutable key for a table β join and filter on this.
- π marks a stable foreign key (
internal_customer_id,internal_feature_id,internal_product_id,internal_entity_id,internal_reward_id) β join to the matchinginternal_id. - External ids (
customer_id,plan_id,feature_id,entity_id,id, β¦) are mutable β convenient for display, but donβt rely on them as stable keys. See Querying β Use internal ids. org_idis your tenant id (constant across your tables);envissandboxorlive(notproductionβ filteringenv = 'production'silently returns zero rows).
Catalog
Your pricing model: features, plans, plan items, rewards, and referral programs.v2_3_features β feature catalog
v2_3_features β feature catalog
v2_3_plans β plan headers with base pricing
v2_3_plans β plan headers with base pricing
v2_3_plan_items β entitlements + linked prices
v2_3_plan_items β entitlements + linked prices
v2_3_rewards β discounts, free products, promos
v2_3_rewards β discounts, free products, promos
v2_3_referral_programs β referral configuration
v2_3_referral_programs β referral configuration
Subjects
Who your plans apply to: customers and entities (sub-customers).v2_3_customers β customer master record
v2_3_customers β customer master record
v2_3_entities β sub-customers scoped to a feature
v2_3_entities β sub-customers scoped to a feature
States
Active customerβproduct relationships: recurring subscriptions and one-off purchases.v2_3_subscriptions β recurring customer products
v2_3_subscriptions β recurring customer products
v2_3_purchases β one-off purchases
v2_3_purchases β one-off purchases
Balances
Feature balances, their per-entitlement breakdowns, and boolean feature flags.entity_id is null β and per-entity rows. For customer-level totals, keep only the pooled rows with coalesce(entity_id, '') = '' to avoid double counting. (Use coalesce, not entity_id IS NULL β IS NULL throws on these Iceberg columns; see Querying β Pooled vs per-entity.)v2_3_balances β aggregated balance per customer Γ feature Γ entity
v2_3_balances β aggregated balance per customer Γ feature Γ entity
v2_3_breakdowns β per-entitlement balance detail
v2_3_breakdowns β per-entitlement balance detail
v2_3_flags β boolean feature flags
v2_3_flags β boolean feature flags
Invoices
Invoices and their line items.v2_3_invoices β invoice master record
v2_3_invoices β invoice master record
v2_3_invoice_line_items β invoice line detail
v2_3_invoice_line_items β invoice line detail
Events
The append-only usage event log. This is the highest-volume table and is append-only (no updates).events β usage event log
events β usage event log
events.timestamp is a native timestamp β no epoch-ms conversion needed. created_at is still epoch-ms.