# Limits

Payload size, ingest and API rate limits, monthly event quotas, resource caps and retention windows per plan.

Source: https://docs.webhooker.eu/reference/limits/

## Fixed for every plan

| Limit | Value |
| --- | --- |
| Max payload size | 1 MiB |
| Delivery timeout | 10 s default, 1–300 s per destination |
| Retry schedule | `30s, 2m, 10m, 1h, 4h` by default; up to 10 intervals of 1 s – 24 h |
| Circuit breaker | Opens after 5 consecutive retryable failures; cooldown 60 s doubling to 10 min |
| Trash grace period | 7 days |
| Invite validity | 7 days |

![The Billing page showing plan and usage](https://docs.webhooker.eu/screenshots/billing-light.webp "The Billing page shows the plan of the active workspace and how much of its monthly event quota is used.")

## Per plan

| Limit | Free | Pro | Team |
| --- | --- | --- | --- |
| Included events per month | 10,000 | 100,000 | 1,000,000 |
| Event retention | 14 days | 30 days | 90 days |
| Ingest rate, per source | 120/min | 1,200/min | 2,400/min |
| API requests, per workspace | 60/min | 600/min | 1,200/min |
| Sources | 3 | 50 | 200 |
| Destinations | 9 | 250 | 1,000 |
| Members | 1 | 5 | 25 |
| Concurrent live streams | 3 | 10 | 25 |

Current prices and any plan-specific features are on the
[pricing page](https://webhooker.eu/pricing).

## What happens at each limit

**Payload too large.** Over 1 MiB is rejected with `413` and nothing is stored.

**Ingest rate exceeded.** `429` with `Retry-After`, nothing stored. Well-behaved
providers retry; the budget is per source, so one noisy sender cannot starve the
others.

**API rate exceeded.** `429` with `Retry-After`. Dashboard traffic is not
metered against this.

**Monthly quota reached.** Ingest answers `402` and the event is not stored. On
paid plans a 20% grace band above the included quota is accepted first, so a
busy month does not drop webhooks at the stroke of the limit. The free plan stops
exactly at its quota. Usage resets at the start of each calendar month. What
counts as a billable event differs sharply between vendors —
[how webhook pricing models compare](https://webhooker.eu/blog/webhook-pricing-models)
sets out the questions to ask before committing to one.

**Resource cap reached.** Creating a source or destination beyond the cap
returns `403` with code `plan_limit_exceeded`. Restoring a source from the trash
counts against the cap too.

**Live stream cap reached.** Additional stream connections are refused until one
closes.

**Retention window passed.** Events, deliveries and attempts are removed
permanently. The window is stamped when an event arrives, so a plan upgrade
extends only events received afterwards. Forward events to a gateway that
archives them if you need longer history.
