Onboarding emails — what arrives and when

A welcome email on first sign-in plus three follow-up tips on days 3, 7, and 14. Sent via Resend; per-user idempotency means each tip arrives at most once.

Updated 2026-04-26

New Kodori workspaces get a small set of onboarding emails so a brand-new user has a chance to find the things that aren't on the dashboard at first glance.

What to expect:

- **Welcome (immediate)** — fires the moment your first-time JWT lands. Three things to try: ⌘K (or Ctrl+K) to open the agent, drag-drop to /upload, or click "Load sample data" on the dashboard. - **Day 3 — Try the agent** — a few example prompts that show what the agent can do across summarisation, search, classification, and bulk actions. - **Day 7 — Sample data** — for users who haven't uploaded anything yet, a nudge to load the fixture (a matter, a project, a legal hold, a retention class) so search + the compliance views have something to demonstrate. - **Day 14 — Compliance side of Kodori** — a tour of /audit, /legal-holds, /retention, and /anomalies. Useful for users who came in for the document management and haven't yet noticed Kodori is also defensible at audit time.

Implementation notes:

- The welcome dispatch happens via an Inngest event from the auth flow, not inline — keeps the Edge middleware bundle light. - A daily cron at 09:00 UTC walks the drip schedule. Each (user, kind) pair is unique-indexed in onboarding_email_log so the cron can't double-send. Per-run cap of 50 sends per kind so a post-outage backlog doesn't burst Resend. - Failed sends still log a row (with the error reason) so the cron doesn't retry-flood. Operators see what's happening in the Resend dashboard + Vercel runtime logs.

Don't want these? Reply to any of them with "unsubscribe" — we'll stop the drip for that user. Account + transactional emails (invites, billing, etc.) keep flowing because those are on different paths.