Agent Wranglers

EML-74Required EU law

Ask before you track opens

Load an open-tracking pixel or a per-person tracking link in marketing mail to people in the EU only after they agreed to that tracking. Send everyone else untracked mail.

Region

European Union (EU). The duty comes from the law there. The rule applies only when the project serves people there, and its Applies when also holds.

How to do it

The EDPB's guidelines on the ePrivacy Directive, Article 5(3), name tracking pixels and tracked links in email as access to the reader's device. That needs consent unless it is strictly needed for the service the person asked for. France's CNIL published a recommendation on pixels in email on 14 April 2026. It needs consent for open rates, profiling and fraud scoring. It exempts receipts, account and security mail, and a narrow measure of whether mail still arrives. Ask for tracking consent in the sign-up form, apart from the consent to get the mail. Store it next to the marketing consent, as Have consent before any marketing message says. Render each message with or without the pixel per recipient.

Examples

JavaScript example

function trackingPixel(contact, messageId) {
  if (!contact.consents.has('email-tracking')) return '';
  return `<img src="https://links.example.com/o/${messageId}" width="1" height="1" alt="">`;
}

Python example

def tracking_pixel(contact, message_id: str) -> str:
    if "email-tracking" not in contact.consents:
        return ""
    return f'<img src="https://links.example.com/o/{message_id}" width="1" height="1" alt="">'

How to check

Render a newsletter for a test contact in the EU without tracking consent. It holds no remote image on your tracking host and no per-person link token. Give the consent and render again, and the pixel appears.

Sources

For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/email/email-privacy/open-tracking-consent">Agent Wranglers email playbook</a>. In code you write, add a comment next to it with the same link.