SAVEFORM
All posts
Guide

Stop forwarding contact form submissions to your inbox by hand

Why mailto: links and Gmail filters fall apart at scale, and how to wire up a clean per-submission email notification with one hidden field.

3 min reademail·forms·productivity

You ship a contact form. The first few submissions come in and you handle them by glancing at the dashboard. Then it gets busy. You set up a Gmail filter. Then a Zapier. Then you forget what's where. Sound familiar?

The right answer is the boring one: a per-submission email notification, formatted, sent automatically, with no setup beyond one hidden field.

Why mailto: doesn't scale

The simplest path is a mailto: link. It works right up until you realise:

Why “just forward it from my form to my inbox” fails

The slightly fancier version is using a Gmail filter or a Make/Zapier flow that catches form notifications and routes them somewhere. This works at low volume. Then:

What a good form notification looks like

Every form notification email needs five things to feel professional and stay useful at scale:

  1. A clear subject line with the form name so it threads correctly and is filterable.
  2. The submission rendered as a table, not a JSON dump or a wall of field=value lines.
  3. A way to reply directly to the submitter, usually via a Reply-To header set to the email field from the form.
  4. No spam. If the underlying service flagged it as spam, the notification shouldn't fire. (It should still be visible in the dashboard for audit.)
  5. A link back to the dashboard for cases where the email isn't enough: searching old submissions, exporting, etc.

The 30-second setup

With most form services this is one hidden field added to your existing markup. Here's the SaveForm flavour:

HTMLcontact.html
<form action="https://saveform.io/api/submit/YOUR_FORM_ID" method="POST">
  <!-- Where the notification email lands -->
  <input type="hidden" name="_emailTo" value="you@example.com" />
  <!-- Optional: customise the subject line -->
  <input type="hidden" name="_subject" value="New contact form submission" />

  <input type="text"  name="name"  required />
  <input type="email" name="email" required />
  <textarea           name="message" required></textarea>
  <button>Submit</button>
</form>

The _emailTo field is stripped from the stored submission, so it never shows up in your dashboard or CSV exports. It's pure routing metadata.

When a notification email isn't enough

Email is a great announcement channel for the “something happened” signal, but a bad storage channel. Two patterns where you should reach for something more:

For the basic case of “tell me when someone fills the contact form”, the hidden-field approach is hard to beat. It survives team changes, form-field renames, and the slow drift toward Slack notification fatigue.

One hidden field, one clean inbox

Add a single _emailTo field and you'll get a formatted HTML notification for every submission to that form. Free tier includes email notifications.

Stop forwarding contact form submissions to your inbox by hand — SaveForm.io | SaveForm.io