Email best practice

Your email marketing accessibility checklist

It’s the 2020s. Your marketing emails need to be accessible. It’s an ethical and legal obligation. Actually, scrap that – it’s simply the right thing to do.

But there are a lot of accessibility considerations, and therefore a lot of things to accidentally overlook. Here’s a handy checklist to keep your emails on track.

Use proper text

Images of text is awful practice and a major barrier to accessibility. Don’t do it – ever.

Use a minimum body copy font size of 16 pixels

That is generally agreed upon to be the smallest acceptable size for body copy. A bit bigger is even better. And it’s worth getting out of old habits of rendering footer content in miniscule lettering. If something is important enough to include in an email, it’s important enough to be readable.

Left-justify paragraphs of text

Centered text is fine for headings and calls‑to‑action. Larger blocks of copy, however, should always sit to the left. It’s easier on the human eye and an easily-implemented accessibility improvement.

Code semantically

HTML is full of descriptive elements like <h1> for primary headings and <footer> for, well, footers. Use them. Alternatively, you may wish to consider their ARIA equivalents.

Describe your tables

Add role="presentation" to every table that makes up your email (unless it is actually a data table of course). The HTML <table> element is repurposed in emails for structure rather than data, so make sure it’s marked as such.

Use responsive code properly

Your email’s content should fit to any screen size. But if you need to resort to cheating – i.e. doubling up blocks of content with separate desktop and mobile sections – then your design needs to be re-evaluated.

Use high contrast colouring

Low contrast can be difficult for a visually‑impaired person. Make sure your text, buttons and images stand out. How do you know if the contrast is sufficient? Try running your view online link through the Web Accessiblity Evaluation Tool.

Use high‑resolution imagery

Low resolution (or actual size) images look blurry on modern high density screens. Make sure all of your images are saved at double the maximum logical resolution at which they’ll appear in your email.

Optimise your images

Big file sizes + email is not a good combo. Mobile users in slow network areas will experience sluggish download times and potential broken images.

Describe images via alt tags

Readers using screen readers won’t know what your images depict unless you describe them. Developmental laziness excludes customers. Take a few seconds to type photograph of this or illustration of that.

Use blank alt tags on decorative images

But don’t waste your reader’s time by tagging images as decorative curve or suchlike. It’s just fluff.

And keep decorative images to a minimum

The more complex your design, the more section‑hopping a screen reader needs to perform. Not to mention the greater the chance of your email breaking. Web is the place for fancy. Email works best with a little more restraint.

Prepare for non‑animated animated GIFs

Outlook doesn’t like GIFs. It’ll only show the first frame. If something essential sits later in your animation, not everyone will see it.

Go easy on the GIFs

TV shows are announced with a warning when strobe effects or other flashing colours are coming up. You don’t have the luxury of forewarning people in email, so keep your animated GIFs gentle.

Use PNG images with transparency

Logos, icons and other non‑rectangular images can be unexpectedly left sitting in blocks of colour on dark mode. Use PNGs with transparency instead to let them blend naturally.

Don’t put critical content in background images

Because background images in email have a flaky history. Use them for cosmetic purposes only, and make sure your email still looks good if it falls back to a flat colour.

Maintain a consistent layout

It’s fairly popular in email to have alternating left/right layouts for images and text from story to story. Because it… looks cool? But from a screen reader’s perspective, the layout is confusingly inconsistent. A uniform design is much easier to navigate. Oh, and don’t be tempted to mess with the page’s tab index sequence instead!

Use plenty of white space

Too many things crammed together is visually distracting. Space items apart and give your design room to breathe.

Don’t cluster links

Text links or other small elements should never be close to each other. It’s confusingly fractured, and a finger pressing a touchscreen is liable to hit the wrong one.

Big buttons

Your major links should be presented as large, easy‑to‑press buttons. That keeps them both visually and functionally prominent. For maximum accessibility, make sure they are clickable all over and not just the text in the middle.

Design and code for dark mode

Oh, and on that topic – make sure your email is explicitly coded for dark mode. That means a carefully selected alternative colour palette and possibly substitute images in places that make sense.

Write concise copy

Rambling passages of text are not well‑suited to marketing emails (great for blogs though!). Tell people the essentials and let them click through to a website if they’re interested in the full story.

Don’t use cryptic subject lines or preheaders

Open-bait subjects don’t do anyone any favours. Respect your customer’s time by letting them know in advance if a message is worth opening.

Use descriptive calls‑to‑action

Ambiguous and mixed links are common in email. Often a feature’s image links to a different place than its button. You may know what goes where, but your customer does not.

Don’t overlink

Linking every square inch of your mailing to a landing page is frustrating for the end user. Only link calls-to-action or images that make logical sense. Paragraphs of text do not warrant links!

Keep your code under 100KB

Or your email will be clipped in Gmail.

Always include a view online link

Your email may be rendering perfectly in all of your tests, but that’s not the point. Your user may prefer or need to view it in a browser for personal reasons.

Don’t send from a no-reply address

Email is a communication tool. Don’t send the wrong message by making it a one-way street.

Send relevant content

Segmentation and targeting isn’t the most obvious aspect of accessibility, but it is one nonetheless. Presenting people only with relevant information helps to ensure that your mailings feel inclusive.

Test, test, test

Testing deserves a checklist all of its own. Broadly speaking, the following accessibility aspects of your email need to be checked for every send:

  • Visual check: the most obvious one. Your email needs to look presentable on as many devices and email applications as possible. A bank of real devices and/or previewing service like Litmus is a must.
  • Screen reader check: knowing how your email sounds is often overlooked. Look out for phrases like “2X points”. That may make sense when read, but when spoken it’ll sound like “two x” than “two times”.
  • Dark mode check: if you check light mode only, you’re only getting half the picture. Always take the time to check your email in forced dark mode environments like Outlook, and in controlled dark mode environments like iPhone Apple Mail.
  • Images-off check: your email needs to remain perfectly understandable even if images fail to load – which can happen for various reasons.

Is that everything?

Probably not. Accessibility is not black and white – it’s a scale. But the good news is that you don’t need to produce the perfect accessible email overnight or indeed ever. Every step towards more accessible emails is a victory in itself.

Email best practice

Let Outlook be Outlook

Microsoft Outlook is notorious in the email marketing world. It doesn’t do modern HTML and CSS. It has a thing for splitting emails apart at the seams with rogue white lines. All in all, it’s a pain.

But that’s ok. Here’s why.

You can’t repair software via an HTML email

Outlook is a desktop application. The kind that’s coded in a complex language like C++ or suchlike. Oh, and it uses Microsoft Word – yes, the word processor – as its rendering engine.

A remote email developer has the following tools at their disposal: HTML, CSS and VML. None of these are programming languages. Their purpose is content and presentation. Therefore none of them can be used to re-engineer Outlook’s functionality. The best that can be done is to circumvent Outlook’s quirks and take steps to minimise their chance of occuring.

Acceptance ≠ apathy

Accepting Outlook’s limitations doesn’t mean doing nothing about them. Marketing emails should be designed and coded to degrade gracefully. That means designing and coding in such a way that your email can be progressively simplified and still look presentable.

Your reader probably isn’t using Outlook

Are you in the B2C market? It’s likely that only a tiny portion of your readership is using the desktop Windows application. Outlook has a mere 4% market share.

As you’d expect, most Outlook users will be present in the B2B sector. This however is no reason to panic. Design and develop accordingly.

Outlook can mean many things

It’s a Windows application. Plus there’s an online interface for Outlook 365. There’s also a Mac version that is quite different in every way. Oh, and there’s Outlook.com the webmail service. And its associated mobile app. With iPhone and Android flavours of course.

We’re not done yet. The Windows application has various editions. 2013, 2016, 2019 for starters. How these render your emails can even change according to screen density. Have you lost count of all the Outlooks? I have.

Your subscriber doesn’t care (so neither should you)

Email is a transient, fleeting thing. Its purpose is to communicate a message or an offer swiftly and clearly. Looking pretty is secondary.

That doesn’t mean it’s not worth the effort to design great‑looking emails. It is. It’s even worth a bit of effort to sort out Outlook problems.

But what is not worthwhile is frittering hours and hours of your time to get rid of a 1‑pixel glitch in one version of Outlook. Your customer is interested in what you have to offer. I can’t guarantee that they won’t notice a trivial rendering glitch, but I’ll bet money on the fact that they won’t care.

Example of a rogue white line in Outlook
White line: campaign-stopping crisis or trivial fact of Outlook life?

Time is money

This is business and we’re all here to make money. Investing resources on trivial matters is a poor effort‑to‑reward payoff.

If you’re sending a richly designed mailing, you’re likely to trigger an unwanted rendering glitch in at least one version of Outlook. From an email developer’s perspective, the cause is purely down to chance – as is the solution. And that solution could potentially take hours to unearth, if even possible. Accept it as a triviality and move on to something more important.

We’re stretching the medium beyond its intended capabilities

Email used to exclusively mean a letter‑like digital message sent from one person to another. Probably with some kind of hilarious cat joke, and possibly a threat that something awful will happen if you don’t forward it to ten friends. As a format, email consisted of words typed on a plain background, perhaps with a picture or two attached for download. That’s what email was.

At some point along the line, the technology became (somewhat) intertwined with the HTML and CSS code that powers the web. That afforded significant improvements in styling and branding, which is nice. But the pendulum has perhaps swung too far. It’s now common for companies to send marketing emails that resemble mini‑websites – a far cry from its electronic mail origins. Should we be surprised that it breaks?

Conclusion

Outlook isn’t all bad. Seen through the right lens, it’s a reminder to focus on content rather than decoration. Follow best practice in your emails and let Outlook do what Outlook does.

Email best practice

It’s a feature, not a bug: email edition

Are those pesky email applications messing with your design? You didn’t want that address to be automatically linked to Maps, and you certainly never asked for telephone numbers to be underlined! It’s time to squash the bugs.

The battle begins

Overriding a piece of email software’s functionality often isn’t a simple task. The only tools at our disposal are HTML, CSS and a bit of imagination. Email development forums are awash with questions and suggestions on this topic, plus a graveyard of now-defunct solutions. There’s much trial & error, and the successful method usually amounts to some kind of hacky trick.

Here’s an example. Some versions of the Outlook mobile app will recognise and auto-link dates and times to the user’s calendar. This also turns the associated copy blue. One effective solution is to secretly break up the text with an invisible special character called a zero-width non-joiner. Congratulations – you have successfully tricked an application into losing functionality!

Don’t fight functionality

But why would anyone want to do that? The fact that there’s often no easy ‘fix’ for these ‘problems’ says a lot. The problem does not lie within the application’s functionality. It lies within the sender’s design and objectives.

Suppressing a piece of functionality is not in the spirit of accessibility. And to be frank, it’s not the sender’s decision to make. Nobody likes it when a website blocks or forces the opening of links in new tabs. A similar etiquette applies to the world of email.

Design around it

Addresses are another type of content that could be auto-linked and coloured blue. If they’re sitting on a coloured background, that could result in an ugly clash and illegible text. The solution: place them on a white background instead. Cosmetics do not trump usability.

Example of address in an email being auto-linked to maps
Outlook has helpfully linked that address to the maps application. Should we break that… or change our background colour instead?

Reallocate the effort

I mentioned trial & error earlier. That means editing code, uploading it to an email platform, sending tests, and checking them on real devices and/or previewing services. All of this all takes time. But this is not a task that deserves it.

Imagine what could be created in that time rather than destroyed. Optimum email designs. Improved accessibility. Better content. Don’t squash the ‘bugs’ – give them a better habitat instead.

Email Marketing

The six steps of email personalisation

Do you seek the holy grail of email personalisation? Or as it’s known by its other name: one‑to‑one content.

As technologies have become more sophisticated, so too have customer expectations. But to reach the point of true personalisation is a journey with several steps.

1. Say my name

Let’s start with the bargain basement of personalisation. Greeting your customer by name in a subject line has been measured to increase open rates by more than 25%.

Just don’t mess that name up. "Hi, Adrian" is good. But "Hi, ADRIAN", "Hi, adrian", or "Hi, Young" looks bad. Yes, it would be me the customer who had made a mistake with your form in the first place. But the onus falls upon you to validate and fix your data.

2. Preferential treatment

At The Email Factory, we swear by preference centres. What better way to embark on an email journey with a new subscriber than by letting them pick and choose what to receive?

A preference centre gives your customer the choice of content or product types. But why stop there? Grant your customer further control over their inbox by including frequency and timing options.

3. Divide and convert

Whether your mailing list weighs in at a few hundred or a few hundred thousand, it is comprised of individuals. Not everyone is interested in the same content. So why send everyone the same email?

Segmentation is an essential part of email marketing. Divide up your lists into categories and keep your subscribers engaged with relevant content.

4. On your best behaviour

Personalisation isn’t all about what your customer likes but also what they are doing. And none of your customers are doing exactly the same thing at the same time. There are those that have newly discovered your brand. Some have just treated themself to a shiny new product. Others haven’t engaged with you for a while. Your task is to communicate with each of them based on their current actions.

Behaviour‑based emails let you react automatically to your customer’s activity (or lack thereof). When someone signs up, a welcome series is launched. If your customer has recently purchased a product, that can trigger an invitation to review it. For those who haven’t interacted for a while, a re‑engagement programme can rekindle their interest.

5. Where in the world

Your customer’s location matters. Maybe there’s an in‑store event or other locally relevant content to share. You might even want to send automatically-tailored content based on the local weather. Those hooded jackets sound a lot more useful when it’s pouring outside.

Location doesn’t only determine what to send but also when to send. Send time optimisation ensures that your subscribers receive your emails at a time of day that is personally convenient.

6. Welcome to the machine

As humans, we can only do so much. Luckily that "much" includes the development of ever‑more‑sophisticated machine learning software. As email marketers, we can harness that technology and take personlisation to another level.

Product recommendations are the obvious showcase, for now. Why guess at what your customer might like to buy when you can learn patterns from their previous purchasing and browsing activities?

While the current capablities of generative AI have been over‑hyped, its future potential is hard to grasp. Every aspect of your email, from copy to imagery to layout to timing to colouring, could all be generated on an individual basis.

True email personalisation

Your customer is a human and an individual. But they are likely one of many thousands. To talk to them one‑to-one ironically requires a fundamentally impersonal means of machine‑based automation. The concept of chummy person‑to‑person communication is an illusion.

But what really matters is relevance. Present your subscribers with the content that matters to them and the results will speak for themselves.

Email best practice

Simple email design for a fragile medium

Google recently caused a ruckus in the world of email marketing. As part of an update to Gmail, support for background images was (accidentally) knocked out. Oops. The result was an industry of marketers in panic.

Email developers scrambled to find a fix. Workarounds were found, and Google ultimately resolved the fault at their end. Crisis over. This incident will soon be forgotten – which is a pity, as there lessons to be learned.

Things change

This isn’t the first time such an event has occurred. Changes to email platforms are fairly regular. Sometimes for the better, sometimes for the worse. I recall at least two times when a major email platform made a change that immediately broke responsive stacking content on mobile devices.

Or how about some ancient history? In 2007, Microsoft made the infamous decision to switch its ubiquitous Outlook application from a web browser-style rendering engine… to one based on Microsoft Word.

These sort of sudden, unexpected developments vary from subtle to industry-changing. But they have a couple of things in common:

  • They are beyond our control as email marketers.
  • The more complex the email, the greater the chance of it being affected.

Ours is a diverse but fragile digital environment

One customer is viewing your email in Apple Mail on an iPhone 14 Pro Max in dark mode. Another is looking at it in the Gmail web app in Firefox on Windows 10. Someone else is using a little-known third party Android app on a flip phone. The point – there are countless devices, platforms, versions and personal settings to cater for.

Now add Outlook and its archaic code support to the equation. With all this in mind, it’s clear why HTML emails can only work thanks to an array of coding tricks and extensive ongoing testing. The more complex the design, the more liable it is to break now or in the future.

Overloading the medium

Like all email developers, I’ve been faced with many moments of hair-pulling frustration. Inexplicable gaps in emails, font problems, wrestling with truncation… the list goes on and on. This raises a question – why are we going to all this trouble?

Thinking specifically about the Gmail background troubles, I cannot imagine any email content in which a background image is essential. Nice, sure. Fancy, sure. But essential, no. As a means of conveying useful information to a customer, a regular image and some text will do just fine.

Comparison of a resort image with overlaid text and with text underneath

All of this boils down to the fact that email is far more fragile than a website. And that is not a bad thing. The trouble only starts when we try to force email beyond its capabilities.

Simplicity is key

Most email development struggles are of our own creation. Why battle for hours to achieve a particular design when the easier option is to simplify? This isn’t admitting defeat. It’s making the smart choice to design for the medium, rather than trying to shoehorn a pseudo-website into an email.

Neither does it mean making an ugly email. Simple is not a synonym of dull. A simple email can include static images, and a static image can be as eye-catching and complex as you desire. The email that houses them doesn’t need to be convoluted, and will only benefit from simplification.

Complex email design is less accessible

The hidden beauty of accessibility is that it benefits everyone. The design and coding techniques that it involves will often directly improve your overall email, or serve as a reminder to clean it up.

Complex email design is the enemy of that. It increases the chance of colour clashes, screen reader navigation difficulties and inconsistent use of text and images to communicate information. Simplicity in design means that we don’t have to strive to find clunky solutions to these problems – we circumvent them entirely.

Email code is absurd

It’s easy to forget just how ridiculous email code is. HTML data tables are used for structure. Multiple nested elements are used to achieve something that could be done with a single HTML tag on a website. Spacer objects are often required to force items into place. An assortment of tricks and hacks loosely pins everything together.

And yet we repeatedly choose to attempt complex designs in this environment. Surely the logical choice would be to have less of this clunky code, not more?

Email designers are their own worst enemy (or at least the email developer’s)

Mobile phones have some fairly decent photo editing apps. But they’re no replacement for Photoshop on a desktop computer with a mouse or tablet. The mobile apps are suited to quick, simple edits only. Trying to do anything more in-depth is convoluted if not outright tortuous.

Designing emails that look like websites is like trying to perform complex photo editing on a mobile. It’s simply not the right tool for the job.

Breaking from convention takes courage

Almost every brand sends fancy HTML emails. Companies need to adhere to brand guidelines. No-one wants to challenge the status quo.

That could be good news for you. The one who breaks convention reaps the rewards while others struggle on. Be that one!

Email personalisation

Do you even know me? Watch out for these email personalisation pitfalls

It’s ready. Your beautifully designed, flawlessly coded email is one click away from being fired off to thousands of customers.

There’s just one problem: everyone is about to receive the same message. No, the forename which has been shoehorned into the subject line doesn’t count. It’s spray-and-pray dressed up as one-to-one.

Email marketing deserves to be more sophisticated than that. And it can be. We live in an age of dynamic content, data science and machine learning. To the benefit of customer and business alike, it’s possible to send expertly tailored content based on a person’s purchasing and browsing activities.

But even a richly personalised email programme can sometimes trip up. Read on for a list of personalisation perils – and what to do about them.

First name faux pas

The most basic form of personalisation – addressing someone by name – is laden with a surprising number of potential blunders. A marketing email isn’t a casual message between friends, so it’s important to avoid these embarrassing errors.

First of all, there’s the prospect of getting the name wrong. Let’s say Christopher was in a hurry when he signed up to your newsletter, so he entered his first initial rather than forename. Pierre happened to have caps lock active while submitting the form. And Helen accidentally typed her title into the wrong box. Regardless of who is to blame, it’s not going to look good when you greet them with an enthusiastic "Hello C!", "Hello PIERRE!" or "Hello Mrs!".

Then there’s sentence structure. The injection of a first name will often call for additional punctuation in order to be gramatically correctly. An absent comma can completely transform the meaning of a phrase. I once received an email which promised: "This weekend only: enjoy 25% off Adrian!". 25% off me? I’m not even sure what that means but I’m pretty sure I’m not going to enjoy it.

Next up is first name overload. I sometimes receive emails – particularly those which are part of welcome programmes – which are peppered with my first name. It’s in the subject line, the headline and a couple of times in the message body for good measure. Such overuse comes across as forced and artificial – and it’s no substitute for genuinely customised content.

WHAT TO DO INSTEAD:
Address the customer by name once and put some controls in place to make sure it’s validated and presented appropriately.

By means of SQL processing or dynamic rules in your ESP, you can filter out invalid values such as initials and titles. Likewise, you can add or remove commas to ensure that a sentence reads correctly with or without a first name. You can even convert names to title case using CSS. Pierre will be grateful that you’ve stopped yelling at him.

Meaningless exclusivity

I’ve lost count* of how many times I’ve been presented with the subject line "Exclusive offer for you, Adrian!" or some variant thereof. For example, one time I was offered a free greetings card – just for me – by an online gifts retailer. That could only mean one of two things:

A: They thought of me as a really special customer
B: It wasn’t really just for me

Considering that I hadn’t bought anything from this particular company since my first purchase over half a year prior, I suspect that I wasn’t their star customer. That only leaves option B. The offer had been introduced with a lie. Not a good start if they were hoping to build rapport.

Ok, so calling it a lie is a touch melodramatic. It’s a throwaway attention-grabber akin to advertising puffery. But taken literally, it’s untruthful. Whether that’s enough to deter someone from opening the email depends on the individual. Some won’t notice, some won’t care. But on some level, consciously or not, customers might realise that the brand isn’t being entirely honest with them.

(* I wasn’t really keeping count. I have better things to do, such as writing articles complaining about it.)

WHAT TO DO INSTEAD:
Be honest. If an offer is open to everyone and their mother, drop the empty claims of exclusivity in favour of the offer details. "Adrian, get a free card when you spend £15" works for me.

Of course, if you’re running a promotion which is only open to a particular group – your Gold tier customers or top reviewers perhaps – then that is absolutely worth shouting about.

The illusion of personalisation

I recently conducted an experiment. By opting in to a multi-channel retailer’s mailing list and taking care not to venture beyond the homepage, I wanted to discover what sort of offers I’d be sent.

Some non-personalised marketing emails landed in my inbox over the weeks which followed. These included promotions which were broad in scope and liable to appeal to a general audience. That made sense.

After a while, ostensibly tailored offers started to creep in. These were presented as ‘Deals for You’ and pushed very specific products. Their proposed SIM card for an obscure model of mobile phone was a real stab in the dark and I can safely say that I’d never even thought about organic air fresheners for cars before. But there they were, served up as items of relevance to me.

The moral of the story: if an email isn’t personalised, don’t pretend that it is.

WHAT TO DO INSTEAD:
Only use phrases which suggest hand-picked products if you genuinely possess enough data to build a customer profile. Split your lists or use dynamic headlines to switch the copy to something more apt for people with no browsing or buying history. Phrases such as "popular with other customers" and "trending now" make great headlines for dynamic content and encourage your customer to explore.

Algorithm blues

I’d like to share an anecdote about an email personalisation calamity. Yes, I am a riot at parties.

A colleague of mine once ordered several items of classic literature which were required reading for her daughter’s university studies. A few days later, she received an email with some personalised recommendations. Unfortunately these suggestions happened to be precisely the same works of literature albeit from different publishers. Oops. She didn’t take them up on their offer.

The company in question usually does a world-class job when it comes to personalisation so this incident is an unfortunate hiccup. Nonetheless, it serves to illustrate the dangers of assuming that your AI-generated content always hits the mark.

WHAT TO DO INSTEAD:
Test it. Set up dummy accounts and put through dummy orders. If nonsensical recommendations crop up then it’s time to adjust the settings.

Better still, why not consult members of staff who you know to also be customers? You can’t get a much more authentic picture than that.

A/B tests are your friend here too. Measuring personalised versus non-personalised or different personalisation rules against each other will yield significant insight into customer engagement.

Yesterday’s news

Common sense dictates that you would only send a sale email while the offer is still running or a final few email while there is stock remaining. But what happens if someone opens the email a little too late and unwittingly clicks through to your website only to discover the bad news? Disappointment – that’s what happens. That’s a risk inherent to static emails since you have no control over them once they’re out the door.

Let’s consider another scenario. You’re issuing single-use discount vouchers to your VIP customers. To encourage as many conversions as possible, you’ll also be sending a reminder and last chance message. But to whom are you sending these follow-up emails? Crying "don’t miss out!" at a person who has already redeemed the voucher could leave them feeling undervalued as a customer. Nobody wants to feel like just a number.

WHAT TO DO INSTEAD:
Dynamically-rendered images to the rescue. By generating an image at the moment of open, your email automatically stays bang up-to-date – even after it has landed in your customer’s inbox.

Sale finished? Strike through the headline and drop in an alternative message encouraging people to check out your other great offers. Using a service like Movable Ink or Fresh Relevance, you can even monitor the stock of individual products and update your mailing post-send.

As for who you’re sending emails to – that’s where effective tracking and segmentation comes into play. Check your mailing reports and exclude customers who have already taken you up on an offer. Fantastic – now you’re no longer pestering your most loyal customers.

Forgetting that the customer is always right (about the customer)

Do you know who is the leading expert on me? It’s me.

Retailer X may have collated and harnessed lots of data regarding my activities as a consumer but their subsequent product recommendations are still essentially an educated guess.

We don’t always know why someone looked up a particular item. There’s room for misinterpretation. Let me share an example from personal experience.

I am not a fan of comic book movies. But I am a fan of my home town’s successes. That’s why, when The Avengers was being filmed in Edinburgh, I kept an eye on media coverage of the proceedings.

Ever since, cinematic superhero-related articles have been cropping up in my newsfeed. To the data mechanisms behind the scenes, this is a logical conclusion. To me, it’s an irrelevance to be ignored.

WHAT TO DO INSTEAD:
Use a preference center. An old-school tick-the-box form may lack the futuristic glamour of AI but it remains a crucial tool in the email marketer’s belt. What better way to send the right content to the right people than by letting them choose? Combine that with machine learning and you have the recipe for truly personalised emails.

Ignoring the age of AI

Artificial intelligence – whether or not the technology deserves such a grand title – is here to stay. Machine learning gives us the power to track customer interests and predict their behaviour. Today that means content such as product recommendations, which are great of course, but soon it could mean entire emails designed from the ground up for individual customers. AI already has a significant role in email marketing, and that will only continue to grow. Be ready!

Conclusion

Any email marketing programme worth its salt must incorporate some level of personalisation. Customers expect relevant content. And they expect it to be correct.

This isn’t just hearsay – the statistics back it up. Picking some figures from Segment’s 2017 State of Personalization Report, we can see that 37% of customers will be deterred from buying something and as many as 23% will unsubscribe if a brand gets information wrong when sending them direct marketing. That’s nearly a quarter of your mailing list who are prepared to up-and-leave if your data isn’t spot on.

Get it right however and you’ll be basking in the flipside of those stats. A third of consumers will feel inclined to give you a positive review following a personalised shopping experience. 44% are likely to come back for more. And half of the shoppers out there have made an unplanned purchase on the strength of a relevant product recommendation.

It’s fair to say that good quality email personalisation is complex, both strategically and technically. But you’re not in it alone. There are tools and services to help with every aspect, including specialist areas such as browse abandonment or product review invitations.

Once of all the personalisation pieces are in place, your emails will leave customers with a comforting thought: "they really do know me".

Artificial intelligence

Is ChatGPT your next email developer?

There are two ways to build a marketing email:

  • Hand-coding
  • WYSIWYG editors

We swear by the former, not only for quality but also for speed. But what if there’s an even better, quicker way?

Enter ChatGPT. Much hype has surrounded the AI platform’s ability to code. It can conjure up HTML and CSS in seconds. So too can it generate Javascript functions or back-end PHP or even truly hardcore programming such as C++. Whether or not it does it correctly is a different matter.

Let’s not worry about that just now. We’re here to put AI email development to the test, so let’s find out if ChatGPT can put together a responsive mailing.

The quirky world of email development

If you work in email marketing in any capacity, you likely already know that it requires some unusual coding techniques. There are lots of devices and email services out there, and they have widely different ideas about how HTML and CSS should be interpeted. In order to construct a mailing that looks presentable on all of them, the developer needs to be aware of these limitations and inconsistencies and the arsenal of tricks to work around them.

Has this niche set of knowledge made its way to ChatGPT? We’ll start with a bare bones request.

Prompt:

Code a responsive email template

Result:

Unusable!

ChatGPT has produced a very basic HTML document with some styling, but I wouldn’t call it an email template. It doesn’t include any means of stacking content on mobile, and the structure is based on HTML div elements rather than tables. While divs are the building blocks of a web page, tables remain the most reliable method for email.

On the plus side, it has picked an inbox-friendly width of 600 pixels. And it’s nice to see that accessibility has been implemented via an image description and a proper heading tag.

My request was extremely minimalistic. I need to do my part here too, and that means being more specific about what is needed.

A little lot more instruction

Take two. We don’t want divs, so let’s tell ChatGPT to use tables. There are some basic universal requirements in responsive email, so we’ll nudge it in the right direction regarding those.

Prompt:

Code a responsive email template, using HTML tables for structure. Set the width to 600 pixels on desktop, with a fluid width on mobile. Include CSS classes to enable stacking of content on mobile devices. Include all known email client fixes that are still relevant. Set the page background to a light grey colour, and the email content area to white.

Result:

Better… but still broken beyond repair.

This time it has used tables for structure, so that’s a major improvement. It has also set a breakpoint. That’s the backbone of responsive email code and the point at which mobile-specific styling is triggered. There’s some kind of attempt at stacking code, but I can see at a glance that it isn’t going to work. We’re also missing the usual pile of fixes that make an HTML email possible.

A rethink is needed.

A different approach

Here’s what we’re going to do: hand code a simple email, and then provide ChatGPT with detailed directions in order to recreate it. This is a reverse way to approach our project, but perhaps if ChatGPT has a more defined goal it will be able to produce a usable template.

Our email will have a main image, intro paragraph and a button. Under those will be a couple of secondary features laid out side-by-side on desktop, and stacking on mobile. For the sake of this test, let’s forget about any header and footer.

Image of our intended email layout

Now for our prompt. It’s going to be a long one. Let’s give ChatGPT a fighting chance and focus primarily on structure rather than styling.

Prompt:


Code a responsive email template, with the following requirements:
• 600 pixels wide on desktop
• Fluid width on mobile
• A page background colour of #f1f1f1
• Email content area background colour #ffffff
• A hero section with an image, heading, paragraph of text, and a button
• The hero image should be 600 pixels wide, to match the email content area
• Button should be pill-shaped, with a background colour of #a56e53 and white text
• Under the hero section should be two secondary features
• Each of these must also have an image, heading, paragraph and button
• Secondary feature images will be 290px wide on desktop, to match their containing column, and expanding to full width on mobile
• Hero text and button should be a bit larger than those of the secondary features
• These secondary features should take the form of adjacent columns on desktop, each at 290 pixels wide
• Place a 20 pixel gap between them
• The secondary features must stack into a single column on mobile
• All parts of the email should have 20 pixels of padding on each side on mobile, except for the hero image which can be full width and touching the edges of the viewport
• All body text should follow this font stack: HelveticaNeue-Light, Helvetica, Arial, sans-serif
• All body text should be colour #61524b
• All heading text should be colour #a56e53
• Use lorem ipsum placeholders for text
• Enter all hrefs as # placeholders
• Apply links only to buttons. Do not apply links to images
• Include all known, currently-relevant email client fixes
• Include CSS or HTML comments around each section to explain what it is or does
• Set a mobile breakpoint based on a max width of 639 pixels
• To ensure compatibility with Outlook and other email clients, use HTML tables for structure

Result:

Nice try… sort of.

In order to test this properly, I’ve saved a local copy and manually added my image references. Here’s how it looks in a browser:

Image of ChatGPT's email as seen in a web browser

At first glance, that isn’t too bad. The general layout, colouring and sizing are all correct. So too are the button shapes, and the secondary features switch to a single column on mobile as requested.

But there’s some strange overlapping going on. Our images are offset to the right, and sit partially over the grey background. This in turn causes some unwanted horizontal scrolling on mobile.

Behind the scenes, the true extent of the errors comes to light. It has reverted to a div-based structure, and uses some CSS code that won’t work universally in email.

Nonetheless, for the sake of completeness I’d like to test this as an actual email. It works, more or less, on iPhones and the Gmail app. Webmail is a mixed bag. Outlook however is where it all falls apart:

ChatGPT's email as seen in Outlook 2019

Outlook is the primary reason that email development requires such unorthodox coding methods. A lot of code that works just fine on a website, simply isn’t recognised by Outlook. Here we can see that the adjacent columns have failed and the pill-shaped buttons are reduced to tiny rectangles. To fix that would entail a complete recode.

No need to re-invent the wheel

So far, ChatGPT has failed to code a responsive email from scratch. To add some faux drama, let’s say our make-believe client is becoming impatient waiting for our make-believe email.

It’s time for a last ditch effort. At The Email Factory we already have a tried & tested template. We don’t need a new one. How about we give our base template to ChatGPT and then ask it to complete some content within that framework?

Result:

Now we’re getting somewhere.

But that doesn’t mean success. This time the template works reasonably well in a browser and even in Outlook, although the dodgy buttons are still present. The secondary features however don’t expand to full width on mobile:

ChatGPT's email using our template, as seen on an iPhone

That can however be easily fixed manually. In fact, it may be feasible to fix everything in this code rather than to start again. But I don’t want to do it myself, as that defeats the purpose of this experiment. Instead I’ll tell ChatGPT what needs to be corrected.

A few pointers

Final try. I’ve fed back some information to ChatGPT for it to make the necessary changes.

Result:

A huge step backwards.

Well, that was a big let-down. Instead of applying some finishing touches to the template, the layout has exploded. It no longer stacks on mobile. The code is now full of Microsoft conditional statements – a technique that should only be used sparingly and under specific circumstances. And the buttons? Still ugly in Outlook:

ChatGPT's corrected email as seen in Outlook 2019

Maybe with painstakingly detailed prompting and a lot of patience we could finally achieve a working email. But we’re already far beyond the point of convenience.

The current state of play

In my experience so far, ChatGPT has only done one thing consistently: fail. And I don’t only mean within the limited scope of this one project. I’ve had similar results when trying to generate marketing copy or website code. The output is usually along the right lines but ultimately too broken to actually use.

It’s clear that I set my expectations too high. The tales of ChatGPT’s near-miraculous capabilities were captivating, so perhaps the reality was always going to be disappointing. If there’s a perfect way to illustrate ChatGPT’s close-and-yet-so-far nature, it’s to ask it for an anagram.

Prompt:

Tell me an anagram of "The Email Factory"

Result:

The Fairy Comet Elf

I’ll save you the bother of checking that – it’s wrong. Trying to recreate that manually, letter by letter, results in this:

The Email Fctory e f

Re-evaluating our AI email development experiment

This project is arguably unfair from the outset. ChatGPT is a language model. Just because it can output code doesn’t mean it is a coder, or even knows what programming is.

Even so, it’s widely known that ChatGPT can generate code. So, despite all the mistakes and unusable templates, the fact that it can make a somewhat reasonable attempt is impressive.

Where do we go from here?

ChatGPT and AI in general are progressing at an incredible pace. It wouldn’t surprise me if everything I’ve written about AI email development above is laughably antiquated one year from now.

Perhaps when that time comes, I’ll prompt it to:

Write an article about how you surpass human email developers

Email coding

Was Outlook right about email all along?

Ask any email marketer what their biggest bugbear is, and there’s a strong chance that they will answer Microsoft Outlook. The desktop Windows application is notoriously uncooperative with modern coding standards. It’s a place of archaic development techniques, myriad quirks and unpredictable rendering glitches. That sometimes leads to protracted development times and hair-pulling levels of frustration.

Here’s a comparison of clean web-style code versus Outlook-targeted bloat:

Comparison of web-style and Outlook coding

But I don’t think Outlook is entirely to blame. Here’s why.

Outlook is not alone

Modern web browsers, for the most part, agree on how HTML and CSS code should be interpreted. The same cannot be said for email services. The various pieces of desktop software, webmail sites and mobile applications all behave differently. Each email platform, from Gmail to Samsung to Yahoo, has its own strengths and weaknesses. The only significant exception is the ever-reliable Apple Mail. This uneven landscape is the reason for email-coding being a profession of tricks and workarounds.

While Outlook is inarguably the least code-friendly of all major email applications, it’s not alone in its patchy support for modern web-coding standards.

I’m here for the offer

I don’t open a marketing email to see brand fonts or fancy design or flashy GIFs. I open it because I think there’s something of value to me in there. That might be a special offer, or a new product that matches my interests.

And I want to absorb the information in the quickest time possible. A marketing email is rarely a thing to be perused. If I crave visual stimulation, I will look at art. If I’m in the mood for reading, I open a book.

When I open a marketing email, seeking that tempting discount, a plain-looking design or a graphical defect is not going to be a deal-breaker. It’s an irrelevance.

Email is email, the web is the web

I missed an if earlier: if I want to browse the internet, I’ll browse the internet. Email – electronic mail – used to be the digital equivalent of a posted letter. But at some point it became standard practice for marketing emails to resemble mini websites. Navigation bars, complex layouts, rich graphics, fully-blown footers. Even interactive components such as drop-down menus have become fairly commonplace.

To achieve such an email requires layers upon layers of non-standard coding techniques. To a front end web developer who is used to coding efficiently, it’s likely to look like an incomprehensible mess at first glance. I picture it as a ramshackle machine, bodged with duct tape and liable to break down at any moment. And what is all this effort for? To force a medium to do something that it was never intended to do!

Word games

Microsoft made an industry-changing decision when they released Outlook 2007. Emails would be displayed using the Word rendering engine. Yes, that’s Microsoft Word as in the word processor. And, at the time of writing, it has remained this way for all subsequent Windows editions of Outlook.

Not only does this explain the platform’s extremely limited support for modern web code, but it’s also the reason for sporadic rendering glitches. Marketing emails are often fractured by pixel-thin lines appearing as if at random. One common cause of this is content falling on Word’s unseen page breaks behind the scenes.

Example of rogue white line in Outlook email

But is this truly a flaw in Outlook, or a problem created through misuse of the medium?

Things change: part I

From time to time, email vendors update their platforms and significantly change how they interpret HTML and CSS code. Sometimes that means improvements, sometimes it means email-breaking regressions.

Here’s a good example. More than once, I’ve seen the code used to stack content on mobile suddenly stop working. The solution: yet more unorthodox coding techniques.

This is part of the reason why companies (should) regularly check their mailings on as many email services and devices as possible. An email may display perfectly today, but tomorrow could be a different story. Even the most robust HTML email template is ultimately fragile. Keeping things simple is an effective future-proofing technique.

My needs are simple

From a consumer’s perspective, Outlook is perfectly capable of everything I need a marketing email to do. Formatted text allows me to scan over an email and pick out key points such as product name and price. High resolution images show me what a product looks like. Large, clear buttons give me a means to move onto the next step – in a web environment – should I choose to.

But what about pixel-perfect design, drop shadows, cool GIFs, web fonts, animation, and other bells and whistles? I don’t need those. Such non-content is of immeasurably more concern to a marketing department than it is to a customer.

Things change: part II

And now it’s time to unravel everything I wrote above. Technology progresses, trends move on, and I don’t want to be a closed-minded Luddite.

When I claim that Outlook does all I need it to, I’m seeing things through a conventional lens. In actual fact there are several pieces of enhanced functionality that would benefit me as a customer. It would be handy to watch a movie trailer, or to listen to a snippet of an album, or check out a t-shirt in different colours… all without leaving the mailing. Just because email has traditionally been a gateway to a website doesn’t mean it must always be that way.

So, is outlook right?

I’ll pick a side – no. There are definitely lessons to be learned from Outlook’s approach to email, and it reinforces the importance of substance over style. But ultimately its resistance to modern web standards is resistance to progress in general, and holding the medium back. And if Microsoft was truly making a stand about what email should be, why equip Outlook with a diluted level of HTML and CSS capabilities rather than none at all?

Google’s AMP for Email is a determined move to transform email into a rich, fully interactive experience. The technology may not have taken off in dramatic fashion, but adoption rates are slowly growing. In any case, it would be absurd for the world of email to maintain its antiquated coding techniques forever.

There’s also a new version of Outlook on the horizon. Anticipated for late 2026, there are convincing rumours that it will at last support modern development techniques. That changes everything.

When that day comes, we’ll be given the gift of time. Instead of wrestling with rendering problems, let’s focus our efforts instead on customer-focused content and design.

Email Design

Can AI design a marketing email?

AI is a big deal at the moment. And by “the moment”, that likely means from this point onwards in human existence.

We’ve previously talked about AI’s skills as a copywriter and its influence on email marketing in general. Now it’s time to look at another major branch of AI content generation: imagery.

The journey begins

Midjourney is one of the most advanced and best-known AI image generators in the market. If you’re not familiar, let me explain – it’s a form of digital magic that needs to be seen to be believed.

Picture something in your head. Anything. Now type it into Midjourney’s prompt bar. Within seconds, it will generate four images based on your input. How about:

a Jaguar E-Type parked next to the Eiffel Tower in the rain

Four AI-generated images of a Jaguar E-Type in front of the Eiffel Tower

Incredible, right? Pictured unmistakably are the vehicle, landmark and weather conditions of my choice. But after the initial wow factor has worn off, it doesn’t take much scrutiny to spot the flaws. In one picture the Jag is making a nuisance of itself in the face of oncoming traffic. In another there’s not one Eiffel Tower, but two. This is a landmark that surely doesn’t need any more replicas!

As a user, there are several options at this point. We can spin again and get four brand new images based on our original prompt. Or we can ask Midjourney to create variations of what it’s already generated. Maybe we’d like to do some manual editing in Photoshop, feed the image back to Midjourney and ask it to work from that. Perhaps we’d prefer to rewrite our prompt and be a little more specific.

But let’s move on. We could play with whimsical pictures of this and that all day, but we’re here to examine Midjourney’s potential visual contribution to email marketing.

An a-eye for design

We’re going to test this from two distinct angles:

  • Overall email layout
  • Individual images

I should preface this by saying that Midjourney clearly isn’t intended for the design of websites or emails. It’s a tool with an artistic bent (and one that gives it a distinct character from its rivals). Nonetheless, let’s see what it can do as a source of design inspiration.

We’ll work with purpose. Our goal is to design an email for a make-believe travel company. Its brand colours are a sunny blue and a beachy tan. Those can sit on a traditional white background, with body copy rendered in an eye-pleasingly contrasting dark grey. AI can’t read our minds (yet), so my request is quite specific:

Marketing email for a travel company. Beach imagery. White background. Dark grey text. Use of colours #6084f7 and #c1aa60

And here’s what it came up with:

Four email layouts created by AI

TO TE MAIAY THI – do you know what language that is? It’s mangled English. And that’s an indicator as to how AI image generators work. The output is a visual echo, based on countless source images that have been fed in. That’s why it’s not uncommon to see distorted intepretations of brand watermarks or artist signatures. As with all AI products, we’re seeing the results of complex algorithms rather than any real intelligence.

But can we make use of these mock-up emails? Of the four images above, option 1 is the most useful. It may have largely disregarded my colour choices, but in terms of layout and volume of content it’s the most plausible as an email. Now we’ll conjure up some imagery to bring it to life.

It’s a kind of image-ic

The big beach image from our layout mock-up is pretty nice:

AI-generated image of a beach

That picture is of too low resolution to use in its current form but thankfully Midjourney is a flexible tool. I’m going to feed the image back to the platform, along with some instructions:

[beach.jpg] panoramic illustration of a yacht next to a tropical beach with palm trees and rocks --ar 11:4

That ‘ar’ tag at the end is a way to define the aspect ratio of our images. We don’t want the default square shape in this case, so I’ve picked dimensions that suit a long strip-like image.

Here’s the result:

Four AI-generated images of beaches

I like option 4. So let’s upscale it to a useable resolution, and I’ll modify the colours a little in Photoshop to make it more on-brand.

Final, modified version of an AI-generated beach image

We have a layout. We have a main image. Now we can move onto the final step.

Assembly required

Let’s put the AI-generated components into an actual email. If this was a real commercial mailing, we’d have generated many more trial layouts and images, and made a lot more edits along the way. Working with AI tools feels a bit like the infinite monkey theorem. Spin and spin again until we finally get the result we had in mind.

But what we have here is good enough for experimental purposes. Here’s the final product:

Is it a revolutionary design? No. Could the main image be better? Yes. The point isn’t perfection but progress.

Some final thoughts on AI email design

AI content-creation tools are becoming more sophisticated and widespread. It’s not far-fetched to see image generators becoming an everyday tool that lets marketers conjure up fresh, on-brand graphics in seconds.

In answer to the opening question – can AI design a marketing email – my verdict is sort of. It can certainly help. But at the current rate of progress, who knows what it’ll be capable of a year from now.

Email Design

How to make light work of dark mode

Black text, white background. That’s been the go‑to colour scheme on websites and emails for a long time. After all, it emulates the printed typography of a book or newspaper.

But a digital display isn’t a piece of paper. That’s why some bright spark came up with the idea of dark mode – an inversion of the default colour schemes of old. And there’s a point to it beyond ‘because we can’. Light text on a dark background is easier on the eye, especially in a dimly‑lit environment. It’s also easier on battery life. Whereas ink comes with a material cost in physical media, light comes with an energy cost on a screen.

The use of dark mode is entirely optional. You can generally switch from light to dark whenever you like, or set your device to react automatically based on light conditions. Most modern operating systems, lots of applications and some websites cater for dark mode.

We’re not here to talk about any of those. Email is our thing. Let’s take a closer look at how dark mode affects email, how to design for it, and how to code for it.

Don’t be afraid of the dark

There’s an important point to set down from the outset: the objective is to optimise your emails for dark mode, not to override your reader’s settings.

That means we all need to be flexible with our brand guidelines. Whether your customer has a visual requirement for dark colours or simply prefers them, user prerogative trumps everything else.

Google homepage in its light and dark versions
If Google isn’t afraid to invert its brand colours, none of us should be!

Discover the dark mode landscape

Rendering quirks and the tricks to get around them are at the heart of email development. The handling of dark mode maintains these traditions.

Some email services allow full control – you get to set the dark mode colouring. Others ignore your styling and force a dark colour scheme of their own. Some offer partial control, and a few don’t support dark mode at all. The challenge is to design and code an email that looks good on all of them.

It’s important to note that those services which apply their own dark mode colours are not a lost cause. You can and should still optimise your design so that they look as good as possible. Familiarity and consistency ward off unsightly surprises and the wasted time of trial & error.

Don’t be vexed by text

Warning: please excuse the rant‑like nature of this paragraph. It’s frustratingly common in email to see images used to display copy. There has never been a convincing reason to do so. Images‑of‑text instead of actual text is often a way to foist a brand font or elaborate design on users. And one that comes at the expense of accessibility, usability and best practice.

Dark mode is one more reason to use text. Image‑based text can lead to a messy, partially inverted email in dark mode. Real text puts the email developer in the driving seat. Some email services support web fonts, so it’s still possible to show brand fonts to a reasonable percentage of your audience. Other accounts will fall back to standard fonts of your choice.

Let’s be (partially) transparent

Email supports a handful of image formats. JPEGs are common, and best‑suited to photographic content such as product shots. GIFs are also popular, and handy for simple images such as icons, or for short animations.

Somewhat less widely used are PNG images. Which is a pity, because their built‑in transparency support is a dark mode designer’s best friend. Let’s take a logo as an example. Save your logo as a JPEG and it could end up sitting in an unsightly white box against a dark background. Utilise the PNG format instead and it’ll automatically let the background colour shine through. If your logo itself is dark, it could be lost against a darkened background. A white outline or glow effect – invisible on light mode – can counteract that.

Fictitious Travel logo shown in various light and dark mode variations
Here’s how a logo might look in various light and dark mode setups

It’s worth noting that GIFs also have a transparency capability… but it’s limited. It’s an all‑or‑nothing deal – a single colour can be set as fully transparent. While that can be useful in some situations, it doesn’t allow for the smoothly‑blended curves of a PNG.

Code for the mode

It’s time to get coding. First up, you need to explicity enable dark mode in email. That’s a two‑step process. Add the following HTML <meta> tags in the <head> of your document:


<meta name="color‑scheme" content="light dark">

<meta name="supported‑color‑schemes" content="light dark">

And then create a new <style> sheet, separate from your existing responsive styles. Now add a couple of root selectors to define light and dark mode:


:root {
color‑scheme: light dark;
supported‑color‑schemes: light dark;
}

These colour modes can now be targeted via media queries. Not only does that mean you can set up specific custom colours for dark mode, you can even swap images.


@media (prefers‑color‑scheme: dark) {
.email‑background {
background‑color: #313336 !important;
}
.darkmode‑show {
display: block !important;
width: auto !important;
overflow: visible !important;
float: none !important;
max‑height: inherit !important;
max‑width: inherit !important;
line‑height: auto !important;
margin‑top: 0px !important;
visibility: inherit !important;
}
.darkmode‑hide {
display: none !important;
}
}

There’s an important reminder in that prefers‑color‑scheme syntax! We should always bear in mind that light or dark mode is a user preference.

Give it a go

We could go on about the technicalities of dark mode all day. But let’s now put it to the test.

Below is a simulated email. It’s interactive – try the controls to see how it looks in various states of light and dark mode.

Note: this demo approximately simulates light and dark conditions in email. Specific email services and devices will have their own rendering quirks. This simulation is set to automatically disable the use of swapped images on forced dark mode, so some switches will be tripped automatically.

Simplicity keeps things… simple

The more complex the design, the more work will be involved in making it dark mode‑friendly. That raises a question: is that design essential, or can it be stripped back? I like to find the answer in a second question: does the design help to relay information to the customer, or is it a box‑ticking exercise for the marketing department?

In light of that way of thinking, the best solution is often to simplify the design rather than piling on more and more CSS code.

Final thoughts

Dark mode is a good thing. It’s a piece of functionality in the spirit of accessibility and respects the user’s autonomy.

As with all things development, you don’t need to work from scratch every time. An email template and snippet‑based coding style mean consistent results.

Despite that, surprisingly few companies are actively supporting dark mode in email or even the web. By designing for dark mode, you are helping to lead the way.

Perhaps it isn’t light work, but it’s definitely the right work.