Send a form to your email

Send a form to your email6 min read

Reply to form submissions straight from your inbox

Make Reply on a form notification write to the person who filled in the form: which field names work, when to use _replyto, and why replies go astray.

Preet SutharFounder, Ikiform

Name the form's email field email and Ikiform puts that address in the notification's reply-to header, so Reply writes to the visitor from your own mailbox. If the field has another name, or the form asks for two addresses, add a _replyto field with the right one. Without either, replies go to notifications@ikiform.com, which nobody reads.

What's different here

A notification email has two addresses that matter. From is who sent it, and for deliverability that has to be Ikiform. Reply-To is where answers go, and that should be the visitor. Mail apps use Reply-To when it's present, and fall back to From when it isn't. So the whole job is making sure Ikiform can find the visitor's address in the post.

Ikiform sets the reply-to address from a _replyto field first, then from a field named email, email_address, your_email, reply_to, contact_email. The value must be one valid email address, or it is ignored.

How Ikiform picks the reply-to addressneither_replyto sent?one valid addressReply-To: _replytoalways winsemail-namedfield?email,email_address, ...Reply-To: that fieldfirst valid oneno Reply-Toheader left outreplies go tonotifications@ikiform.comnobody reads ityesno or invalidyesReplyHow Ikiform picks the reply-to addressneither_replytosent?one validaddressReply-To:_replytoalways winsemail-namedfield?email,email_address,...Reply-To:thatfieldfirst validoneno Reply-Toheader left outreplies go tonotifications@ikiform.comnobody reads ityesReplyno or invalid
  1. If the post has a _replyto field holding one valid email address, that's the reply-to. It wins over every other field.
  2. If not, Ikiform looks at the fields in the order they were posted and takes the first one with a recognised name and a valid address.
  3. If neither exists, the email has no Reply-To header, and pressing Reply writes to notifications@ikiform.com.
A value with a comma, a line break or angle brackets is ignored, so nobody can add a second address or a header.

Field names that work

Matching ignores case, so Email and EMAIL work as well as email. Here's how common names fare:

Field nameUsed for reply-to?Why
email, Email, e-mailYesThe plain name, in any case, with or without the hyphen
email_address, email-address, emailAddressYesThe long form, with _, - or nothing between the words
your_email, contact_email, reply_toYesCommon names from form templates
user_email, work_emailNoThe prefix isn't one Ikiform knows. Rename it or add _replyto
Email AddressNoA space isn't a separator. Builders that use labels as names often produce this
Email 2NoBuilders number a second email field this way

Three ways to set it

The form below is a demo request, where the address is a work email and may sit next to a second address. Pick the version that fits how much you can change:

<form action="https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx" method="post">
  <label for="work-email">Work email</label>
  <input id="work-email" name="email" type="email" autocomplete="work email" required />

  <label for="company">Company</label>
  <input id="company" name="company" autocomplete="organization" />

  <label for="message">What are you trying to solve?</label>
  <textarea id="message" name="message" rows="5" required></textarea>

  <input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden />
  <button>Request a call</button>
</form>
  • Rename when you control the HTML. The label can still say "Work email"; only the name matters, and autocomplete="work email" keeps the browser's autofill right.
  • Copy into _replyto when another system expects work_email, or the form has two addresses and the wrong one would match. The script fills the hidden field as the form submits, before the browser posts it.
  • From your server, add _replyto to the JSON body. It doesn't need to be a form field at all. The incoming request's Origin is passed on because a server's own fetch sends none, and Ikiform counts free localhost tests by it.

Fields that start with _ aren't stored as answers, so _replyto doesn't show up twice in the email. It's kept on the submission as meta.reply_to, which webhooks and the REST API include.

If the copying script doesn't run, _replyto is posted empty and Ikiform ignores it. work_email isn't a recognised name, so that submission has no reply-to. Rename the field when you can; it has no failure mode.

Who you're replying to

The reply-to is whatever the visitor typed. Ikiform checks that it's one well-formed address, not that it belongs to the person. A bot, or a prankster, can enter someone else's address, and your reply then goes to a stranger.

  • Keep the first reply general. Don't send account details, invoices or anything private until the person has written back from that address.
  • An address on a disposable domain adds 2 to the spam score. With another signal, such as an identical repeat, that's enough to keep the post out of your inbox.
  • If the address bounces, it was a typo or a fake. The submission is still in the dashboard if you need the rest of it.

What the visitor sees in your reply

Most mail apps quote the message you're replying to. Here that's Ikiform's notification, so the visitor sees their own answers laid out as a list, plus the notification's footer. That's usually fine, and it reminds them what they asked. Two things are worth a glance before you press Send:

  • The footer has links meant for you: View submission for members, an unsubscribe link for outside recipients, and an abuse-report address. The dashboard link only works for people signed in to your workspace, but delete the quote if you'd rather not send it.
  • If several people get the notification, each reply starts a separate thread with the visitor. Agree who answers, or the visitor gets two different replies.

Want a reply that never shows the notification? Start a new email to the address instead of pressing Reply. You lose the quoted question, so copy the line you're answering.

Check it works

  1. Fill in the form on your page and submit it. You land on your thank-you page, or Ikiform's hosted one.
  2. Open the notification and look at the headers or the reply line. Reply-To shows the address you typed.
  3. Press Reply. The To line holds the visitor's address and the From line is yours.
  4. Post again with a malformed address in _replyto, such as a@b.c, x@y.z. The email arrives with the next valid field as the reply-to, or none.

Gotchas

  • Digests have no reply-to. Past 50 emails an hour, a form sends one digest for the rest, and it covers many visitors. Reply to those from the dashboard.
  • Reply All. The notification goes to each recipient separately, so Reply All only adds your own address. It doesn't copy in your team.
  • Outlook's reply rules. Some company mail setups rewrite or ignore Reply-To on external mail. If Reply still shows Ikiform's address, check with whoever runs your mail server.
  • Spam sends nothing. A submission stored as spam has no email to reply to. Mark it as not spam and its email goes out then.
  • Two addresses in one field. A value such as ada@example.com, bob@example.com is ignored as a reply-to, because a comma could smuggle in extra recipients. Ask for one address per field.
  • Builders that won't name a hidden input. Some site builders don't let you call a field _replyto. Rename the visible email field to email instead; it does the same job.

Questions

Stuck on a step, or want a guide for your situation? Email hello@ikiform.com.