Hey all, I too had this issue and it made me abandon my nicely formatted emails entirely for many months. Fortunately, I have created a fix that works on Server Edition 26.8.4.3664 and may also work on other recent Manager versions.
GitHub Link: https://github.com/zdb00/managerio-email-tags
This is a third-party extension and is not part of, or endorsed by, Manager. As with any Inline Custom Button, users should review the source before installing it.
This extension adds dynamic tags and legacy Liquid support to Sales Invoice emails. Integrates with and fixes Manager’s existing email composer.
Install
- In Manager, go to Settings → Custom Buttons → New.
- Set Name to
Enhanced Email(or anything you’d like). - Set Source to Inline and paste the entire contents of manager-email-bridge.html into the HTML field.
- Set Placement to
sales-invoice-view. - Save, open a Sales Invoice, and click Enhanced Email.
Add your placeholders to Manager’s existing Sales Invoice Email Template, then reopen the invoice with the new custom button. Review the prepared email and click Manager’s normal Send.
Manager’s email settings must already be configured. The customer needs an email address, and Hide balance due must be off on the invoice.
Dynamic tags
These tags work in both the subject and body. Copy the spelling and capitalisation exactly.
| Tag | Value |
|---|---|
{BusinessName} |
Business name |
{CustomerName} |
Customer name |
{CustomerEmail} |
Customer email address |
{InvoiceNumber} |
Invoice reference |
{InvoiceReference} |
Same as InvoiceNumber |
{InvoiceDate} |
Formatted invoice date |
{DueDate} |
Formatted due date, or blank if missing/hidden |
{InvoiceTotal} |
Full invoice total |
{BalanceDue} |
Outstanding balance, including zero for a fully paid invoice |
Unknown tags stay unchanged. If the balance cannot be determined safely, the extension shows an error.
Example of a message using Dynamic tags:
Dear {CustomerName},
Invoice {InvoiceNumber} has an outstanding balance of {BalanceDue}, due on {DueDate}.
Compatibility with old Liquid
You can mix simple tags and Liquid in the same template. Every tag above also works as a Liquid variable, such as {{ CustomerName }} or {{ BalanceDue }}.
These older variables are supported:
{{ reference }}
{{ recipient.name }}
{{ recipient.email }}
{{ business.name }}
Existing Liquid loops, conditions and captures can use these exact labels:
| Collection | Supported labels | Value property |
|---|---|---|
fields |
Invoice date, Due date |
field.text |
table.totals |
Total, Balance due |
total.text |
For example, this old balance lookup works unchanged:
{% for total in table.totals %}
{% if total.label == 'Balance due' %}
{{ total.text }}
{% endif %}
{% endfor %}
Compatibility covers the variables listed here; other old theme variables, line items and custom fields are not included. Body values are already HTML-escaped, so remove an extra | escape filter from these values if your old template uses one.


