Email
The Email action is for sending email. βœ… It supports the store's email templates, and supports attachments constructed by file generators.

Restrictions

Mechanic sends email via Postmark, our email provider. Currently, Mechanic only supports Postmark's transactional message stream, which means that marketing and other bulk mail may not be sent. To learn more about what is and isn't a transactional message, see Postmark's article: "What are Transactional emails?".

Options

Option
Description
to
Required; an array or comma-delimited string of recipient addresses
subject
Required; a string specifying the message subject
body
Required; an HTML string of body content; supports HTML and CSS
cc
Optional; an array or comma-delimited string of cc addresses
bcc
Optional; an array or comma-delimited string of bcc addresses
reply_to
Optional; a single reply-to address
from_display_name
Optional; a string controlling the name (but not the address) of the sender
template
Optional; a string naming an email template from the current Mechanic account
attachments
Optional; an object specifying files to attach, using file generators​
...
Additional options may be provided, and will be made available to email templates as variables, named after each option

Message formatting

HTML and CSS

Mechanic parses each email body for HTML and CSS, allowing authors to use <style> tags without having to think about email client compatibility.
If you're simply trying to add formatted text and aren't ready to dig into the code yourself, try using a tool like wordtohtml.net to quickly generate usable HTML.

Embedded images

Images may be embedded using the <img> tag, but must be hosted independently. Shopify provides basic file hosting, appropriate for uploading images for use with Mechanic emails. To learn more, see Uploading files to your website.

Changing the sender address

This action only supports sending from a single address (regardless of the sender name, as controlled by the from_display_name option).
By default, the sender address is a Mechanic address based on the store's myshopify.com subdomain. For example, the store example.myshopify.com will default to having its mail sent from [email protected]
Changing the sender address involves adding it to the store's Mechanic account, and then configuring the email domain name with some DNS records for verification.
For more on this, see Custom email domain.

Template

To achieve easily reusable headers and footers, Mechanic can be configured with one or more email templates, available in the Mechanic account settings. To learn more about configuring email templates, see Email templates.
To use a specific email template with the Email action, use the template option to specify the name of the desired email template.

Creating template variables

All options used with the Email action will be made available as Liquid variables for the email template. This means that standard options may be used, like {{ subject }} and {{ body }}, and also custom options: passing in an order option, containing order data, may allow the email template to show the order name via {{ order.name }}.
Note that custom options, like all task options, must be provided using standard JSON. This means that the data made available to email templates will be derived from plain JSON values.
For example, consider this action:
1
{% action "email" %}
2
{
4
"subject": "Thanks for your order!",
5
"template": "order_acknowledgement",
6
"order_data": {{ order | json }}
7
}
8
{% endaction %}
Copied!
The template named "order_acknowledgement" could include the following Liquid, and get the expected results:
1
This is the first item: {{ order_data.line_items.first.title }}
Copied!
But, because order_data is a plain hash based entirely on JSON data, instead of being an enhanced order object (see Environment variables), the following Liquid usage would fail:
1
Remember order {{ order_data.customer.orders.any.first.number }}, your first ever?
Copied!

Attachments

This action supports attachments given in Mechanic's file generator format. This structure allows the sender to construct a variety of files, including ad-hoc text-based files, PDFs rendered from HTML, files dynamically downloaded from external locations, and ZIP files containing any other files.
For more on this, see File generators.

Examples

Simple

Liquid
JSON
1
{% action "email" %}
2
{
4
"subject": "Hello world",
5
"body": "It's a mighty fine day!",
6
"reply_to": {{ shop.customer_email | json }},
7
"from_display_name": {{ shop.name | json }}
8
}
9
{% endaction %}
Copied!
1
{
2
"action": {
3
"type": "email",
4
"options": {
6
"subject": "Hello world",
7
"body": "It's a mighty fine day!",
8
"reply_to": "[email protected]",
9
"from_display_name": "Example Store"
10
}
11
}
12
}
Copied!

Using HTML

Liquid
JSON
1
{% capture email_body %}
2
<b>Hello!</b>
3
​
4
It's fantastic to see you!
5
{% endcapture %}
6
​
7
{% action "email" %}
8
{
10
"subject": "Hello world",
11
"body": {{ email_body | unindent | strip | newline_to_br | json }}
12
}
13
{% endaction %}
Copied!
1
{
2
"action": {
3
"type": "email",
4
"options": {
6
"subject": "Hello world",
7
"body": "<b>Hello!</b><br />\n<br />\nIt's fantastic to see you!"
8
}
9
}
10
}
Copied!

Using attachments

Liquid
JSON
1
{% action "email" %}
2
{
4
"subject": "An image test",
5
"body": "Please see attached. :)",
6
"attachments": {
7
"a_configured_image_from_the_web.png": {
8
"url": "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"
9
}
10
}
11
}
12
{% endaction %}
Copied!
1
{
2
"action": {
3
"type": "email",
4
"options": {
6
"subject": "An image test",
7
"body": "Please see attached. :)",
8
"attachments": {
9
"a_configured_image_from_the_web.png": {
10
"url": "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"
11
}
12
}
13
}
14
}
15
}
Copied!
Last modified 7mo ago