The best practices for designing email that works for both humans and agents.
Who's reading your email?
Your emails used to have one audience. Now they have two.
Apple Mail has summarized messages with Apple Intelligence since iOS 18.1, and Gmail summarizes messages and whole threads with Gemini.
Those summaries sit between your subject line and your content, and they can replace your preview text.
Summaries are only the start. Agents also take action when they read your emails: log total of a receipt, track a deadline, or unsubscribe someone from your list.
Agents extract HTML, plain text, attachments, and headers. They don't see your email the way a person does, so if your emails are not machine-readable, agents may not only misunderstand, but may also take the wrong action.
The good news is that the best practices work well for both humans and agents. What helps screen readers and agents also helps people process emails on a phone. Accessible email is machine-readable email.
Here are six practices for designing for both readers.
Summarizers lean hard on the top of your email. Marketers call this the "AI fold" and say it covers roughly the first 100 to 150 characters. If your main message is in paragraph four, the summary may describe something else.
Lead with what happened, what you need from the reader, and by when.
Keep each email to one brief goal. Inbox Monster found when an email makes three asks, the AI picks one (often the wrong one!).
Keep writing preview text, but don't depend on it. Oracle's testing found that Android's AI reads preheader text like any other body text, while Apple Intelligence sometimes rewrites it and sometimes ignores it.
The subject line and the first lines of the body are the most important for both humans and agents. Focus on brevity and clarity in both for best results.
Quick check: Does your email make sense when you read only the subject line and first two sentences of the body?
If your headline and call to action live inside a hero image, a summarizer may never see them. Recent tests showed agents often miss image CTAs while returning twice as many details when live text is used.
| Summarizer | Image CTAs | Text CTAs |
|---|---|---|
| Apple Intelligence | Declined to summarize | Returned useful summary |
| Gemini | Returned one vague line | Returned useful summary |
| Copilot | Described the tone instead of the content | Returned useful summary |
What about Alt text? In current testing, AI summarizers often ignore it. Keep writing good alt text for screen readers, but put anything that matters in real text.
A quick check: turn images off in your email client. If the email stops making sense, a summarizer will struggle too.
Agents scan an email the way screen readers do: by its headings, its language, and its layout. Use proper semantic HTML to communicate the title, each section, and what is just decoration.
The Email Markup Consortium's 2026 report analyzed 376,348 emails. It found that 74% have no <h1>, about 96% are missing lang and dir on the body, and 45% have no <title>. We broke down the fixes in our accessibility post. The short version:
<html lang="en" dir="ltr"><head><title>Your invoice is due October 21</title></head><body><div lang="en" dir="ltr"><h1>Your invoice is due October 21</h1><table role="presentation"><tr><td>...</td></tr></table></div></body></html>
<h1> and nested headings give the email an outline a machine can follow. Short notifications, like a password reset, can skip them.<title> should describe the specific email, like a subject line.lang and dir say what language the email is in and which way it reads. Repeat them on the body's direct children, because some clients strip them from <html>.role="presentation" keeps layout tables from being read out as data tables.If you use React Email, update to the latest version. It now sets language and direction on <Body> by default, and <Preview> emits a <title>.
Quick check: do you know how your email HTML is structured?
Accessibility helps humans and agents. It makes your email easier to read and understand for everyone. An agent that can't find the amount, the date, or the CTA link can't help anyone.
With React Email, you can render both versions from the same template:
import { render, toPlainText } from 'react-email';import { InvoiceEmail } from './invoice-email';const html = await render(<InvoiceEmail />);const text = toPlainText(html);
An AI assistant reads the raw message, including text your email client hides from people.
Because this is a known attack, inbox providers carefully monitor these negative signals.
In August, Forcepoint X-Labs showed that a few lines of HTML styled with zero font size and white text can hijack an email summarizer. Researchers have also demonstrated the same trick against Gemini in Google Workspace. Hiding text can cause security tools to flag your email as spam or malicious.
Treat every email as untrusted data. Forcepoint's recommendations are a good start:
Give the agent the least privilege it needs, and require a human to confirm high-risk actions like paying, deleting, or forwarding.
You can't predict every client, but you can check the basics before you send.
If you build templates with a coding agent, the Email Best Practices agent skill now includes accessibility best practices, which cover a lot of this ground.
<title>, lang and dir, and role="presentation" on tables.Clear, structured, honest email was always the goal. Agents now need to read it first, so it must be easy to understand.
How else can we help you prepare your email for agents?