Simon templates
Templates allow you to create an email message entirely within Simon, with your HTML code and dynamic personalization defined in a single place.
Templates consist of HTML code combined with dynamic content in the form on Jinja code. If you are already familiar with Custom Context, the Jinja code in templates follows the same syntax and conventions. A key difference with templates is that all the dynamic content is defined within the template, so there is no need for separate Custom Context to be defined. You can still define metadata when you set up your flows.
Accessing and using templates in simon
To get to templates, click on your email address to reveal the dropdown of options, and then select Content. On this page you can access any existing templates and create new ones.
The template editor lets you edit the HTML for your message, add dynamic personalization, preview the message for both a single contact and a batch of contacts, and perform a test send.
After you have completed setting up a template and saved your changes, you can use it in the flow builder by selecting the channel action Send Email To Contact with Simon Templates. Simply chose your template from the list, enter a subject, and complete the rest of the flow set-up. You will also have the option to preview the message and do a test send from within the flow builder. A template can be used in an unlimited number of flows.
Templates are only available with Simon Mail and SendGridWhile any user can create email templates, they can only be sent in Simon Mail and SendGrid journeys and flows.
Creating and editing templates
The template editor consists of the code editor on the left-hand side, and the preview and personalization tabs on the right hand size.

demo template
Code editor
The code editor highlights HTML syntax, and gives you the option to search, as well as collapse and expand HTML tags to navigate your code more easily.
The code editor also calls out possible syntax errors in your HTML templates. The alerts appear as red x's next to the line number in question. Hover over the x and you'll see the potential error details. These potential errors may or may not cause issues downstream so treat them as guidance. They don't prevent you from saving templates or from using those templates in flows.
Message details
The message details can be found under the @ icon. This allows you to save a default value for subject line, from name, from email address and reply-to email address. These values will be loaded as defaults when this template is selected in the flow builder, but you will also have the option to update them in the flow builder, such as for a subject line test. The subject line can contain personalization using contact properties in the form of Jinja expressions.

message details
Updating message details after a flow is createdOnce a flow has been set up, the message details are stored within the flow, and changes to message details made in the template will not automatically update the flow. Any changes to the subject, from name, from email, or reply-to email must be made in the flow itself.
Preview and sample contacts
The preview tab will show the message as rendered for a random contact in your database. As you change the code, the preview on the right hand side will automatically update.
You can select a segment and sample contact for your template under Contacts. The contact that is selected there will be used for both the preview and test send. If you select a segment, the contact will be sampled from that segment. The segment will also be used to select the contacts for previewing a batch.

load sample contact
Preview batch and test send
Preview batch allows you to preview a batch of 25 messages for randomly selected contacts in the selected segment. You can flip through the contacts to see how the content would look for each of them. Test sends will use the selected sample contact (with the ability to cycle through sample contacts) to populate the message personalization and will send the corresponding message to one or several email addresses. The test send will use the message details, if configured, and adds the text '[TEST]' before the subject. If message details have not been defined, the message will be sent as coming from your email address, with the template name as subject.

dynamic template
Contact properties
Templates can incorporate contact properties for personalization, much the same as Custom Context. Clicking on a contact property will insert that value in the template. You can use contact properties both as conditional statements and to present them as content. It is important that there is not a situation where there could be content missing from your message. It is always recommended to set up a default value in the event of null customer or lookup table data. There is more information about how to use contact properties in Custom Contexts - Explained.
Use validations and default values when inserting dynamic contentWhen working with any dynamic content it is important to ensure that content will not be missing from your message, e.g. if certain contacts are missing a property that you are using in your block. You can avoid this by adding checks for missing content and providing default values.
Lookup tables
You can include content from lookup tables in your template just as you would for Custom Context. The Lookups tab lets you explore your lookup tables and clicking on a property will insert the code in the template. Just as with contact properties, it is important that you consider the situation of a missing property, in order to avoid missing or erroneous content. To find out more about how to use lookup tables, check out our tips about Getting Started with Lookup Tables.
Event data
Event data can be accessed under the Events tab if you have set up triggers using data from Simon Signal. In order to use event data within a template, you will first need to select the corresponding trigger. Make sure you use the same trigger as you intend to use in the flow. Once you've selected a trigger, you will be able to preview sample events for that trigger. You can sample different contacts to preview the content for different situations. (If a single contact has multiple events, you can move between those using the arrows).
You can learn more about how to use event data as content under Using Event Data from Triggers.
Picking the right triggerBecause different triggers can have different data fields available, it is important to use the same trigger in the template builder and your flow. You should also confirm both in the template and flow builder that the content renders correctly.
Combining event data with contact propertiesCertain triggers apply to contacts that do not already exist in the system, such as a registration event. When such a trigger is selected, contact properties will not be available in the template.
Content blocks
Content blocks allow you to save static text or code and reuse it in multiple places without duplicating the information. When you want to make an update, you can do it in a single place. Find out more about blocks in Content Blocks. Please note that it can take a couple of minutes for block updates to be refreshed in the templates preview.
Content Agent
The Content Agent tab is an AI-powered assistant built directly into the template editor. It helps you create, edit, and troubleshoot Jinja2 template code through a conversational chat interface — no coding expertise required.
AvailabilityThe Content Agent tab appears in the template editor when the feature is enabled for your organization.
What the Content Agent Can Do
| Capability | Description |
|---|---|
| Generate complete templates | Describe the email you want in plain language and the agent will produce a full, ready-to-use template. |
| Edit existing content | Ask the agent to modify your current template — it always sees the latest version in your editor. |
| Add personalization | Insert dynamic fields like {{ contact.first_name }} with proper fallback defaults. |
| Use lookup data | Pull product details, store info, or other reference data from your lookup tables. |
| Apply conditional logic | Show or hide content based on contact attributes (e.g., VIP status, location). |
| Create loops | Iterate over collections such as recent purchases or product recommendations. |
| Discover content blocks | Search and browse your organization's reusable content blocks without leaving the editor. |
| Validate syntax | The agent automatically checks Jinja2 syntax before applying changes. |
Using the Content Agent
- Open an HTML template in the editor or create a new HTML template.
- Click the Content Agent tab in the right-hand pane.
- Type a message describing what you'd like to do and press Enter.
When the agent makes changes, they are applied directly to the code editor on the left — you'll see updates in real time.
TipYou can continue to manually edit the template code between agent messages. The agent will pick up your latest changes automatically.
Example Prompts
Here are some examples of what you can ask the Content Agent:
Creating content:
- "Generate a welcome email template for new subscribers"
- "Create a cart abandonment reminder with product details"
- "Build a promotional template for a flash sale"
Editing content:
- "Add the customer's first name to the greeting with a fallback"
- "Add a VIP banner that only shows for customers with a VIP tier"
- "Change the background color of the header to #1a73e8"
Working with dynamic data:
- "Loop through the customer's recent purchases and show each product"
- "Pull the product name and price from the product_catalog lookup table"
- "Show different hero images based on the customer's region"
Using content blocks:
- "What footer blocks do we have available?"
- "Add the standard_footer block to this template"
- "Show me what content blocks exist for headers"
Troubleshooting:
- "Why isn't my conditional rendering correctly?"
- "Check my Jinja syntax for errors"
- "What contact fields are available for personalization?"
How It Works with Content Blocks
The Content Agent can help you discover and include reusable content blocks:
- Search for blocks — Ask the agent to list available blocks (e.g., "What footer blocks do we have?"). The agent searches blocks that match your template's compatibility mode (Classic or Composable).
- Analyze before including — Before adding a block, the agent inspects its dependencies (contact fields, lookup tables, nested blocks) and alerts you to any potential issues.
- Include blocks — The agent inserts the correct Jinja2
{% include 'block_name' %}or{% import 'block_name' %}statement depending on whether the block contains macros.
Content Agent and Template Saving
The Content Agent session is automatically linked to your template. When you save your template, the association is preserved — so the next time you open the same template, your conversation history will still be available in the Content Agent tab.
ImportantThe Content Agent replaces the entire editor content when it makes changes. If you want to preserve specific sections, let the agent know in your message (e.g., "Only update the footer section, keep everything else the same").
Using templates in the flow builder
Simon templates are available within the channel action Send Email to Contact with Simon Templates. After selecting your template, fill in your subject and the rest of the email details. The subject can include dynamic personalization using Jinja.

send triggered email
Because the personalization is already defined in the template, there is no option to add Custom Context, but there is a separate section to enter metadata. You will also find an option for test send.
Updated 5 days ago
