Quota limits per plan
Reference of Wevion's seven quota dimensions: seats, ad accounts, fan pages, pixels, catalogs, competitor watchlists, ad-spend cap.
Written By Salvatore Sinigaglia
Last updated About 4 hours ago
Reference of Wevion's seven quota dimensions: seats, ad accounts, fan pages, pixels, catalogs, competitor watchlists, ad-spend cap.
Quota limits per plan
Wevion enforces seven quota dimensions per plan: seats, ad accounts, fan pages, pixels, catalogs, competitor watchlists, and ad-spend visibility cap. Each plan sets a numeric value (or
NULL= unlimited). Check/settings/team/billing β Usagefor your current values + current usage.
Who is this for
Admins planning capacity for an upcoming launch, comparing plans for an upgrade, or wondering why a "Connect" button is greyed out.
The seven dimensions
A NULL value on any dimension = unlimited. Plus, Demo, and Enterprise plans typically have NULL across the board.
How quotas are enforced
The backend has a plan-guard middleware (apps/backend/src/plugins/external/11.plan-guard.ts) that checks before write operations:
requireResourceQuota(type): blocks new connections (ad account / fan page / pixel / catalog) when the quota is hitrequireUserQuota(): blocks new invites when seat quota is hitrequireActiveSubscription(): blocks writes on past_due or unpaid subscriptionsrequireFreemiumLimit(type): limits free-tier behavior (e.g. campaign launches)
When you hit a quota, the UI shows a clear error: "Plan limit reached β upgrade or remove unused [resource]".
Where to check your current values
From the UI
- /settings/team/billing β Usage shows a bar per dimension:
used / max(orused / unlimited) - The bar turns yellow at 80%, red at 95%
- Each row links to the relevant management page (e.g. ad accounts row links to
/connect)
From your perspective as admin
If a teammate gets a "quota exceeded" error, they'll come to you. You can:
- Check
/settings/team/billing β Usageto confirm which dimension is full - Either upgrade (acc-103) or remove unused resources to free space
Counting rules
Ad accounts
Only connected: true accounts count. Disconnected or deleted accounts don't count.
ad_accounts_used = meta.count(connected=true) + google.count(connected=true) + tiktok.count(connected=true) + taboola.count(connected=true) + snapchat.count(connected=true, deleted_at=null) + outbrain.count(connected=true)Fan Pages
Only Meta Pages with connected: true. Pages on other platforms are not counted (they don't exist in the same way).
Pixels
Sum across platforms:
- Meta: distinct validated pixels (
pixel_ad_account_linkwithstatus = 'validated') - TikTok: pixels with
status = 'ACTIVE' - Taboola: pixels with
connected: true - Google: conversion actions with
connected: true - Snapchat: pixels with
connected: true, deleted_at: null
Catalogs
Meta catalogs (Commerce Manager) + Google Merchant Center feeds, both with connected: true.
Competitor watchlists
Created via Strategic Intelligence module. Counts active watchlists.
Seats
max_users + extra_user_slots (purchased add-ons). Counts active members + pending invitations. See add extra team member slots for raising the cap on a fixed plan.
Ad-spend cap
Special β see the dedicated article understanding spend caps. Measured over a rolling 30-day window: 100-109% triggers a warning; crossing 110% sets the workspace read-only (spend_exceeded). It does not pause your live ads.
When you hit a quota
How to free quota space
Removing a resource frees the quota immediately; no Stripe action needed.
Demo and Enterprise plans
- Demo: internal plan for partners / POCs.
is_custom: true, hidden from public pricing. Replicates Enterprise limits at $0 (typically NULL on all resource quotas). Managed by Sales. - Enterprise: custom contract. Often unlimited quotas (NULL across the board) plus SSO. See enterprise and custom plans.
Common questions
- "Why does my count differ from /settings/team/billing?": the page is the authoritative count. If a dashboard widget shows different, refresh β it's a cache.
- "Disconnected an ad account but counter didn't drop": ~60s sync delay. Refresh.
- "I'm Enterprise but see a number, not unlimited": your contract has a fixed quota (not NULL). Contact your CSM to raise it.
- "Can I temporarily exceed for a launch?": No β quotas are hard. Plan ahead.
FAQ
What quotas does Wevion enforce per plan?
Wevion enforces seven quota dimensions per plan: seats, ad accounts (across Meta, Google, TikTok, Taboola, Snapchat, and Outbrain), fan pages, pixels, catalogs, competitor watchlists, and the ad-spend cap. Each plan sets a numeric value, or NULL meaning unlimited. Plus, Demo, and Enterprise plans typically have NULL across the board. The ad-spend cap is enforced over a rolling 30-day window (read-only at 110%). Check your current values and usage at /settings/team/billing β Usage.
Where do I see how much of my quota is used?
Go to /settings/team/billing β Usage in Wevion. It shows a bar per dimension displaying used / max (or used / unlimited), turning yellow at 80% and red at 95%. Each row links to the relevant management page, so the ad accounts row links to /connect. This page is the authoritative count if a dashboard widget disagrees.
Why is a "Connect" button greyed out?
You have likely hit a resource quota. Wevion's plan-guard checks quotas before write operations and blocks new connections once the limit is reached, showing "Plan limit reached β upgrade or remove unused [resource]". Confirm which dimension is full at /settings/team/billing β Usage, then upgrade or remove unused resources.
How do I free up quota space?
Remove the resource that is at its limit: remove members from /settings/team/people for seats, disconnect unused ad accounts in /connect/{platform}, disconnect Pages, pixels, or catalogs from their management pages, or delete unused competitor watchlists in Strategic Intelligence. Removing a resource frees the quota immediately, with no Stripe action needed.
Can I temporarily exceed a quota for a launch?
No. Quotas are hard limits, so you cannot temporarily exceed them β plan ahead by upgrading or freeing space before your launch. The ad-spend cap works differently but is still enforced: it's measured over a rolling 30-day window, warns you at 100-109%, and sets the whole workspace read-only once you cross 110% (until you upgrade). Your live ads keep running throughout β only Wevion write actions are blocked.