Email Campaigns
TOOLS · EXPERTINI ATS

Email Campaigns

A full email composer inside your ATS — send to all candidates, all clients, or an uploaded list through your own SendGrid or SMTP, with a per-recipient delivery report.

2 min read · Updated July 2026 · Expertini Editorial

Email Campaigns turns your ATS into your outreach desk: compose a full email once — with per-recipient personalisation — and send it to every candidate in your database, every client contact, or a CSV list you upload, without exporting addresses to a separate email tool.

Sending always runs through your own connected channel (your SendGrid account or your own SMTP server), so deliverability, branding, and the from-address are entirely yours — and every campaign finishes with a full report showing exactly who received it and who didn't.

Watch the 30-second overview — no sign-up needed

01What it does

A draft-first composer with merge-field personalisation, an optional one-click Apply button linking any of your open jobs, and three audiences: all candidates (with opt-outs excluded automatically), all client contacts, or an uploaded CSV. After sending, a per-recipient report records every delivery and failure.

02Who it's for

Recruiters and agencies who message at volume — announcing new roles to a talent pool, sending a client newsletter, or inviting an uploaded list to apply — and want it done from the same system that holds the records, not a separately maintained mailing list.

03What makes this different

Campaigns send through your own SendGrid or SMTP connection, never shared infrastructure — your domain, your sending reputation, your from-address. Candidate sends carry an automatic, permanent unsubscribe link, opted-out candidates are excluded before sending, and each campaign is capped at 500 recipients per send to keep volume deliberate.

04Why it matters

Exporting candidate emails into an external mail tool creates a second, drifting copy of your data and usually loses opt-out state on the way. Composing and sending where the records live keeps consent, personalisation, and reporting in one auditable place.

05Pricing and what's included

Included from the Professional plan upward, with a 14-day free trial available. Sending requires your own connected channel — SendGrid or your own SMTP server — connected in minutes from the in-app Connectors page.

06Support

The Help Center covers audiences, CSV format, and delivery reports; support@expertini.com is available for anything else.

Engineering notes

Platform architecture & operations

A1Architecture: where it sits in the platform

Email Campaigns is a first-class module of the Marketing suite inside the authenticated Expertini ATS workspace. The platform is deliberately server-rendered: every view is prepared by the application server and shipped as complete HTML, with no client-side framework, no third-party CDN scripts, and no build pipeline between the data and the page. What renders is what the server computed — the property that makes the interface auditable.

All persistence runs on a single search-native document store; every query carries the organisation's identifier as a mandatory filter at the lowest query layer. Tenant isolation is therefore structural — a property of how every request is composed — rather than a policy that relies on application code remembering to check.

Availability is governed by the platform's tool registry: this tool is registered from the Professional plan, and access is enforced server-side by the registry gate on every request — never by hiding a button. Plans also carry a monthly distinct-tool quota (3 / 5 / 15 / 30 / 45 across Trial→Business, unlimited on Enterprise), counted at the same chokepoint. The pricing page states both honestly: what is available, and how much of it the month includes.

A2Data model and dependency map

In production the tool reads and writes campaign records (ats_email_campaigns), the candidate database (ats_candidates), client accounts (Client CRM) (ats_clients). Documents are plain, explicitly-mapped fields — mappings are provisioned ahead of first write, so term filters and aggregations behave deterministically instead of depending on inferred types.

Every distinct open is journalled to the tool-activity store — and that journal, not a parallel analytics system, is what the Reports section aggregates. The usage numbers you see are the numbers the platform actually recorded.

Anything that leaves the request path — notification fan-out, webhook delivery, activity journalling, mail — runs in fire-and-forget background threads. A slow external endpoint can never make the interface hang, and a failed side effect is logged rather than silently retried into inconsistency.

A3Operational considerations

Organisation-level settings, destructive actions, and connections are gated to owner and admin roles; recruiters operate the tool on the records they can see. Role changes apply on the next request — enforcement is at the route, not in the menu.

Failures are surfaced, not swallowed: server-side validation returns the exact field and reason, vendor errors are quoted verbatim where integrations are involved, and every write either confirms or reports. Exports regenerate on request rather than being cached — a report you download reflects the store at the moment you asked, not last night's snapshot.

Everything written is yours to take: CSV exports and the Data Export app cover the same stores the product itself reads. The exit is as open as the entrance — by design, not concession.

A4Interaction contract

The interface follows the platform's search-and-select convention: any field that names a real record — a candidate, client, or job — is a type-to-search picker over live data, never a free-typed string, which is what keeps activity trails and deduplication trustworthy. Static choices are filter-as-you-type combos rather than native dropdowns, and state transitions give explicit feedback: server confirmations surface as toasts, validation errors name the exact field, and nothing is shown as done that the server has not confirmed.

The wireframe and flow below document the structural contract of the surface — what panels exist, what order the states occur in, and what happens at every edge — rather than pixels. The layout is composed with native CSS grid and flexbox and adapts from wide desktop to a single column without separate mobile views.

Dependency map

Reads / writesats_email_campaigns, ats_candidates, ats_clients
Access gateProfessional plan and above — enforced server-side by the tool registry
Monthly quotadistinct tools per month: Trial 3 / Starter 5 / Growth 15 … unlimited on Enterprise
Usage journalats_tool_activity (per open)
Tenancyevery query filtered by organisation id at the query layer
Side effectsbackground threads — never on the request path

Interface blueprint

Structural schematic of the surface — panels, hierarchy, and interaction affordances. A contract, not a screenshot.
Composer
merge fields kept literalsend via your channel
Audience / context
type-to-search records
opt-outs excluded
Delivery report
Fig. 1 — Email Campaigns: structural interface schematic. Panels and states are the contract; data shown is placeholder.

Interaction flow — states, validations, feedback

Every state below is enforced server-side; the interface reports it, it doesn't decide it.
Open composerregistry gate: plan + monthly quota
Pick audience / recordstype-to-search over live data; opt-outs excluded
Draftmerge fields kept literal until send time
Send / generateserver-side, on your own configured channel
Reportper-recipient results recorded, honestly, incl. failures
Channel not configured → pointer to the exact connector, not a silent failureRecipient rejected → the provider's own error stored verbatim on the report rowCredit exhausted → the count that triggered the stop is shown
Fig. 2 — interaction flow: navy = states, gold = server-enforced gates, green = confirmed outcomes; tags list the edge cases and their feedback.

Neighbouring tools — Marketing

Statuses come from the live registry — browse the full catalogue →

Frequently asked questions

Can candidates opt out?
Yes — every candidate email carries an automatic, permanent unsubscribe link, and opted-out candidates are excluded from all future campaigns before anything sends.
Whose email account do campaigns send from?
Your own — campaigns go through your connected SendGrid account or your own SMTP server, from your verified sender address. They never send from shared platform infrastructure.
What does the report show?
Every recipient with a delivered or failed status per address, plus totals — visible on the campaign the moment the run finishes.
What plan includes Email Campaigns?
Professional and above, with a 14-day free trial available.

At a glance

  • Included from the Professional plan upward
  • Sends via your own SendGrid or SMTP — your domain, your reputation
  • Automatic unsubscribe link on every candidate email
  • Audience: all candidates, all clients, or an uploaded CSV
  • Optional one-click Apply button for any open job
  • Per-recipient delivery report after every send

See email campaigns on your own hiring.

Bring a real job description to a 30-minute demo — free trial included.

Book a demo
Expertini AI
Online now
Hi! I'm Expertini's AI Product Expert. Ask me anything about our solutions, get guidance on any of our Hiring Tools, or just tell me what you're trying to do — I'll point you in the right direction. For account-specific issues, email support@expertini.com.