Agent Wranglers

EML-72Required

Keep a suppression entry when you erase a contact

When a contact unsubscribes, objects or asks for erasure, keep only a hashed address, the list and the date on a suppression list. Check every send and import against it.

How to do it

An objection to direct marketing is absolute (GDPR Article 21(3)). Deleting the address alone lets a later import or sign-up sync add it back. So erase the profile, but keep a minimal suppression row. Hash the trimmed, lowercased address with SHA-256 and store nothing else about the person. Mark the row as kept to honour the objection, never for marketing. Filter every send job and list import against it, next to unsubscribes and consent records. Remove the row only when the person signs up afresh. Run the same step when someone deletes their account, as in let people delete their account themselves.

Examples

JavaScript example

import { createHash } from 'node:crypto';

const suppressionKey = address =>
  createHash('sha256').update(address.trim().toLowerCase()).digest('hex');

function withoutSuppressed(addresses, suppressedKeys) {
  return addresses.filter(address => !suppressedKeys.has(suppressionKey(address)));
}

Python example

import hashlib

def suppression_key(address: str) -> str:
    return hashlib.sha256(address.strip().lower().encode()).hexdigest()

def without_suppressed(addresses: list[str], suppressed_keys: set[str]) -> list[str]:
    return [a for a in addresses if suppression_key(a) not in suppressed_keys]

How to check

Erase a test contact, then import a list that holds the same address in another case. The import skips it, and a send to the list does not reach it. The suppression row holds only the hash, the list and the date.

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