Skip to content
All articles

Common Email Template Coding Mistakes and How to Fix Them

The email template mistakes that break real sends: dead links, a missing unsubscribe, broken name greetings, a broken layout, and how to fix each one.

By Tomas from EmailStitchUpdated

The most common email template mistakes aren’t exotic. Every team ships the same handful, and they rarely show up in your own test email. They surface in a subscriber’s Outlook, in a translation nobody on the team reads, or in the campaign report a week later. HTML email QA is where those problems get caught before the email reaches Mailchimp, Klaviyo or any other platform. The good news: they’re predictable, and most take a minute to fix once you know where to look.

The short version: check every link on the finished email, make sure the unsubscribe link is visible, leave no half-filled name greetings, keep the email under Gmail’s size limit, and run every check on every language, not just the first one. The fourteen mistakes below follow that order.

An email preview where the greeting shows a placeholder in curly braces instead of the subscriber's first name

A link to a page that doesn’t exist is the most common and most damaging email mistake. A subscriber clicks your main button, lands on an error page, and trusts you a little less. Check every link, and check the finished email, after names and translations are filled in, not the draft. Email platforms swap your links for tracking links when they send, so check your own links before that happens.

No unsubscribe link puts the whole send at risk under US and EU law and under Gmail and Yahoo’s rules for large senders. A link that’s technically there but invisible, such as white text on white or tucked into a hidden section, fails for the same reason. Keep it visible in every language, and use the unsubscribe tag your email platform expects instead of a typed web address. The exact tags for six platforms are in unsubscribe link tags for Klaviyo, Mailchimp and others.

3. Broken name greetings

“Hi {{first_name}},” going out with the curly braces still in it is a classic. It usually happens because the test contact had a first name and half the real list doesn’t. Give every greeting a backup word, like “Hi there”, and preview the email with both a full and an empty contact. Each platform also writes its name codes differently, so a greeting built for Mailchimp breaks in Klaviyo. Check it against the platform you actually send from.

4. A layout that breaks in Outlook

A small error in how the template is built often doesn’t show in your test. Apple Mail and most browsers quietly repair it, while Outlook and Gmail each repair it differently. One small mistake can collapse a two-column layout in Outlook while every other inbox looks fine. Ask whoever builds the template to run it through a checker before it goes out.

5. Design that some inboxes ignore

Inboxes are years behind web browsers. Layout tricks that work on a website, like side-by-side boxes that rearrange themselves, are often ignored by Outlook, and other inboxes are inconsistent. Email layouts that hold up everywhere are built the old-fashioned way, as simple grids. If a design element is new, check it works in Gmail, Outlook and Apple Mail before you rely on it.

6. Fonts with no backup

A brand font that the reader’s device doesn’t have shows up as Times New Roman in most inboxes, unless the template names a backup. Stick to fonts every device has (Arial, Helvetica, Georgia, Verdana, Tahoma), or make sure a backup is set. Treat a custom brand font as a bonus for the inboxes that show it, never as the thing the design depends on. Set the font once in an email design system so the next template doesn’t pick a different backup. More in email design tokens and best fonts for email, including why Outlook falls back to Times New Roman.

7. Images with no size, no description, or too much weight

Images without a set size make the layout jump as they load, and leave an empty gap when an inbox blocks images, which most do by default. Images without a description show nothing when blocked, and a screen reader reads out the file name instead. Very heavy images load slowly on phones. Give every image a size and a real description, and compress it.

8. Going past Gmail’s size limit

Gmail cuts an email at about 102 KB and hides everything after that behind a “View entire message” link, often including your unsubscribe link and the tiny image that counts opens. Bloated builder output, repeated styling and pictures pasted straight into the email get you there faster than you’d expect, and the translated version usually crosses the line first. What counts and how to cut it: Gmail clipped message, or check one email with the free Gmail clipping checker.

9. A layout that doesn’t fit a phone

An email much wider than about 600 pixels forces sideways scrolling or a tiny zoomed-out view on phones, where most emails are opened. Keep the email around 600 pixels wide, let it shrink on small screens, and test it on a real phone rather than a desktop preview.

10. Accessibility and preview text basics

Small fixes that get skipped:

  • The email doesn’t say its language: screen readers guess and often mispronounce the text. Set the language for each translation, and right-to-left for Arabic and Hebrew.
  • Layout grids read out as tables: screen readers announce every layout grid as a data table, row and column counts included, unless the template marks them as layout.
  • Low contrast: light grey text on white is hard to read for a lot of people. Check it against the actual background colour.
  • Missing or badly sized preview text: with none set, the inbox shows the first words it finds, usually “View in browser”. Length and examples: email preheader.

11. Translations that drift apart

When every language is a separate file that someone maintains by hand, they drift: the German version gains a row the English one never got, the French version still has an English sentence, a link points to the wrong country’s page. Build every language from one shared template so the layout can’t drift, and compare the versions before you send.

12. Inconsistent tracking tags

If some links in a campaign carry tracking tags and some don’t, or the same campaign is named “spring_sale” on one link and “spring-sale” on another, your analytics splits one campaign into several and the report stops being useful. Agree on one naming rule and use it on every tracked link.

13. Placeholders left in the finished email

Templates built from a shared source often carry placeholders of their own, such as a slot for the translated button text or for a brand colour. If one translation is missing, the placeholder goes out as literal text with curly braces. Before you send, look through the finished email in every language for curly braces, percent signs or pipes that don’t belong to your platform’s own codes.

14. Unsubscribe and open tracking past Gmail’s cut

This one is easy to miss because the email looks fine. When an email is close to Gmail’s limit, the footer is the first thing to fall below the cut. A clipped email can still be readable while the unsubscribe link and the open-counting image sit in the hidden part. Check where they land in the longest language, not just the shortest.

How to fix a broken email template, in order

When a template is already broken and the send is close, fix it in order of damage, not in the order you find problems:

  1. What breaks the send: dead links, a missing unsubscribe link, placeholders or half-filled greetings, a broken layout.
  2. What breaks one audience: an empty or untranslated subject, preview text or button, text in the wrong language, Gmail clipping, a hidden unsubscribe link.
  3. What weakens the email: heavy images, images without a size, a layout that doesn’t fit a phone, fonts with no backup, inconsistent tracking tags.
  4. What makes it harder to read: images without descriptions, low contrast, no language set, layout grids read out as tables.

Check the finished email again after each round. A fix in the shared template can reveal a problem in a translation that was hidden behind the first one.

A pre-send checklist for these email template mistakes

Before you hit send, in about a minute:

  • Every link opens the right page, checked on the finished email
  • Unsubscribe link present, visible, using your platform’s tag
  • No curly braces or placeholders left; every greeting has a backup word
  • Layout holds in Outlook, Gmail and Apple Mail
  • Images have a size and a description; total weight is reasonable
  • The finished email is under Gmail’s limit
  • Readable on a phone
  • Language set, contrast passes, preview text written
  • Every language checked, not just the first

You can run the mechanical part of this list on one email in the free email template tester. In Black Friday week the same mistakes cost more. The Black Friday email checklist narrows this list to the eight checks that matter most for a sale.

Fixing these mistakes for good

Most of these mistakes are mechanical, which is exactly why they slip when a campaign is running late, and why they multiply when you send in several languages. EmailStitch puts your template together and runs these checks on every language in HTML email QA, ranked by severity in the same four groups as the list above, and asks you to confirm before exporting a language that still has a blocker. That check sits inside the HTML email production workflow, not in a separate tool you have to remember to open. The judgment calls, like whether the layout really holds in Outlook or the French copy reads well, stay with you; the mechanical checks don’t need to.

Want a check in front of every export? Start a free EmailStitch account.


Back to all articles