Appearance
Plans and limits
Plans
| Free | Starter | Pro | Scale | |
|---|---|---|---|---|
| Price | $0 | $10 / month | $50 / month | $150 / month |
| Events and log lines per month | 20,000 | 250,000 | 5,000,000 | 50,000,000 |
| Raw event retention | 7 days | 6 months | 1 year | 1 year |
| Counter totals | Forever | Forever | Forever | Forever |
| Extra events | — | Upgrade | $6 per million, opt-in | $4 per million, opt-in |
| Projects | 1 | 6 | Unlimited | Unlimited |
| Environments per project | 2 | 3 | Unlimited | Unlimited |
| Dashboard ranges | Today to 90 days | Today to 90 days | Today to 90 days | Plus Year and Lifetime |
| Custom dashboards | — | 3 | 10 | 50 |
| AI dashboard builds / month | — | 3 | 10 | 50 |
| MCP | — | ✓ | ✓ | ✓ |
| Alerts | 2 | 10 | 25 | 100 |
| Alert channels | Email, Slack, Discord, webhook (20) | Same | Same | |
| Members (owners and members) | 1 | 3 | 10 | Unlimited |
| Viewers (read-only) | — | Unlimited | Unlimited | Unlimited |
| Exports | — | CSV and JSON lines | CSV and JSON lines | Plus scheduled to your bucket |
Viewers read dashboards, logs and events but never change anything, see keys or open billing, and don't use a seat. A full team upgrades; there are no paid extra seats.
Coming soon: AI overviews of dashboards, a paid opt-in; price later.
Extra raw retention is an add-on: $10 a year per 100 million events. Write to us to add it; it applies to events stored from then on.
An AI build is one ask for a dashboard or board: the assistant gets up to 3 tries to fit your data. A build that still fails counts; one where the assistant never answered doesn't. Builds reset on the 1st (UTC).
Custom dashboards count across every project in the organization; the Overview never counts. After a downgrade, everything over a limit stays; only new projects, environments or dashboards are refused.
Every event and every log line counts toward the monthly quota, including each inbound webhook delivery that becomes an event (webhooks themselves are free on every plan). Daily and all-time counters are kept forever on every plan, even after the raw rows expire.
Billing
- Annual: pay for 10 months and get 12.
- Trial: Starter starts with a 30-day trial. It takes a card, and we email you 7 days before the first charge; cancelling drops you to Free. AI builds unlock with the first payment.
- A failed payment: your plan keeps running for 7 days while the card is retried. Billing shows the last day and asks for a new card. After that, the organization moves to Free until a payment goes through.
- Refunds: the first payment of a new plan is refundable within 14 days. See Refunds.
- Free needs no card. If the pricing page says Opens soon, paid plans aren't open yet.
Past your quota
You're never surprise-billed, and nothing is dropped at the quota:
- Owners get an email at 50 %, 80 % and 100 % of the month's quota.
- Between 100 % and 200 %, events are still stored, but left out of every dashboard and page. A banner says to upgrade; upgrading shows them at once.
- Past 200 %, ingest answers
429 {"error":"over_quota"}withRetry-After: 3600. Our SDKs keep the data in their outbox and retry, so an upgrade or the next month lets it through.
Extra events on Pro and Scale (opt-in). An owner can switch them on in Billing with a monthly cap in dollars. Events past the quota then show as usual and cost $6 (Pro) or $4 (Scale) per million, never more than the cap, charged once after the month ends. Steps 2 and 3 then start from quota + what the cap buys.
Request limits
| Limit | Value | Past it |
|---|---|---|
| Request body, as sent | 512 KB (gzip counts compressed bytes) | 413 |
| Recommended request size | 256 KB or less | — |
| Body upload time | 10 seconds | 408 (503 on OTLP and Loki) |
| Decompressed gzip body | 8 MB | Unparsed (decompressed_too_large) |
| Requests per second, per key | 200 | 429 + Retry-After: 1 |
| Requests per second with unknown keys, per client address | 20 | 429 |
| Events per request | 10,000 (20,000 text lines) | The rest kept in Unparsed (too_many_events) |
Event limits
| Limit | Value | Past it |
|---|---|---|
| Event name | 200 bytes | Unparsed (invalid_event) |
| Props keys per event, nested included | 100 | Unparsed (too_many_props) |
| Props key length | 128 bytes | Unparsed (props_key_too_long) |
| Props nesting | 32 levels | Unparsed (props_too_deep) |
ts window | Up to 10 years back, until 2095 | Unparsed (ts_out_of_range) |
| Text entry | 200 lines and 64 KB | The rest starts a new entry |
| Unparsed retention | 7 days | Deleted |
Organization limits
| Limit | Value |
|---|---|
| Deployments per environment | 20 |
| Public counters per environment | 10 |
| Webhook sources per environment | 20 |
Export limits
| Limit | Value |
|---|---|
| Rows per download | 5,000,000 |
| Uncompressed size per download | 2 GB |
| Downloads queued or running per organization | 2 |
| Download files kept | 3 days |
| Download link lifetime | 5 minutes |
| Scheduled file part | 1,000,000 rows |
See Exports for formats, columns and bucket setup.
MCP limits
| Limit | Value |
|---|---|
| Calls per user | 60 a minute, then 429 + Retry-After: 60 |
| Personal tokens per user | 10 |
| Range a tool can read | 90 days |
| Rows per answer | 100 |
| Hourly series | 7 days |
Next steps
- Responses: what each refusal means for your client.
- Troubleshooting: when numbers look wrong.