FanHook · terms of service
Terms of service
The short, honest version: FanHook receives your webhooks, verifies them where it can, stores them, and forwards them where you say. These terms cover what we provide, what it costs, and what we expect from you in return.
Initial version, pending legal review. This page was written in plain language by the people who build FanHook and has not yet been reviewed by a lawyer. It describes what the service actually does today. Effective [EFFECTIVE DATE]. FanHook is operated by [LEGAL ENTITY NAME], [JURISDICTION]. Questions: [CONTACT EMAIL].
What FanHook provides
FanHook is a webhook relay. You create a sink, point a sender at the sink's address, and FanHook accepts each message, checks its signature for the supported providers (Stripe, GitHub, Shopify, Clerk, Linear and PagerDuty), stores it, and forwards a copy to every destination you configure. Each destination gets a short automatic retry schedule. A message that could not be delivered to a destination is held in a dead letter queue where you can inspect and resend it. If some destinations accepted it and others did not, each destination that did not is retried on its own, without resending to the ones that accepted it; if it still fails, it gets its own dead letter entry, which resends to that destination only. Sinks on the generic provider skip the signature check unless you set a signing secret on them.
Delivery is best effort. Retries cover a window of minutes, not hours, and held messages wait for you rather than being redelivered automatically forever.
Your account and your keys
You sign up with an email address and a password, and you are responsible for keeping that password to yourself. Each sink has an API key that is shown exactly once when the sink is created; FanHook stores only a hash of it and cannot show it to you again, so treat it like a password.
A sink's ingest address is itself sensitive. For supported providers, forged messages are rejected by the signature check, but a generic sink with no signing secret will accept anything posted to its address and that counts against your quota. Keep sink addresses and signing secrets confidential.
Plans, limits, and going over them
| Plan | Price | Events / month per sink | Sinks | Routes per sink |
|---|---|---|---|---|
| Free | $0 | 1,000 | 1 | 3 |
| Starter | $9/mo | 50,000 | 5 | 10 |
One arrival counts as one event, no matter how many destinations it fans out to, and retries are not counted again.
Once you are over your monthly cap, new messages are refused with an error until the month resets. As a courtesy, up to 100 further messages per sink per month that the sink would otherwise have accepted are still stored and marked rejected, so you can see what was turned away and resend it after upgrading. Rejected messages are never delivered and never count as billable usage. Beyond that, over-cap messages are refused without being stored.
Request bodies larger than 1 MB are refused outright. The refusal is recorded so you can see it happened (with a per-sink cap on how many such records are kept open, so a flood of oversized requests cannot bury real failures), and the oversized body itself is never stored. Rate limits also apply to protect the service.
Billing
The Free plan needs no card. The Starter plan is $9 per month, paid through Polar, which acts as the merchant of record: Polar takes the payment, issues the receipt and handles any sales tax or VAT due. Your card details go to Polar and are never seen or stored by FanHook; we keep only the customer and subscription identifiers needed to know which plan you are on.
You can cancel yourself at any time from the Account page in your dashboard, which opens Polar's customer portal. Cancelling stops the renewal; you keep Starter limits until the end of the period you have already paid for, and then the account returns to the Free plan and its limits. Downgrading deletes nothing you have stored, though the Free retention windows described in the privacy policy then apply. If you believe a charge is wrong, contact [CONTACT EMAIL].
What we expect from you
Use FanHook lawfully. The messages you relay through it are yours, and you must have the right to receive, store and forward them, including any personal data about your own customers that they contain. Our privacy policy explains exactly what is stored.
Destinations must be publicly reachable endpoints that you control or are authorized to send to. Internal and private network addresses are blocked deliberately. Do not use FanHook to probe networks, evade the limits above, or disrupt the service or anyone else's.
Service level, plainly
FanHook runs on a single server instance. There is no uptime guarantee and no service level agreement. We work to keep it reliable, and the dead letter queue exists so problems are visible rather than silent, but you should not treat FanHook as the only copy of data you cannot afford to lose.
The service is provided as is, without warranties of any kind. To the extent the law allows, our total liability to you is limited to the amount you paid us in the three months before the claim arose. This clause in particular is awaiting legal review; it is here so you know our intent.
Changes and ending things
You can stop at any time: delete your sinks and stop sending. Deleting a sink removes its stored data immediately and permanently, as described in the privacy policy. We may suspend or close accounts that break these terms or abuse the service.
We may update these terms as the product changes. The current version always lives at this address with its effective date at the top. These terms are governed by the law of [JURISDICTION].