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
Related rules
- EML-22 Keep the list clean in Email
- DEN-36 Remove people who objected from every sync out of the warehouse in Data engineering
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.