Skills

Debug Resend Delivery

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

Install

npx skills add ParadevAI/Paradev --skill debug-resend-delivery -g -a claude-code -y
Repository
ParadevAI/Paradev15.8k
Category
Engineering
Updated
3d ago
License
See repository
Context cost
Lightabout 760 tokens
Runs scripts
No, instructions only

What it does

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.

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.

Read the whole SKILL.md on GitHub

More in Engineering