tr Skip to content

WordPress Email Template Builder: Design Once, Send Anywhere

FlowMattic Email Template Builder: a WooCommerce order sends a branded receipt template with every line item filled in.

The FlowMattic Email Template Builder is a WordPress email template builder for transactional and marketing emails that your workflows send. You design a responsive email from blocks, add merge tags and loops for the data that changes, and a Send Template Email step delivers it with the customer’s name, order lines or booking details filled in.

It is for store owners who want branded receipts, agencies who send client reports, and SaaS teams with welcome, passcode and reminder emails. This guide covers the editor, the two actions in the Email by FlowMattic app, every send setting, and seven workflows you can build with them.

What is the Email Template Builder?

It is a drag-and-drop WordPress email template builder under FlowMattic → Email Templates. Each template stores a design, a subject, a pre-header and a set of sample dynamic data. Templates do nothing on their own; a workflow step decides when to send one and with whose data.

FlowMattic’s own emails are designs in the same list, so you restyle them in the same editor. The Bookings notifications live here, and the New booking alert shows the invitee’s answers to your custom questions through the {{custom_answers}}, {{answers_block}} and {{answers_list}} merge tags. So do the three Connects credential request emails: the request with its private link, the notice that credentials arrived, and the note that a request is no longer needed.

Sending is handled by Email by FlowMattic, a built-in app with two actions: Send Email for a quick message you write in the step, and Send Template Email for a designed template. The Gmail integration also has a Send Template Email action that uses the same library.

How the WordPress email template builder works

1. Start from a template or a blank email

The library has 26 prebuilt templates plus a blank one. They include Welcome, One-time passcode, Reset password, an e-commerce order receipt, Subscription receipt, Reservation reminder, Weekly newsletter, Announcement, Feedback survey and Best sellers. Several are built around a Loop block (product catalog, order invoice, event schedule, job listings), so the pattern for repeating content is ready to copy. A Booking emails group in the same gallery starts a template from one of the Bookings designs. Generate with AI drafts a full email from a prompt using your own AI provider connection.

2. Build it from blocks

The add-block menu offers Heading, Text, Button, Image, Avatar, Divider, Spacer, Html, Columns, Container and Loop. Set colours and fonts once as global styles, then override them on a single block when needed.

FlowMattic Email Templates admin screen listing saved and prebuilt email templates.
The Email Templates screen, where your templates and the prebuilt library are listed.

3. Add merge tags, loops and conditions

In the Data tab you describe the template’s dynamic data as JSON, for example {"first_name": "Priya", "order_total": "$120"}. Any text can then use {{first_name}}. The subject and pre-header accept the same tags, so the inbox preview can name the customer before the email is opened.

  • Loop block: set a Data Source (an array such as order.items) and a Loop Variable (such as item), then use {{item.name}} in the child blocks. Each array item renders once.
  • Visibility condition: show a block only when a variable Is not empty, Is empty, Equals, Not equals or Contains a value. A “coupon” banner can appear only when a coupon code exists.

4. Test, then send from a workflow

Send Test Email sends the template to your inbox with test data first. Then add a step, choose Email by FlowMattic and Send Template Email, pick the template, and map a workflow value into each key under Dynamic Data.

FlowMattic Email by FlowMattic step showing Send Template Email with Email Provider, From Name, To Email and Email Template fields.
The Send Template Email step in Email by FlowMattic, with the provider, sender and recipient fields.

Send Email and Send Template Email settings

Both actions share the same sending fields. Send Email adds an Email Body editor (type @ to insert a dynamic tag); Send Template Email replaces it with the Email Template picker and its Dynamic Data fields.

FieldWhat it does
Email ProviderWP Default sends with wp_mail(), so your existing SMTP plugin applies. FlowMattic Default uses the SMTP Configuration in FlowMattic Settings. Custom SMTP asks for a host, username, password, encryption type and port in the step.
From Name / From EmailThe sender shown in the inbox.
Reply-to EmailWhere replies go, such as your support address.
To EmailThe recipient. Required.
CC Email / BCC EmailOne or more addresses separated by commas, semicolons or new lines, including Name <email>. Invalid addresses are skipped and reported in the step result.
Email SubjectThe subject line. Required.
AttachmentsRows of File Name and File URL. Add more rows with Add More. The URL must point to a file stored on your own site, which is attached from disk; a file on another server is not downloaded.
Message IDA previous message’s ID, to send this email as a reply in the same thread. Some providers ignore it.

A successful send returns status, message and the new message_id, which a later step can use to reply in the same thread.

Use cases

A branded receipt for every WooCommerce order

The order receipt template uses a Loop block over the order’s line items. Map the items array and the total, and every customer gets a receipt in your brand from your store’s address.

WooCommerce New Order Created → Send Template Email

Welcome new members, then follow up

When a user registers, the Welcome template goes out with their name. A Delay waits three days, then a second template sends getting-started tips.

WordPress New User → Send Template Email → Delay → Send Template Email

Invoice emails with the PDF attached

An agency renders a PDF invoice and attaches it by mapping the PDF step’s url into an Attachments row. Northwind’s accounts team receives the email and the file together.

Schedule → Generate PDF from Template → Send Template Email

A weekly digest from a table

A Monday schedule reads this week’s rows from WP Tables and passes them as one array to the newsletter template’s Loop block. An Iterator sends one copy per subscriber.

Schedule → WP Tables Get Rows → Iterator → Send Template Email

Support replies in the same thread

A support workflow drafts an answer with an AI Agent and sends it with Send Email, passing the original email’s Message ID so the reply stays in the customer’s thread.

IMAP Email Received → AI Agent → Send Email (Message ID)

One-time passcodes for a SaaS login

An app posts a login request to a webhook. The workflow generates a six-digit code with Data Transformer’s Generate Random String (Numbers only), sends it with the One-time passcode template, and returns a success response to the app.

Webhook → Data Transformer → Send Template Email → Webhook Response

Approval requests with an internal CC

A purchase request from Yuki Tanaka is routed by amount. Large requests email the finance lead with the manager in CC, while small ones are approved automatically and confirmed to [email protected].

New Form Submission → Router → Send Template Email (CC) · Send Email

Tips and gotchas

  • Define every key in the Data tab. The Dynamic Data fields in the step come from the template’s Data JSON. A key that is not there will not show up to map.
  • Blank values fall back to samples. If a mapped value arrives empty, the template’s sample value is used instead. Clear sample values you never want a customer to see.
  • Arrays can arrive as JSON text. A Dynamic Data value that is a JSON array is decoded before the Loop block runs, so you can map a whole line-items list into one key.
  • Conditions use top-level keys. Visibility conditions compare a named variable such as coupon_code; keep the values you test at the top level of your data.
  • Choose the provider deliberately. WP Default respects whatever mail plugin your site uses. Custom SMTP credentials typed into a step are saved with that workflow, so FlowMattic Default keeps SMTP details in one place in Settings.
  • Check deliverability once. Set From Email to an address on a domain your mail service is allowed to send for, or messages may land in spam.

Related features

  • PDF Template Builder: generate the invoice or certificate you attach.
  • Bookings: booking confirmations and reminders use this template library.
  • Iterator: send one email per row, subscriber or order item.
  • IMAP Email: start workflows from incoming mail and reply in thread.

FAQ

Can I design WordPress emails without writing HTML?

Yes. The Email Template Builder is a block editor: drag Heading, Text, Image, Button, Columns and other blocks into place and set styles from the sidebar. An Html block is there for the rare case you want raw markup.

How do I loop over order items in an email template?

Add a Loop block, set its Data Source to the items array and its Loop Variable to a name such as item. Inside it, use {{item.name}} and {{item.price}}; each item in the array renders once.

Which mail service does FlowMattic send through?

You choose per step. WP Default uses wp_mail() and any SMTP plugin on your site, FlowMattic Default uses the SMTP Configuration in FlowMattic Settings, and Custom SMTP takes server details in the step itself.

Can I attach files to automated emails?

Yes. Add Attachments rows with a file name and a file URL, mapped from an earlier step such as a generated PDF. The file must be stored on your own site, such as in the Media Library; it is attached directly from disk.

Can I send a test before the workflow goes live?

Yes. Send Test Email in the editor lets you set test values and send the template to your own inbox. You can also test the Send Template Email step in the workflow builder.

Use one WordPress email template builder for every automated email. See the Email Template Builder page, and pick a FlowMattic plan to get started.

More from the blog