Notifications
Per-user notification preferences, email templates, journey emails, and digest delivery.
InsightHire separates who gets notified (user preferences) from what gets sent (org email templates and branding). This page covers both layers.
User notification preferences
Settings → Notifications (/dashboard/settings/notifications) is available to every signed-in user — not admin-only. Each user controls their own delivery frequency per event type.
Event types
| Key | Label | Description |
|---|---|---|
candidateSynced | Candidate Synced from ATS | New candidate from LinkedIn, Greenhouse, Indeed, etc. |
invitationSent | Pre-Screen Invitation Sent | You sent a video pre-screening invite |
assessmentCompleted | Pre-Screen Completed | Candidate finished async journey |
candidateScored | Candidate Scored/Evaluated | AI scoring finished |
statusChanged | Status Changed | Candidate moved stages (qualified, rejected, …) |
poolAddition | Added to Candidate Pool | Candidate added to talent pool |
highScoreAlert | High-Score Alert | Candidate exceeded org score threshold |
Frequency options
Each event supports four modes:
| Mode | Behavior |
|---|---|
| Immediate | Email sent as the event occurs |
| Daily Digest | Bundled into end-of-day digest |
| Weekly Digest | Bundled into weekly summary |
| Disabled | No email for this event type |
Preferences persist to users.preferences.notifications via trpc.user.updateProfile. The page loads from the auth context on mount.
Digest emails
Daily and weekly digests aggregate eligible events per user based on their frequency choices. Digest HTML is generated server-side with org branding tokens. Platform admins can preview digest templates from InsightHire Admin.
High-score alerts default to Immediate — most teams want real-time signal on top candidates.
Org email templates
Transactional content is edited separately from notification frequency:
| Surface | Path | Scope |
|---|---|---|
| Email templates | /admin/email-templates | Journey, invite, rejection, offer, custom |
| Email settings | /admin/email-settings | Mailgun domain, default sender, deliverability |
Templates support:
- Categories —
JOURNEY_TRANSITION, invite, assessment, custom, etc. - Status —
DRAFTvs published - Version history —
email_template_versionsfor rollback - Merge tokens — candidate name, position title, journey link, org branding
- Sharing — share templates with specific team members
New orgs receive seeded default templates during platform provisioning (seedIntegrationDefaults / org backfill procedures).
Template + branding merge order
- Template body HTML
- Org branding footer (
Settings → Branding→ custom footer, support email) - From name / reply-to from branding + email settings
See Branding for footer and sender configuration.
Journey emails
Journey-related emails are the highest-volume candidate touchpoints:
| Trigger | |
|---|---|
| Journey invitation | Recruiter invites candidate or auto-invite on apply |
| Journey reminder | Scheduled reminder for incomplete sessions (JOURNEY_REMINDERS queue) |
| Journey continuation | Deep link to resume incomplete journey |
| Completion confirmation | Candidate submits final step |
Journey emails require valid Mailgun configuration on the API (MAILGUN_API_KEY, domain). Platform admin health checks flag missing Mailgun as a journey email failure risk.
Editing journey templates
- Open
/admin/email-templates - Filter by category Journey /
JOURNEY_TRANSITION - Edit subject and body; use preview with sample merge data
- Publish — draft templates are not sent in production
Link journey nodes can specify custom template overrides per step in the journey builder (/dashboard/journeys).
Pipeline and task emails
With custom_pipelines, automations can SEND_CANDIDATE_EMAIL or NOTIFY_USERS using template IDs. Task assignment emails fire from tasks router via sendTemplateEmail.
These respect the same Mailgun + branding pipeline as journey mail.
In-app vs email
Most notification types are email-first. The dashboard activity feed and review queue provide in-app equivalents for scoring and status changes — notification preferences do not suppress in-app data.
Admin vs user scope
| Setting | Who configures | Path |
|---|---|---|
| Notification frequency | Each user | /dashboard/settings/notifications |
| Template content | Org admin | /admin/email-templates |
| Sender domain | Org admin | /admin/email-settings |
| High-score threshold | Org admin | Organization settings / scoring config |
Troubleshooting
| Issue | Check |
|---|---|
| No emails at all | Mailgun keys; email settings domain verification |
| Wrong footer/sender | Branding + email settings |
| Digest empty | Events occurred but user chose Disabled; timezone boundaries |
| Journey invite not sent | Template published? Mailgun logs in platform admin |
| Immediate still delayed | Queue worker backlog; check API logs |
Related docs
- Branding — email footer and from name
- Pipelines & automations — automation emails
- First journey — journey email touchpoints

