Skip to main content
3 min read

title: "Usage limits & warnings" description: "How Zenovay tracks usage against your plan and notifies you at 80% / 95% so you don't hit your limit by surprise."

Usage limits & warnings

Every Zenovay paid plan has three pay-as-you-go (PAYG) resources that are tracked monthly:

ResourceFree quotaWhat counts
Website eventsvaries by planpageviews + custom events + goals
API requestsvaries by plancalls authenticated with ZV_* API keys
First-party proxy eventsvaries by planevents routed via your custom CF Worker proxy

When you cross 80% of any of these, the dashboard fires a one-time toast notification. A second toast fires at 95%. After the warning has been shown for the period, it won't fire again until the first day of the next calendar month (UTC).

Reading current usage

GET /api/billing/usage
Authorization: Bearer ZV_xxx

Returns current usage with limits and percentage:

{
  "success": true,
  "data": {
    "websites": { "used": 2, "limit": 5, "percentage": 40 },
    "visitors": { "used": 18234, "limit": 100000, "percentage": 18 },
    "tier": { "name": "Pro 100K", "price": 35, "features": ["..."] },
    "period": {
      "start": "2026-04-01T00:00:00.000Z",
      "end":   "2026-04-30T00:00:00.000Z"
    }
  }
}

Reading which warnings have already fired

GET /api/billing/usage-warnings?teamId=<team-uuid>
Authorization: Bearer ZV_xxx
{
  "success": true,
  "data": {
    "billing_period_start": "2026-04-01",
    "warnings_shown": {
      "events":       [80],
      "apiEvents":    [],
      "proxyEvents":  []
    }
  }
}

warnings_shown is keyed by resource. The array contains the percentage thresholds (80 and/or 95) that have already fired this billing period.

Acknowledging a warning programmatically

The dashboard does this automatically when a toast is shown. If you're building a custom UI you can POST it yourself:

POST /api/billing/usage-warning-acknowledge
Authorization: Bearer ZV_xxx
Content-Type: application/json

{ "teamId": "<uuid>", "resource": "events", "threshold": 80 }

The endpoint is idempotent — if the (team, period, resource, threshold) combination has already been recorded, you still get a 200 OK.

What happens at 100%

PlanBehavior at 100%
FreeTracking stops; visitors log a 429. Upgrade to keep tracking.
Pro + ScalePAYG kicks in (see PAYG pricing). Tracking continues; overage billed at end of month.
EnterpriseSoft cap; account manager notifies you ahead of time.

Customer-facing reading

Was this page helpful?