Agent Wranglers

EML-37Required US law

Keep unsubscribe links working and never pass on who left

Keep every unsubscribe link and address working for at least 30 days after each send. Never sell, share or transfer the address of someone who unsubscribed.

Region

United States (US). 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

US law (CAN-SPAM) requires the opt-out to keep working for 30 days after the message is sent. It also bans selling or transferring the address of anyone who opted out, except to comply with the law. Make unsubscribe tokens last at least that long, or never expire. When you change sending services, import the old suppression list into the new one before the first send. A company you hire to send for you does not take over your legal duty. CAN-SPAM also asks marketing mail to say clearly that it is an ad, unless the person agreed to it beforehand. The FTC sets the fine at up to $53,088 for each breaching message. Never add a suppressed address back, as Keep the list clean says.

Examples

JavaScript example

async function suppressByToken(token) {
  const { email, list } = await db.unsubscribeTokens.find(token);
  await db.suppressions.upsert({ email, list, reason: 'unsubscribed' });
}

Python example

def suppress_by_token(token: str) -> None:
    entry = db.unsubscribe_tokens.find(token)
    db.suppressions.upsert(email=entry.email, list=entry.list, reason="unsubscribed")

How to check

A test that moves the clock 31 days past a send shows the unsubscribe link still suppresses the address. After a change of sending service, every address on the old suppression list is on the new one.

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/unsubscribe/unsubscribe-lifetime">Agent Wranglers email playbook</a>. In code you write, add a comment next to it with the same link.