Webflow sync, pageviews & more.
NEW

Why does a POST request to my webhook in Webflow open a new tab and display the JSON response instead of showing a success message within Webflow?

TL;DR
  • Remove the form’s action attribute to let Webflow handle submission and prevent new tab behavior.
  • Use Webflow Logic, third-party tools (e.g. Make.com, Zapier), or custom JavaScript with AJAX to handle data and show confirmation without displaying raw JSON.

A POST request opening a new tab and showing a JSON response instead of staying inside Webflow usually means the form’s action handling is incorrectly configured or not using AJAX.

1. Webflow Forms Expect Webflow-Handled Submissions

  • Webflow forms are designed to submit data to Webflow’s servers by default.
  • If a custom form action is added (like a webhook URL), it overrides Webflow’s native behavior.
  • Submitting to an external URL without additional configuration causes the browser to perform a full POST request, which results in the response being opened in a new tab or rerendered in the current window.

2. Why the JSON Response Displays in a New Tab

  • When a form's action points to a webhook (e.g., Zapier, Integromat, custom server), the browser sends the POST request normally.
  • If the webhook returns a JSON response with a content-type like application/json, the browser doesn't know how to handle it visually, so it renders the raw JSON in a new tab.
  • Unlike Webflow’s built-in system, there's no built-in success/failure message handler for forms that bypass Webflow.

3. How to Fix It

To ensure the user sees a success message after submission, without a new tab:

  • Use AJAX via Webflow's default form behavior: Leave the action field of the form blank. Then use Webflow Logic, native integrations, or hidden fields and automation tools to handle the data.
  • If using a custom webhook (like Zapier):
  • Remove the action attribute from the form so Webflow handles the submission.
  • Create an integration inside Webflow (e.g., Logic or using tools like Make.com) to send the submission to your endpoint.
  • Alternative: Use custom JavaScript to handle form submission via fetch or XMLHttpRequest asynchronously, then show a confirmation message in the DOM manually.

4. Use Webflow Logic or Third-Party Tools

  • Webflow Logic allows native form handling and conditional workflows, including sending data to external APIs.
  • Tools like Zapier or Make.com can be integrated using webhooks triggered from Webflow submissions — without overriding the form's submission behavior.

Summary

The issue happens because you're overriding Webflow’s default form behavior by setting a direct webhook action, which causes a full POST and browser-rendered JSON. Remove the action attribute, use Webflow’s native form submission, and integrate external handling via Webflow Logic or asynchronous JavaScript to keep the experience inside Webflow.

Rate this answer

Other Webflow Questions