# Plans and limits

Every organisation is on one plan: Free, Standard at $99 a month or Enterprise at $499 a month. Attribution, reconstruction and destinations are on the paid plans; Enterprise adds up to 10 install paths and log streams.

## What each plan includes

### Free

**$0**

- Website tag and installer hook
- Install-page visits and reported installs, with their trend
- Browsers, systems, devices and install paths
- Logs, with attribution fields left out
- No attribution and no destinations

### Standard

**$99** a month

- Everything in Free
- Installs by channel, campaign, page and referrer
- Journeys with first and last touch
- Safari and External reasons for unattributed installs
- Reconstruction from other signals
- GA4, Google Ads, Meta, TikTok, X Ads and webhooks
- CSV export with attribution
- 1 install path

### Enterprise

**$499** a month

- Everything in Standard
- Up to 10 install paths, each with its own hook
- Log streams to Amazon S3, S3-compatible storage or a webhook
- More websites, members and destinations

Paid plans are billed monthly through Stripe. Cancel anytime. See [Billing](https://clitrail.com/docs/billing).

## Limits by plan

| Per organisation | Free | Standard | Enterprise |
| --- | --- | --- | --- |
| Install paths | 1 | 1 | 10 |
| Websites | 1 | 3 | 25 |
| Domains per website, primary included | 5 | 10 | 25 |
| Members, pending invites included | 1 | 3 | 20 |
| Destinations per website | 0 | 10 | 20 |
| Log streams (S3 or webhook) | 0 | 0 | 10 |
| Log retention, days (at most) | 7 | 30 | 90 |
| Tracked events a month (UTC) | 10,000 | 1,000,000 | 10,000,000 |

The same numbers are served as JSON at `GET /api/limits`, which the dashboard and the home page read. **Usage** in the dashboard shows how much of each your organisation uses, and buttons that would pass a limit say so before you press them.

## No attribution on Free

On Free, CLItrail performs no matching of any kind. Visits are recorded for counts and browser and system breakdowns, and installs are stored as counts with their system and browser fields. The receipts and handoff tokens the hook sends are discarded unread: they are not looked up, stored or hashed. There is no reconstruction, no journey, no channel or campaign, and nothing is queued for a destination.

Attribution starts with installs reported after an upgrade. Nothing reported while on Free is ever matched or sent later.

## Tracked events

Tracked events are install-page visits plus reported installs, counted per organisation per calendar month in UTC.

- **Free, at 100%.** The tag and the hook still get their normal answers, so nothing breaks on your website or in your installer, but further visits and installs that month are counted only: nothing is stored or matched. The dashboard shows a banner with the reset date.
- **Standard and Enterprise are never cut off.** At 80% and at 100% the dashboard shows a notice and CLItrail records it; data keeps flowing and there is no overage charge.

## Downgrades

Nothing is deleted when an organisation moves to a smaller plan:

- Install paths, destinations and log streams over the new limit are paused until the owner chooses which to keep. Paused install paths still count installs, without attribution or delivery; paused destinations and streams send nothing.
- Websites over the limit keep collecting, but no new website can be added.
- Members stay, but no new invitations until the organisation is under its limit.
- Log retention is reduced to the plan’s maximum at the next clean-up.

## When a limit is reached

Creating something past a plan limit answers `402` with a body that names the limit:

```json
{ "error": "plan_limit", "limit": "websites", "max": 1, "plan": "free" }
```

| Code | Status | When |
| --- | --- | --- |
| `plan_limit` | 402 | A count limit is reached. `limit` is one of `installPaths`, `websites`, `domainsPerWebsite`, `members`, `destinationsPerWebsite`, `logStreams` or `telemetryRetentionDays`. |
| `plan_required` | 402 | A paid feature on Free, such as creating or testing a destination or exporting attribution. |
| `install_path_limit` | 402 | An install path past the plan’s limit. Same body, kept for older clients. |
| `organisation_limit` | 409 | You already own 5 organisations or belong to 20. |
| `rate_limited` | 429 | A service limit; see [Limits](https://clitrail.com/docs/limits). |

Every limit reached is recorded in the organisation’s activity and in [Logs](https://clitrail.com/docs/logs). [Reference → Limits](https://clitrail.com/docs/limits) lists every service limit.
