Verify Candidate Emails in Your Recruitment & ATS Workflow
An interview invite that bounces is a candidate who ghosts through no fault of their own. Confirm every applicant address the moment they apply.
A broken candidate email quietly kills your pipeline
Recruiters treat email as the backbone of every hire — application receipts, screening questionnaires, interview scheduling links, and offer letters all travel by email. When an applicant's address is wrong, the candidate simply disappears, and the recruiter never learns why.
applicant emails from high-volume roles are undeliverable or mistyped
Industry estimate
Interview invites that bounce look like ghosting
When a scheduling link never arrives, the applicant appears unresponsive and gets marked as a no-show. A qualified candidate is disqualified because of a typo, not a lack of interest.
Job boards forward low-quality applicant data
Applications syndicated from aggregators and one-click apply buttons frequently carry stale, mistyped, or auto-filled addresses. Your ATS ingests them without ever testing whether they are reachable.
Offer letters sent to dead inboxes stall the hire
The most expensive email in the funnel is the offer. If it lands in an abandoned mailbox, time-to-hire slips, the candidate accepts elsewhere, and the requisition reopens.
Talent-pool nurture campaigns decay silently
Recruiters rebuild pipelines from candidates sourced months or years ago. Those addresses rot at the same rate as any B2C list, and re-engagement emails bounce against people who changed jobs.
Validate the applicant address at apply-time and at import
Mailbeam plugs into the two moments that matter for recruiters: the moment an applicant submits your application form, and the moment a batch of sourced candidates is imported into the ATS. Reachable candidates move forward; unreachable ones get flagged before a recruiter wastes a touch.
Apply-time verification on the application form
Verify the candidate's email as they submit. If they fat-fingered their address, show the suggested correction so they fix it before the application is ever created.
Bulk verification for sourced candidate lists
Sourcing exports, event scans, and CV databases arrive as spreadsheets. Run them through the batch endpoint before they enter your ATS so recruiters only work reachable leads.
Deliverability score for talent-pool nurture
Every address gets a 0-100 score. Nurture sequences to passive candidates can suppress low-confidence addresses so re-engagement bounces never touch your careers domain.
Disposable filtering for high-volume roles
Hourly and gig-style requisitions attract throwaway addresses from applicants gaming referral bonuses. Disposable detection keeps those out of the recruiter queue.
Implementation
Copy-paste ready. Replace the API key and integrate with your existing flow.
import { NextRequest, NextResponse } from "next/server";
const MAILBEAM_KEY = process.env.MAILBEAM_KEY!;
async function verifyEmail(email: string) {
const res = await fetch("https://api.mailbeam.dev/v1/verify", {
method: "POST",
headers: {
"Authorization": `Bearer ${MAILBEAM_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ email }),
});
return res.json() as Promise<{
valid: boolean;
disposable: boolean;
score: number;
status: string;
suggestion: string | null;
}>;
}
export async function POST(req: NextRequest) {
const { email, name, roleId, resumeUrl } = await req.json();
const check = await verifyEmail(email);
// A candidate we cannot reach should never enter the ATS as "new"
if (!check.valid) {
return NextResponse.json(
{
field: "email",
error: "We couldn't reach this email. Please double-check it so we can send your interview details.",
suggestion: check.suggestion,
},
{ status: 422 }
);
}
const application = await ats.applications.create({
email,
name,
roleId,
resumeUrl,
emailScore: check.score,
emailStatus: check.status,
// Route disposables to a manual screening lane instead of auto-advancing
stage: check.disposable ? "manual_review" : "new",
});
await ats.sendApplicationReceipt(application);
return NextResponse.json({ applicationId: application.id });
}Real-world example
HireLoop (placeholder)
High-volume recruitment ATS
Challenge
A staffing team running warehouse requisitions saw 21% of interview invitations bounce. Recruiters logged those applicants as no-shows and spent hours re-sourcing candidates they had already attracted.
Result
After verifying at apply-time and correcting typos inline, invitation bounce rate fell to under 1% and the recorded no-show rate dropped by nearly a third once genuinely reachable candidates started receiving their scheduling links.
Interview invite bounce 21% → 0.9%
* Example based on anonymized customer data. Results may vary.
Recommended plan
Growth
Recruitment teams verify at apply-time and bulk-verify sourced lists, so both the real-time and batch endpoints matter. Growth covers the 10,000-100,000 monthly applications typical of an active talent team; low-volume corporate recruiting fits Starter.
Frequently asked questions
Ready to get started?
Free tier includes 1,000 verifications/month. No credit card required.