Hiring workflows
Inbound email → candidates
Forward resumes to your workspace inbox. Otter parses attachments and creates candidates and applications automatically.
Addresses
Each workspace gets an inbox on applications.otter.diy:
acme@applications.otter.diy— general applicationsacme+eng-001@applications.otter.diy— routed to job codeeng-001
How mail reaches Otter
- Cloudflare Email Routing accepts mail on the applications subdomain only. Apex
otter.diyMX stays on Google Workspace — Gmail is not broken. - An Email Worker parses the message and POSTs JSON to
https://app.otter.diy/api/inbound/email. - Otter dedupes by provider message id, stores the raw payload in R2, and queues processing (Inngest when configured; otherwise inline on the webhook).
- The processor screens auto-replies, picks a resume attachment, parses it, matches/creates the candidate, and opens an application when a job code is present.
Outbound + replies
From a candidate profile, recruiters can send email via Resend. Otter stores the thread and sets Reply-To: reply+<token>@applications.otter.diy so replies return on the same inbound pipeline.
Requires RESEND_API_KEY and RESEND_FROM_EMAIL in Vercel after you verify a sending domain in Resend.
Replay
Failed or stuck messages can be replayed from Settings → Email & inbound (workspace admins) or Super Admin → Inbound.