When a limit is hit
When your organization reaches a plan limit, CXGear blocks the action and tells you clearly. Nothing fails silently in the background — you get a toast, an inline error, or an API response with error code PLAN_LIMIT.
This page explains what you will see and what to do next.
What happens
Section titled “What happens”- You try an action that needs capacity (create a project, run a job, add a user, create an API key, …).
- CXGear checks your plan and current usage.
- If the meter is full, the action is rejected.
- You see a message such as:
Project limit reached on the trial plan (1/1). Upgrade to continue. Open Billing to upgrade your plan.
The exact wording names the resource and often shows used / limit.
src/assets/screenshots/37-plan-limit-toast.pngToasts appear above drawers
Section titled “Toasts appear above drawers”Limit messages use toasts that sit above drawers and modals. You can still read the error while a form is open — you do not need to close the spinner builder or create-project dialog first.
If you miss the toast, open Billing → Usage and look for a meter at zero remaining.
The PLAN_LIMIT error code
Section titled “The PLAN_LIMIT error code”APIs and integrations receive a structured error with:
| Field | Meaning |
|---|---|
| errorCode | PLAN_LIMIT |
| message | Human-readable explanation (resource and used/limit) |
| HTTP status | Typically 403 (forbidden by plan), not a server crash |
Your middleware should treat PLAN_LIMIT as “upgrade or free capacity,” not as a transient network failure. Retrying the same request without changing usage will fail again.
Public ingest and trigger endpoints enforce the same limits as the UI. A CRM that triggers a spinner can hit monthly job or record caps the same way Run now does.
Actions that commonly hit limits
Section titled “Actions that commonly hit limits”| Action | Meter that may block it |
|---|---|
| Create project | Projects |
| Publish / create spinner | Spinners |
| Invite user | Users |
| Create data table | Data tables |
| Create API key | API keys |
| Connect channel | Channels |
| Run or trigger a spinner | Jobs / month, Records / month |
| Run call analysis | Call analyses / month |
Trial is intentionally tight (for example one project) so teams explore safely and upgrade when ready.
What to do
Section titled “What to do”Work through these steps in order:
- Read the message — which resource is full?
- Open user menu → Billing and confirm the meter (used / limit / remaining).
- Free capacity if you are still exploring:
- Remove unused projects, tables, keys, or users (where the product allows)
- Avoid publishing extra test spinners on Trial
- Upgrade to Pro or Advanced via checkout (Stripe internationally, Razorpay in India).
- For custom needs, contact CXGear about Enterprise.
Monthly meters (jobs, records, analyses) also reset at the start of each calendar month. If you are blocked only on a monthly meter and can wait, usage will clear on reset — but campaigns usually need an upgrade instead.
Success looks like
Section titled “Success looks like”- The blocked action succeeds after upgrade or after freeing a resource
- Billing meters show remaining headroom
- Integrators handle
PLAN_LIMITwithout treating it as a 500 - The team knows Trial is for learning, not production volume
Common problems
Section titled “Common problems”| Problem | Likely cause | What to do |
|---|---|---|
| Toast disappeared | Auto-dismissed | Check Billing meters |
| API returns 403 with PLAN_LIMIT | Same limit as UI | Upgrade or free capacity; do not infinite-retry |
| Only some users blocked | Same org limits apply to everyone | Limits are org-wide, not per user |
| Month just started but still blocked | Capacity meter (projects/users), not monthly | Free a resource or upgrade |
| Thought delete would free a meter | Resource still counted or soft-deleted | Confirm on Billing; contact support if stuck |