If a recipient received the same email twice, first find out whether your app sent it twice or whether one send produced repeated webhook processing. Those are different problems with different fixes. Resend documents selectable webhook event types and domain lifecycle events, but the available documentation does not establish that webhooks belong to an account rather than a domain. A domain setting alone therefore is not enough to explain duplicate email.
Separate duplicate sends from duplicate webhook processing
Trace one affected message across three layers. A duplicate at the send layer means the email API accepted two requests. A duplicate at the webhook layer means the receiver saw repeated deliveries or a replay. A duplicate at the application layer means the receiver applied the same event’s effects more than once. The recipient’s inbox alone cannot distinguish these cases.
As an Amazon Associate I earn from qualifying purchases.
| What happened | Evidence to check | Fix that addresses it |
|---|---|---|
| Two send requests were accepted | Your request/job logs and the Resend email IDs for the logical action | Trace retries, duplicate jobs, repeated submissions, or multiple senders; use an idempotency key for the send |
| One webhook event was delivered more than once | Event identity, payload, delivery attempts, endpoint responses, and replay history | Inspect why delivery was retried or replayed; make the receiver safe to repeat |
| One event caused the same effect twice | Receiver logs and durable records showing whether the event was already processed | Persist and enforce a processed-event guard or make the operation itself idempotent |
Resend describes webhook endpoint setup, event selection, retries, replay, and request/response inspection in its webhook documentation. Its Headless Webhook API announcement describes event and attempt inspection, exact payload retrieval, and replay; availability and listing depend on the account’s plan and data-retention window. A repeated notification is not, by itself, evidence of a second email send.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Check whether the email was submitted twice
Start with the application logs for one business action: for example, one order confirmation or password-reset request. Count the calls to Resend’s email API and match them to the provider email IDs. If there were two accepted calls, investigate the caller before changing webhook configuration.
#1 Best Overall
Common paths to a second send request
- A client or job retries after a timeout or server error, even though the first request may have succeeded.
- A queue delivers the same job again, or two services respond to the same business event.
- A user submits a form more than once.
- Network failure makes the caller uncertain whether the original request completed.
Resend’s Idempotency Keys documentation says to use a unique Idempotency-Key for the logical send and reuse it only when retrying the same request. Keys can be 1–256 characters and are retained for 24 hours. Keep the payload identical on retry; reusing a key with a different payload can produce a conflict. This protects the send request from accidental duplication; it does not deduplicate webhook processing.
Inspect webhook events, attempts, and replays
If your logs show one send request, inspect the endpoint’s event history. Compare the event identity and payload received by your application, then check how many delivery attempts occurred and whether anyone replayed the event. Resend’s webhook documentation describes automatic retries with exponential backoff and manual replay of failed and successful webhook messages. Its Headless Webhook API announcement describes listing events and attempts, viewing response status and body, retrieving the exact payload, and replaying events.
Rank #2
Use the dashboard or API capabilities available to your account, and remember that event listing is limited by the plan’s retention window. Preserve the relevant event IDs, payloads, timestamps, endpoint responses, and replay records before they age out.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →Make your webhook handler safe to run more than once
Webhook delivery should be treated as repeatable: the same event may reach your receiver again. Store a stable event identifier in durable storage and make checking or inserting that identifier atomic with the processing decision. Only apply a non-idempotent side effect when the event has not already been handled. If processing can fail partway through, design recovery so a retry does not repeat work that already completed.
For example, a receiver can attempt to insert an event ID into a table with a uniqueness constraint, then perform the event’s application work only if that insert succeeds. The precise transaction and recovery design depends on the side effect and storage system; avoid a separate “check, then write” flow that allows two concurrent deliveries to pass the check.
Resend’s Webhooks Ingester is one reference implementation: Resend says it provides persistence, retries, idempotency, deduplication, and connectors including PostgreSQL, MySQL, MongoDB, Supabase, Snowflake, BigQuery, and ClickHouse. These are supported connector options, not a benchmark or ranking. Choose storage based on your existing systems, retention and audit needs, workload, and operational ownership.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Check event types and recipient counts separately
Resend announced domain.created, domain.updated, and domain.deleted as domain lifecycle webhook events on November 22, 2024; for example, a subscriber can use domain.updated to learn that a domain has been verified. These are domain-status notifications, distinct from email outcome events. Resend’s feature materials describe registering an endpoint and selecting the event types it listens for. Taken together, those details do not establish the broader claim that webhook endpoints belong to an account rather than a domain. Do not infer the ownership rule—or a cause of duplicate email—from event categories alone. See Resend’s domain webhook announcement.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Also account for recipient-level event granularity when reconciling counts. Resend’s January 22, 2026 Webhook Event Visibility update says email outcome events are now distinct per recipient delivery outcome. The to field remains an array for backward compatibility, but each event contains one recipient. A message addressed to several people can therefore produce separate outcome events; that is not the same as multiple deliveries of one recipient’s email.
Best Value
Follow this incident check in order
- Choose one affected message. Record its recipient, subject, approximate times, and Resend email ID from provider and application records.
- Count accepted send requests. If there were two, trace the retry, queue, form, or service path and protect retries with a stable
Idempotency-Keyand an unchanged payload. - If there was one send, inspect webhook history. Compare event identity and payload, then review delivery attempts, endpoint responses, and any manual replay available for the event.
- Inspect receiver-side processing. Check whether the handler records an event as processed before triggering irreversible effects, and whether concurrent or partial retries can repeat them.
- Verify subscriptions and event type. Check which events the endpoint receives and whether it was registered more than once. Keep domain lifecycle events separate from email outcomes.
- Reconcile recipients. For events covered by Resend’s 2026 visibility behavior, count recipient outcomes rather than treating every event as another send to the same person.
Resend’s idempotency guide and engineering explanation address the send-request layer; its webhook guide and Headless Webhook API announcement address delivery inspection and replay. Match those records with your own logs to identify which layer actually repeated.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




