Sending your own HTML: what's tracked and what's required
Edit in CMSWhen you send a letter from your own HTML instead of using the Letterhead composer, tracking still works — you don’t add any markup for it — but a few limits on what gets tracked, and two requirements that can get the request rejected, are easy to miss if you’re coming from another ESP.
What’s tracked automatically
Section titled “What’s tracked automatically”Opens are tracked with no setup on your part. Letterhead doesn’t inject a tracking pixel into your HTML — your sending email service provider’s own open tracking handles it.
Clicks are tracked by default too, but only for links that meet two conditions:
- Only
<a href="...">anchors are tracked. A bare URL written directly into the HTML body text (not wrapped in an anchor tag) gets no click tracking. - Links containing a merge tag (
{{ ... }}) or a data-feed expression ([[ ... ]]) are excluded from tracking. Rewriting one of these hrefs for tracking would corrupt the expression before it’s resolved, so Letterhead leaves them alone — the link still works, it just won’t appear in your click report.
You don’t need to add an unsubscribe link
Section titled “You don’t need to add an unsubscribe link”Unsubscribe handling is automatic: Letterhead’s sending path adds the required unsubscribe mechanism for you. Unlike some other ESPs, you don’t need to include your own unsubscribe link in the HTML you send.
What can get a send rejected
Section titled “What can get a send rejected”Two things reject the request outright, before anything is sent:
The channel must send through Letterhead’s own delivery system. If the channel you’re sending to is connected to a third-party email service provider instead, the request is rejected — this endpoint only supports Letterhead’s native sending path. Create the letter as a draft and send it from the Letterhead dashboard instead if your channel uses a third-party ESP.
The HTML has to pass validation. The following are rejected:
- Forbidden tags:
<iframe>,<form>,<input>,<embed>,<object>,<applet>,<frame>,<frameset> - Forbidden attributes:
onclick,onload - Merge tags (
{{ ... }}) that Letterhead doesn’t recognize
A common cause of an unexpected rejection is an unescaped & in the HTML — escape it as &.
See also
Section titled “See also”- Send a letter — the endpoint itself
- Using the Letterhead API — authentication and the full range of what you can build
Still can’t find what you need? Contact support.