Testing Integrations Between Third-party Webhooks and Local Applications


January 25th, 2019

Testing Integrations Between Third-party Webhooks and Local Applications

It may sound silly, but ever since I started developing web applications I’ve always found it painful to inspect and debug integrations between my app and third-party webhooks. In addition to the hassle of replicating events, I’ve never relied on testing “hypothetical” scenarios.

Related: Inbound Email in Laravel

The tool

The good news is that there is a solution that solves all these problems efficiently. Ngrok is a product created by Alan Shreve. He wrote about the creation of Ngrok and an article on his blog in 2013 where he describes the product as follows:

“Ngrok is a tunneling, reverse proxy that establishes secure tunnels from a public endpoint to a locally running network service while capturing all traffic for inspection and replay. It is an open-source project on GitHub.”

Let’s get started:

Well, now that you know a little bit about the tool and why I found it let’s demonstrate how to expose a local environment to allow third-party services to submit requests to local environments via Webhook is very simple and the two solutions that I’m going to present have been tested and work with the following scenarios :

  • Scenario 1: A PHP project using PHP 7.2.6 Development Server
  • Scenario 2: A Laravel (PHP) project using Laravel Development Server (php artisan serve)
  • Scenario 3: A Laravel (PHP) project using Laravel Homestead

To do this follow the steps:

  1. Access the Ngrok website
  2. Register or Login
  3. Download the client based on your OS
  4. Authenticate the client downloaded following the instructions that appear on the same page you’ve downloaded it.

For the first two scenarios just run the following command.

ngrok http <host>:<port>

ex: ngrok http

For the third scenario (if you are using a domain to access the homestead Ex: homestead.test you must rewrite the host-header. But don’t worry, to achieve it increment the command above to something like)

ngrok http <homestead_host_ip>:<port> -host-header=<homestead_domain>

example: ngrok http -host-header=homestead.test

Voilà, now point the URL generated by Ngrok in Webhook that you want to test and enjoy this excellent solution.

Have any questions about Ngrok, how it works and best practices? Check the “How it works” page of the official website. If you are even more NERD and like to read the documentation before you start using it, follow the link to the official documentation.


This article uses the following sources as a basis:

Filed in:

Renoir dos Reis

CTO @ Eskive. In recent years I have been a leader in software development teams and I have been active in development communities where I have participated in several discussions and contributed projects.