---
url: https://simpledatalogs.com/docs/reference/limits.md
description: >-
  Plans, monthly quotas and what happens past them, retention, and every
  request, event and MCP limit in one place.
---

# 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 | 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](/integrations/webhooks) 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](https://simpledatalogs.com/refunds).
* Free needs no card. If the [pricing page](https://simpledatalogs.com/pricing) says **Opens soon**, paid plans aren't open yet.

## Past your quota

You're never surprise-billed, and nothing is dropped at the quota:

1. Owners get an email at **50 %, 80 % and 100 %** of the month's quota.
2. **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.
3. **Past 200 %**, ingest answers `429 {"error":"over_quota"}` with `Retry-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](/guide/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](/api/responses): what each refusal means for your client.
* [Troubleshooting](/reference/troubleshooting): when numbers look wrong.
