# Create a test webhook endpoint | Developer Documentation

<div id="bkmrk-create-a-test-webhoo">## Create a test webhook endpoint

<div><span>Updated: Nov 7, 2025</span></div><div>If you aren’t ready to create your own webhook endpoint yet, you can deploy a test webhook app on [Render.com<span>⁠</span>](https://l.facebook.com/l.php?u=https%3A%2F%2Fwww.render.com%2F&h=AT7ATquIyJVRnY7G_ZhKAftIC1w3xpRsEVhcKeyb7MGxVmQNPZJAUhdztFiylIkBs3LAr66HfmqOJqQCnCm23J25paPzXlEMY05CG1jh0QJhgqXZACh8Lb0R2tg4csCPy5fnxc8zqTydkoHP7bTudQ) that accepts webhook requests and dumps their contents to Render’s console.</div><div>*Only use this app for testing purposes.*</div><div id="bkmrk-requirements"><div id="bkmrk-requirements-1"><div>### Requirements

</div></div></div>
<span>A [Render<span>⁠</span>](https://l.facebook.com/l.php?u=https%3A%2F%2Fwww.render.com%2F&h=AT7ATquIyJVRnY7G_ZhKAftIC1w3xpRsEVhcKeyb7MGxVmQNPZJAUhdztFiylIkBs3LAr66HfmqOJqQCnCm23J25paPzXlEMY05CG1jh0QJhgqXZACh8Lb0R2tg4csCPy5fnxc8zqTydkoHP7bTudQ) account.</span><span>A [GitHub<span>⁠</span>](https://l.facebook.com/l.php?u=https%3A%2F%2Fwww.github.com%2F&h=AT7ATquIyJVRnY7G_ZhKAftIC1w3xpRsEVhcKeyb7MGxVmQNPZJAUhdztFiylIkBs3LAr66HfmqOJqQCnCm23J25paPzXlEMY05CG1jh0QJhgqXZACh8Lb0R2tg4csCPy5fnxc8zqTydkoHP7bTudQ) account.</span><div id="bkmrk-step-1%3A-create-a-git"><div id="bkmrk-step-1%3A-create-a-git-1"><div>### Step 1: Create a GitHub repository

</div></div></div><div>Sign into your GitHub account and create a new repo (public or private) with a name of your choice. Within the repo, create an `app.js` file and paste this code into it:</div><div></div><div id="bkmrk-step-2%3A-deploy-a-nod"><div id="bkmrk-step-2%3A-deploy-a-nod-1"><div>### Step 2: Deploy a Node Express app on Render

</div></div></div><div>Follow Render’s instructions for [deploying a Node Express app<span>⁠</span>](https://l.facebook.com/l.php?u=https%3A%2F%2Frender.com%2Fdocs%2Fdeploy-node-express-app&h=AT7ATquIyJVRnY7G_ZhKAftIC1w3xpRsEVhcKeyb7MGxVmQNPZJAUhdztFiylIkBs3LAr66HfmqOJqQCnCm23J25paPzXlEMY05CG1jh0QJhgqXZACh8Lb0R2tg4csCPy5fnxc8zqTydkoHP7bTudQ), with these differences:</div>
<span>Skip step 1</span><span>Use these settings for step 3: </span>
<span>Build command: `npm install express`</span><span>Start command: `node app.js`</span><span>In the **Environment Variables** section, add the variable `VERIFY_TOKEN` and set it to a string of your choice (e.g. `vibecode`).</span><div>When you’re done, click the **Deploy your web service** button. This will take you to the app log where you will see your app being built, which can take a few minutes. You’ll know it’s done when you see “Your service is live” in the log.</div><div>![](https://support2.chatarchitect.com/uploads/images/gallery/2026-04/embedded-image-eqhy5muy.png)</div><div>Copy your deployed test webhook app URL, which is displayed at the top of the page under your GitHub repo name. (If you view the URL, you’ll get a 403 error, which is expected).</div><div id="bkmrk-step-3%3A-add-your-tes"><div id="bkmrk-step-3%3A-add-your-tes-1"><div>### Step 3: Add your test webhook app URL to your Meta app

</div></div></div><div>Open a new window/tab, and navigate to the (Meta) [App Dashboard](/apps) &gt; **WhatsApp** &gt; **Webhooks** &gt; **Configuration** panel.</div><div>Paste your test webhook app URL in the **Callback URL** field, and add the `VERIFY_TOKEN` environment variable string you set earlier to the **Verify token** field, then click **Verify and save**.</div><div>![](https://support2.chatarchitect.com/uploads/images/gallery/2026-04/embedded-image-uaornw4s.png)</div><div>If verification is successful, the Meta app dashboard should refresh and you should see a list of webhook fields you can subscribe to.</div><div>*Subscribe to the **messages** webhook field if you haven’t already.*</div><div>Also, in Render’s app log, if you see “WEBHOOK VERIFIED”, your test webhook app URL has been successfully verified.</div><div>![](https://support2.chatarchitect.com/uploads/images/gallery/2026-04/embedded-image-k1ywblbf.png)</div><div id="bkmrk-step-4%3A-send-a-test-"><div id="bkmrk-step-4%3A-send-a-test--1"><div>### Step 4: Send a test message

</div></div></div><div>Back in the Meta app dashboard **Configuration** panel, scroll down to the **messages** webhook field, subscribe to the field if you haven’t already, then click the **Test** link.</div><div>![](https://support2.chatarchitect.com/uploads/images/gallery/2026-04/embedded-image-53ndyt0o.png)</div><div>This will send a test message to your test webhook app. Confirm that it appears in Render app log with “Webhook received” followed by a test JSON payload:</div><div>![](https://support2.chatarchitect.com/uploads/images/gallery/2026-04/embedded-image-lqkl7u9b.png)</div><div id="bkmrk-troubleshooting"><div id="bkmrk-troubleshooting-1"><div>### Troubleshooting

</div></div></div><div>If the test **messages** webhook doesn’t appear in the Render app dashboard log:</div>
<span>Confirm that you successfully added your test webhook app URL to your Meta app (Step 3).</span><span>Confirm that your app is subscribed to the **messages** webhook field.</span><span>Make sure you are sending a **messages** test webhook; some test webhooks only work when your app is in Live mode, while others only work in Development mode (**messages** test webhooks work in both modes).</span></div>