Skip to main content

Block Disposable Emails on Webflow Forms

Published Updated 8 minute readGuidesRichelo Killian

To block disposable emails on Webflow, paste one script tag into Site Settings, Custom Code, in the Footer Code box, and publish. The snippet attaches to the email fields on your published site, checks each address as the visitor types, and applies the action you chose: show a message, ask for a permanent address, or block the submit. No backend, no logic to write, and if the check ever cannot complete, the form keeps working. This guide covers that path first, then a small custom script for people who want full control, and an automation route for filtering submissions downstream.

Why do Webflow sites attract form spam?

Because Webflow sites are where the forms are. Marketing sites collect newsletter signups, gated downloads, trial requests, and contact submissions, and every one of those forms trades something, content, credits, attention, for an email address. Throwaway addresses are the standard tool for taking the something and leaving nothing accountable behind, which is why webflow form spam so often arrives as plausible-looking submissions from domains you have never heard of. And because Webflow handles the form processing for you, there is no backend of yours where a validation layer would naturally live; submissions flow straight into your notifications, your CRM, and eventually your mailing list.

That last stop is where the real cost lands. The throwaway domains you accept today go dark, your next campaign hard bounces against them, and a bounce spike is one of the strongest list quality signals your email service provider watches. Platforms like Mailchimp and SendGrid respond with warnings, forced list cleanings, or suspensions. Your Gmail reputation was never the issue; your standing with your own sending platform is.

What is the fastest way to block disposable emails on Webflow?

The drop-in snippet, and it is genuinely one tag. In your dashboard's snippet page you pick a publishable key, a mode, and the message visitors should see, and it hands you a copy-ready script tag shaped like this:

<script src="https://cdn.isitdisposable.com/v1/snippet.js"
  data-key="pk_live_your_publishable_key"
  data-mode="warn"
  async></script>

In Webflow, open Site Settings, go to the Custom Code tab, paste the tag into the Footer Code box, save, and publish the site. That is the whole installation. If you only want it on one page, the same tag can go in that page's settings before the closing body tag instead. One prerequisite worth knowing: Webflow only includes custom code on sites with a paid site plan, so the free staging tier will not run it.

Out of the box, the snippet finds the email inputs in your Webflow forms and checks each address with your publishable key, which is safe to expose because it only works from the site origins you approve in the dashboard. It debounces as the visitor types, so the verdict is usually ready before they reach the button. There is nothing to keep in sync afterward: policy changes you make in the dashboard, switching a signal from warn to block, editing the message, take effect on your live form immediately, with no republish.

What do allow, warn, and block look like to your visitor?

Allow is invisible: the form behaves exactly as Webflow built it, which is what happens for the overwhelming majority of real addresses. Warn lets the submission proceed but shows your configured message, a nudge toward a permanent address, which is the default treatment for relay addresses and other soft signals. Block shows the message and stops the submit, reserved for confirmed throwaways and domains that cannot receive mail at all. And the failure mode is deliberate: if the check cannot complete, over quota, network trouble, an outage on our side, the form submits normally. A visitor never meets a broken form because of a validation service.

How do you intercept Webflow form submissions with your own script?

If you want to own the experience, skip the snippet and talk to the REST API yourself. Paste this into the same Footer Code box; it intercepts every Webflow form that contains an email field, checks the address, and only blocks on a block verdict:

<script>
document.addEventListener("submit", async function (event) {
  const form = event.target;
  const emailInput = form.querySelector('input[type="email"]');
  if (!emailInput || !emailInput.value) return;
  if (form.dataset.emailChecked === "ok") return;

  event.preventDefault();
  event.stopPropagation();

  let action = "allow";
  try {
    const controller = new AbortController();
    const timer = setTimeout(() => controller.abort(), 2000);
    const res = await fetch("https://api.isitdisposable.com/v1/check", {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        Authorization: "Bearer pk_live_your_publishable_key"
      },
      body: JSON.stringify({ email: emailInput.value }),
      signal: controller.signal
    });
    clearTimeout(timer);
    if (res.ok) {
      const data = await res.json();
      action = data.action || "allow";
    }
  } catch (err) {
    action = "allow";
  }

  if (action === "block") {
    alert("Please use a permanent email address. Temporary addresses stop working, and you would lose access.");
    return;
  }

  form.dataset.emailChecked = "ok";
  form.requestSubmit();
}, true);
</script>

Three details make it safe as pasted. The listener runs in the capture phase and calls preventDefault before anything asynchronous, so it reliably gets ahead of Webflow's own form handling. The two-second timeout and the catch both resolve to allow, so any failure fails open. And after a passing check it re-submits with a flag set, which lets Webflow's normal success behavior take over. Swap the alert for an inline message if you want something prettier; the logic does not change.

Can you filter submissions through Make or Zapier instead?

Yes, as a backstop rather than a gate. If your Webflow submissions already flow into Make or Zapier, add an HTTP step that posts the submitted email to the same check endpoint with a secret key, then branch on the action field: send allow onward to your CRM and mailing list, and route block to a review sheet or the bin. The honest limitation is timing. This runs after the visitor has submitted, so it cannot stop the submission or show them anything; what it protects is everything downstream, which for list quality is the part that matters.

Which path should you choose?

Path Effort Where it runs What it can block
Drop-in snippet Paste one tag, publish Visitor's browser, at the form Bad addresses before submission, with your configured message
Custom intercept script Paste one script, adjust the message Visitor's browser, at the form Same as the snippet, with full control of the experience
Make or Zapier step One HTTP module in an existing scenario Your automation, after submission What reaches your CRM and list; cannot stop the submission itself

For most Webflow sites the snippet is the right answer, and the automation step is worth adding anyway if submissions feed a mailing list, because two cheap layers beat one.

Should you block relay addresses like Apple Hide My Email?

No. Relay and alias services, Apple Hide My Email, Firefox Relay, SimpleLogin, addy.io, DuckDuckGo Email Protection, Proton aliases, forward to a real person's permanent inbox, and the people behind them are privacy-conscious, often paying customers. The default policy treats a relay as warn, never block, and you should leave it that way; the check reports relay as its own signal precisely so it never gets swept up with throwaways. The full reasoning lives in the relay section of The Complete Guide to Disposable Email Detection.

Where does the check belong on a Webflow site?

At the form, in the visitor's browser, because on Webflow the browser is your runtime; there is no server of yours to check from. That makes the snippet or the intercept script your primary enforcement, and it is worth being honest about the edge: any purely client-side check can be bypassed by a script that posts directly, which is why the Make or Zapier filter earns its place as the second layer for anything that feeds your mailing list. Form-level check for people, downstream filter for robots, and your list stays clean from both directions.

The dataset doing the work here is a live one: as of the September 2026 State of Disposable Email report, it tracked 217,847 disposable domains from multiple upstream sources, MX-validated and refreshed daily, with 10,223 new domains arriving in a single 36 day window. You can look up any individual domain on its public page, the canonical example being mailinator.com. isitdisposable.com runs this as a free plan with 250 lookups a month plus a 14-day full-access trial, no credit card, which covers a typical Webflow site's form traffic while you watch what your webflow email validation actually catches.

About the author

Richelo Killian

Founder

Founder of isitdisposable.com and the SenderWorx email tool suite. Builds email infrastructure and anti-abuse tooling.