Email & notifications
All transactional email flows through one service layer (lib/crm/emails.sendEmail) → Resend. Navrik owns the email record; delivery state is driven by the provider webhook.
Sender resolution
The From is resolved: explicit → the workspace's own Resend account (BYO) → workspace_settings.email_from → platform default. So each workspace can send on-brand from its own verified domain.
Bring-your-own provider
A workspace can plug in its own Resend account (Settings → Email sending): encrypted key, own domain, own reputation and billing. Resolution falls back to the platform default when unset. (On Resend's free tier — 1 domain per account — BYO is how multiple workspaces each send on-brand.)
What sends email
Booking confirmations, reminders (daily cron), review requests (on completion), quote/invoice delivery. Contact-form leads fire a lead.created webhook, not an email.
Other channels
Outbound webhooks, SMS via Twilio (if configured), and ops alerts.