HALO sends project Authentication email directly through the project's Resend key. Generic SMTP and arbitrary email delivery webhooks are not part of the production contract.
#Email settings
- Enable or disable email Authentication and public signup separately.
- Choose whether email confirmation is required before a session.
- Set minimum length and uppercase, lowercase, number, and symbol rules.
- Set a site URL and an exact allowlist of redirect URLs.
#Configure Resend
- 1Verify a sending domain
Add and verify the domain in Resend before selecting a From address.
- 2Create a restricted key
Create a Sending access key beginning with
re_. Prefer a domain-restricted key. - 3Save project delivery
Set From name, verified From address, paste the key, and enable delivery.
#HTML templates
Confirmation, password recovery, and invitation each require a subject and HTML body. HTML is sent as configured through Resend.
| Variable | Value |
|---|---|
{{ .ConfirmationURL }} | Required verification or recovery link |
{{ .Email }} | Recipient email |
{{ .SiteURL }} | Configured project site URL |
{{ .ProjectID }} | Project identifier |
{{ .Purpose }} | confirmation, recovery, or invite |
<!doctype html>
<html>
<body style="font-family: sans-serif; color: #111">
<h1>Confirm your account</h1>
<p>Finish signing in as {{ .Email }}.</p>
<p><a href="{{ .ConfirmationURL }}">Confirm email</a></p>
</body>
</html>#Confirmation & recovery
/api/v1/auth/verify/api/v1/auth/recover/api/v1/auth/password/resetRedirect targets must be the configured site URL or an exact allowed redirect. HALO does not accept an arbitrary URL supplied by the user.
#Rate limits
Configure hourly signup, login, and recovery limits. Limits are project-scoped and discriminator-aware. Authentication fails closed with a 503 if the rate limiter is unavailable.