Skip to content

Email providers and BYOK

Notification emails, the autoresponder and bringing your own email provider keys.

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 with settings.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.
settings.notifyjson
{
  "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.

settings.autoresponderjson
{
  "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.

Type to search…

↑↓ navigate↵ selectEsc close