UltraHook


Frequently Asked Questions

What is UltraHook?

UltraHook is the simplest way to receive webhooks behind a firewall.

Webhooks are HTTP requests made over the web by services when certain events are triggered within the services. Many popular services (GitHub, Stripe, ActiveCampaign, Papertrail, etc) support updates via webhooks. However, since these webhook requests are made over the public web, it's difficult receive them when testing from behind a firewall. This is where UltraHook comes in - it provides you a public endpoint to give to other services and tunnels requests to a private endpoint on your computer.

Why should I use UltraHook?

  1. It gives you persistent public endpoints in a private namespace
  2. It works everywhere you can make a public HTTP connection
  3. It's free

How does UltraHook work?

You download and run the UltraHook client on your computer. It connects to UltraHook servers in the cloud and creates a tunnel from a public endpoint on our servers to your computer. Any HTTP POST requests sent to the public end point will be sent through the tunnel an delivered to a private endpoint accessible from your computer.

How does UltraHook work, under the hood?

UltraHook receives HTTP POST requests at it's public endpoint. It then serializes the requests into a custom format and sends them to a connected client, where it's deserialized and delivered to a private endpoint via curl.

Communication between client and server is over a persistent uni-directional (inbound) streaming HTTPS connection.

Will I be able to receive requests when I'm not connected?

No. UltraHook does not cache requests in any way. Furthermore, it always responds with a status code of 200.

Can I use UltraHook to share my development environment over the internet?

No. UltraHook only forwards HTTP POST requests from it's public endpoint to your private endpoint. It does not tunnel any responses back out to the public endpoint. All responses at the public end point have a status code of 200 and a blank body.

So what's it actually useful for?!?!

UltraHook solves one simple problem very well - it makes it ridiculously easy to receive webhooks behind a firewall. It does this with minimal overhead and with little fuss.

What platforms does the UltraHook client work on?

Currently, the client is available as a Ruby gem. It will run on any platform that can run Ruby.

How do I install the UltraHook client?

It can be installed from RubyGems.org as follows:

$ gem install ultrahook

How do I use the UltraHook client?

There are two required parameters: source hostname and destination. An optional API key can be provided:

$ ultrahook [-k <key>] <subdomaine> <destination>

Although the api key is an optional parameter, it's still required. It can either be provided on the command line, in the ULTRAHOOK_API_KEY environment variable or via a configuration file. The configuration file can be setup as follows:

echo "api_key: 0pMcxt1yJrTjUBrGabXrezCRzGRjPsig" > ~/.ultrahook

The destination format is quite flexible. Any of the following are acceptable (and will resolve to the address in parenthesis):

5000                                    (http://localhost:5000)
localhost:5000                          (http://localhost:5000) 
another.machine.com                     (http://another.machine.com:80)
http://localhost:5000                   (http://localhost:5000)
http://another.machine.com/path         (http://another.machine.com:80/path)
Where do I get an UltraHook API key?

Signup for an account and an API key will be emailed to you. We don't really have any form of account management (yet), so all we're really doing is associating a namespace and api key with your email address. If you lose your API key, use this form to get it resent. If your API key is compromised, drop an email to help@ultrahook.com to get a new one generated.

Why is there an API key?

The API key gives you a exclusive namespace. All endpoints you create will be subdomains under your own namespace. This ensures that you can always reconnect to the same endpoints at some point in the future.

What's an UltraHook namespace?

Your account is associated with a specific namespace and any endpoint you create will be a subdomain of that namespace. A namespace is just a subdomain.

If you registered your account with the bob.ultrahook.com namespace and later created an endpoint named stripe, it would be located at stripe.bob.ultrahook.com.

I can't remember my API key, what do I do?

In theory, you would just login and get your API key. But since we don't have any way to login just yet, head over here to have your API key resent by email.

Who made UltraHook?

UltraHook was created by Vinay Sahni (@veesahni) to make life easier while developing SupportFu.