Templates
Email templates: the list, the visual editor, variables, HTML and preview.
What it's for
A template is an email built once and sent as many times as you like, changing only the variables (name, order number, link). The screen has three tabs: your Templates, the Layouts (ready-made designs to start from) and the Families (sets of a product's emails in the same style). The editor has a visual mode, with blocks and editing right in the text, and an HTML mode.
When to use: For emails that repeat (order confirmation, login code, welcome), to let the team design emails without coding and to start a campaign from a ready-made layout.
#Template list
Where to find it: Emails › Templates. Address: app.postal.so/templates.
Header
| Item | What it does |
|---|---|
| View code | Shows how to send with a template through the API: POST /emails with template: { id, variables }. See Templates (API). |
| Create template | Instantly creates a draft template named Untitled, with a sample email and the NAME variable, and opens the editor. |
Templates tab
| Item | What it does |
|---|---|
| Search by name or alias | Searches the names and aliases of the templates. |
| Filters › Status | Published or Drafts (All statuses clears it). See how the Filters button works. |
| Column | What it shows |
|---|---|
| Name | The template name (a link that opens the editor). |
| Status | Draft: never published and not ready to send yet. Published: the published version is up to date with the editor. Published · with changes: you changed the draft after the last publication; sends keep using the published version. |
| Alias | A nickname (for example, pedido-confirmado) that can be used instead of the ID when sending. |
| Updated | How long ago the template changed. |
| Row menu | Edit; Duplicate (creates a draft copy and opens it); Delete (sends that use the template start to fail, and the dashboard asks for confirmation). |
Templates have no expiration date: they stay until you delete them. When the list is empty, the empty state explains the flow and offers Create template.
Tip
Give aliases that are easy to remember and stable. Whoever integrates through the API uses the alias, and the team can redesign the email without touching the code.
#Layouts and families
Two tabs help you avoid starting from scratch. They live on the Templates screen itself (the chosen tab goes in the page address).
Layouts tab
It has two views, Gallery and My layouts, and the Search layouts search.
| View | What it is |
|---|---|
| Gallery | Ready-made layouts organized by category (Welcome, Newsletter, Promotion, Product, E-commerce, Transactional, Announcement, Event, Onboarding, Re-engagement, Feedback, Holidays, Content and Services). Each card has a thumbnail. Preview opens the layout at full size; Use layout creates a new template from it and opens the editor. |
| My templates | The layouts your team saved with Save as layout, in the editor of a template or a campaign. They are available to the whole team. Each one's menu has Edit details (name, description and category), Duplicate and Delete (templates created from it don't change). The number of saved layouts depends on the plan. |
Families tab
A family is a complete set of 15 emails that a product usually sends (welcome, email confirmation, login code, magic link, password reset, security alert, team invite, subscription confirmed, plan changed, payment failed, trial ending, receipt, feature announcement, product update and plain text), all in the same style. There are ten families, from Essential to Pulse.
| Item | What it does |
|---|---|
| Apply your brand | Opens Your brand: Logo, Company name, Main color, Font, Footer address and Support link. It applies to all families and is saved in this browser. Restore default undoes it. |
| View family | Shows the family's emails. The preview has Desktop and Mobile, Dark mode (simulates apps that invert colors), View HTML code (with Copy HTML) and the list of Template variables for each email, with the suggested alias and which ones are required. |
| Use this family | Creates a template for each checked email, already with alias, subject, preheader and variables. In Use the ... family you check the emails (Select all / Clear selection) and decide on Publish on create (off, the templates stay as drafts). If an alias already exists, choose per email between Replace (swaps the content and keeps the version history), Create with a suffix and Skip. |
| Use just this one | Creates a single template from one email of the family. |
At the end, the success screen lists the templates created and shows the code to send each one. When the family was published on create, you can already send through the API with each template's alias.
#Visual editor
Where to find it: Emails › Templates, by clicking a template. Address: app.postal.so/templates.
The editor opens in Visual mode when the template was made with it. On the left is the email canvas, drawn with the same HTML the recipient will get, and you edit the text right on it. On the right is the properties panel.
Header and template fields
| Item | What it does |
|---|---|
| Template name | The big field at the top. Next to it, the status badge: Unsaved changes, Draft, Published or Published, with unpublished changes. |
| Write with AI | Opens What is the email about?: describe the email, pick the Tone (Professional, Friendly, Casual or Persuasive) and the Language, and click Generate email. The current subject and content are replaced (you can discard without saving). Uses 1 AI credit. |
| View code | How to send with this template through the API. |
| Save as layout | Stores the layout in My layouts for reuse. |
| Versions | The button with the clock opens the Published versions: each publication creates a version, the one in use shows In use, and Restore copies the chosen version into the draft (then publish so sends start using it). |
| Test | Sends the saved draft to real addresses. See Test and publish. |
| Save | Saves the draft (shortcut Ctrl/Cmd + S). Active only when there are changes. |
| Publish | Saves if needed and publishes a new version: the published version is the one API sends use. |
| From | The default sender. Can be changed when sending. Must be from a verified domain. |
| Subject | Accepts variables, like Seu pedido {{{ORDER_ID}}} foi confirmado. The sparkles button, Suggest subjects with AI, proposes options based on the content (you need to write some text first; uses 1 credit) and Generate more brings more. |
| Reply to (optional) | Where recipients' replies go. |
| Alias (optional) | A nickname to send with { id: 'alias' } instead of the ID. Accepts only lowercase letters, numbers and . _ -. |
Blocks
The email is made of blocks, stacked from top to bottom. To insert one, hover between two blocks and click the + (Insert a block here), or type / on an empty text line (see the / menu). On an empty canvas, the Start by inserting a block button does the same. The side panel shows the blocks in five groups:
| Group | Blocks |
|---|---|
| Text | Heading, Text, Button, List, Testimonial and Footer. |
| Structure | Header (logo and links), Hero (heading, text, image and button), Columns, Divider and Spacer. |
| Media | Image, Video (a thumbnail that opens the video in the browser) and Social links. |
| Sales | Product, Coupon, Table and Deadline (a fixed text such as "The offer ends Nov 29 at 11:59 pm"). |
| Advanced | HTML: a piece of your own HTML inside the layout. |
Click a block to select it: its name appears in the corner along with a bar with Move up, Move down, Duplicate block and Remove block. Inside a column there are also Move to the previous column and Move to the next column. The Columns block can't go inside other columns.
The right panel shows the properties of the selected block: the Content (texts, image, links, items), the Layout (alignment, size) and the section options (Section background, Text color, Inner spacing (px), Rounded corners (px), Hide on mobile and Hide on desktop). Link fields accept variables, like https://lojaexemplo.com.br/pedidos/{{{ORDER_ID}}}.
Page style
With no block selected, the panel shows the Page style, which applies to the whole email:
| Field | What it does |
|---|---|
| Preview text | The snippet that shows next to the subject in the inbox (the preheader). |
| Font | System, Helvetica / Arial, Georgia, Verdana, Trebuchet or Monospace. These are fonts that email apps already have. |
| Colors | Background, Content, Text, Headings, Links, Button and Button text. |
| Sizes | Width (from 480 to 720 px), Corners, Side margin and Button corners. |
| Reset to default style | Puts the style back to the original. |
The "/" menu
In an empty Text block, type / (the field shows the hint Type / to insert a block). It opens the Insert block menu with the five groups above; pick one and it replaces the empty line. In a column, the menu shows Insert in column N. A / in the middle of written text is just a slash. To close without inserting, use the menu's X.
Variables in text: the "{" menu and chips
In any text of the email (heading, text, footer, hero), type { and a list of Variables appears next to the cursor, with a note of how many are available. Keep typing to filter (those starting with the letters come first, then those containing them), use the up and down arrows, Enter or Tab to choose and Esc to close. Clicking an option works too.
- The chosen variable becomes a chip: a "pill" with the name, like
{{{NAME}}}. The chip can't be edited inside; the cursor moves past it, and a single Backspace or Delete keypress removes the whole variable. Cut and paste carries the variable along. - What is saved in the email is just the text
{{{NAME}}}: the chip exists only while you edit. Typing the full name ({{{NAME}}}) also becomes a chip on its own, if the variable exists. Names that don't exist (typos) and variables with a default value ({{{NAME|cliente}}}) stay as plain text. - The list shows the template's own variables first and then the ones Postal already knows:
FIRST_NAME,LAST_NAME,EMAIL,POSTAL_UNSUBSCRIBE_URL,NAMEandCOMPANY. - To put a variable over text that already exists, select the text and use Insert variable in the floating bar (the
{ }brace).
The floating text bar
When you select a piece of text, a bar appears above it, without moving the cursor:
| Button | What it does |
|---|---|
| Bold, Italic, Underline, Strikethrough | Apply and remove the formatting. Shortcuts: Ctrl/Cmd + B, I, U and Shift + X. The button lights up when the text already has the formatting. |
| Link | Swaps the bar for an address field (shortcut Ctrl/Cmd + K). Confirm with the checkmark or Enter; Remove link removes it; Esc cancels. "lojaexemplo.com.br" becomes https://lojaexemplo.com.br and "[email protected]" becomes mailto:. Only http, https, mailto and tel are accepted; any other type shows This kind of address is not allowed. |
| Insert variable | Opens the variable list for the selected text. |
| Clear formatting | Removes bold, italic and the rest from the selected text. |
The floating image bar
When you select a block that has an image (Image, Hero with image, Product, Header with logo, Video and Testimonial with photo), a bar appears over the picture:
| Button | What it does |
|---|---|
| Replace image / Add image | Opens the file picker and uploads the new image (PNG, JPG or WebP; large photos are shrunk automatically; animated GIFs are uploaded as they are, with a size limit). The same upload is available in the side panel. |
| Image link | Sets where the image leads when clicked. Follows the same address rules as the text link. |
| Edit alt text | The text that shows when the app blocks images and that screen readers read. A small warning dot reminds you when it's empty. |
| Remove image | Takes the image out of the block. |
Tip
Write alt text for every important image: many apps block images by default, and emails that are only an image are more likely to land in spam.
#Variables
A variable is a spot in the email that changes with each send. Write it between three curly braces, like {{{NOME}}}, in the subject, the text and the links. Variables are detected automatically and show up in the Variables card below the editor.
| Field | What it is |
|---|---|
| Name | Letters, numbers and underscores (for example, ORDER_ID). All caps is just a convention. |
| Type | Text or Number. |
| Default value | What applies when the send doesn't provide the variable. Without a default value, the variable is required when sending (the API returns an error if it's missing). |
Whoever sends provides the values in the call: template: { id: \'pedido-confirmado\', variables: { ORDER_ID: \'10482\' } }. A new template already comes with the NAME variable (default value "customer"). If you delete every occurrence of a variable from the email, it disappears from the card; the type and default value settings of the variables still in use are kept.
Tip
In broadcasts and automations, FIRST_NAME, LAST_NAME, EMAIL and POSTAL_UNSUBSCRIBE_URL are filled in by Postal itself with the contact's data. In a transactional send with a template, you provide all of them yourself.
See also: Templates (API) · Send email · Personalization in broadcasts.
#HTML editor
The HTML tab behaves in two ways, depending on the template:
| Status | What the tab shows |
|---|---|
| Template built in the visual editor | Shows the generated HTML, read-only, so you can copy or check it. The Edit HTML by hand button switches the template to HTML mode: the visual editor is no longer used for it (the dashboard asks for confirmation, because going back starts a new layout). |
| HTML template | Shows the HTML fields (use {{{NOME}}} for variables) and Plain-text version (optional). If you leave the plain-text version empty, Postal generates one from the HTML. The Use the visual editor button starts a new layout and replaces the current HTML (with confirmation, if there is already HTML). |
Tip
Prefer HTML when you already have a finished email (from an agency or another system). Have a plain-text version? Keep it: some spam filters penalize HTML-only emails.
See also: Create a template with the API.
#Preview
The Preview tab shows the email as it goes out, in an isolated frame. The Desktop and Mobile buttons switch the width (mobile simulates 375 px). Variables show up with the default value you set; the ones without a default value show up as the placeholder itself, for example {{{NOME}}}.
The preview shows what is in the editor right now, no need to save. To see the email actually arrive, use Test.
#Test and publish
Test
Test opens Send a test email. It sends the saved draft, with [Test] in the subject (with unsaved changes, the button reads Save before testing). Fill in:
| Field | What it is |
|---|---|
| To | Up to 5 addresses, separated by commas. It comes prefilled with your email. |
| From | Only shown if the template doesn't set a sender. |
| Variables | One field per variable: Required when there is no default value; if left empty and a default exists, the default value is used. |
Tests count toward the sending quota and show up in the Emails list.
Publish and versions
The draft is yours alone. Sends through the API use the published version; so after changing a template that is in use, click Publish. Each publish saves a version, and Restore goes back to an earlier one (copying it into the draft). To roll back to a live version, restore it and publish again.
Warning
Deleting a template makes sends that use its ID or alias fail. If you only need to change the design, edit it and publish.
See also: Publish (API) · Test (API) · Versions (API).