Home / Fixes / Resend DNS

Mail from the app is in spam, or it never leaves.

Sending as a shared onboarding address trains filters to ignore you. You need a domain you control, three records, and a From that matches them.

Symptoms

Why Lovable / Bolt / v0 stop here

The generated server route calls Resend with an API key and a From the example used. That example is a shared domain. It is allowed for a demo. It is not a product. DNS is outside the repo, so the generator cannot finish the job. People ship, then wonder why nobody confirms their email.

The actual fix

  1. Pick a sending hostname. yourdomain.com if nothing else sends from it; mail.yourdomain.com if Google Workspace already owns the apex.
  2. Resend, Domains, Add. Copy the DKIM CNAME and the SPF TXT exactly. Do not “fix” the trailing dot. Do not invent an include.
  3. One SPF TXT per hostname. If Google Workspace also sends, merge includes into a single record. A second SPF TXT is a fail.
  4. Start DMARC in monitoring: v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com; adkim=s; aspf=s; Then tighten to p=quarantine and later p=reject after two weeks of reports.
  5. Change the From in code to an address on the verified domain. Set Reply-To to a box you actually read.
  6. Wait for the dashboard to say Verified before you send real mail. TTL of 3600 means testing at minute one is theatre.
SPF -all is correct once every sender is listed. ~all is how mail leaks into spam forever. Do not jump to DMARC reject on day one if billing tools still send from the same apex.

A longer sketch, including the Google Workspace merge, is kit/resend-dns.md. The $297 triage is this issue if the registrar UI is the blocker.

$49 to run this against your tree

Zip or GitHub URL in. Ranked HTML/PDF in 24h. No call. First 10 audits are $49, credited if you continue to triage. Email contact@shipready.local.

Start an audit See a sample report