<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Webhook Development &#8211; Xojo Programming Blog</title>
	<atom:link href="https://blog.xojo.com/tag/webhook-development/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.xojo.com</link>
	<description>Blog about the Xojo programming language and IDE</description>
	<lastBuildDate>Mon, 18 Aug 2025 20:37:03 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>How To Share Your Local Xojo Web App to the Internet Using ngrok</title>
		<link>https://blog.xojo.com/2025/08/07/how-to-share-your-local-xojo-web-app-to-the-internet-using-ngrok/</link>
		
		<dc:creator><![CDATA[Gabriel Ludosanu]]></dc:creator>
		<pubDate>Thu, 07 Aug 2025 14:52:22 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Developer Tools]]></category>
		<category><![CDATA[Remote Testing]]></category>
		<category><![CDATA[Web App Testing]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Webhook Development]]></category>
		<category><![CDATA[Xojo Web]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=15075</guid>

					<description><![CDATA[Have you ever built an amazing Xojo web application locally on your machine and wished you could instantly share it with a client, test it&#8230;]]></description>
										<content:encoded><![CDATA[
<p>Have you ever built an amazing Xojo web application locally on your machine and wished you could instantly share it with a client, test it on a real mobile device outside your local network, or integrate it with a webhook service like Stripe or Twilio? If so, you know the pain of needing a publicly accessible URL for your locally running app.</p>



<p>This is where&nbsp;ngrok&nbsp;comes in: a fantastic tool that creates secure tunnels to your localhost, making your locally running Xojo web app accessible from anywhere in the world. It&#8217;s a game-changer for testing, demonstrations, and rapid development.</p>



<h2 class="wp-block-heading">What is ngrok and Why Xojo Developers Need It?</h2>



<p>At its core, ngrok is a command-line tool that creates a secure, public URL for a service running on your local machine. Think of it as a temporary bridge from the internet directly to your computer, bypassing firewalls and NAT configurations.</p>



<p>For Xojo Web developers, this offers a wealth of benefits:</p>



<ul class="wp-block-list">
<li><strong>Real-device Testing:</strong>&nbsp;Test your Xojo web app&#8217;s responsiveness and functionality on actual mobile phones, tablets, or other computers, even if they&#8217;re not on your local Wi-Fi network.</li>



<li><strong>Instant Demonstrations:</strong>&nbsp;Share your work-in-progress with clients, colleagues, or friends without the need of deploying to a remote server. They just need the ngrok-provided URL!</li>



<li><strong>Webhook Development:</strong>&nbsp;Many third-party services (payment gateways, messaging platforms, etc.) use webhooks to notify your application of events. These webhooks require a public URL to send data to. ngrok provides this, making local webhook development a breeze.</li>



<li><strong>Debugging Public-Facing Issues:</strong>&nbsp;Sometimes, an issue only appears when your app is publicly accessible. ngrok allows you to debug such scenarios without a full deployment cycle.</li>
</ul>



<p>It&#8217;s truly a must-have tool in your Xojo Web development toolkit!</p>



<h2 class="wp-block-heading">Getting Started with ngrok</h2>



<p>Before we connect our Xojo app, we need to get ngrok set up.</p>



<h3 class="wp-block-heading">Step 1: Download ngrok</h3>



<p>Head over to the official ngrok website:&nbsp;<a href="https://ngrok.com/download" target="_blank" rel="noreferrer noopener">https://ngrok.com/download</a>.</p>



<p>Download the version appropriate for your operating system (Windows, macOS, Linux).</p>



<h3 class="wp-block-heading">Step 2: Unzip and Place</h3>



<p>Once downloaded, you&#8217;ll get a single executable file (e.g.,&nbsp;<code>ngrok.exe</code>&nbsp;on Windows,&nbsp;<code>ngrok</code>&nbsp;on macOS/Linux). Unzip it and place it in a convenient location. I recommend creating a dedicated folder for it, or placing it somewhere easily accessible from your terminal or command prompt.</p>



<h2 class="wp-block-heading">Preparing Your Xojo Web App</h2>



<p>Xojo Web applications are self-contained web servers. When you run a Xojo Web app in debug mode or build it for deployment, it listens for incoming connections on a specific port. By default, Xojo Web apps usually listen on&nbsp;port 8080.</p>



<p>Let&#8217;s quickly ensure your Xojo Web app is ready:</p>



<ol class="wp-block-list">
<li><strong>Open your Xojo Web Project:</strong>&nbsp;Open any existing Xojo Web project, or create a new one for testing.</li>



<li><strong>Run in Debug Mode:</strong>&nbsp;Click the &#8220;Run&#8221; button in the Xojo IDE. Your web app will launch in your default browser, at&nbsp;<code>http://localhost:8080</code>.</li>
</ol>



<h2 class="wp-block-heading">Tunneling Your Xojo App with ngrok</h2>



<p>Now for the magic! With your Xojo Web app running locally, we&#8217;ll open a tunnel to it using ngrok.</p>



<h3 class="wp-block-heading">Step 1: Open Terminal/Command Prompt</h3>



<p>Open your system&#8217;s terminal (macOS/Linux) or Command Prompt/PowerShell (Windows).</p>



<h3 class="wp-block-heading">Step 2: Navigate to ngrok Directory (if needed)</h3>



<p>If you didn&#8217;t place the&nbsp;<code>ngrok</code>&nbsp;executable in a system PATH location, navigate to the directory where you unzipped&nbsp;<code>ngrok</code>&nbsp;using the&nbsp;<code>cd</code>&nbsp;command. For example:</p>



<pre class="wp-block-code"><code>cd /path/to/your/ngrok/folder</code></pre>



<h3 class="wp-block-heading">Step 3: Run the ngrok Command</h3>



<p>Now, execute the&nbsp;<code>ngrok</code>&nbsp;command to create the tunnel. Since Xojo Web apps typically run on port 8080, the command will be:</p>



<pre class="wp-block-code"><code>ngrok http 8080</code></pre>



<ul class="wp-block-list">
<li><code>http</code>: Specifies that we&#8217;re tunneling an HTTP service.</li>



<li><code>8080</code>: This is the port your Xojo Web app is listening on. If you&#8217;ve configured your Xojo app to use a different port (e.g., in the Build Settings), make sure to use that port number instead.</li>
</ul>



<p>After running the command, ngrok will output information about the tunnel it has created. You&#8217;ll see output similar to this:</p>



<pre class="wp-block-code"><code>ngrok                                                                            (Ctrl+C to quit)

Session Status                online
Account                       Account Name (Free)
Version                       3.x.x
Region                        United States (us)
Forwarding                    https://a52b-20-40-100-120.ngrok-free.app -&gt; http://localhost:8080

Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00
</code></pre>



<p>The most important lines here are the&nbsp;<code>Forwarding</code>&nbsp;lines. These provide you with the public URLs that point to your Xojo web app.</p>



<h2 class="wp-block-heading">Testing Your Public Xojo App</h2>



<p>With the ngrok tunnel active, your Xojo web app is now live to the world!</p>



<ol class="wp-block-list">
<li><strong>Copy the HTTPS URL:</strong>&nbsp;Copy the&nbsp;<code>https://</code>&nbsp;URL provided by ngrok.</li>



<li><strong>Test It:</strong>
<ul class="wp-block-list">
<li>Paste this URL into any web browser, on any device, anywhere with an internet connection.</li>



<li>Send the URL to a friend or client to get their feedback.</li>



<li>Test it on your mobile phone&#8217;s browser using its cellular data connection (not your local Wi-Fi) to simulate a truly external connection.</li>
</ul>
</li>
</ol>



<p>You&#8217;ll see your Xojo web app load as if it were hosted on a remote server!</p>



<p>To stop the ngrok tunnel, press Ctrl+C in the console.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>ngrok can be an indispensable tool for any Xojo Web developer. It transforms the challenging task of exposing a local web app into a simple, one-line command. Whether you&#8217;re testing on diverse devices, showcasing your progress to clients, or integrating with external webhook services, ngrok streamlines your workflow and lets you focus on what you do best: building amazing applications with Xojo.</p>



<p>Give ngrok a try on your next Xojo Web project, and prepare to be amazed by the convenience it offers!</p>



<p>What if we create a Build Step script to automatically run ngrok when needed? Share your experiences and tips in the <a href="https://forum.xojo.com/" target="_blank" rel="noreferrer noopener">Xojo forums</a>!</p>



<p><em>Gabriel is a digital marketing enthusiast who loves coding with Xojo to create cool software tools for any platform. He is always eager to learn and share new ideas!</em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
