# Limits

## Plans and the trial

A plan covers a number of events a month, and every plan has every feature. See [pricing](https://crowne.io/pricing) for each plan's events and price.

- **Free trial:** the org's first 30 days, and up to 100,000 events. Its first site starts it. At 100,000 events the dashboard locks until you choose a plan; crowne still counts the events. Each person gets one trial, whatever `+tag` the address carries.
- **After a trial without a plan:** the dashboard locks. crowne keeps counting events for 30 more days, so a plan you choose then has no gap.
- **Over a plan:** after two months in a row over the plan's events, the owners get an email with the plan that fits. Seven days later the dashboard locks, unless the last month was back within the plan. crowne keeps counting events throughout.

## Agentic sign-ups

A site from an [agentic sign-up](./quickstart/agentic.md) waits for its owner to claim it. Until then:

- It counts up to 10,000 events, for 7 days.
- Its org holds that one site.
- It is deleted, with its events, 30 days after sign-up.

An IP address can sign up three times an hour.

## Events

| Limit                      | Value                                                 |
| -------------------------- | ----------------------------------------------------- |
| Events per request         | 50                                                    |
| Request body               | 256 KB                                                |
| Event name                 | 1 to 120 characters                                   |
| Page address (`u`)         | 2,000 characters                                      |
| Properties per event       | 30                                                    |
| Property key               | 40 characters                                         |
| Property text value        | 2,000 characters                                      |
| Signed-in visitor id (`i`) | 256 characters                                        |
| Event time (`t`)           | Within the last 24 hours, and at most 5 minutes ahead |

## Sites

| Limit                       | Value            |
| --------------------------- | ---------------- |
| Site name                   | 120 characters   |
| Domains when you add a site | 50               |
| Dashboard panels            | 20               |
| Goal match                  | 2,000 characters |
| Funnel steps                | 2 to 8 goals     |
| Custom domains              | 1 per site       |

## Dashboards and reports

| Limit                        | Value            |
| ---------------------------- | ---------------- |
| Widgets per dashboard        | 40               |
| Metrics per widget           | 4                |
| Filters per widget or report | 10               |
| Values per widget            | 50               |
| Note text                    | 4,000 characters |
| Rows per report panel        | 1 to 1,000       |

A report of recent days, such as today, can be up to a minute old; of older days, up to an hour. Realtime is at most 15 seconds old.

## Rate limits

| Limit                                                | Applies to                                                                           |
| ---------------------------------------------------- | ------------------------------------------------------------------------------------ |
| 6,000 requests a minute per site and visitor address | [`POST /v1/events`](./api.md#post-v1events) without a key, or with `Crowne-Visitor`. |
| 10,000 requests a minute per key                     | `POST /v1/events` with a key.                                                        |
| 300 requests a minute per key                        | Every route of `api.crowne.io`.                                                      |
| 3 an hour per IP address                             | [`POST /v1/signup`](./api.md#post-v1signup).                                         |

Cloudflare counts each limit within each of its data centers. Over a limit, crowne answers `429`; wait a minute, then send again.
