There are three ways to change what a WooCommerce email looks like, and picking the wrong one is why most people end up frustrated. WooCommerce’s own settings let you change the header image, colours and footer text with no code, which is enough for a lot of stores. Overriding the template files gives you full control but needs PHP and a child theme, and your overrides then need maintaining against WooCommerce updates. The third route, a plugin like ShopMagic, lets you paste a complete HTML email and send it unaltered, which is what you want when a designer produced the template or when the message is not tied to an order status at all. Below: which route fits which situation, and the email HTML rules that decide whether the result survives Outlook, because that is where most custom templates actually fail.
How do you create a custom email template in WooCommerce?
Start by working out how far you need to go, because the three routes differ enormously in effort.
Route one: the built-in settings, no code. In WooCommerce → Settings → Emails, at the bottom, there is an Email sender options and Email template section. You can set a header image, the base colour, the background colour, the body background and the body text colour, plus the footer text. This is not nothing: it puts your logo at the top and your brand colour through the headings of every transactional email, and it survives updates because you have not touched any files. For a large share of stores this is the whole job, and it is worth exhausting before going further.
Route two: template overrides, PHP required. WooCommerce’s email templates are PHP files, and you can copy them into your child theme under yourtheme/woocommerce/emails/ to change the markup itself. This gives you complete control over structure, not just colour. The cost is ongoing: WooCommerce updates its templates, and an override that was correct two years ago can quietly fall behind and start rendering wrongly or missing new data. If you take this route, note somewhere which files you have overridden and check them after major updates.
Route three: send your own HTML, no PHP. This is for when you have a complete email design and want it sent exactly as built. The problem with pasting HTML into a normal editor is that WordPress sanitises it and strips tags that email layouts depend on, which is why a design that looked right in the editor arrives broken. ShopMagic’s Send Email – Raw HTML action bypasses that: the content goes out as written, unaltered.
Route three also covers something the other two cannot. WooCommerce emails only exist for order statuses, and WordPress on its own has no email template system at all beyond a handful of filters for account notifications. If the message you want is not tied to an order (a welcome email, a win-back, an announcement, anything on a plain WordPress site) there is no template to edit, because there is no email. A plugin creates both the trigger and the message.
Which to pick: if you want your logo and colours, use the settings. If you need different markup inside the standard WooCommerce wrapper, override the template. If you have a designed HTML email, or the email does not correspond to an order status, use Raw HTML.
ShopMagic
We've got WooCommerceemail template html code, WordPress email templates, WooCommerce email templates, and much more. With ShopMagic you can also edit email templates in WooCommerce!
Download for free or Go to WordPress.orgTable of contents
- How do you create a custom email template in WooCommerce?
- What WooCommerce and WordPress give you by default
- The email HTML rules that decide whether it works
- Custom emails with ShopMagic
- Sending raw HTML
- Plain text emails and placeholders
- Testing before you send
- Summary
- Frequently asked questions
What WooCommerce and WordPress give you by default
WordPress on its own has no email templates. The emails it sends (new account, password reset, new comment) are assembled in code and the only way to change them is through filters such as wp_new_user_notification_email, added in a child theme or a small plugin. Editing WordPress core files to change them is not a route at all: your changes disappear at the next update and you lose the ability to update safely.
WooCommerce is better off, with two layers. The settings layer is the no-code one described above. Beneath it sit the template files, which are proper PHP templates designed to be overridden from a child theme rather than edited in place.

The real limit is not customisation depth, it is coverage. WooCommerce has eleven transactional emails and every one of them is tied to an order status. There is no template for a welcome message, a review request, a win-back or an announcement, because WooCommerce does not send those at all. No amount of template editing creates an email that does not exist.
The email HTML rules that decide whether it works
This is the part that catches people out, and it applies whichever route you take.
Email HTML is not web HTML. Email clients render with engines that are years or decades behind browsers, and Outlook on Windows uses Microsoft Word’s rendering engine. A modern, beautifully built responsive page pasted into an email will arrive broken, and it will look fine in your own preview while doing so.
The constraints worth knowing before you design anything:
Lay out with tables, not flexbox or grid. Nested tables are the standard approach and remain so for good reason.
Put CSS inline, on the elements. A <style> block in the head is stripped or ignored by several major clients. Inline styles survive.
Use absolute URLs for every image. A relative path resolves against nothing in an inbox. Host images on your own domain with the full https:// address.
Keep the width around 600 pixels. Wider gets clipped in narrow preview panes.
No web fonts, no background images, no JavaScript. Specify a font stack ending in a system font, because that is what most recipients will see. JavaScript is stripped entirely.
Assume images are blocked. Many clients block them by default, so the email must make sense without them. This is why alt text on an image button matters more here than on a web page.
Test in Outlook specifically. If a design works in Outlook it generally works everywhere. The reverse is emphatically not true, and a design verified only in Gmail’s web client has not been tested.
If this sounds like a lot, it is a reason to start from an existing email framework or a tested template rather than building from scratch. It is also a reason not to reject the built-in WooCommerce template too quickly: it is plain, but it has been tested across clients for years, which your hand-built one has not.
Custom emails with ShopMagic
Where a plugin earns its place is in creating emails that do not exist in WooCommerce, and in sending HTML without it being mangled.
You can build as many automations as you need, each with its own message, and each can use the WooCommerce template, no template, or your own HTML.

Sending raw HTML
The Send Email – Raw HTML action exists because of a specific problem: choosing no template in the standard Send Email action still routes content through the WordPress editor’s sanitisation, which strips tags that email layouts rely on. Raw HTML takes what you paste and sends it unchanged.

Two things to keep in mind when you use it.
Unchanged means unchanged. Nothing corrects your markup, adds a wrapper or fixes a missing closing tag. The rules in the previous section are entirely your responsibility here.
Placeholders still work inside raw HTML, so personalisation does not force you back to the standard editor.

Plain text emails and placeholders
Send Email – Plain Text sends a true plain text message, with no HTML at all. It sounds like a step backwards and occasionally it is exactly right: internal notifications to yourself or colleagues, messages to customers whose clients render HTML badly, and situations where a plain message reads as more personal than a designed one.

Placeholders
Placeholders (variables) insert order and customer data into the subject, heading and body. The full list sits in the right-hand panel of the action, so you do not have to remember them.
Watch the syntax. Placeholders use double curly braces with spaces inside: {{ customer.email }}. A single brace or a missing space means the placeholder is not recognised and the raw text is sent to your customer exactly as typed, which is the most common cause of an email arriving with { customer.email } visible in it.
Among the more useful ones for internal notifications, {{ order.admin_url }} links straight to the order edit screen in the admin panel, so a Slack or email alert about a new order is one click from the order itself.
Shortcodes in email content
WordPress shortcodes are not processed in email content by default. To enable them, add this filter in your child theme’s functions.php or a small plugin:
add_filter( 'shopmagic/core/action/sendmail/raw_message', 'do_shortcode' );
Add it to a child theme, not the parent, or it disappears at the next theme update.
Testing before you send
Three checks, in order, and each catches a different failure.
Send a test to yourself. The action has a Send test function. This confirms the automation fires and the email leaves the site, which are two separate things.
Check it on a phone. Most commercial email is opened on mobile, and a 600-pixel table that was never checked at phone width is the commonest visible defect.
Check it in Outlook. Already said above, repeated here because it is the step people skip. If you have no Outlook available, a rendering-test service is worth the cost for one month while you build the template.
One extra check specific to placeholders: send the test against a real order rather than an empty one, or everything personalised will look fine while resolving to nothing.
Summary
Customising a WooCommerce email template is three different jobs depending on how far you need to go, and most frustration comes from starting with the hardest one. The built-in settings in WooCommerce → Settings → Emails change the header image, colours and footer with no code and survive updates, and for many stores that is the entire requirement. Overriding the PHP templates from a child theme gives full control of the markup but creates an ongoing maintenance obligation, since WooCommerce updates its templates and your copies do not follow. Sending your own HTML through a plugin avoids both the PHP and the sanitisation that otherwise strips email-critical tags.
The decision that is not about customisation at all is coverage. WooCommerce has eleven transactional emails and every one is tied to an order status, while WordPress alone has no email template system beyond a few filters. If the message you want is a welcome, a win-back, a review request or anything not corresponding to an order status, there is nothing to customise because there is no email, and a plugin is creating the trigger as much as the design.
Whichever route you take, the email HTML rules decide the outcome: tables rather than flexbox, inline CSS rather than a style block, absolute image URLs, roughly 600 pixels wide, no web fonts or JavaScript, and a layout that still makes sense when images are blocked. Outlook is the real test and a design verified only in Gmail has not been tested. This is also the strongest argument for not discarding the default WooCommerce template too quickly: it is plain, but it has been checked across clients for years in a way a hand-built template has not.
Before going live, send a test against a real order rather than an empty one, open it on a phone, and check the double-brace placeholder syntax. A customer receiving an email with the raw placeholder text still in it is the most visible failure here, and the easiest to catch.
ShopMagic
We've got WooCommerceemail template html code, WordPress email templates, WooCommerce email templates, and much more. With ShopMagic you can also edit email templates in WooCommerce!
Download for free or Go to WordPress.orgFrequently asked questions
Can I customise WooCommerce emails without code?
Yes, up to a point. WooCommerce → Settings → Emails lets you set a header image, base and background colours, body text colour and footer text with no code at all, applied to every transactional email.
How do I change the WooCommerce email template itself?
Copy the relevant template into your child theme at yourtheme/woocommerce/emails/ and edit it there. Never edit the plugin’s own files, since updates overwrite them, and keep a note of what you have overridden so you can check it after WooCommerce updates.
Does WordPress have email templates?
No. WordPress assembles its own notification emails in code, changeable only through filters such as wp_new_user_notification_email. There is no template to edit and no admin screen for it.
Why does my HTML get broken when I paste it into an email?
The WordPress editor sanitises content and strips tags that email layouts depend on. An action that sends raw HTML, such as ShopMagic’s Send Email – Raw HTML, sends what you paste without alteration.
Why does my email look fine in Gmail but broken in Outlook?
Outlook on Windows renders with Microsoft Word’s engine, which ignores much of modern CSS. Use table layouts and inline styles, and treat Outlook as the test that matters rather than the exception.
Why is a placeholder showing as text in the email customers receive?
Almost always the syntax. Placeholders need double curly braces with spaces inside, as in {{ customer.email }}. A single brace or a missing space means it is not recognised and the raw text is sent as typed.
Can I use shortcodes in email content?
Not by default. Adding the filter shopmagic/core/action/sendmail/raw_message with do_shortcode in a child theme or small plugin enables them.
Can I create an email WooCommerce does not have, such as a welcome email?
Not by editing templates, because the email does not exist to be edited. A plugin creates the trigger and the message together, which is also how you reach WordPress events on a site with no shop.





