← all posts
resend api keysresend domain verificationtransactional email not sendingresend dns spf dkimmagic link email debugging

Resend: what to check when transactional email just stops

API keys, domains, DNS, logs — the order I debug magic links and receipts when users swear they got nothing. With the Resend pages that actually matter.

by team·Jul 15, 2026·2 min read

When transactional email "just stops," it's almost never the send call in your code.

It's DNS. Or a domain stuck in "pending." Or an API key from the wrong account. Or you rotated keys and only updated production.

Here's the boring map of Resend pages that actually matter.

The short list

API keysresend.com/api-keys
Create, revoke, name them after the app that uses them. If two side projects share one key, you will eventually revoke the wrong one.

Domainsresend.com/domains
SPF, DKIM, the verification badges. This is where "emails go to spam" and "emails don't send" both start.

Logs / emails — in the dashboard after you send something
When a user says "I never got the login code," you want proof of accept/delivery/bounce, not vibes.

Full jump list: Resend on devlinkspad.

The order I debug login emails

  1. Did Resend accept the API request?
    Check your app logs for 4xx/5xx. Wrong key → 401. Unverified domain → Resend will tell you.

  2. Is the domain verified?
    Domains page. Not "I added the records last month" — are they still green. DNS hosts love to "helpfully" edit TXT records.

  3. Is the from-address on a verified domain?
    login@updates.yourdomain.com only works if updates.yourdomain.com (or the parent, depending on how you set it up) is verified.

  4. What does the Resend log say?
    Delivered, bounced, complained, delayed. "User didn't get it" + "Delivered" is a different problem (spam folder, corporate filter, typo'd email).

  5. Only then dig into template content and client-side bugs.

Small habits that prevent 2am pages

  • Separate API keys per environment (dev / prod).
  • Name keys after the service: devlinkspad-prod, not key-3.
  • When you rotate, update Vercel env vars in the same sitting.
  • Send yourself a test after every domain DNS change.

Adjacent tools you'll open in the same hour

Email rarely lives alone:

  • Clerk or Auth0 if the "email" is really a magic-link provider
  • Vercel for the env var you forgot to set
  • Stripe if the email is a receipt and the charge is the real question

Same shape of problem every time: the dashboard page exists, your brain doesn't store the path.

devlinkspad.com is just ⌘K for that.


Not affiliated with Resend. If your DNS is wrong, no palette can fix that — but it can get you to the domains page faster.

Press ⌘K. Every dashboard, one keystroke away.