Skip to content
imessageapi

iMessage for recruiters and staffing agencies

Candidates ignore recruiter email and answer texts within minutes. That asymmetry is real, and it is also the reason this channel gets abused into uselessness.

7 min readUpdated August 23, 2026By industry

Recruiting has the widest gap between email and messaging response of any industry in this guide. A candidate who has ignored four recruiter emails will answer a text in ten minutes. That is an enormous advantage and it is being burned through fast by recruiters who treat it as a cheaper way to spam.

Cold texting candidates is the line

A phone number scraped from a CV database or a professional network is not consent to text. This is the single most common compliance failure in recruiting, and it is also why candidates increasingly distrust recruiter texts. Get an opt-in, record it, and you keep the channel working. Consent.

Where texting genuinely belongs

  1. Interview logistics. Confirmations, reminders, address, who to ask for, running late. This is the highest-value use and nobody objects to it.
  2. Responding to an application. Someone who applied this morning is expecting to hear from you. Replying within the hour is a real differentiator. Speed to lead.
  3. Shift and placement coordination. For staffing, this is operational and time-critical — exactly what the channel is for.
  4. Post-interview status. The silence after an interview is the most complained-about part of the process. A two-line update costs you nothing.
recruiting templates
export const recruiting = {
interviewConfirm: (c: Ctx) =>
`${c.agency}: confirmed for ${c.dayDate} at ${c.time}, ` +
`${c.location}. Ask for ${c.contactName}. Reply here if anything changes.`,
 
applicationAck: (c: Ctx) =>
`Hi ${c.firstName} — ${c.recruiterName} at ${c.agency}. Got your ` +
`application for ${c.role}. I'll come back to you by ${c.byWhen}.`,
 
// The message nobody sends, and the one candidates remember.
statusUpdate: (c: Ctx) =>
`Hi ${c.firstName} — ${c.recruiterName} here. ${c.outcome} ` +
`Happy to give you feedback if it's useful.`,
 
shiftOffer: (c: Ctx) =>
`${c.agency}: ${c.shiftType} at ${c.site}, ${c.dayDate} ` +
`${c.startTime}–${c.endTime}, ${c.rate}. Reply Y to take it.`,
};

The rejection text

Most recruiters will not send it, which is exactly why sending it works. A candidate you reject well is a candidate who takes your call in two years and refers a friend next month. Two lines, a real outcome, an offer of feedback. No template language about 'moving forward with other candidates'.

Staffing has a different shape

High-volume shift work is genuinely operational: offers go out, first acceptance wins, and the whole thing happens in minutes. That is the same pattern as gap filling, including the race condition — claim the shift atomically or you will double-book a worker who did everything right.

One caution specific to this industry: workers on a shift list are receiving operational messages they signed up for. That is not consent to market training courses or referral bonuses at them. Keep the scopes separate.

Next step

Browse the other industry playbooks, compare the services that can send this on the providers page, or tag your links with the UTM builder.