feat(Auth/EmailTemplates): Add SiteURL variable for notifications (#46393)

This will make email templates more consistent and may be merged after
https://github.com/supabase/auth/pull/2532 is deployed.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **New Features**
* Authentication notification emails now include access to site URL
references. This enhancement applies to multiple notification types:
password change alerts, email change confirmations, phone number change
notifications, identity linking and unlinking events, and multi-factor
authentication enrollment and unenrollment notifications.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/supabase/supabase/pull/46393?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Co-authored-by: Chris Stockton <chris.stockton@supabase.io>
This commit is contained in:
Chris StocktonandChris Stockton authored and GitHub committed 2026-06-25 15:20:01 +00:00
1 parent 0038f303f2
commit d46a9c43fd
1 file changed
+32 -6
@@ -256,7 +256,7 @@ const PASSWORD_CHANGED_NOTIFICATION: AuthTemplate = {
MAILER_SUBJECTS_PASSWORD_CHANGED_NOTIFICATION: { title: 'Subject', type: 'string' },
MAILER_TEMPLATES_PASSWORD_CHANGED_NOTIFICATION_CONTENT: { title: 'Body', type: 'code' },
},
variables: [TemplateVariables.Email, TemplateVariables.Data],
variables: [TemplateVariables.Email, TemplateVariables.Data, TemplateVariables.SiteURL],
validationSchema: z.object({
MAILER_SUBJECTS_PASSWORD_CHANGED_NOTIFICATION: z.string().min(1, 'Subject is required.'),
}),
@@ -274,7 +274,12 @@ const EMAIL_CHANGED_NOTIFICATION: AuthTemplate = {
MAILER_SUBJECTS_EMAIL_CHANGED_NOTIFICATION: { title: 'Subject', type: 'string' },
MAILER_TEMPLATES_EMAIL_CHANGED_NOTIFICATION_CONTENT: { title: 'Body', type: 'code' },
},
variables: [TemplateVariables.Email, TemplateVariables.OldEmail, TemplateVariables.Data],
variables: [
TemplateVariables.Email,
TemplateVariables.OldEmail,
TemplateVariables.Data,
TemplateVariables.SiteURL,
],
validationSchema: z.object({
MAILER_SUBJECTS_EMAIL_CHANGED_NOTIFICATION: z.string().min(1, 'Subject is required.'),
}),
@@ -297,6 +302,7 @@ const PHONE_CHANGED_NOTIFICATION: AuthTemplate = {
TemplateVariables.Phone,
TemplateVariables.OldPhone,
TemplateVariables.Data,
TemplateVariables.SiteURL,
],
validationSchema: z.object({
MAILER_SUBJECTS_PHONE_CHANGED_NOTIFICATION: z.string().min(1, 'Subject is required.'),
@@ -315,7 +321,12 @@ const IDENTITY_LINKED_NOTIFICATION: AuthTemplate = {
MAILER_SUBJECTS_IDENTITY_LINKED_NOTIFICATION: { title: 'Subject', type: 'string' },
MAILER_TEMPLATES_IDENTITY_LINKED_NOTIFICATION_CONTENT: { title: 'Body', type: 'code' },
},
variables: [TemplateVariables.Email, TemplateVariables.Provider, TemplateVariables.Data],
variables: [
TemplateVariables.Email,
TemplateVariables.Provider,
TemplateVariables.Data,
TemplateVariables.SiteURL,
],
validationSchema: z.object({
MAILER_SUBJECTS_IDENTITY_LINKED_NOTIFICATION: z.string().min(1, 'Subject is required.'),
}),
@@ -333,7 +344,12 @@ const IDENTITY_UNLINKED_NOTIFICATION: AuthTemplate = {
MAILER_SUBJECTS_IDENTITY_UNLINKED_NOTIFICATION: { title: 'Subject', type: 'string' },
MAILER_TEMPLATES_IDENTITY_UNLINKED_NOTIFICATION_CONTENT: { title: 'Body', type: 'code' },
},
variables: [TemplateVariables.Email, TemplateVariables.Provider, TemplateVariables.Data],
variables: [
TemplateVariables.Email,
TemplateVariables.Provider,
TemplateVariables.Data,
TemplateVariables.SiteURL,
],
validationSchema: z.object({
MAILER_SUBJECTS_IDENTITY_UNLINKED_NOTIFICATION: z.string().min(1, 'Subject is required.'),
}),
@@ -351,7 +367,12 @@ const MFA_FACTOR_ENROLLED_NOTIFICATION: AuthTemplate = {
MAILER_SUBJECTS_MFA_FACTOR_ENROLLED_NOTIFICATION: { title: 'Subject', type: 'string' },
MAILER_TEMPLATES_MFA_FACTOR_ENROLLED_NOTIFICATION_CONTENT: { title: 'Body', type: 'code' },
},
variables: [TemplateVariables.Email, TemplateVariables.FactorType, TemplateVariables.Data],
variables: [
TemplateVariables.Email,
TemplateVariables.FactorType,
TemplateVariables.Data,
TemplateVariables.SiteURL,
],
validationSchema: z.object({
MAILER_SUBJECTS_MFA_FACTOR_ENROLLED_NOTIFICATION: z.string().min(1, 'Subject is required.'),
}),
@@ -369,7 +390,12 @@ const MFA_FACTOR_UNENROLLED_NOTIFICATION: AuthTemplate = {
MAILER_SUBJECTS_MFA_FACTOR_UNENROLLED_NOTIFICATION: { title: 'Subject', type: 'string' },
MAILER_TEMPLATES_MFA_FACTOR_UNENROLLED_NOTIFICATION_CONTENT: { title: 'Body', type: 'code' },
},
variables: [TemplateVariables.Email, TemplateVariables.FactorType, TemplateVariables.Data],
variables: [
TemplateVariables.Email,
TemplateVariables.FactorType,
TemplateVariables.Data,
TemplateVariables.SiteURL,
],
validationSchema: z.object({
MAILER_SUBJECTS_MFA_FACTOR_UNENROLLED_NOTIFICATION: z.string().min(1, 'Subject is required.'),
}),