Rate Limits
webhook.rodeo offers three tiers designed to grow with your needs. Here's everything you need to know about limits and what each plan includes.
Tiers
| Feature | Free | Starter | Pro |
|---|---|---|---|
| Active webhooks | 1 | 5 | Unlimited |
| Event rate limits | 10 req/min | 300 req/min | 1,500 req/min |
Free plan
Perfect for personal projects and trying out webhook.rodeo:
- 1 active webhook - Great for a single integration
- 10 requests/minute - Suitable for low-volume webhooks
- 30-day retention - Events deleted after 30 days
- All core features - Forwarding, replay, Slack, etc.
Starter plan
Ideal for small teams and growing applications:
- 5 active webhooks - Multiple integrations
- 300 requests/minute - Handles moderate volume
- 90-day retention - Longer event history
- All core features - Everything from Free
Pro plan
Built for production workloads and high-volume applications:
- Unlimited webhooks - As many as you need
- 1,500 requests/minute - High throughput
- Forever retention - Events never deleted
- Priority support - Faster response times
- All core features - Everything from Starter
Active webhook limits
Only active webhooks count toward your limit. Inactive webhooks don't count, so you can keep old webhooks around without using quota.
What happens when you hit the limit?
If you try to create or activate a webhook beyond your limit:
{
"error": "Webhook limit reached",
"currentCount": 5,
"maxAllowed": 5,
"plan": "starter",
"message": "Starter plan allows 5 active webhooks. Upgrade to Pro for unlimited or deactivate another webhook first."
}
Your options:
- Deactivate an existing webhook to free up a slot
- Upgrade your plan for more webhooks
- Delete unused webhooks (permanent)
Event rate limits
Rate limits prevent abuse and ensure fair usage. Limits are per-webhook-URL, not account-wide.
How rate limiting works
webhook.rodeo uses a sliding window algorithm:
- Counts requests in the last 60 seconds
- Allows bursts above the average
- Resets as old requests age out
Example (Free plan - 10/minute):
00:00 - Request 1-5 ✅ (5 requests so far)
00:30 - Request 6-10 ✅ (10 requests in 30s, still under 10/min average)
00:35 - Request 11 ❌ (exceeds 10/minute over last 60s)
01:00 - Request 12 ✅ (first 5 requests aged out, now under limit)
Rate limit responses
When you exceed your rate limit:
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
{
"error": "Rate limit exceeded",
"limit": "10 requests per minute",
"plan": "free",
"retryAfter": 30
}
The retryAfter field tells you how many seconds to wait before trying again.
Upgrading for higher limits
| Plan | Limit | Use Cases |
|---|---|---|
| Free | 10/min | Testing, personal projects, low-volume webhooks |
| Starter | 300/min | Small teams, multiple webhooks, moderate volume |
| Pro | 1,500/min | Production apps, high-volume integrations, real-time systems |
Need even higher limits? Contact us at support@webhook.rodeo.
Payload limits
All plans have the same payload limit: 4.5MB maximum.
Exceeding the limit
If you send a payload larger than 4.5MB:
HTTP/1.1 413 Payload Too Large
Content-Type: application/json
{
"error": "Payload too large",
"limit": "4.5MB",
"received": "5.2MB"
}
The event is rejected and not stored.
Other limits
Forward timeout
Forward requests timeout after 30 seconds. If your endpoint doesn't respond, the request is aborted and recorded as failed (triggering a retry).
Retry attempts
Failed forwards are retried up to 3 times (4 total attempts including the initial one).