Candidate Rejection Email Templates
Four documents and three sheets, including the queue of everybody waiting longer than your own standard, sorted by how far over.
Free download · No account needed
Stale Candidate Queue, one row
The object that fixes ghosting is a queue, not a template
Sorted by days over, descending. The person waiting longest is the one whose message is hardest to write, and the one who gets skipped under any other sort.
Business Days Waiting, Standard, Days Over
Business days from the stage-change date, against that stage's standard. Both choices matter more than the numbers: calendar days make every Friday interview look like a breach by Monday, and measuring from the interview date makes a scheduling delay indistinguishable from a response delay.
Status In ATS
Open, or closed. Closed rows are the backlog: people already marked closed in the system with no message ever logged against them. Open rows are the live leak. Both are in this queue on purpose, because a recruiter reading a queue of open candidates never discovers the closed ones, and the closed ones are usually the bigger group.
Message Owed
Which template applies: close at this stage, hold with a date, advance with a date, or the overdue message. Filling this column is what turns the queue from a list of problems into a batch of drafts.
Blocked On
The diagnostic column. Where it says nothing, the message can go today and all that was missing was somebody looking. Where it names a debrief note or a competing candidate, the honest answer is a hold with a date rather than a longer wait.
Every guide to candidate rejection treats it as a writing problem. Warmer opening, a line of specific feedback, personalise the first sentence. That is reasonable advice about a message that gets sent, and it does not touch the case that generates the actual complaint, which is the message nobody ever wrote. Ghosting is an operational failure. No recruiter decided not to reply; a requisition moved on and the queue behind it stopped being anybody's job.
So this pack is built around a queue rather than a template. It comes from joining two datasets that both already sit in your applicant tracking system and never get joined: the pipeline export with stage-change dates, and the record of what was actually sent. Match them on candidate identifier and every closed candidate with no matching message is a silent closure. No report in any applicant tracking system surfaces that number, which is why nobody has it.
At Ravelin Foods, three requisitions over five months, the export held 214 candidate records. Of the 138 closures, 89 had nothing sent: 64.5 percent of closures and 41.6 percent of everyone who applied. Add the 32 active candidates past standard and 121 of 214 were waiting longer than the company's own rule allowed. The templates are here too, by stage and outcome, including the two nobody writes. Upstream, funnel analysis says whether the pipeline is the constraint at all.
What is in the pack
Stale Candidate Queue
Everybody past the standard for their stage, sorted by days over, with the template they are owed already named and a column saying what the reply is blocked on. Open and already-closed candidates sit in one list on purpose.
Time to Response by Stage
Median wait, multiple of standard, and breach share per stage, with closed-with-a-message and closed-with-nothing-sent as two separate columns that are never added. Each row carries an operational reason rather than the word slow.
Communication Log
One row per message actually sent, with the reason given in the same words the candidate got. Reading two rejections from the same stage side by side is the only way to check they differ the way the candidates differed.
Message Templates by Stage and Outcome
Close, hold and advance at four stages, plus the withdrawal acknowledgement, the referral ask, and the overdue message for somebody who has been waiting three months. Short on purpose.
Timing Standard
Business days per stage, measured from the stage change rather than the interview, with what counts as a reply defined as exactly three things. Set from your own medians, not from a benchmark.
Feedback Guidance
One test decides everything: is the thing you are about to say written on a scorecard or interview note in specific terms. Where nothing qualifies, the plain decision goes out with no feedback at all.
Why Silence Is An Operational Failure
The reasoning, the join, and the two populations that need opposite fixes. A backlog is a batch of messages with a defined end; a live leak is fixed only by a scheduled read with a named owner.
How it works
- 1
Send the pipeline export
With stage-change dates, which is the field that matters. A created date and a status will not do it, and River says so rather than substituting one.
- 2
The join runs first
Pipeline export against whatever record exists of what was sent, matched on candidate identifier. Every closed candidate with no matching message is a silent closure.
- 3
The queue gets built
Open-and-past-standard and closed-with-nothing-sent in one list, sorted by days over, with the owed template and the blocker named on every row.
- 4
Backlog first, then the schedule
The backlog is one run with a defined end. The scheduled read with a named owner is what stops the queue refilling.
Frequently asked questions
Why not just take a rejection email template and move on?
Because the template only helps a message somebody decided to send. In the worked example, 89 of 138 closed candidates had no message logged at all, and no rewrite reaches them. The queue is what reaches them, and it is the object every page on this query is missing.
How do I find the candidates nobody replied to?
Join the pipeline export to the message history on candidate identifier. Every closed candidate with no matching message is a silent closure. Both datasets are already inside your applicant tracking system and no report in it connects them, which is why the number surprises people who run recruiting for a living.
Is it worse to send a rejection three months late than not at all?
No, and the templates include the version that says so. Name the delay in the first two lines, put the decision above the explanation, and offer no reason that sounds like an excuse. What makes a late message land badly is an apologetic paragraph above the answer the candidate is scanning for.
How much feedback can I actually give?
Whatever appears in writing on a scorecard or interview note, in specific terms, about a requirement of the job. Nothing you are inferring now in order to have something helpful to say. If nothing written qualifies, send the plain decision. Where a scorecard exists, debrief synthesis is where the deciding competency comes from.
What timing standard should we use?
Your own. Take last quarter's export, compute the median response per stage, and set the standard at roughly what your best recruiter already hits in a normal week. A standard set to what you wish were true puts everybody in breach on the first read, and a queue where everybody is in breach never gets opened again.
Why does the log keep rows for candidates who were rejected?
Because it is a record about a hiring decision. A federal contractor must preserve any personnel or employment record it makes for not less than two years, or one year below 150 employees, and the general rule for covered employers is one year. A message in one recruiter's sent folder is not retrievable.
What arrives in the zip, and is any of it paid?
Four Word documents and three CSV sheets, free, with no account needed. Edit with AI installs the same pack as a private Space and runs the join on your own export. The upstream questions live elsewhere: the interview loop decides who advances, and the question bank decides what gets asked.
Find out how many people you never replied to
Send the pipeline export with stage-change dates and whatever record exists of what was sent. The first thing back is the count of candidates closed in your system with nothing ever sent.
Edit with AI