Custom email templates
On Pro and Agency plans you can replace the default submission-notification email with your own subject line and HTML body, personalized with template variables. This is a Pro+ feature.
Where to set it
Open a form in the dashboard and go to its Template tab. There you can set a custom email subject and a custom HTML body for the notification email Formcrest sends you (and your other recipients) when the form is submitted. You may also supply an optional plain-text body; if you leave it blank, the plain-text part is auto-generated from your HTML so every email is still a proper multipart message.
This affects the notification you receive. To control who receives it and how often, see Notifications; for the rest of a form's settings, see Configuration. Custom templates are available on the Pro and Agency plans — see Plans & top-ups.
Template variables
Both the subject and the body support a small set of {{variable}} tokens. Each token is replaced with the matching value at send time. Unknown variables collapse to an empty string — there are no loops, conditionals, or expressions.
| Variable | Replaced with |
|---|---|
{{form.name}} | The form's name, as set in its configuration. |
{{form.id}} | The form's unique identifier. |
{{submission.<field>}} | The value of any submitted field. Replace <field> with the field name, e.g. {{submission.email}} or {{submission.message}}. |
{{submitted_at}} | The timestamp the submission was received. |
{{submitter_ip}} | The submitter's IP address, if available. |
{{submitter_country}} | The submitter's country, if available. |
{{submitter_user_agent}} | The submitter's browser user-agent string, if available. |
Example subject
Reference any variable directly in the subject line:
New {{form.name}} message from {{submission.name}}Example HTML body
The body is HTML. Use the same variables anywhere in the markup, including inside attributes:
<h2>New submission to {{form.name}}</h2>
<p><strong>From:</strong> {{submission.name}} <{{submission.email}}></p>
<p><strong>Message:</strong></p>
<blockquote style="margin:0;padding-left:12px;border-left:3px solid #ddd;">
{{submission.message}}
</blockquote>
<hr />
<p style="color:#888;font-size:12px;">
Received {{submitted_at}} from {{submitter_country}} ({{submitter_ip}}).<br />
Form ID: {{form.id}}
</p>HTML is sanitized before every send
Your HTML is sanitized on the server before each email goes out, so a template can never deliver active content. The sanitizer strips:
<script>tags (and their contents),- inline event handlers — any
on*attribute such asonclick, <iframe>tags, andjavascript:URLs.
Safe formatting tags — headings, paragraphs, lists, tables, links, images, blockquotes, and so on — are kept, and inline style attributes are preserved (passed through a CSS allowlist). Because sanitization runs on every send, editing your template never lets unsafe markup slip through.
Live preview
The template editor includes a live preview so you can see your subject and rendered body as you type, with sample values filled in for the variables. Use it to confirm your layout and variable placement before saving. The preview reflects the same sanitization applied at send time, so what you see is what recipients get.