# Debug Resend Delivery

Find out why an email sent with Resend did not arrive, find the email, read its...

- Repository: https://github.com/ParadevAI/Paradev (15823 stars)
- Category: Engineering
- License: see repository
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add ParadevAI/Paradev --skill debug-resend-delivery -g -a claude-code -y`
Codex: `npx skills add ParadevAI/Paradev --skill debug-resend-delivery -g -a codex -y`
Cursor: `npx skills add ParadevAI/Paradev --skill debug-resend-delivery -g -a cursor -y`
Gemini CLI: `npx skills add ParadevAI/Paradev --skill debug-resend-delivery -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add ParadevAI/Paradev`

## Description

Find out why an email sent with Resend did not arrive, find the email, read its status, then check the API log, the suppression list, the sending domain, and the webhook that should have reported it. Use when the user says an email never arrived, went to spam, bounced, or that their app's sends or webhooks are failing.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Find where the email stopped

An email that "never arrived" stopped at one of four points: Resend never
accepted the request, Resend did not send it, the receiving server rejected it,
or it arrived and the user did not see it. Find the point before you change
anything.

## 1. Find the email

Run `list-emails` and match the recipient, subject, and time. Then run
`get-email` on the match.

If there is no match, the request did not succeed. Go to step 2.

## 2. No email: read the API log

Run `list-logs` and find requests to `/emails` near the time of the send. Run
`get-log` on any request that did not return 2xx. The response body names the
cause, for example a domain that is not verified, a field that is not valid, or
a rate limit. Quote it to the user.

## 3. An email: read its status

The status in `get-email` tells you what to do next:

- `queued`, `scheduled`: not sent yet. A scheduled email waits for its time.
- `sent`: Resend accepted it, and the receiving server has not answered yet.
  Look again after a few minutes.
- `delivery_delayed`: the receiving server is deferring it. Resend tries again.
  Do not send it again.
- `delivered`, `opened`, `clicked`: it arrived. Tell the user to look in spam,
  promotions, and any mail filters, then go to step 5.
- `bounced`: the receiving server rejected it. Go to step 4.
- `complained`: the recipient marked it as spam.
- `suppressed`: Resend did not send it, because the address is on the
  suppression list. Go to step 4.
- `failed`, `canceled`: it was not sent. Read the details, and look for the
  request in step 2.

## 4. Bounces and suppressions

Run `get-suppression` with the address. The origin tells you why it is there:
`bounce` (a hard bounce), `complaint` (a spam report), or `manual`. Resend does
not send to a suppressed address again.

The rest: https://github.com/ParadevAI/Paradev/blob/HEAD/plugins/resend/skills/debug-resend-delivery/SKILL.md
