by Georg Ledermann

Using UltraHook to receive webhooks at development

Alternative to

Photo by Alex Ronsdorf on Unsplash

Photo by Alex Ronsdorf on Unsplash

When building web applications, it may be necessary to process incoming webhooks. With UltraHook these requests can also be received during development on the local computer.

I’m currently working on a shop-like web application using Ruby on Rails that can process credit card payments with Stripe. Stripe sends out webhooks during certain events, so I need a way to test them on my local computer. With UltraHook they can be received simply from behind a firewall. It is like, but for POST requests only. In contrast to, the service is completely free and offers static endpoint URLs.

In my Rails application I’m using foreman, dotenv and puma-dev. It is simple to add UltraHook to this setup:

Step 1: We need to register at to get a personal API key and a namespace. Also, a small Ruby gem needs to be installed.

Step 2: The API key needs to be added to the local .env file:

ULTRAHOOK_API_KEY=my-ultrahook-api-key # <= This is the added line

Step 3: Assuming the local URL (served by puma-dev) is http://my-shop.test, we need to add this line to the Procfile:

backend: bin/rails s -p 3000
frontend: bin/webpack-dev-server
ultrahook: ultrahook my-shop http://my-shop.test # <= This is the added line

Step 4: At the external service (e.g. Stripe), we add this endpoint URL to send webhooks to:

Finally, the application will be started as usual in the development environment. Now it handles incoming webhooks, too.

foreman start

That’s it. Just fire and forget.