Account
Plans and billing
What each plan allows, how the monthly event quota is counted, and what happens when a limit is reached.
The plans
The limits of every plan live in one place in the server configuration. The pricing page and the billing page read the same values, so the number you are shown is the number that is enforced.
The plan of an account is decided by the server from the state of the subscription. A plan shown in the browser is a label, never a permission. Every limit is checked again when a request arrives.
The pricing page shows the price and the full list of limits for each plan.
What counts as an event
A billable event is an event that has been accepted and stored. The count is taken when the event is written, not when the browser sends it.
- A duplicate never counts. A retry, a second script on the page or a redelivered message all resolve to the same event.
- A rejected event never counts. A payload that fails validation, a request from a bot and an excluded path all stop before storage.
- A pageview and a custom event each count once.
- A test event from the developers page counts. It is a real event in a real installation.
The quota is the sum of the billable events of the calendar month. The usage figure on the billing page is the same number.
When the limit is reached
The ingestion endpoint refuses the events of a site that is over its limit. The refusal is explicit, so the tracker and the owner both know what happened. Nothing is silently dropped.
{
"ok": false,
"error": {
"code": "quota_exceeded",
"message": "This site has reached its monthly event limit of 10000. Upgrade the plan or wait for the next period."
},
"requestId": "req_0NzM2LZ8_RuRfJ5B"
}A batch that would cross the limit is refused as a whole rather than in part, so the usage figure stays easy to reason about. The allowance returns at the start of the next calendar month.
Other limits
A plan also limits the number of websites, the number of goals and funnels, the retention window, the number of API keys and the number of rows an export can return. When a limit is reached, the interface says which limit it is and nothing is lost.
The rate limits are separate from the plan limits. They protect the service rather than the account. TheAPI reference lists them.
Changing plan
The subscription is handled by Dodo Payments. A plan change is confirmed by a signed webhook from the provider before the server grants the new limits. The browser never decides what plan an account is on, so a customer cannot unlock a limit by editing a page.
If the provider has not answered yet, the billing page shows a pending state rather than claiming the plan is active.
The card, the invoices and the cancellation live in the customer portal of the provider. The billing page opens it, so there is one place to change the payment method and it is the place the provider supports.