Symptoms / Fix guide

Why are my signup and confirmation emails not arriving?

Matt Turley, Continuum. Updated November 5, 2026.

For founders whose users sign up and never receive the confirmation, magic link, password reset or receipt.

The short answer

Why are my signup and confirmation emails not arriving?

Either the email was never sent, or it was sent and filtered. Check your email provider's log first. A built-in test sender with limits, a sending domain without SPF and DKIM, a from-address on an unverified domain and an email API key missing in production are the usual causes. A delivered link that says "expired" often points to a link scanner.

What is really going on

Email fails in two different places. Sending fails when your app cannot hand the message to a provider, usually because of a missing key, an unverified domain or a provider limit. Delivery fails when the provider hands it to the recipient's mail server and that server decides it is spam or rejects it. The provider's log tells you which, and it is the first thing to open.

AI-built apps commonly use the auth provider's built-in email sender because it works on day one. That sender is meant for trying things out, and has low rate limits and restrictions. It fails in the first week of real signups.

Authentication for your sending domain (SPF, DKIM and DMARC) is no longer optional for reaching the big mailbox providers. Without it, even correct emails land in spam or are rejected.

The usual causes, most common first

  1. The app is still using the built-in test sender

    How to tell Auth emails work for you and your team but not for new users, or stop after a handful of signups. The provider's documentation describes its default sender as limited and not for production.

    The fix Configure your own SMTP or email API provider in the auth settings, with a verified domain, before launch.

  2. The sending domain is not authenticated

    How to tell Emails arrive in spam or bounce. The provider dashboard shows the domain as unverified, or a DNS check shows no SPF or DKIM record for the sending domain.

    The fix Add the DNS records your provider gives you (SPF and DKIM), publish a DMARC policy, and send from an address on that domain.

  3. The send fails silently in production

    How to tell No entry appears in the provider's log at all. The API key exists locally but not in production, or the call throws and the error is caught and ignored, so signup appears to succeed.

    The fix Define the key in the production scope, and make a failed send visible: log it, alert on it and show the user a way to resend.

  4. The link in the email points to the wrong place

    How to tell The email arrives and the button leads to localhost or to a preview URL. The confirmation redirect or Site URL is still the development value.

    The fix Set the Site URL and the allowed redirects to the production domain, and send yourself a real email to click through.

  5. A link scanner consumed the one-time link

    How to tell The user says the link has expired or was already used the moment they click it. Some corporate mail systems open every link in a message to scan it, which uses up a single-use token.

    The fix Land the user on a page that requires a click or a code entry before the token is redeemed, or use a one-time code instead of a link.

  6. The message is filtered for its content or volume

    How to tell Delivery is mixed: some mailboxes receive it, others do not. A shared sending address, a no-reply sender with no reply path, or a burst of mail after a launch can all reduce reputation.

    The fix Use a dedicated sending subdomain, keep messages plain and transactional, and ramp volume up rather than starting with a spike.

How we diagnose it

  1. Open the provider log for one test address. Send a signup email to a mailbox you control and look it up in the email provider's log. No entry means sending failed; an entry marked bounced, deferred or delivered means delivery is the question.
  2. Check the sender configuration. Confirm whether the app uses the built-in sender or your own, the key is present in production and the from-address belongs to a verified domain.
  3. Check the domain's DNS records. Look up SPF, DKIM and DMARC for the sending domain and compare them with what the provider asks for.
  4. Click the link in a real message. Follow the link end to end in a clean browser. Note the host it lands on and whether the token is still valid.
  5. Test several mailbox providers. Send to at least a Gmail, an Outlook and a work address. A fix is confirmed only when all of them receive the message in the inbox.

What fixing it changes

  • Auth and receipt emails go through a production email provider with a verified domain.
  • SPF, DKIM and DMARC are published for the sending domain.
  • Failed sends are logged and alerted on, and the user can request another email.
  • Links in every message point at the production domain and survive link scanners.
  • There is a plain check that signup, reset and receipt emails arrive, run before each launch.

When you do not need us

Setting up a custom sender and adding DNS records is a settings task that most founders can do in an afternoon by following the provider's guide. Bring us in if the configuration looks right and mail still goes missing, or if the sending code is tangled into a custom auth flow.

Your next step

The Leak Check is free and tests the auth flow and other launch basics from the outside in under a minute. For the sending code and configuration behind the email, a Ship Check reads the codebase.

free Leak Check: Paste your live URL. It runs seven surface checks (reachability, SSL, auth flow, payment path, exposed secrets in the client bundle, Supabase exposure, broken links and performance) and returns a green, yellow or red for each. It is a surface scan, not a full security audit. Or: Get a Ship Check, $299.

Run the free Leak Check →See all services and prices →
FAQ

Straight answers

Why do the emails reach me but not my users?
Test senders often deliver only to the account owner or team members, and your own mailbox may trust your own domain. Always test with outside addresses at several providers.
Do I need a separate domain for sending?
A subdomain such as mail.yourdomain.com is common practice, because it keeps sending reputation apart from your main domain. It is not required, but it limits the damage if something goes wrong.
Should I use a magic link or a one-time code?
A code avoids the link-scanner problem entirely, because nothing is redeemed by opening the message. A link is easier for the user. If your users are on corporate email, prefer the code.
Keep reading
Why is my OAuth callback not working?By symptom. Sign in with Google or GitHub fails after the provider screen. The redirect URI, Site URL, client secret and cookie causes, and how to check each.What should I check before launching my AI-built app?By stage. A launch-week checklist for apps built with AI tools: who can see whose data, secrets, the real payment path, email, backups, monitoring and a rollback plan.My app broke right after launch. What do I do first?By stage. The first hours after a launch goes wrong: stop the damage, find the failure, protect users and data, then make it stable. What usually breaks, in order.What breaks in an AI-built B2B SaaS app before launch?By vertical. For B2B SaaS built with AI tools: tenant isolation, roles, invites, billing and the enterprise asks that arrive first. What breaks and how to check.What breaks in an AI-built education app?By vertical. Education apps built with AI tools: student data, teacher, student and parent roles, children's privacy and what schools ask. Not legal advice.Why is my Stripe webhook not firing?By symptom. Stripe is usually sending the event and your server is refusing it. How to read the delivery log, the six usual causes, and the fix for each.
Sources
  1. 1. Supabase: Configure a custom SMTP server, Supabase: Why the built-in sender is for testing and how to switch to your own provider.
  2. 2. Google: Email sender guidelines, Google: Authentication requirements (SPF, DKIM, DMARC) for reaching Gmail inboxes.
  3. 3. Resend: Domains, Resend: Verifying a sending domain with DNS records.
Why are my signup and confirmation emails not arriving?