---
title: "Test Supabase Auth emails: sign-up, magic links and codes · Proxy Mail QA"
description: "Test Supabase confirmation, magic-link, OTP and reset emails, and fix the two usual problems: the default sender's limits and links to localhost."
url: https://proxymail.qa/auth/supabase
---

1. [Home](https://proxymail.qa/)
2. [Auth providers](https://proxymail.qa/auth)

# Test Supabase Auth emails

Supabase Auth emails your users to confirm sign-up, sign in with a magic link or code, accept an invite and reset a password. To test them, sign up with a fresh Proxy Mail QA address and the link or code shows up on its row. First set up custom SMTP: Supabase's default sender only delivers to your project's team, two emails an hour.

Updated October 17, 2026

Limits below are from Supabase’s documentation on 17 October 2026\. Check it for current details.

## What Supabase sends

Each has its own template in the dashboard: **Confirm signup**, **Invite user**, **Magic Link**, **Change Email Address**, **Reset Password** and **Reauthentication**. By default they hold a link; add `{{ .Token }}` to a template to send a 6-digit code instead.

## First: the default sender won’t email test addresses

Supabase’s built-in email service is meant for trying things out. Its documentation says it:

- only delivers to addresses on your project’s team, refusing others with “Email address not authorized”;
- sends at most **2 messages an hour**;
- isn’t meant for production.

So sign-up tests fail before they start. Set up **custom SMTP** under Authentication → Emails (any provider: Resend, Amazon SES, Postmark, Mailgun and others), and make sure that provider isn’t in its own sandbox mode. [Test email not arriving?](https://proxymail.qa/troubleshooting) covers each one.

## Then: fix links to localhost

The **Site URL** defaults to `http://localhost:3000`, so confirmation and magic links from your deployed app can send people to localhost. Set it to your app’s URL and add every environment to **Redirect URLs**. More in [why emails link to localhost](https://proxymail.qa/solve/localhost-links).

## Test it by hand

1. Create an address in Proxy Mail QA, with a persona and password if your form asks.
2. Sign up in your app with it.
3. The confirmation link or code appears on the address’s row within seconds. Open or copy it, and check where it lands.

Then do the same for a magic link, a password reset and an invite. Each email stays in the address’s inbox, so anyone on the project can check it later.

## Automate it

signup.spec.ts

```ts
import { test, expect } from 'proxymail-qa/playwright';

test('Supabase sign-up confirms the email', async ({ page, qa }) => {
  const { address, password } = await qa.createAddress({ persona: true, password: true });
  const submitted = new Date();
  await page.goto('/signup');
  await page.getByLabel('Email').fill(address);
  await page.getByLabel('Password').fill(password);
  await page.getByRole('button', { name: 'Sign up' }).click();

  const { value: link } = await qa.waitForLink(address, { type: 'verify', since: submitted });
  await page.goto(link);
  await expect(page).toHaveURL(/staging\.example\.com/);
});

```

`checkEmail(address, { expectHost: 'staging.example.com' })` also fails the test if the link ends up anywhere else. More in [Test sign-up emails in Playwright](https://proxymail.qa/solve/playwright-email-tests). Built with Lovable, Bolt or v0? Their guides cover the Supabase settings each one sets up: [Lovable](https://proxymail.qa/built-with/lovable), [Bolt](https://proxymail.qa/built-with/bolt), [v0](https://proxymail.qa/built-with/v0).

## Try it on your next sign-up test

Free plan, no credit card. Create an address and watch the code or link arrive.

[Create a free account](https://app.proxymail.qa/?mode=signup)

## Questions

### Why does Supabase say "Email address not authorized"?

The default email service only delivers to members of your project's team, so any other address, including a test inbox, is refused. Set up custom SMTP (Resend, Amazon SES, Postmark and others) and Supabase can email any address.

### Why do my Supabase emails link to localhost?

The Site URL in Authentication settings defaults to http://localhost:3000, and links redirect there unless redirect\_to is allowed in the Redirect URLs list. Set the Site URL to your deployed app and add each environment's URL. Proxy Mail QA flags links that end up on localhost, even after a redirect.

### Can I get a 6-digit code instead of a link?

Yes. Add {{ .Token }} to the email template and call verifyOtp with it in your app. Proxy Mail QA shows the code on the row, and waitForCode returns it in tests.

### What about local development?

The Supabase CLI runs a local mail catcher (usually at localhost:54324) that only sees email from your local Supabase. Hosted projects send real email, which a Proxy Mail QA address receives.

## Related guides

- [ClerkVerification codes, email links and resets, when test-mode addresses aren't enough, and the development email cap.](https://proxymail.qa/auth/clerk)
- [Auth0Verification links, passwordless codes and resets, and the built-in email provider's limits.](https://proxymail.qa/auth/auth0)
- [Firebase AuthenticationVerification, reset and email-link sign-in emails on the web, and the daily sending limits.](https://proxymail.qa/auth/firebase)
- [Auth.js (NextAuth)Magic-link sign-in through your own email provider, its expiry, and what stops the email arriving.](https://proxymail.qa/auth/authjs)
- [Better AuthVerification, reset, magic-link and email OTP emails through your own provider, and their short expiry.](https://proxymail.qa/auth/better-auth)

[See every email testing problem we solve](https://proxymail.qa/solve)

Supabase is a trademark of its owner. Proxy Mail QA is independent and isn't affiliated with or endorsed by them.
