Skip to content
imessageapi

iMessage for driving schools and instructors

Lessons are weekly, students are young, and almost none of them answer the phone. Text is not a nice-to-have here — it is the only channel that reliably works.

5 min readUpdated August 24, 2026By industry

Driving instructors deal with a demographic that treats a phone call from an unknown number as something close to an emergency. A learner who will not pick up will reply to a text in thirty seconds. That alone makes the channel the correct one.

The pickup message

Lessons start with a logistics problem — where exactly, and is the student actually there. Two short messages solve nearly all of it.

lesson logistics
export const lesson = {
dayBefore: (c: Ctx) =>
`${c.instructor}: lesson tomorrow ${c.time}, picking you up at ` +
`${c.pickup}. Reply C to confirm. Don't forget your licence.`,
 
enRoute: (c: Ctx) =>
`On my way — outside in about ${c.mins} minutes.`,
 
// Young learners cancel late. Make the policy visible, not punitive.
policy: (c: Ctx) =>
`${c.instructor}: reminder that lessons cancelled with less than ` +
`${c.noticeHours} hours' notice are charged. Life happens though — ` +
`message me and we'll sort something out.`,
};

Many students are minors, and the payer is usually a parent

That means two relationships: the learner, who books and cancels, and the parent, who pays and wants progress updates. Keep them in separate threads, get parental consent for messaging a minor, and never discuss payment with the student. Childcare and schools covers the consent side.

Progress updates sell the next block of lessons

Parents paying for lessons have no visibility at all — they hand over money and hope. A short, specific progress note after every few lessons is the difference between a parent who buys another block and one who starts wondering whether it is working.

progress
export const progress = {
toParent: (c: Ctx) =>
`${c.school}: quick update on ${c.student} — ${c.lessonsDone} lessons in. ` +
`${c.strength} is looking solid, we're working on ${c.focus}. ` +
`Realistically ${c.estimateRemaining} more before test standard.`,
 
testBooking: (c: Ctx) =>
`${c.school}: ${c.student} is about ready to book a test. ` +
`Waiting times are around ${c.waitWeeks} weeks, so worth booking now ` +
`and using the lessons in between to sharpen up.`,
};

An honest estimate — including when someone is not ready — is worth far more than an optimistic one. Instructors who inflate readiness get failed tests and lost referrals; the ones who say 'three more' and mean it get recommended.

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.