Every webhook lands, or keeps trying until it does.
ShellOrbit receives your inbound webhooks, writes the raw payload down before anything else, and retries delivery with backoff until your destination answers. Replay any event you still hold.
| Source | Event | State | Attempts |
|---|---|---|---|
| stripe | invoice.paid | delivered 200 | 1 |
| github | push | delivered 200 | 1 |
| stripe | charge.refunded | delivered 200 | 3 |
| shopify | orders/create | delivered 200 | 2 |
Delivery attempts for evt_9c41f0
- 12:04:01 Attempt 1 returned 502 from api.yourapp.com
- 12:04:09 Attempt 2 returned 502, next try in 32 seconds
- 12:04:41 Attempt 3 in flight Attempt 3 returned 200 in 240 ms
Priced for the app you actually have
Free inspection tools stop at debugging. Production platforms start where a side project's whole budget ends. This is the band in between.
| Inspection tools | ShellOrbit | Production platforms | |
|---|---|---|---|
| Built for | Testing a payload by hand | A small app with real users | Teams with a platform budget |
| Retries | None | Configurable attempts and backoff | Configurable |
| Storage | The current session | 3 to 90 days by plan | Long, with archive tiers |
| Replay | Copy and resend yourself | One event or a filtered range | Yes |
| Entry price | Free | Free, then $15 a month | Roughly $39 to $75 a month |
What happens to a request after it arrives
Four stages, in order, for every event. No agent to install and no change to your existing handler.
Point the provider at your ingest URL
Create an endpoint and paste the URL into Stripe, GitHub, Shopify, or anything else that sends webhooks. Nothing to install and no library to add.
Every request is stored before anything else happens
Method, headers, query, raw body, and signature are written down first. If your server is down, restarting, or mid deploy, the event is already safe.
Delivery runs on a queue with backoff
We POST to your destination, record the status code and response time, and requeue with increasing delay when the attempt fails. Permanent failures move to a dead letter queue you can inspect.
Replay anything inside your retention window
Fix the bug, then replay a single event, a filtered range, or everything that failed in the last hour. The original payload and headers are sent again, byte for byte.
Hitting your plan limit does not delete your customers' events
A dropped webhook is somebody's missed payment or unshipped order. Billing is a reason to charge you, not a reason to throw the payload away.
Overage instead of a wall
Paid plans keep receiving past the included volume and bill the extra by the thousand. There is no lockout on the day you get attention.
Queued, not discarded
On the free plan we hold events for 48 hours past the limit and tell you. Upgrade and the queue drains to your destination.
Dead letter queue you can read
When every attempt is exhausted the event stays inspectable and replayable for the rest of your retention window.
Controls you reach for once traffic is real
Everything is set per endpoint, so a noisy provider does not force the same policy on the rest.
Retries that outlast an outage
Set attempt count and backoff per endpoint, from three fast tries to fifty attempts spread over a month. A destination that goes down on Friday is still being retried well into the next week.
Starter and above
Circuit breaker
Once ten events in a row have failed every attempt, we stop running full retry schedules against a destination that is plainly down and hold new events instead. Nothing is dropped, and the first success clears it.
All plans
Fan out to several destinations
One inbound event, up to three destinations, each with its own delivery record and retry state.
Pro and above
Payload transformation
Reshape or trim the body before forwarding, so your handler receives what it expects.
Pro and above
Custom ingest domain
Receive on hooks.yourapp.com instead of a shared ShellOrbit URL, with certificates handled for you. Included on every plan, from one hostname on the free tier up to twenty five.
All plans
Signature verification
Verify provider signatures on the way in and sign outbound requests so your handler can trust the source.
Business
Event search
Filter by endpoint, status code, event type, or time range, then act on the whole result set at once.
Starter and above
Failure alerts
Email when an endpoint fails repeatedly, plus a POST to any webhook URL you configure on higher plans. Weekly digest of delivery health.
Starter and above
REST API
Create endpoints, rotate secrets, and trigger replays from scripts and deploy pipelines, with read only or read write keys.
Business
Four plans, one product
Every plan runs on the same delivery pipeline. Higher plans raise volume, retention, and control rather than unlocking reliability.
Hobby
For side projects and the first users of a new app.
$0 per month
15,000 events per month
- 15 day retention and replay
- 1 endpoint, 1 destination
- 1 custom ingest domain
- Fixed retry policy, 3 attempts
- Dashboard event inspector
- Community support
- Small ShellOrbit mark in the dashboard
Starter
For a small production app with paying users.
$15 per month
75,000 events per month, then $0.50 per 1,000
- 30 day retention and replay
- 5 endpoints, 1 destination each
- 2 custom ingest domains
- Configurable attempts and backoff
- Email alerts on repeated failure
- Event search and filtering
- Email support
Pro
Where most solo developers land after Starter.
$40 per month
150,000 events per month, then $0.40 per 1,000
- 60 day retention and replay
- Unlimited endpoints
- 5 custom ingest domains
- 3 destinations per endpoint, fan out
- Payload transformation before forwarding
- 3 team seats
- Email and webhook alerts
- Priority email support
Business
For products where webhook downtime becomes a support queue.
$99 per month
750,000 events per month, then $0.30 per 1,000
- 180 day retention and replay
- Unlimited endpoints and destinations
- 25 custom ingest domains
- 5 team seats, buy more at any time
- Signature verification and IP allowlisting
- Audit log of dashboard actions
- 99.9 percent uptime commitment
- Priority support with faster response
Pay yearly and two months come off the price. Usage above your included volume is billed by the thousand at the rate shown on your plan, so a busy week costs a few dollars instead of a forced upgrade.
Payments are handled by Paddle as merchant of record. Paddle collects sales tax and VAT where it applies and appears on your statement as the seller. Prices are in United States dollars and exclude tax where local rules add it.
Questions worth answering before you sign up
What happens when I pass my monthly event limit?
Nothing gets thrown away. On paid plans you keep receiving and the extra events are billed by usage, at the per thousand rate on your plan.
On the free plan we keep accepting and queueing for 48 hours and send you a warning. Delivery resumes as soon as you upgrade. If the plan is still at its limit after that window, delivery slows rather than stopping outright.
Do you ever drop an event?
Not on purpose, and not because of billing. A dropped webhook can be your customer's missed payment, so the design writes the event down before doing anything else.
Events leave storage only when they age out of your plan's retention window, or when you delete them.
How long are webhook events kept, and can I replay them later?
Every event is stored the moment it arrives, with its raw headers, raw body, and every delivery attempt. The free plan keeps 15 days, Starter 30, Pro 60, and Business 180.
Anything inside that window can be replayed, one event at a time or a whole filtered range. That is the point of the window: when you fix the bug that broke your handler, the events that hit it are still there to run again.
What happens if my destination is down for days?
ShellOrbit keeps retrying. A retry policy can be set to as many as fifty attempts with up to a day between them, which is a window of over a month, so a destination that goes down on a Friday evening is still being retried long after the weekend.
Once ten events in a row have failed every attempt, a circuit breaker holds new events rather than running full retry schedules against a destination that is plainly not there. Nothing is dropped, and the first success clears it immediately.
You hear about it before that happens: failure alerts fire by email after five consecutive failures by default.
How fast is delivery?
A healthy first attempt typically leaves within a second of receipt. Retries follow your backoff setting, so a failing destination sees increasing gaps rather than a tight loop.
Where does my payload data live?
On Amazon Web Services. Event records sit in DynamoDB, oversized payloads in S3, and delivery runs through SQS and Lambda. Nothing is copied to a third party for analytics.
Can I inspect what the provider actually sent?
Yes. Raw headers, raw body, signature, and every delivery attempt with its response code and body are visible for the whole retention window.
Can I move off ShellOrbit later?
Point the provider back at your own URL and delivery stops being ours. Export your stored events over the API before you cancel if you want to keep them.
How do I cancel?
From the dashboard, at any time. The plan runs to the end of the paid period and then stops. Payments already made are not refunded, which is set out in the refund policy.
Is there an uptime commitment?
The Business plan carries a 99.9 percent monthly commitment on the ingest endpoint. Lower plans run on the same infrastructure without a contractual target.
Point one provider at it and watch the log fill
Create an endpoint, paste the URL into a provider you already use, and send a test event. Nothing to deploy on your side.
curl -X POST https://hooks.shellorbit.com/e/ep_7f3a91 \
-H 'content-type: application/json' \
-d '{"event":"invoice.paid","id":"evt_9c41f0"}'