CommerceHook vs ngrok, for webhook work
ngrok is not a webhook tool; it is a tunnel, and a very good one. For webhook development the two overlap on exactly one workflow: getting a platform's deliveries to the handler running on your machine. The mechanics differ enough to matter.
How each one gets a webhook to localhost
A tunnel makes your laptop reachable: the platform delivers straight to the ngrok URL, which pipes to your port. Simple, immediate, and protocol-agnostic; if you need arbitrary traffic to reach a local server, use a tunnel, full stop.
CommerceHook inverts it. The platform delivers to a hosted endpoint
that always answers 200, and
commercehook listen forwards each
delivery to localhost from your side of the network. No inbound
exposure, and every delivery is captured whether or not your machine
was awake to receive it.
The failure modes are the real difference
-
Closed laptop. Through a
tunnel, the delivery fails at the platform, and platforms punish
that: WooCommerce disables a webhook after five failures.
A CommerceHook endpoint keeps answering; you forward the backlog
with
--sincewhen you sit down. - Changing URL. A free tunnel URL changes on restart, and every registered webhook has to be re-pointed at it. The endpoint URL is permanent.
- Yesterday's payload. A tunnel shows traffic while it runs. The inspector keeps it, so "what did the platform send on Tuesday" has an answer.
| ngrok (as webhook tooling) | CommerceHook | |
|---|---|---|
| Category | Tunnel: exposes your machine | Inspector: captures the delivery |
| Webhook reaches localhost | Directly, while the tunnel runs | Forwarded by the CLI, live over a stream |
| When your laptop is closed | Delivery fails at the platform | Captured; forward the backlog when you return |
| Delivery history | Local session log while running | Stored 24 hours (Free) or 90 days (Pro) |
| Registers webhooks with your store | No | BigCommerce, WooCommerce, Square, Shopify, Stripe |
| Signature verification, store links, replay | No | Yes |
Prices and limits checked 26 August 2026 from public pricing pages. If a number here has rotted, tell us and we will fix it.
Choose plainly
- Use a tunnel for everything that is not webhooks: demos, arbitrary inbound traffic, protocols beyond HTTP, or when the destination must be your machine with nothing in between.
- Use CommerceHook when the inbound traffic is store webhooks: the capture, the always-up endpoint, and the platform context are the point, and the CLI covers the localhost half.
npx commercehook listen next to your editor is the whole setup.
Also compared: webhook.site , Hookdeck , EventDock and the platform tools .