> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://fyno.io/docs/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://fyno.io/docs/_mcp/server.

# Email Templates

> Create, manage, test, and version email templates using Stripo, Unlayer, or HTML editors. Learn about dynamic content, attachments, unsubscribe management, reusable components, and approval workflows.

Fyno's email templates let you create rich emails for both marketing and transactional communication. You can build an email in one of three editors: **Stripo**, **Unlayer** or **HTML**.

## Choose an editor

When you add the **Email** channel to a template, Fyno asks you to choose an editor to create your email template.

![](/docs/_fern-img/edabdce5cee95518c200a936ab801111f2d11d35aa78d96199dec1f675812bec.webp)

| Editor                                        | Use it to                                                                                       |
| --------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| [Stripo Editor](#stripo-editor) (Recommended) | Build your email from scratch with multiple blocks, with AMP support and branding capabilities. |
| [Unlayer Editor](#unlayer-editor)             | Build your email from scratch with multiple blocks, or import JSON from Unlayer.                |
| [HTML Editor](#html-editor)                   | Paste or upload your HTML, if you already have your HTML template code.                         |

> **Tip**
>
> Fyno recommends the Stripo editor because it is easy to use and supports AMP, giving your customers a rich and responsive email experience.

## Fields common to every editor

Every editor has the same fields above the design area:

* **'From' and 'Cc/Bcc' details** (optional): Expand this section to override the **From Name**, **From Email**, **Reply To**, **Cc** and **Bcc** configured in your email integration, and to add an optional **Feedback ID** for tracking Gmail spam complaints (SendGrid only). See [How to override email sender details](./how-to-override-sender-details) and [How to add CC and BCC recipients](./how-to-add-cc-bcc-to-email).

![](/docs/_fern-img/43855eefd9cac51559ec1257d28fdf2f382666e1ce6ea20d4528465421073ce2.webp)

* **Subject**: Enter the subject line of the email.

![](/docs/_fern-img/315eaf86192a8f40a59b3ae5e4d89dad42bfdbd8c1a149bef6e15e530d01eee8.webp)

* **Attachment icon** (paperclip, next to the subject): Add attachments to the email. See [How to add attachments](./how-to-add-attachments-in-email).
* **Run Test** and **Preview**: Send a [test email](#how-to-test-an-email-template), or preview how the email looks.

> **Tip**
>
> You can add placeholders in the subject line to personalize it.

> **Note**
>
> To use any user property in your templates, add it in this format: `{{$user.$<user_property>}}`. For example, to add Name as a placeholder from the User profile, add it as `{{$user.$name}}`.

## Stripo Editor

Stripo is a drag-and-drop email builder integrated into Fyno. Build your email from scratch using ready-made structures and content blocks, including AMP blocks such as carousels, accordions and forms. You can also save blocks as modules to reuse them in other templates.

![](/docs/_fern-img/21515e300e4e4c56d95c5176186ecfbc91df26cdc1ac45f5c239882821824a2f.webp)

> **Tip**
>
> To send interactive AMP emails, see [AMP Email Template](./amp-email-template).

## Unlayer Editor

Unlayer is a drag-and-drop email builder integrated into Fyno. Build your email from scratch using content blocks, or import a JSON design from Unlayer. You can preview how the email looks on desktop and mobile.

![](/docs/_fern-img/3f38190e6d1fb8172ec4f58a13d0c7f7957f8856e6be154ef67f84bd4181ca91.webp)

## HTML Editor

Use the HTML editor if you already have your HTML template code. Paste your code into the editor, or upload it as a `.zip` file using the upload icon in the toolbar.

![](/docs/_fern-img/2c8263392bbf6145137ebbf46410c83ac54ef39d2f02a9d521c1bef9ac33dbee.webp)

### Upload an HTML template as a .zip file

You can upload a custom email template as a `.zip` file. This lets you include your HTML file along with all the assets it needs, such as images.

Your `.zip` file must contain:

* One HTML file. This is used as the email template.
* All static assets referenced in the HTML, such as images and CSS files.

For example, if your HTML references `my_image.jpg`, make sure `my_image.jpg` is also inside the `.zip` file.

> **Important guidelines**
>
> * Make sure all asset references in the HTML are correctly linked to files inside the `.zip`.
> * Keep the structure simple to avoid broken references.

The upload fails if:

* The `.zip` file does not contain an HTML file.
* The `.zip` file contains more than one HTML file.

If any image or asset is missing, you see a warning message and are asked to re-upload a corrected `.zip` file with all the required assets.

## How to add dynamic content

You can add dynamic content to your templates using one of the four options below:

* [Placeholders](./template-dynamic-content#placeholders)
* [System Variables](./template-dynamic-content#system-variables)
* [Handlebars](./template-dynamic-content#handlebars)
* [Components](./template-dynamic-content#components)

## How to add reusable components

Components let you create elements you want to reuse in other emails, such as a header or footer, so you don't have to recreate them in every email. Learn more in [Components](./components).

## How to override email sender details

You can override the sender details configured in your email integration in two ways: using the Notification Event API, or in the email editor. See [How to override email sender details](./how-to-override-sender-details).

## How to add attachments

You can add static as well as dynamic attachments to emails. See [How to add attachments in email](./how-to-add-attachments-in-email).

## How to add multiple 'to' emails

You can add any number of emails to `to` in the Notification Event API, as shown below.

**`Add Multiple To`**

```cURL title="Add Multiple To" wordWrap
curl -X POST 'https://api.fyno.io/v1/<WorkspaceID>/test/event' \
-H 'Authorization: Bearer <API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
    "event": "ReleaseNote",
    "to": {
       "email": ["xyz@fyno.io","abc@fyno.io"]
    },
    "data": {
        "company": "Fyno"
    }
}'
```

## How to add CC and BCC recipients

You can add CC and BCC recipients to emails. See [How to add CC and BCC recipients in email](./how-to-add-cc-bcc-to-email).

## How to test an email template

Use this feature to test a template thoroughly before including it in any Notification Event. This ensures early detection and resolution of any potential issues, for a seamless user experience.

Click **Run Test** above the editor. The **Test Email template** pop-up opens.

![](/docs/_fern-img/ca0cf15241d25f37bcbb379b475d6825cf754d03b6d67f74c3643ed5e3c7900e.webp)

From the dropdown, choose **Email** and enter the email address of the recipient, or choose `distinct_id` and enter it. **Make sure to enter the distinct_id of a Test User profile.**

In **Email Integration**, select an email integration that is already configured in Fyno.

**Auto-fill empty placeholders** (optional, AI assistance): If your template has placeholders with no sample values, Fyno can fill them using AI so you can test the email. Click **Yes** to let Fyno fill sample values for the empty placeholders. Once done, you see the message **Sample values have been filled**.

![](/docs/_fern-img/6b98da6a8ebfc52ddac1bc25c5578a882d3f4961afcfb56f1b85e3df05b5a265.webp)

Click **Run Test** to send the email to the recipient with the selected integration. You see the success or failure message along with a link to the Sent Logs.

## Save and go live

Click **Save** to save the template as a **Test** version. You can save different versions of the template this way. Use **Go Live** when you are ready to move your template to the **Live** version.

> **Note**
>
> If your workspace has a maker-checker workflow enabled for template management, **Go Live** needs an additional approval step. Choose from your designated approvers, who review and authorize the template changes. See [Approval flow](./approval-flow) for the steps.

## How to add an unsubscribe link in the header

Make sure the email channel's state within the subscription topic is set to either **On** or **Off**.

Make sure the unsubscribe feature is activated for the email channel.

Make sure the **Enable one-click unsubscribe** checkbox is selected.

![](/docs/_fern-img/b19729f9b922f8504d8586b5cb2f6133bdeb181a769889efe93f8d2ea2a3da8c.webp)

When an email is triggered with this subscription topic, the unsubscribe link is automatically added in the header.

When the user clicks the unsubscribe link, they see a pop-up as shown below.

![](/docs/_fern-img/34c3cd38f6dbf3d5cccfd93d97b73dc5dffa5c796cb4a6ea6365562c6b24a1c8.webp)

Once the user clicks **Unsubscribe**, their email is added to the email opt-out list for that subscription topic. To view all the users who opted out of any channel, click the subscription topic.

> **Add the right subscription topic to your Notification Event**
>
> Unsubscribes are managed at the subscription topic level, so using the wrong subscription topic with a notification event can unsubscribe users from something they didn't intend.

> **Info**
>
> The header unsubscribe link is currently available only for the SES and Postmark integrations. Reach out to us if you want to enable it for any other email service provider.

## How to add an unsubscribe link in the footer

In the email editor, add a block for Unsubscribe and highlight the word **Unsubscribe**.

Click the link icon in the toolbar to add a hyperlink to the word.

In the link settings on the right, choose **Other** from the dropdown. In the text box next to it, enter the unsubscribe URL, or enter `{{$fyno.$unsubscribe.url}}` if you want to shorten the URL using Fyno Shorty.

![](/docs/_fern-img/faec2cb4ad3f5f5d497186325b37c126492eb8bbebdf1d845cf2e3905bdb3b50.webp)

> **Tip**
>
> We suggest using the original URL rather than Fyno Shorty. The URL linked to the Unsubscribe text isn't visible to users, so Fyno Shorty doesn't add much here.

When the user clicks the unsubscribe link in the email, a pop-up asks them to confirm that they want to unsubscribe from this subscription topic.

![](/docs/_fern-img/a4b6a440cf15c1494517a8910b933e333594c80d5f408283a775f19d3c02b1ec.webp)

Once the user clicks **Confirm**, they see a confirmation message.

![](/docs/_fern-img/69b476aa33b0ffc5e8548e139b10c22a19e8f22dff3af64dd97dd2b665a6221f.webp)

If the user unsubscribed by mistake, they can click **Resubscribe**, and they see a success message.

![](/docs/_fern-img/01aa13968688703e2d462d2bb5108ab3594c7d3adaa97e1f5db6739c5db77d9d.webp)

Once a user unsubscribes, Fyno adds their email to the opt-out list of the subscription topic. When you send any email for the same topic, Fyno excludes the user from the payload sent to the service provider, so the user doesn't receive it. In the Sent Logs, you see this response for unsubscribed users: *SUBSCRIPTION "Subscription_topic - User opted-out from channel(channel-state)"*.

![](/docs/_fern-img/ffeaca37438f127de14173af2777042cc11e5c78a7afc9dd70becae278b045c2.webp)

## How to view change logs

To view the history of all the modifications made to a template, use the change logs feature.

Click the history icon at the top right corner of the template page to view the change logs. It shows the following details:

* Who updated it
* Which version was updated
* The date and time it was updated

![](/docs/_fern-img/3681277ad26b1fb02623bf0e4b69e1121b4e73a58d1a63e15e7a429574c7f8ef.webp)