Skip to main content

Feature registry

Scope: the feature → plan/quota mapping that is still true, verified against the entitlements code. The legacy registry's FR §X.Y numbering, [v1]/[v1-roadmap] status tags, and never-built sections are historical — the legacy file stays put for the B-021 archive; do not migrate its backlog prose.

Source-checked against optolink-backend @ 29f8589, 2026-10-07 (src/entitlements/plans.config.ts — FEATURE_KEYS, QUOTA_KEYS, per-plan features/quotas; cross-checked with the plan matrix on Entitlements enforcement).

The four feature gates​

Everything feature-gated flows through EntitlementsService.canUseFeature against exactly four FeatureKeys:

FeatureKeyUnlocksFirst plan with it
custom_domainsOrg-owned CNAME domains with auto-SSLSolo
team_membersInviting team members (seats are the team_members quota)Solo
api_accessThe API-key surface — SDK integration at allGrowth
analytics_exportAnalytics export (the Scale differentiator)Scale

Starter has none of the four — full deep-linking core (links, deferred matching, QR, managed subdomain, templates, basic analytics), no team, no API, no custom branding. api_keys is not a quota: the two fixed keys per org are structural, gated by the api_access feature.

The five quota keys​

QuotaKeyCounts
linkstotal Link rows
clicks_per_monthclicks since the subscription period start
domainsdomains not in their removal grace window
team_membersOrgMember rows + pending Clerk invitations
templatesnon-system LinkTemplate rows

Per-plan limits: Pricing & plans. Free Starter is the only hard-stop tier; paid tiers run clicks_per_month as overage, everything else as block.

Shipped but ungated (no FeatureKey)​

Short links (Base62 codes), deep links (Universal/App Links), deferred deep linking (clipboard → fingerprint ladder), QR codes (fixed shape), link expiry + fallbacks, tags/metadata, link deactivation, managed subdomain, link templates (system + org), click analytics (per-link + org summary), Clerk auth with the five-role RBAC, billing self-service (upgrade/downgrade/cancel), ops surface.

Registry entries never built (status: deferred)​

From the legacy registry, still true at HEAD — nothing ships a gate, endpoint, or surface for: install attribution (lookback windows, last/first-click models), in-app event tracking, conversion eligibility rules, campaign management, A/B testing, fraud detection, smart banners, referral/invite link types, webhooks & integrations, MMP/CRM/warehouse exports, sandbox environments, white-label/custom themes, configurable dashboards, scheduled email reports. The Web SDK and React Native plugin also never shipped (the four SDKs are Flutter, iOS, Android, Node). MAU as a quota/meter is backlog B-026.