Mailbeam
Recruitment · ATS

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.

1 in 5

applicant emails from high-volume roles are undeliverable or mistyped

Industry estimate

1

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.

2

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.

3

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.

4

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.

app/api/applications/route.tstypescript
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.

View plans

Frequently asked questions

Ready to get started?

Free tier includes 1,000 verifications/month. No credit card required.