Plan limits
How feature limits work across VisualQ plans.
How limits are enforced
VisualQ applies limits at different stages depending on the feature:
| Limit type | When enforced | Behavior when exceeded |
|---|---|---|
| Projects, scenarios, environments | At create time | Upgrade gate — you cannot create more until you upgrade |
| AI quotas (Smart Diff, Coach, crawl) | At request time | Upgrade gate or per-run cap |
| Integrations | At connect time | Upgrade gate for the required plan |
| Snapshot quota | Pre-flight before dispatch (when enforcement is active) | Run rejected with snapshot_quota_exceeded |
| Browsers, viewports, CI, members, schedules, history | Documented per plan | Counting and UI badges exist; hard gates are rolling out — see notes below |
When you hit a gated limit, VisualQ shows an upgrade gate — a dialog explaining which plan unlocks the feature. No data is lost; you just need to upgrade to continue.
Snapshot quota enforcement
Each plan ships with a monthly snapshot allowance. Snapshots are counted after the worker successfully uploads a screenshot to S3, so failed runs never burn quota.
- A VRT, accessibility, performance, SEO, or security test consumes one snapshot per
(scenario × viewport × browser)combination. - A FRT scenario consumes one snapshot per executed scenario per browser.
- Tracking audits do not consume snapshots in V1 (their worker output is JSON, not PNG).
Usage is always counted live and shown on the account page with traffic-light bands at 70%, 90%, and 100%. Warning emails go out the first time you cross 70% and 90% within a period.
Hard blocking activates when platform snapshot enforcement is enabled. When active and a run would exceed the monthly cap:
- The run is rejected upfront (HTTP 403 with
errorCode: "snapshot_quota_exceeded"). No tests execute. - The dashboard pops the snapshot upgrade dialog with the next reset date and a one-click upgrade path.
- Scheduled runs that hit the cap are skipped with status
skipped_quotaso they don't waste capacity once you upgrade mid-period.
Support can also enable or disable enforcement per organization without changing your plan.
The quota resets at 00:00 UTC on the first of each month.
Need a temporary boost outside of an upgrade? Contact support — we can grant a percentage of your monthly cap as a one-off via the admin reset endpoint, with a full audit trail in your org's audit log.
Metered overage billing (pay-per-snapshot above the cap) is on the roadmap for Business. Until it ships, Business plans follow the same hard-cap behavior as lower tiers when enforcement is active.
Project, scenario, snapshot and environment limits
| Plan | Projects | Total scenarios | Snapshots / month | Environments / project | Overage |
|---|---|---|---|---|---|
| Free | 1 | 1 | 150 | 1 | — (hard cap) |
| Hobby | 1 | 10 | 1 500 | 1 | — (hard cap) |
| Team | 5 | 100 | 15 000 | 3 | — (hard cap) |
| Business | 15 | 500 | 75 000 | 5 | $0.0035 / snap |
| Enterprise | Unlimited | Unlimited | Custom | Unlimited | Negotiated |
Scenario limits are enforced across all projects in your organization, not per project. A snapshot = one captured viewport in one scenario in one run. Environment limits are per project — each project can have up to N environments (Production is auto-created on first access and counts toward the limit).
Browser limits
| Plan | Available browsers |
|---|---|
| Free | Chromium |
| Hobby | Chromium |
| Team | Chromium, Firefox, WebKit |
| Business | All browsers |
| Enterprise | All browsers |
Firefox and WebKit are marked Team+ in the scenario editor. Plan-based browser blocking is not yet enforced at run time — all browsers can be selected today. Enforcement is planned.
Viewport limits
| Plan | Viewports |
|---|---|
| All plans | Desktop, tablet, and phone |
All three preset viewports (1920×1080, 768×1024, 375×667) are available on every plan. Custom viewport sizes are not supported.
Member limits and run history
| Plan | Members | Run history retention |
|---|---|---|
| Free | 1 | 7 days |
| Hobby | 1 | 30 days |
| Team | 5 | 90 days |
| Business | 15 (org roles: viewer / editor / admin) | 1 year |
| Enterprise | Unlimited | Unlimited |
QA pillars by plan
Every plan unlocks every pillar — VisualQ is a Quality OS from the Free tier. Higher plans add deeper sub-features (Lighthouse audits, CVE scanning, budgets in CI):
| Pillar | Free | Hobby | Team | Business | Enterprise |
|---|---|---|---|---|---|
| Visual regression | Yes | Yes | Yes | Yes | Yes |
| Accessibility (axe-core) | Yes (basic) | Yes (basic) | Yes (basic) | Yes + budgets | Yes |
| SEO basics | Yes | Yes | Yes | Yes | Yes |
| SEO Lighthouse | — | — | — | Yes | Yes |
| Performance (Web Vitals) | Yes (basic) | Yes (basic) | Yes + budgets | Yes + Lighthouse + budgets | Yes |
| Security headers | Yes (basic) | Yes (basic) | Yes | Yes + CVE scanning | Yes |
| Tracking / analytics QA | Yes | Yes | Yes | Yes | Yes |
AI feature limits
| Feature | Free | Hobby | Team | Business | Enterprise |
|---|---|---|---|---|---|
| Smart Diff per run | 1 | 3 | 10 | Unlimited | Unlimited |
| Smart Diff / month | 5 | 50 | 500 | Unlimited | Unlimited |
| Severity classification | — | Yes | Yes | Yes | Yes |
| Coach AI messages / month | 10 | 20 | 200 | Unlimited | Unlimited |
| Site crawl (Firecrawl) / month | — | — | 20 | 100 | Unlimited |
AI quotas reset on the first day of each calendar month (UTC).
Schedules and CI
| Capability | Free | Hobby | Team | Business | Enterprise |
|---|---|---|---|---|---|
| Schedules per project | — | 1 daily | 5 | 24 (hourly) | Unlimited |
| CI/CD REST API + GitHub Action | — | Yes | Yes | Yes | Yes |
| Perf budgets in CI | — | — | Yes | Yes | Yes |
| A11y budgets in CI | — | — | — | Yes | Yes |
| Custom thresholds (per scenario) | — | — | — | Yes (UI not gated yet) | Yes |
Integration limits
| Integration | Free | Hobby | Team | Business | Enterprise |
|---|---|---|---|---|---|
| Yes | Yes | Yes | Yes | Yes | |
| Webhooks (HMAC) | — | Yes | Yes | Yes | Yes |
| Slack | — | Yes | Yes | Yes | Yes |
| GitHub PR checks | — | — | Yes | Yes | Yes |
| GitLab MR notes | — | — | Yes | Yes | Yes |
| Jira (auto-issue) | — | — | — | Yes | Yes |
| Xray Cloud | — | — | — | Yes | Yes |
| Piano Analytics | — | — | — | Yes | Yes |
Governance and security (Enterprise)
| Capability | Enterprise |
|---|---|
| SSO / SAML | Yes |
| SCIM provisioning | Yes |
| Audit logs | Yes |
| IP allowlist | Yes |
| Dedicated cloud tenant | Optional |
| SOC 2 / DPA / MSA | Yes |
Upgrade gates
When you try to use a feature that requires a higher plan, you'll see an upgrade dialog with:
- The feature you tried to use
- Which plan unlocks it (Hobby / Team / Business)
- A button to start checkout for the right tier directly
These gates appear contextually throughout the app — in the scenario editor, test runner, integrations page, performance panel, and Coach.