Changelog

Latest updates and improvements.

Newv1.15.024.09.2026

The app speaks your language

Workflow Transactional Email now follows the language of your Shopify admin. It is available in English, German, Spanish, French, Italian, Dutch, Danish, Portuguese (Brazil and Portugal), Japanese and Chinese (Simplified and Traditional).

  • Every page, dialog and message of the app, including the email builder, email senders, HTTP requests, history and settings.
  • In Shopify Flow, the settings page and the preview of the Send Transactional Email and HTTP Request steps.
  • The Sidekick tools and the Flow templates of the app.

The language follows the one you chose for your Shopify account. To change it, open your Shopify account profile and pick a Preferred language. Everyone on your staff sees the app in their own language.

Two things stay as they are:

  • The fields inside the Flow steps (To Email(s), CC, Reply-To, Language and so on) stay in English, because Shopify Flow shows them exactly as the app defines them.
  • Your emails are never changed. They go out exactly as you wrote them. To send customers an email in their own language, add translations to a layout. Send emails in your customer's language

Also fixed: when you created a new header or footer preset, the Save bar sometimes did not appear, so the preset could not be saved. It now shows at the top of the page as soon as you change something.

Fixedv1.14.221.09.2026

The Variables (JSON) snippet with line items is accepted in Shopify Flow

A layout with an order line items table gets a Use in Shopify Flow snippet that contains a small Flow loop for the products. Pasting that snippet into Variables (JSON) of the Send Transactional Email action answered "Invalid JSON format", although the snippet was correct.

The reason: the check in the Flow editor read the text before Shopify Flow had filled anything in. At that point the loop is not JSON yet; it only becomes a list of products when the workflow runs.

  • The check now understands Flow variables and loops, in the Send Transactional Email and the HTTP Request action. Paste the snippet as it is, without quotes around the line_items line.
  • The same applies to a value written with the json filter, such as "name": {{ order.customer.displayName | json }}.
  • JSON that is really broken, like a missing comma or single quotes, is still reported when you save the step.

If a step showed this error, open it and paste the snippet again. Workflows that were already running are not affected. Order line items table Passing data from Shopify Flow

Newv1.14.119.09.2026

You are told when your mail server stops answering

Until now, an SMTP server that did not answer at all was only retried: every email failed with a connection timeout, and no alert was sent, because a single timeout is not proof that the server is gone.

Now the app counts. After three connection failures in a row, the shop gets the sender alert that names the problem - your mail server does not answer our connection attempts - together with what to check: host, port, that the server is running and reachable from the internet, including from our sending IP address. A successful send resets the count.

Test Connection on an SMTP server and the History detail of a failed email show the same advice. Notifications and alerts

Newv1.14.018.09.2026

Multi-language layouts, line items, version history and AI

Send each customer the email in their language, build layouts by describing them, and never lose a change again.

  • Emails in your customer's language. Add translations to any layout, as a copy or translated with AI, and switch between them from the language picker next to the page title. Set the new Language field in the Send Transactional Email action to {{order.customerLocale}} and each customer gets their version. Send emails in your customer's language
  • One layout for every language. The new {{ language }} variable holds the language an email is sent in, so a single layout can show one paragraph to German customers and another to everybody else, without a full translation. Switching between the languages of a layout keeps the editor exactly as it is; only the content changes. Send emails in your customer's language
  • Reply-To and From name per workflow. Send replies to your support inbox and show a sender name that fits the email, straight from the Flow step. Reply-To and From name
  • Order line items table. A new block lists the products of an order with images, quantities, prices and totals. The Flow variables card writes the Flow loop for you. Order line items table
  • Attachments from a link. Attach an invoice or ticket PDF from a URL in your Flow data; it is fetched when the email is sent. Attachments and images
  • Version history. Every save of a layout is kept. Preview an earlier version and restore it in one click. Layout version history
  • Unlimited history on GitHub. Connect a repository and every version of your layouts is committed to it. Edit a layout's file on GitHub and the app picks it up. Keep unlimited layout history on GitHub
  • Create, edit and translate with AI. Connect your own Claude, OpenAI, Gemini or OpenRouter key, choose from your provider's models, and describe the email you want. Create, edit and translate layouts with AI
  • Build layouts from your AI assistant. The Developer API and MCP server can now create and update email layouts, translations and versions, so an assistant can build a layout for you. Connect an AI assistant (MCP)
  • A faster, cleaner app. Every page moved to Shopify's new web components, the same building blocks the Shopify admin itself uses. Pages load faster and follow the admin's own patterns: a setup guide on the home page, one way to filter and search every list, and status and reference information next to the form you are editing. The visual builder now uses the full page width and has desktop and mobile previews plus undo and redo.
  • History shows the language. Every email event lists the language it went out in, and you can filter History by layout and by sender.

Using the new fields in a workflow you already have: Shopify Flow keeps the fields a step was created with. To get Language, Reply-To and From name in an existing workflow, delete the Send Transactional Email step and add it again. Workflows you do not change keep running exactly as before.

Improvedv1.13.015.09.2026

Alerts when a sender stops working, Liquid that works when sent, and emails that arrive as designed

This release is about the failures you could not see: a mailbox that quietly stopped sending, a layout that previewed fine and then failed, and design details that did not survive the trip to the inbox.

We tell you when an email sender stops working

Until now a sender could break and every email through it would fail with nothing but a red row in History.

  • Connected Google and Microsoft 365 mailboxes stay signed in on their own: the app renews their access automatically, so nothing expires on you in normal use. When the account itself refuses that renewal (you removed the app's access, a password change ended it, or an administrator blocked it), the dashboard shows a banner and you get an email, once a day per sender, telling you to reconnect it. Reconnecting keeps your senders and your Shopify Flow steps.
  • The same alert covers setup problems that break every send, each with the exact fix: a wrong SMTP username or password, a mail server that blocks our sending server (we name the IP address to allow), an email address typed into the SMTP host field, a port and encryption that do not match, a Google account without Gmail, and an Outlook mailbox Microsoft has paused.
  • Test Connection and the test send now show that same fix next to the error.
  • Connecting a Google account without the "Send email on your behalf" permission is refused straight away with an explanation, instead of connecting a mailbox that can never send.

The alert is on by default. You can switch it off under notifications.

Liquid you type in the editor now works when the email is sent

A comparison like {% if variables.total > 5 %}, a quoted filter such as {{ variables.name | default: "there" }}, or a tag you had partly formatted could look right in the preview and then fail every real send with expected "|" before filter. The editor was storing those characters in a way Liquid could not read.

  • Existing layouts are fixed automatically, with nothing to change.
  • Saving a layout that contains a genuine Liquid mistake now tells you when you save, rather than when a customer does not get their email.

Flow data with tabs or quotes no longer empties your email

A product title or note containing a tab or a quote mark (think 12" vinyl) could make the Variables (JSON) unreadable, and the email went out with blank fields.

  • Those values are now read correctly.
  • If the data still cannot be read and your layout uses variables, the action fails with a clear explanation in History instead of sending an email with gaps.

Your email design arrives exactly as you built it

Our safety checks on outgoing email were removing a few things a designed email needs.

  • The mobile viewport and character set are kept, so emails scale properly on phones.
  • Google Fonts chosen in Branding now load in the email clients that support them, such as Apple Mail.
  • Outlook-only styling in custom HTML is kept, even when the code was formatted across several lines.

Steadier sending through your own SMTP server

  • The app opens at most two connections to your SMTP server at a time. When it is busy, Shopify Flow retries the email a little later instead of it failing with "too many connections".
  • A mail server that does not answer is given up on after 15 seconds and retried through Flow, rather than holding up your workflow for minutes.

Privacy

  • Send and run history is kept for 30 days on every plan, as our privacy policy states.
  • Application logs are stored in the EU, and we no longer use request tracing.
  • HTTP Request responses returned to Shopify Flow stay under Flow's size limit.

Smaller things

  • The show and hide button on sections in the visual builder is back.
  • The rich text editor has been rebuilt on a new foundation. Same toolbar, links, images, colours and sizes.
  • Routine security maintenance. No action needed.
Newv1.12.009.09.2026

Delete files you no longer use

You can now remove uploaded logos, images and attachments you have finished with. Until now a file could only be removed as a side effect of editing the layout that used it, which was no help when you simply wanted to clear out an old logo.

In the app

Open the media picker anywhere you insert an image or attachment - the logo field in Branding, or Insert image in a layout. Every file now has a delete button in its corner. Confirm, and it is removed from storage for good.

Deleting a file that is still in use is refused, and we tell you what is using it

This part is deliberate. The picker lets you reuse one upload across as many layouts as you like, so removing a file that is still referenced would quietly break a different email that is still going out to your customers. If a layout or a shared header/footer preset still uses the file, the delete is refused and the message names them. Take the file out of those, then delete it.

Anything nothing references deletes straight away.

For the API and MCP

  • GET /api/v1/files lists your files. Add ?usage=true and each one reports whether anything still references it, so you can find everything safe to clear out in one call.
  • DELETE /api/v1/files removes one, applying the identical in-use check.
  • The same is available to an AI assistant over MCP as list_files and delete_file. You can ask it to find and remove your unused images, and it cannot delete one a live email still needs.

See REST API reference.

Also fixed

Saving a layout used to tidy up files it no longer needed, but only checked other layouts - not shared header/footer presets. A logo used solely by a preset could be removed. Both paths now run the same check.

Newv1.11.019.08.2026

Developer API and MCP, plus easier links in the editor

Manage your actions from your own code, or from an AI assistant like Claude or Cursor.

Developer API

  • A new Developer page where you create API keys and get a ready-to-copy connect command for Claude Code, Claude Desktop, Cursor, VS Code or Gemini CLI.
  • A REST API to manage HTTP request actions, and to read your email layouts, senders, secret names, execution history and stats.
  • An MCP server, so an AI assistant can do the same in conversation - including writing a new action for you that references your existing secrets by name.
  • Three access levels. Read keys can only look. Write keys can also create, update and delete actions. Execute keys can additionally run a configured HTTP request for real, which sits behind its own level because it sends a live request to a third-party system.

Both surfaces are served from a dedicated address, shopify.workflow-transactional-email.app, so your integrations do not depend on the app's admin URL.

Your credentials stay private. Secret values, SMTP passwords and OAuth tokens can never be read back through the API or MCP at any access level. An assistant can see that a secret named stripeApiKey exists and reference it as {{ secrets.stripeApiKey }} without ever seeing its value. Personal data in execution history is masked before it leaves the server, though free-text fields can still carry customer details.

Full documentation: Developer API and MCP, Authentication and API keys, REST API reference and Connect an AI assistant (MCP).

Links in the rich text editor are much less fiddly

Both of these came from a merchant report.

  • Highlight text to link it. Select any text, click the link button, and the link is applied to that text - the address no longer has to be visible in the email. There is also a Remove link option when your cursor sits inside an existing link.
  • Email addresses and phone numbers now work. You no longer type the scheme yourself. Enter hello@yourstore.com and it becomes a mailto link; enter (703) 638-2601 and it dials; enter yourstore.com and it opens as a normal web address. The dialog tells you what it will do before you insert it.

What was actually wrong, since it caused both problems: an address typed without https:// was treated as relative to the Shopify admin page rather than as a real web address. That produced a broken link, so the only way to get a working one was to type the full URL - and an email address could never become a mailto at all. Fixed at the root.

Your existing layouts and saved links are untouched.

A proper page after upgrading

Upgrading used to drop you back on the dashboard with no confirmation. There is now a page that confirms the change, shows what your new plan includes and how much of it you have used, and points you at the next useful thing to set up.

Fixedv1.10.118.08.2026

Line breaks in headers and footers, and tighter block spacing

Two formatting fixes in the visual builder, both reported by a merchant.

Line breaks now work in header and footer text

  • The footer printed a typed <br> as literal text while separately acting on your Enter key, so you got a line break and a stray <br> on screen.
  • The header ignored line breaks altogether and ran everything onto one line.

Both are fixed. Press Enter for a new line - typing <br> also works if that is your habit. This applies to your existing layouts straight away, with nothing to change.

Spacing between blocks

Every block carried padding on all four sides on top of the gap between blocks, which stacked up to around 44px between elements and made emails look loose.

Padding is now split, with a new Block Padding (top & bottom) slider under Branding → Layout alongside the renamed Block Padding (sides). Each spacing control now explains what it actually does.

  • Existing layouts are untouched. They keep exactly the spacing they have today, so nothing shifts in emails you have already tuned. To tighten one up, drop the new slider - around 4px works well.
  • New layouts start tight by default: roughly 20px between blocks instead of 44px.
Newv1.10.011.08.2026

Inbox preview text, and we now tell you when a variable comes out empty

This release is about one thing: knowing your email is right before a customer tells you it is not.

Preview text

  • Every layout now has a Preview text field - the line email clients show next to the subject in the inbox. Leave it empty and the client grabs whatever text comes first in your email, which is usually "View in browser".
  • Supports the same {{ variables.xxx }} as the subject, so it can carry the delivery date or the order number.
  • Description now says what it actually is: an internal note only you can see. Several merchants had been writing customer-facing copy there.

See Subject line and preview text.

We now warn you when a variable renders blank

Templates render leniently on purpose, so a wrong or missing variable never blocks a customer's email. The cost was that it produced a silent blank: the send succeeded, History went green, and only the recipient saw the gap.

  • A send where a placeholder produced nothing is now badged Empty variables in History.
  • Opening it names exactly which ones, and separates two very different problems: sent by Flow but empty (wrong property path) versus not sent by Flow at all (missing from your JSON).
  • Applies to HTTP requests too.

The Variables (JSON) is now written for you

Hand-writing that JSON was the single biggest source of support tickets.

  • Every layout has a Use in Shopify Flow card with the exact JSON to paste into the Flow action, with all key names already correct. One button copies it.
  • Common fields are pre-filled - customer name, order name, order total, status page URL.
  • If a variable looks like line-item data, it warns you: an order has many line items, so {{ order.lineItems.variant.title }} returns nothing and needs a loop. This is the most common cause of an empty variable.
  • Test Variables now state plainly that they only affect previews and test sends - a live Flow run ignores them.

See Passing data from Shopify Flow.

You can delete things again

Layouts, senders, SMTP servers, HTTP requests, secrets and presets used to be undeletable while a Shopify Flow step referenced them.

The problem: that reference is remembered until the app is uninstalled, so it was often a leftover from a workflow you had already deleted or rebuilt - and nothing could tell the difference. Merchants were stuck with records they could not remove.

  • Deletes are no longer blocked. You get told what still references the item, and you decide.
  • A Flow step pointing at something deleted now fails with a clear message in History rather than being prevented up front.
  • Uploaded files are the one exception: the same file can be shared across layouts, so that check stays.

Steadier under load

  • Added per-store admission control and autoscaling to the action endpoints, so one workflow firing in a burst can no longer slow down everyone else.
  • The app now returns the right signals to Shopify Flow when it is busy, so Flow paces its retries instead of hammering - nothing is dropped.
  • Hitting your plan limit now returns a clear, final answer rather than being retried for hours.

Smaller things

  • Insert image → Paste a link in the rich text / HTML editor is fixed: there is now a cancel button, Enter inserts, Escape backs out, and the Insert button is disabled until you have typed something. Pasting a bare cdn.example.com/logo.png works - the https:// is added for you.
  • The setup guide now uses the real Flow action names, Send Transactional Email and HTTP Request.
  • Routine security maintenance: dependency updates across the app, including one critical and three high-severity advisories. No action needed.
  • New documentation: Install and set up, Email deliverability (why a successful send can still land in spam), Sidekick and AI assistants, and Data, privacy and security.
Newv1.9.010.08.2026

New documentation site, Help Center and in-app chat

Getting help no longer means hunting for an email address.

In-app chat, on every page

  • The chat bubble is now available everywhere in the app, not just the dashboard. Start a conversation from wherever you are - mid-way through building a layout, or staring at a failed action in History.
  • We already know who you are. Your store, plan and contact details come through automatically, so you do not have to explain which shop you are writing from.
  • It gets out of the way. The bubble hides itself whenever a dialog is open, and while you are in the visual email builder, so it can never sit on top of a Save button.

New documentation site at docs.workflow-transactional-email.app

New Help Center - report a bug, request a feature, or contact us through a proper form that reaches us directly, with screenshots attached. The Help page in the app now links straight to all of them.

The old documentation at docs.flow-action-extensions.app has been carried over in full, so nothing you had bookmarked is lost - it just lives under the new name now.

Newv1.8.009.07.2026

Now called Workflow Transactional Email, and Sidekick can answer questions about it

Flow Transactional Email is now Workflow Transactional Email. Same app, same install, same senders and templates - a new name, matching the rest of our Workflow range.

Nothing to do on your side. Your Shopify Flow workflows keep working untouched.

One thing worth knowing: the Microsoft and Google consent screens may still show the previous name, Flow Action Extensions. That is expected, and safe to approve.

Ask Shopify Sidekick about your emails

Sidekick can now answer questions about this app directly. Ask things like "which email senders are set up", "did any emails fail this week", "do I have an HTTP request for Airtable", or "why did my last send fail".

Read-only - Sidekick can look at your templates, senders, requests and history, but cannot change anything. It never returns secret values, SMTP passwords, OAuth tokens or message contents.

Fixedv1.7.128.06.2026

Security update

Routine security maintenance: dependency updates and hardening across the app. No action needed.

Included in this pass: outbound requests configured by merchants are checked against internal and private network addresses before connecting, and rendered email HTML is sanitised before sending.

Newv1.7.018.06.2026

Reusable header and footer presets, plus custom fonts

  • Header and footer presets. Design your branded header and footer once, then reuse them across every email layout. Change the preset and every template using it updates - so a new logo or a changed company address is one edit, not twenty.
  • Header layouts run from logo-only to logo with tagline and navigation links. Footers cover social icons across 13 platforms, custom legal text, copyright and unsubscribe.
  • Custom fonts. Upload your brand's heading and body fonts and they appear in the builder's font picker alongside the built-in system and Google fonts.
  • Email layouts now show their type at a glance in the list, so you can tell a visual build from an HTML one without opening it.
  • Fixed media picker cards rendering unevenly on mobile, and filenames being cut off.
  • Fixed an intermittent failure loading files in the picker, which could show "Failed to load files" until the page was reloaded.
Newv1.6.014.06.2026

A central media library, and deletes that cannot break a live workflow

Media library

  • A single picker for every image and file in the app, with search, type filtering and sorting. Upload your logo once and reuse it across every template and block.
  • Uploads now go straight to storage rather than through the app, so large files no longer stall the page.
  • A storage usage bar shows how much of your plan's allowance you have used.

Deletes that cannot silently break things

Deleting a template, sender, SMTP server or secret that a Shopify Flow step still points at used to leave that workflow quietly broken - it would keep running and keep failing.

  • Every delete now checks for references first. If something is in use, the delete is blocked and the app tells you exactly what to update.
  • Files are checked the same way, so removing an image from one template cannot break another that reuses it.

Also

  • Per-store attachment storage caps, with clear messaging when you reach one.
  • An access trail for any read of an encrypted credential.
Newv1.5.031.05.2026

Send from your Microsoft 365 or Google account - no SMTP credentials

The biggest change since launch: you no longer need SMTP credentials at all.

Connected accounts

  • Microsoft 365 and Google can now be connected with one click from Email senders → Connected accounts. Sign in once, approve access, and send on behalf of that mailbox. Tokens are refreshed automatically in the background.
  • Covers more than your own inbox: Microsoft shared mailboxes and group mailboxes, and Google "Send mail as" aliases, each shown with its own badge.
  • Send test email from the Email senders page confirms a mailbox works before you wire it into a workflow.

Why this matters: app passwords and stored SMTP credentials are a liability - they expire, they get rotated, and they sit in a database. OAuth removes all three problems, and mail sent through your own provider inherits your own domain reputation.

A new attachment system

  • Attachments now work in plain text and HTML layouts as well as visual ones.
  • Up to 20 MB across all files on a template. Anything above that is automatically offered as a download link in the email footer instead of an inline attachment.
Improvedv1.4.029.05.2026

Built for Shopify - save bars, unsaved-changes protection and cleaner navigation

A pass over every screen to meet Shopify's Built for Shopify standard, so the app behaves the way the rest of your admin does.

  • Unsaved changes are protected. Every form now uses Shopify's native save bar. Navigating away or switching tabs with pending edits prompts you first, rather than quietly discarding your work.
  • Native back navigation throughout, so the browser and admin back buttons go where you expect.
  • Consistent use of toasts for confirmations and inline errors for validation, instead of banners competing for attention.
  • Critical (red) styling is now reserved for genuine errors and destructive actions, so a red badge always means something is actually wrong.
  • Reworked dashboard with metric cards, a date range picker and an events chart.
Improvedv1.3.022.05.2026

New EU infrastructure - faster, and encrypted end to end

The app now runs on a new European cloud platform. Nothing changes in how you use it, but underneath:

  • Databases and caches are region-local in the EU, with encryption at rest.
  • Your credentials - SMTP passwords, OAuth tokens and secrets - are now individually encrypted with a dedicated key management service, on top of disk-level encryption. Plaintext is never stored.
  • Redundant instances across availability zones, with automatic scaling under load.
  • Faster action execution, and far better behaviour when a lot of workflows fire at once.
Improvedv1.2.027.04.2026

Rich text editing, in-app chat and steadier request handling

  • Rich text editing - write an email body with a normal formatting toolbar instead of raw HTML, and switch to HTML whenever you need full control.
  • In-app chat - reach us from inside the app without hunting for an email address.
  • Fixed Liquid rendering edge cases where certain values were not substituted correctly.
  • Fixed saving an HTTP request with an empty body, which previously failed for endpoints that legitimately take none.
  • Improved how HTTP requests are processed under load, so a burst of Flow runs no longer slows the queue behind it.
Newv1.1.024.03.2026

A visual email builder, plus template export and import

Writing HTML by hand is a poor way to design an email. So now you do not have to.

Visual email builder

  • Build a layout from blocks - heading, text, image, button, divider and spacing - and see it render live next to the settings panel.
  • Layout blocks: put an image beside text, or split a row into two columns with configurable widths and gaps.
  • Branding settings for colors, fonts, spacing and content width apply across the whole email.
  • Test variables let you preview the design with realistic data before sending anything.

Export and import

  • Export any email template and import it into another store. Useful for agencies running the same design across several clients, and for keeping a backup of a layout you spent real time on.
Newv1.0.020.03.2026

Workflow Transactional Email 1.0 - email and HTTP requests for Shopify Flow

The first release. Shopify Flow can automate plenty inside Shopify, but it cannot reach out - this adds two actions that can.

  • Send Transactional Email - send branded email from your own SMTP server. Gmail, SendGrid, Mailgun, Amazon SES, or your own mail server.
  • HTTP Request - call any external API, webhook or service. GET, POST, PUT, PATCH and DELETE, with custom headers and a JSON body. Works on every Shopify plan, including Basic, where Shopify's own HTTP action is not available.
  • Secrets - store API keys, tokens and passwords once and reference them anywhere as {{ secrets.keyName }}. Never exposed in templates, configuration or logs.
  • Liquid templating - build dynamic subjects, bodies, URLs and payloads from Flow data with {{ variables.xxx }}.
  • Email templates - reusable subject and HTML body, so one design serves every customer.
  • Event history - every execution logged with its request and response detail, plus usage, plan limit and success-rate cards on the dashboard.
  • No Shopify permissions - the app requests no access scopes and never reads your shop data.