HookDeploy offers four plans. Every account starts on Free. Upgrade when your team or volume grows.
Plan comparison
| Free | Starter | Team | Enterprise | |
|---|---|---|---|---|
| Price (monthly) | $0 | $9 | $39 | Custom |
| Price (yearly) | $0 | $90 | $390 | Custom |
| Members | 1 | 2 | Unlimited | Unlimited |
| Endpoints | 5 | 25 | 50 | Unlimited |
| Requests/month | 5,000 | 15,000 | 100,000 | 1,000,000 |
| Max payload | 256 KB | 1 MB | 25 MB | 100 MB |
| Retention | 7 days | 30 days | 90 days | 365 days |
| Header injection | — | ✓ | ✓ | ✓ |
| Cron jobs | 2 (1 hr min) | 10 (5 min min) | 50 (1 min min) | Unlimited (1 min min) |
| Storage/month | 1 GB | 5 GB | 50 GB | Unlimited |
Yearly billing saves $18/year on Starter and $78/year on Team compared to monthly.
What counts toward limits
Requests per month
Each incoming webhook to https://hookdeploy.dev/h/{slug} counts as one request. Counted per organization, across all endpoints, per calendar month (UTC).
Does count:
- POST, GET, PUT, PATCH, DELETE, etc. to your HookDeploy URL
Does not count:
- API calls to
api.hookdeploy.dev - Replay actions (manual or via API)
- Requests rejected with
413(payload too large — rejected before storage) - Requests to paused endpoints (
423— rejected before storage)
Endpoints
Each active endpoint counts toward the limit, including paused endpoints. Deleted endpoints free up a slot immediately.
Members
Each organization member counts, including the owner. Pending invitations do not count until accepted.
Payload size
Checked at ingestion. Bodies exceeding max_payload_bytes are rejected with 413. Nothing is stored.
Retention
Not a usage limit — captured requests are automatically deleted after the retention period. No manual action needed.
Storage
Monthly storage counts request body size only — headers, query parameters, and metadata do not count toward the cap.
Storage resets on the first of each month (UTC), alongside monthly request metering.
| Plan | Storage/month |
|---|---|
| Free | 1 GB |
| Starter | 5 GB |
| Team | 50 GB |
| Enterprise | Unlimited |
When your organization reaches its storage cap:
- The webhook is still accepted (senders receive
200) - Request metadata appears in the dashboard (method, headers, timing, etc.)
- The body is not stored
- The body tab shows an upgrade prompt instead of the payload
Upgrade your plan anytime from the Billing page to restore body storage for new requests.
Header injection
Inject custom headers (for example Authorization or X-Tenant-ID) into every auto-forwarded webhook. Available on Starter, Team, and Enterprise — not included on Free.
Configure injected headers in an endpoint’s Settings tab under Inject headers on forward. See Forwarding — Header injection.
Checking your usage
Dashboard — Billing page shows current usage vs limits with progress bars.
API:
curl -s "https://api.hookdeploy.dev/v1/usage" \
-H "Authorization: Bearer hd_live_YOUR_KEY"
{
"data": {
"requests_this_month": 42,
"endpoint_count": 3,
"member_count": 1,
"limits": {
"max_endpoints": "5",
"max_users": "1",
"max_requests_per_month": "5000",
"max_payload_bytes": "262144",
"retention_days": "7"
}
}
}
Limit values of -1 mean unlimited.
Upgrading
Requires billing.change_plan permission (super admin, admin, or finance).
- Go to Billing in your organization
- Select a plan (Starter, Team, or Enterprise)
- Choose monthly or yearly billing
- Complete checkout via Stripe
Stripe confirms the subscription after checkout, then HookDeploy applies the paid plan limits to the organization.
Downgrading
- Go to Billing
- Click Manage subscription (opens Stripe Customer Portal)
- Change plan or cancel in Stripe
Downgrades take effect at the end of the current billing period. You keep current limits until then.
Existing resources are not automatically deleted when lower limits take effect. You may need to reduce usage before you can create additional resources.
Enterprise
Enterprise uses custom pricing. Contact us via support to discuss your needs. It includes:
- Unlimited team members and endpoints
- 1,000,000 requests per month
- 100 MB payloads
- 365-day retention
- Security and architecture review support
What happens at limits
| Limit hit | Behavior |
|---|---|
| Requests/month | Metered usage is shown in the dashboard; the monthly counter is not itself a hard gate. Protective ingestion controls may return 429. Usage resets at the start of the next calendar month (UTC). |
| Max endpoints | Cannot create new endpoints (dashboard error or API 429 plan_limit) |
| Max members | Cannot send new invitations |
| Max payload | Incoming webhooks return 413. Body not stored. |
| Storage/month | Request captured; body not stored. Upgrade prompt in body tab. |
No surprise charges. Self-serve plans never auto-upgrade you.
Next steps
- Billing FAQ — Payment methods, cancellation, refunds
- Usage API — Programmatic usage checks
- Members — Member limits per plan