Every submission can send a notification email to you and an autoresponder to the person who submitted. Forms with double opt-in also send a confirmation email first, through the same provider.
These emails need your own mail provider. Without one, the team owner gets an hourly summary saying how many new messages arrived, and double opt-in is skipped. Set settings.notify.frequency to every (On every response in the editor) to email the owner about each response instead. These emails link to the dashboard and never include the answers.
Notification email
- Sent to
settings.notify.emails(up to 10 addresses), or to the team owner when the list is empty. Turn it off withsettings.notify.enabled: false. - Routing rules can add to or replace these recipients based on the answers.
- The email lists every field in schema order. File fields get a signed download link.
- Sandbox submissions get
[Sandbox]in front of the subject.
{
"enabled": true,
"emails": ["team@example.com"],
"subject": "[{{_form_name}}] {{topic}} enquiry from {{name}}",
"reply_to_field": "work_email"
}Subject
settings.notify.subject sets the subject line, up to 200 characters. The default is New submission: {{_form_name}}, which is also used when the subject is blank. It can use any of the placeholders.
Reply-to
settings.notify.reply_to_field picks where replies to the notification go, so you can answer the submitter straight from your inbox.
| Value | Reply-to |
|---|---|
null (the default) |
The autoresponder’s address when the autoresponder is on, otherwise the first email field with an answer. |
| An email field’s name | That field’s answer. |
"none" |
No reply-to. |
Reply-to is only set when the answer is a valid email address. Any value other than null, "none" or one of the form’s email fields gets a 422 on settings.notify.reply_to_field with “Reply-to must be one of the form’s email fields, or “none”.”
Placeholders
The notification subject and the autoresponder subject and body can use {{name}} placeholders, filled from the submission. Spaces inside the braces are allowed, so {{ name }} works too.
| Placeholder | Value |
|---|---|
{{field_name}} |
The answer to any field. Several answers are joined with , , yes/no answers become Yes or No, and file fields become their signed download link. |
{{_form_name}} |
The form’s name. |
{{_form_id}} |
The form’s ID. |
{{_submission_id}} |
The submission’s ID. |
{{_submitted_at}} |
When it was submitted, as an ISO 8601 date and time. |
{{_summary}} |
Every field as Label: answer, one per line, in schema order. |
{{_link_label}} |
The label of the personal link it came through, if any. |
Unknown fields and empty answers become blank.
Autoresponder
Turn on settings.autoresponder.enabled to reply to the submitter. It goes to the field named in email_field, or the first email field in the schema. subject and body support the same placeholders as the notification subject. Replies to the autoresponder go to the first address in settings.notify.emails, if there is one.
{
"enabled": true,
"email_field": "email",
"subject": "Thanks {{name}}, we got your message",
"body": "Hi {{name}},\n\nThanks for getting in touch about {{plan}}. We will get back to you soon."
}Bring your own keys
Add mail providers to your team in the dashboard or through the API. A form uses its own provider if it has one, otherwise the team default. The from address and name come from the provider.
Limits
These stop forms being used to send mail to people who didn’t ask for it. An email over a limit isn’t sent and shows in the delivery log as failed with the reason.
| Limit | Default | Set with |
|---|---|---|
| Autoresponders and confirmations to one address, per hour | 10 | QUICKFORMS_EMAIL_PER_RECIPIENT_PER_HOUR |
| Notification recipients for one submission | 20 | QUICKFORMS_EMAIL_MAX_NOTIFY_RECIPIENTS |
driver value |
Provider | Credentials |
|---|---|---|
resend |
Resend | api_key |
postmark |
Postmark | api_key |
mailgun |
Mailgun | api_key, domain, optional region (us or eu) |
ses |
Amazon SES | access_key_id, secret_access_key, region |
smtp |
SMTP | host (must be a public address), port (25, 465, 587 or 2525), optional username, password, encryption (tls, ssl or none) |
mailchimp |
Mailchimp Transactional (Mandrill) | api_key |
Failed emails are retried after 30 seconds, 5 minutes and 30 minutes, and every attempt is logged like a webhook attempt.
How quickforms builds the mailer for your keys is covered in mail transports.