Source Code

Coding Email Templates for Responsive Design: Part 1

  |  December 23, 2013   |  Comments

Columnist Dave Hendricks and co-author Graham Gnall share practical, how-to guidance on coding email templates for responsive design in the first of this series.

This column was co-authored by Graham Gnall of Live Intent.

In an increasingly mobile world, populated by email users who routinely swap between devices as often as they blink, adapting your email code to be responsive and render beautifully on any client or device may no longer be a matter of preference, but rather of survival.

I've eschewed opinions in favor of high-level, practical how-to facts for today's article: How to code your email templates for responsive design.

Pre-Design Settings

Before getting into the actual structure of the email, you'll need to declare some information in the head section. Below is a head section that's become something of an industry standard. Reuse this in your templates for maximum compatibility:

< !DOCTYPE html PUBLIC "-//W3C//
DTD XHTML 1.0 Transitional//EN"
< html xmlns="
< head>
< meta http-equiv="Content-Type"
content="text/html; charset=utf-8">
< meta name="viewport"
content="width=device-width, initialscale=
1.0" />
< /head>

When moving your code between an HTML editor and your ESP (and especially vice versa), be sure to first paste it into a plain text document, copy it again, then paste it into its destination. This will safeguard against picking up encoding outside of the character set you'll be using.

Template Size

A single column layout with a maximum width of 600-650 pixels will render well on all devices and lends nicely to responsive design elements like font size and table width. This is the cleanest and most reliable way to
design for all devices at once.


The most fundamental aspect of designing email is an emphasis on nested tables. This technique may seem ancient to web designers, but is a stalwart necessity in email.

Container Table and Background

Set up a container table with 100 percent width and place a cell within it, also with 100 percent width. Setting a bgcolor here will set a background color for your email. Choose a color that nicely contrasts with the background color of your content.

< table align="center" border="0"
cellpadding="0" cellspacing="0"
width="100%" style="border-collapse:
< td align="center"
bgcolor="#aaaaaa" border="0">
Place your content in here
< /td>
< /table>

If you are using a single format for both mobile and desktop openers, 600 pixels is standard; it looks good on a desktop and will fit the shape of a smartphone. Most smartphones will automatically zoom to fit the content to your screen.

Your content container tables should have pixel-based widths, while all nested tables should be percentage based. This will allow them to stretch and shrink along with the container tables and will work well with responsive designs. Change the width value of your container table and you will see this taking place.

Assign a class name to your container table. This will set you up to layer on media queries and screen size-based rules later.

< table align="center" border="0"
cellpadding="0" cellspacing="0"
width="100%" style="border-collapse:
< td align="center"
bgcolor="#aaaaaa" border="0">
< table align="center"
border="0" cellpadding="0"
cellspacing="0" width="600"
style="border-collapse: collapse;" class="container">
< !-- This is your main
content table -->
< /table>
< /td>
< /table>


On all tables and cells, make sure to define dimensions by either relative (percentage) or absolute (pixel) values. Don't expect clients to automatically render them properly otherwise.

When using absolute values do not include "px", as this will cause rendering issues in Outlook. A width of 600 pixels should be input:

and not:

If you have empty space in your design, you can handle it with either padding or empty cells.

What About CSS?

CSS (Cascading Style Sheet) support in email is lacking, most notably in Gmail and Gmail apps. For this reason, all styling should be contained in-line, rather than in the < head> section of your email.


The following styles are compatible with most clients, but are by no means the be-all to end all. Feel free to get a little crazy and experiment with others:


For a full list of CSS elements and client compatibility that'll make your head spin, take a look at Campaign Monitor's comprehensive Guide to CSS in Email. You can also download this free ebook, The Da Vinci Coding: The Art of HTML

That's it for today. Next time, we'll cover text and image handling in responsive email templates, as well as the all-important media queries that will allow this to work for all of your openers.


Dave Hendricks

As president of LiveIntent, Dave Hendricks devises corporate strategies and tries to simplify marketing language. Before growing LiveIntent, Dave was executive vice president (EVP) of operations at PulsePoint (then known as Datran Media), where he worked alongside LiveIntent chief executive (CEO) Matt Keiser and ran Datran's ESP StormPost (nka PostUp). A member of the founding executive team at ExperianCheetahMail, Dave began his email adventure at Pioneering ESP MessageMedia. Dave was named one of Business Insider's "Top 100 Technologists" in 2011 and Alley Watch claimed he was one of 15 people "changing advertising" in 2014. He plays electric guitar and you should follow him on Twitter @davehendricks.

COMMENTSCommenting policy

comments powered by Disqus

Get ClickZ Email newsletters delivered right to your inbox. Subscribe today!



Featured White Papers

2015 Holiday Email Guide

2015 Holiday Email Guide
The holidays are just around the corner. Download this whitepaper to find out how to create successful holiday email campaigns that drive engagement and revenue.

Three Ways to Make Your Big Data More Valuable

Three Ways to Make Your Big Data More Valuable
Big data holds a lot of promise for marketers, but are marketers ready to make the most of it to drive better business decisions and improve ROI? This study looks at the hidden challenges modern marketers face when trying to put big data to use.