# Email template changes not showing up

> You edited an Auth email on SupaHost but users still get the old text. Check that it was saved, that it's the template Auth actually sends, and which placeholders work.

Source: https://supahost.app/kb/email-template-not-updating · Updated 2026-11-11

## What you see

You changed the subject or message of an Auth email under Dashboard → your project → **Auth** tab → **Auth emails**, but new emails still show the default or older text. Or a placeholder shows up as literal text instead of the user's address.

## Why it happens

Usually one of these:

- The change wasn't saved. Each of the five templates has its own **Save email** button.
- Auth sent a different template from the one you edited.
- You're reading an older email in the same inbox thread.
- The text uses HTML or a placeholder the template doesn't support.

## How to fix it

1. **Confirm what's saved.** Select the template and click **Preview saved version**. That's the page Auth uses for the email body. If it shows the old text, edit again and click **Save email**. Templates you've changed are marked with a dot next to their name.

2. **Edit the template Auth actually sends.** This catches most people out:

   | What your app calls | Template sent |
   |---|---|
   | `signUp()` | Confirm sign-up |
   | `signInWithOtp()` for an existing user | Magic link |
   | `signInWithOtp()` for an address with no account yet | Confirm sign-up (unless **Skip email confirmation** is on) |
   | `resetPasswordForEmail()` | Reset password |
   | `auth.admin.inviteUserByEmail()` | Invite |
   | `updateUser({ email })` | Change email |

   If your login form uses magic links and most visitors are new, they mostly get **Confirm sign-up**. Give it the same wording as **Magic link**.

3. **Send a fresh email and open that one.** Many inboxes group messages with the same subject. Make sure you're opening the newest message, not one sent before you saved.

4. **Give it a minute.** The subject is applied along with the project's other Auth settings, within about a minute of saving. Auth loads the body when it builds each email, so if the old body persists, wait a few minutes and send another.

5. **Use plain text and supported placeholders.** The fields are text, not HTML: tags are shown as typed, and the layout, button and code box are fixed. These placeholders work:

   - `{{ .Email }}`: the user's address
   - `{{ .NewEmail }}`: the new address (Change email only)
   - `{{ .Token }}`: the one-time code
   - `{{ .SiteURL }}`: your Site URL

   Placeholders are case-sensitive, so `{{ .email }}` isn't filled in. For example, a Reset password message:

   ```
   Someone asked to reset the password for {{ .Email }} on Bookly.
   If that wasn't you, ignore this email and your password stays the same.
   ```

6. **Change the sender name in the right place.** The name in the From line and email header is **App name**, on the **Auth** card of the same tab. Save it with **Save Auth settings**, not **Save email**.

## On SupaHost

- There are five editable templates: Confirm sign-up, Magic link, Reset password, Invite and Change email. Field limits: Subject 150 characters, Heading 150, Message 2,000, Button text 40.
- The button link and a one-time code are added to every email automatically, so you can't remove or move them.
- **Reset to default** restores the built-in wording for the selected template.
- Only the instance owner can edit templates. Team members see the card read-only.

## Related

- [Auth emails and templates](/docs/auth/email-templates)
- [Not receiving Auth emails](/kb/not-receiving-auth-emails)
- [Sending Auth emails in the user's language](/kb/custom-emails-by-language)
- [Magic links and email OTP](/docs/auth/magic-links-otp)
