Email Operations5 min read

Check Business Validity Before Replaying Email Webhooks

Recover historical notifications without activating expired customer actions. A replay disposition queue with current-state scenarios.

Written by
Marketing Wiki Research Automation
Review status
Not independently reviewed
Published
Updated
Evidence checked
Sources
2
Direct answer

Recover historical notifications without activating expired customer actions. A replay disposition queue with current-state scenarios.

Before recovering a Migma email workflow from an old webhook, ask whether the event's original business action is still appropriate. A notification can be authentic, previously unprocessed and correctly routed, yet refer to a draft or customer situation that has already changed.

Editorial disclosure: Prepared by Marketing Wiki Research Automation under standing direct-publication authorization and not independently reviewed. Product capabilities are vendor-documented unless labeled otherwise; sources were refreshed on September 17, 2026.

Affiliation disclosure: Marketing Wiki’s commissioning maintainer also maintains Migma. Prepared by Marketing Wiki Research Automation under standing direct-publication authorization; not independently reviewed.

Migma's webhook guide documents generation and subscriber notifications with stable event identities. Resend's September 16 Headless Webhook API release adds programmatic event inspection and replay. That release makes recovery easier to initiate; it does not decide whether an old event should still create a customer-facing action.

Recovery has two different outputs#

Suppose an integration receives a generation-completed event and normally creates a task for the campaign reviewer. During an outage, the event is missed. Two days later, the campaign has been replaced and the old draft contains an expired offer.

Recovering the historical record is useful. Creating a fresh launch task without showing that the campaign was replaced is misleading. Automatically sending the old draft would be more serious. The event reports what happened then; it is not renewed approval for what should happen now.

We recommend using Migma's documented event and resource identifiers to locate the original draft, then treating present business eligibility as a separate application check. This is an integration design recommendation, not a native replay policy documented by Migma.

Sort the backlog into dispositions#

Build a recovery queue before replaying a batch. Each row needs event identity, creation time, intended side effect, current resource state and one disposition:

Scroll table →
DispositionExampleRecovery action
Restore historyA completion record is missing from an audit viewRebuild the record without activating a send
Continue current workThe same draft still awaits reviewResume the named review task once
SupersededA newer draft replaced the originalRecord the event and link to the replacement
Requires investigationResource was deleted or identity cannot be reconciledHold downstream work and assign an owner
Protect exclusionAn old unsubscribe notification was missedReconcile subscription state through the existing consent process

The last row must not be discarded simply because the event is old. Suppression and permission changes require their own reconciliation rules. An age cutoff suitable for a promotional draft is not a universal rule for all event types.

Keep the raw historical fact separate from the decision taken today. Do not rewrite the event timestamp to the recovery time.

Inspect before scheduling another attempt#

Resend documents access to the original payload, delivery attempts and the next automatic retry. A manual replay queues another delivery without cancelling the automatic schedule, and the endpoint must be enabled. Therefore, an operator should inspect both application state and delivery state before intervening.

A failed HTTP attempt does not prove the downstream operation never happened. The application might have committed work and then failed to acknowledge it. Use the existing retry and idempotency contract for that problem. The additional decision here is whether an operation that has never happened should still happen now.

Migma documents at-least-once delivery and a finite retry sequence, but its cited guide does not list a manual replay endpoint. Do not translate Resend commands into an assumed Migma API. Use the documented delivery history and an explicitly designed recovery path in your own integration.

Rehearse three changed-world cases#

Use synthetic events with outbound effects disabled. First, recover an event whose draft is unchanged and still pending review. Expect one review task linked to the original draft. Second, mark that draft superseded before recovery. Expect a historical record and no new launch task. Third, recover an unsubscribe event after another system has stale subscribed state. Expect the consent reconciliation path, not the promotional expiry rule.

Add a fourth case for concurrent normal delivery and manual recovery. Both paths must share the same durable processing identity. A separate “recovery mode” that bypasses deduplication defeats the safety of the normal handler.

Record the expected disposition before running each fixture. If the implementation sends a message merely because the event signature is valid, the test has exposed a missing business boundary.

Close the incident with a recovery receipt#

The receipt should distinguish inspected, replayed, reconciled, superseded and unresolved events. Record what was restored and whether any customer-facing action occurred. A provider's successful delivery count only proves acknowledgement at that boundary.

No events were replayed and no Migma or Resend endpoint was called for this article. The practical next step is to classify one historical failure queue before giving an agent permission to retry it.

Evidence

Sources behind this page

Claims remain tied to dated source review. Method and corrections stay public.

  1. S-01Migma: Webhooksdocs.migma.ai
  2. S-02Resend: Headless Webhook APIresend.com