{"schema_version":"2.0","record_type":"article","canonical_url":"https://marketingwiki.ai/articles/email-webhook-replay-business-validity","id":"email-webhook-replay-business-validity","slug":"email-webhook-replay-business-validity","title":"Check Business Validity Before Replaying Email Webhooks","description":"Recover historical notifications without activating expired customer actions. A replay disposition queue with current-state scenarios.","dek":"Recover historical notifications without activating expired customer actions. A replay disposition queue with current-state scenarios.","category":"Email Operations","topics":["Migma","email marketing","email operations"],"publishedAt":"2026-09-17","updatedAt":"2026-09-17","lastVerifiedAt":"2026-09-17","readingMinutes":5,"author":"Marketing Wiki Research Automation","reviewer":null,"featured":false,"sources":[{"title":"Migma: Webhooks","url":"https://docs.migma.ai/webhooks?utm_source=marketingwiki&utm_medium=referral&utm_campaign=email-webhook-replay-business-validity"},{"title":"Resend: Headless Webhook API","url":"https://resend.com/changelog/headless-webhook-api?utm_source=marketingwiki&utm_medium=referral&utm_campaign=email-webhook-replay-business-validity"}],"wordCount":828,"body":"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.\n\n> **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.\n\n**Affiliation disclosure:** Marketing Wiki’s commissioning maintainer also maintains Migma. Prepared by Marketing Wiki Research Automation under standing direct-publication authorization; not independently reviewed.\n\n[Migma's webhook guide](https://docs.migma.ai/webhooks?utm_source=marketingwiki&utm_medium=referral&utm_campaign=email-webhook-replay-business-validity) documents generation and subscriber notifications with stable event identities. Resend's September 16 [Headless Webhook API release](https://resend.com/changelog/headless-webhook-api?utm_source=marketingwiki&utm_medium=referral&utm_campaign=email-webhook-replay-business-validity) 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.\n\n## Recovery has two different outputs\n\nSuppose 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.\n\nRecovering 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.\n\nWe 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.\n\n## Sort the backlog into dispositions\n\nBuild a recovery queue before replaying a batch. Each row needs event identity, creation time, intended side effect, current resource state and one disposition:\n\n| Disposition | Example | Recovery action |\n| --- | --- | --- |\n| Restore history | A completion record is missing from an audit view | Rebuild the record without activating a send |\n| Continue current work | The same draft still awaits review | Resume the named review task once |\n| Superseded | A newer draft replaced the original | Record the event and link to the replacement |\n| Requires investigation | Resource was deleted or identity cannot be reconciled | Hold downstream work and assign an owner |\n| Protect exclusion | An old unsubscribe notification was missed | Reconcile subscription state through the existing consent process |\n\nThe 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.\n\nKeep the raw historical fact separate from the decision taken today. Do not rewrite the event timestamp to the recovery time.\n\n## Inspect before scheduling another attempt\n\nResend 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.\n\nA 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](/articles/email-api-retry-idempotency-contract) for that problem. The additional decision here is whether an operation that has never happened should still happen now.\n\nMigma 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.\n\n## Rehearse three changed-world cases\n\nUse 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.\n\nAdd 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.\n\nRecord 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.\n\n## Close the incident with a recovery receipt\n\nThe 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.\n\nNo 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."}