Skip to content

Sending and Recipients

When a customer submits one of your forms, Form Builder delivers the submission as an email, and, if you set one up, also to a webhook URL. Submissions are not stored in the admin, so there is no "submissions" grid to browse. Set at least one recipient (or a webhook) so a form has somewhere to send to.

These settings live in two places, and the split is deliberate:

  • Form Settings > Submission holds the operational settings: recipients, the subject line, and the webhook. Open the Settings (gear) button in the editor header, then expand Submission. They apply as soon as you save the settings, with no publish, and they stay put when you roll a form's content back through version history. If you save them while the canvas still has unsaved content edits, the canvas doesn't re-render, so a warning on the form only catches up on your next canvas edit or after a page reload.
  • The form root's property panel holds what the customer sees: the submit button label, the success message and success content, the reply-to field, and conditional recipient routing. Click the form root in the canvas to open it. These are part of your content, so they are versioned with the form and go live when you publish.

Setting Who Receives Submissions

In Form Settings > Submission, recipients are entered as email addresses. Separate multiple addresses with commas.

  • Recipient (To) - the main recipients notified on every submission.
  • Recipient (Cc) - copied on every submission email.
  • Recipient (Bcc) - copied on every submission without the other recipients seeing them.

You can leave Recipient (To) blank only if you are delivering submissions to a webhook instead (see below). The new-form dialog offers Recipient (To) and Email Subject as optional fields, so the most important settings can be captured while you are creating the form.

Routing by a Field's Answer

A contact form often needs to reach different teams depending on what the customer picked. Click the form root in the canvas and, on its Advanced tab, Conditional Recipients lets one dropdown field decide who gets the email.

Pick the field you want to route on, and you get a recipient box for each of its options. Fill in the ones you want to divert, as comma-separated addresses:

Topic option Recipients
Partnerships partners@example.com, sales@example.com
Technical Questions support@example.com
General Inquiry (left blank)

A submission that picked Partnerships goes to those two addresses and not to Recipient (To). General Inquiry was left blank, so it goes to the Recipient (To) set in Form Settings > Submission as usual, and so does any answer you haven't mapped. Cc and Bcc recipients are copied either way.

You only get one routing field per form, and only dropdown fields can be used, since the answer has to match one of a known set of options.

Renaming and deleting the routing field

Routing remembers the field itself rather than its name, so renaming the field or its Field Name later leaves your mapping intact. Delete the field entirely and the form quietly falls back to Recipient (To), with a note in hyva_cms.log, so submissions are never lost.

Choosing the Reply-To Address

By default, replies to a submission email go back to your store's sender address. Usually you'd rather reply straight to the customer. On the form root's Advanced tab, use Reply-To Source to pick one of the form's email fields. When a customer submits, whatever they typed in that field becomes the Reply-To address, so hitting Reply in your inbox writes back to them.

The Reply-To is only applied when you have picked a field, the customer filled it in, and the value is a valid email address. Otherwise the store sender is used.

Writing the Email Subject

In Form Settings > Submission, Email Subject sets the subject line of the email you receive. You can also fill it in when you first create the form, on step 2 of the setup dialog. You can type a plain subject, or pull answers from the submitted form into the line using tokens.

A token looks like {{var field.<field_name>}}, where <field_name> is the Field Name of one of your fields (set on each field's property panel - see Building Forms).

For example, if your form has a field named name, this subject:

New inquiry from {{var field.name}}

arrives as New inquiry from Jane Smith when Jane fills in the form. You can combine several tokens, such as {{var field.name}} ({{var field.email}}), and any token that doesn't match a field is simply left blank.

Submissions sent from a preview arrive with [test] in front of whatever the subject renders to, so a test is never mistaken for a customer inquiry. See Testing a form.

What the Customer Sees After Submitting

After a successful submission the customer sees a confirmation. You control this on the form root's Content tab:

  • Success Message - the message shown once the form has been sent.
  • Success Content - what follows the submission, either Redirect URL or CMS Block. Redirect URL is the default.
  • Success Redirect URL - shown when Success Content is set to Redirect URL. Send the customer to another page after submitting. Leave it blank to keep them on the page holding the form.
  • Success Content Block - shown when Success Content is set to CMS Block. Pick a block from Content > Blocks, the same way the CMS Block component does.

Leave Success Content on Redirect URL with the URL blank and the success message appears in place of the form, which is how every form behaves out of the box. Fill the URL in and the redirect takes over: the customer lands on the target page, and a success message you have written travels with them, appearing as a page message at the top.

Switch Success Content to CMS Block and pick a block, and that block renders in place of the form. The success message is not shown as well, the block is the whole confirmation.

Whichever you pick, the canvas doesn't render the success state, so check it with a test submission from a preview. See Testing a form.

A carried-over message needs a store page to land on

Your theme's message area is what draws the message, so the redirect target has to be a page your store renders, like a CMS page, a category, or the homepage. Send customers to an external URL and they leave your store, so nothing there can show the message.

When the block can't be shown

A block that has been deleted, switched off, or left out of the customer's store view falls back to the success message, or to "Thank you. Your message has been sent." when you haven't written one, so nobody lands on a blank confirmation. Customers submitting without JavaScript see the message too. That path returns a plain confirmation page outside your theme, where a block built from theme utilities would arrive unstyled.

Sending Submissions to a Webhook

Besides email, a form can send a copy of each submission to a URL you choose, handy for piping submissions into Zapier, Mailchimp, a CRM, or your own backend. This is optional and lives in Form Settings > Submission.

  • Send Submissions To URL - the address that receives a copy of each successful submission. Leave blank if you don't need it.
  • Send Format - how the submission data is packaged when it's sent:
    • Form-encoded (like a browser form) - the default; looks like an ordinary submitted web form.
    • JSON (flat fields) - JSON where each field is a top-level value.
    • JSON (with form context) - JSON that also includes which form it came from and when it was submitted, so a receiver can tell submissions apart.

The webhook is always a copy - it doesn't replace the email. If you set both a recipient and a webhook, both fire. If you set only the webhook, only the webhook fires.

Test submissions reach your webhook too

Submitting from a preview sends a real delivery, marked with an X-Hyva-Form-Test header. Whoever owns the receiving end should honor that marker before you start testing. The exact shape of every delivery is in Webhook deliveries.

A form with no destination still submits

Both destinations are optional. If a form has no recipient and no webhook, the customer can still submit it and will see the success message, but nothing is sent anywhere, and nothing is stored. Once the form has been saved, the editor shows a warning on the form when this is the case, so you're reminded to add a destination before going live. A form that has never been saved has no settings to advise about yet, so its canvas stays quiet.