Skip to content

Content Fidelity

This is the rule that catches the most common AI-generator failure mode: training data has taught the model that “real” marketing emails always end with sender addresses, unsubscribe links, social rows, and copyright lines, so it adds them — even when the source image clearly has no such footer.

Don’t.

For every section of the generated email, ask: is this in the source?

  • A greeting line is in the source → reproduce it.
  • A bold paragraph is in the source → reproduce it with the same emphasis.
  • A button with specific text is in the source → reproduce text, link placeholder, and approximate color.
  • A footer with sender info is not in the source → don’t generate one.
  • A ”© 2026 Company” line is not in the source → don’t generate one.
  • “This email was sent to you because…” is not in the source → don’t generate it.

If the source ends at a closing paragraph, the generated email ends at that closing paragraph.

Backgrounds, panels, cards, callouts — every distinct visual container in the source becomes a corresponding structural element in the generated HTML.

  • A light-blue FAQ panel in the source → a <td bgcolor="#E8F0F8" style="background-color:#E8F0F8;padding:24px;"> wrapper with the FAQ content inside.
  • A dark navy header bar → a <td bgcolor="#2D3036" style="background-color:#2D3036;padding:24px 40px;"> row with the heading inside.
  • A cream “support” callout → a same-pattern colored cell.

Don’t flatten panels into plain text. The visual hierarchy is part of the message.

Reproduce sections in the same top-to-bottom order they appear in the source. Don’t move the CTA “up where it’ll get more engagement” — that’s a UX optimization the consumer can do after editing. The generator’s job is fidelity, not improvement.

If the source shows a logo placeholder where a real logo would go, generate a placehold.co block at the source dimensions. Don’t:

  • Invent a company name to put in the alt text.
  • Invent a tagline below the logo.
  • Add a “view in browser” link the source doesn’t show.

The model is reading visuals, not auth’d brand data. Anything not on screen is a guess.

A common generator instinct: emit a footer with “If you no longer wish to receive these emails, click here to unsubscribe” — even on a transactional email where unsubscribe doesn’t apply, even when the source has no such line.

If the source shows an unsubscribe link, reproduce it. If the source doesn’t, don’t add one.

Before treating a generation as “done”, overlay the generated render on the source image. Every distinct block, color, container, and CTA in the source should map to a generated element. Extra elements (no match in the source) are fidelity violations.

Personalization placeholders are an exception

Section titled “Personalization placeholders are an exception”

Personalization fields like Dear [Name], [اسم الموظف], or Hi {first_name} from the source design are reproduced as {{token}} placeholders, not as literal text. See Link Tokens for the standard vocabulary ({{employee_name}}, {{recipient_name}}, etc.).

This is the only “content transformation” the generator does, and it’s only for clearly-marked placeholder fields — not for rewriting actual content.