2026-09-20 09:42:53 -07:00
..
feat: give every campaign email a working opt-out: a reply-to-opt-out line by default or an unsubscribe link (workspace setting under Settings > Sending with a per-campaign override and a {{.UnsubscribeLink}} variable), signed per-recipient unsubscribe links served on the API origin so the List-Unsubscribe header no longer points at a dead warmbly.com page, a confirm page on GET with RFC 8058 one-click on POST and a resubscribe button, reply opt-out detection through the whole-word compliance lexicon with quoted history stripped, a first-class suppression list (Contacts tab, GET/POST/DELETE /suppressions with address and domain entries, audited removal, contact drawer action), the contact Subscribed flag enforced in campaign routing, migration 000122 with a shared recipient_suppressed() predicate, and docs for all of it
2026-09-03 01:52:40 -07:00
2026-09-13 04:34:44 -07:00
2026-09-14 07:44:34 -07:00
2026-08-05 10:37:27 +02:00
2026-08-05 10:37:27 +02:00
2026-07-16 07:50:24 +02:00
2026-08-05 10:37:27 +02:00
2026-08-05 10:37:27 +02:00
2026-07-16 07:50:24 +02:00
2026-09-20 09:42:53 -07:00