Skip to main content
Every WireSocket application has resource limits defined by its plan. These limits are embedded in your JWT and enforced by the dataplane at connection time — no database lookup required.
WireSocket limits apply to concurrent usage only — not total storage or document count. You can have unlimited documents in your system. Limits only apply to how many are actively open and syncing at the same time.

Plan Limits

See the Pricing page for limit values per plan.

Enforcement

When Limits Are Hit

All connection limits are enforced at handshake. The connection is rejected before it is established — no active connections are dropped.
opsPerMinute is the only limit that can be hit during an active session. When exceeded, the connection is dropped to protect sync integrity across all connected clients.

Enforcement Strategy

Global limitsmaxConnections, maxDocuments, and maxUsersPerDoc are enforced globally across the entire cluster. A tenant cannot bypass limits by spreading connections across multiple nodes. Regional limitsopsPerMinute is enforced via local Redis within the node’s region. This allows millisecond-level rate checking without global database latency.

Handling Limit Errors


Usage Visibility

WireSocket does not provide usage metrics in the dashboard. Since usage is ephemeral and real-time, a static dashboard view would be outdated the moment it loaded. Instead, tenants can query the Usage API directly using their JWT to get a live snapshot of current consumption.

Usage API

Or using a query parameter:
Response:
The JWT identifies the tenant and application — users can safely call this endpoint directly from the browser. They will only ever see their own application’s data.
  • Poll once per minute for admin dashboards
  • Use percent and status fields to drive progress bars or color-coded indicators
  • Trigger an upgrade prompt when status reaches warning to prevent users hitting hard limits in production
Last modified on February 25, 2026