Feature Access & Entitlements
QuizFlow Labs maps every capability to a plan (free, basic, pro, team) and the account's active subscription status. Paid plans (basic and above) unlock billing-backed features such as hard gates, email notifications, CSV exports, and branding controls. Pro and Team plans add advanced entitlements for scoring, analytics, presentation styles, and integrations.
How entitlements are calculated
- Plan: The profile's plan string determines your tier.
- Subscription status: An
activeortrialingstatus keeps paid-entitled features unlocked; canceled or delinquent accounts fall back to the free experience. - Feature checks: Helpers like
assertEntitled/isEntitledgate actions such as CSV exports, branding controls, and publishing. - Limits layer: Lead and response limits come from the same entitlement model so dashboards, APIs, and publish gating stay in sync.
Plan comparison matrix
| Feature | Free | Basic | Pro | Team |
| --- | --- | --- | --- | --- |
| Monthly responses (accepted submissions) | 100 | 1,000 | 5,000 | 20,000 |
| Monthly leads (captured lead_email) | 50 | 200 | 1,000 | 1,000 |
| Project folders | ❌ | 3 | ∞ | ∞ |
| Email notifications & hard gate | ❌ | ✅ | ✅ | ✅ |
| Branding controls + custom completion copy/logo | ❌ | ✅ | ✅ | ✅ |
| CSV exports (response_export) | ❌ | ✅ | ✅ | ✅ |
| Question scoring | ❌ | ✅ | ✅ | ✅ |
| Completion rules | ❌ | ❌ | ✅ | ✅ |
| Jump Logic | ❌ | ❌ | ✅ | ✅ |
| Full-Page presentation | ❌ | ✅ | ✅ | ✅ |
| Split layout (full-page) | ❌ | ❌ | ✅ | ✅ |
| Per-question split media override | ❌ | ❌ | ✅ | ✅ |
| Full-Page embed | ❌ | ❌ | ✅ | ✅ |
| Integrations & advanced analytics | ❌ | ❌ | ✅ | ✅ |
✅ = entitlement held; ❌ = upgrade hint or disabled control.
Monitoring your entitlements
- Dashboard counters: "Submissions this month" and "Leads this month" track the caps above.
- Billing page:
/dashboard/billingshows your current plan/status and surfaces theUpgradeorManage billingbutton. - Builder hints: Paid-only blocks (file uploads, scoring, completion controls, branding toggles, question split-media overrides, and integrations panes) display upgrade hints when unavailable.
- Publish gating: Publishing checks
fullPagesettings viagetPublishGatingErrorand surfaces a helpful message if entitlements are missing.
When your plan changes
- Pick a tier on
/pricingor via the billing portal. - Stripe applies the change immediately; refresh the dashboard or builder to fetch the new entitlements.
- If the UI still shows the previous plan, click "Manage plan" or sign out and back in to reset the session cache.
Upgrades instantly increase limits and unlock the boolean entitlements across dashboards, builder controls, and APIs.

