Article

Deleting delivery history must not restart unwanted mail

Postmark Webhooks keeps event history separate from durable suppression evidence. Retention cleanup, webhook retries, and later delivery events must not silently reactivate mail.
September 8, 2026

A mail event log answers what happened. A suppression record answers whether the application should send again. Treating them as the same data creates a failure: deleting old history can remove the only reason an address remains blocked.

Postmark Webhooks separates those responsibilities in Drupal. It receives provider events and records suppression evidence independently of retained event history. It does not send mail; it works with an outbound mail backend using the supported Drupal mail path.

Retention is not reactivation

Routine cleanup can remove expired event rows while preserving the evidence needed to block unwanted mail. The same distinction applies to an operator's history-erasure action. Removing event history does not automatically release suppression.

Hard bounces and complaints need different treatment from temporary delivery problems. The module supports durable reasons and configurable time windows. Later delivery or other log-only events do not clear an existing block. That prevents a later event from silently overriding an earlier suppression decision.

Retries should not change the decision accidentally

Webhook providers retry requests. A repeated event should not create an unrelated second event or make old evidence appear newer than it is. Postmark Webhooks deduplicates accepted event identities and retains the latest occurrence for each suppression reason.

The outbound check examines recipients across To, Cc, and Bcc. If a recipient is suppressed, the whole message is blocked rather than silently dropping that recipient and sending a different message to everyone else. That behavior should be included in application mail tests.

Keep the operator action reviewable

History export, history erasure, and release decisions have different purposes and should remain visible as separate operations. Optional Audit Chain integration records supported operator actions in the shared audit chain; it does not turn every incoming webhook into a chain event.

The module documentation describes suppression, retention, and the retained evidence. Review those separately from provider records and backups. A local cleanup action changes local history; it is not evidence that every copy has been erased.