Solar has the longest gap between 'yes' and 'done' of any residential trade. Three to six months is normal, and almost none of it is under your control — permitting offices, utility interconnection queues and inspection schedules run at their own pace.
During that gap, the customer has signed a large financial commitment and can see no evidence of anything happening. Cancellations in this industry are overwhelmingly a communication failure, not a sales failure.
Set the timeline expectation at signing, in writing
export const timeline = { // Sent the day of signing. The single most valuable message you send. whatHappensNow: (c: Ctx) => `${c.company}: welcome aboard. Honest timeline — ` + `design ${c.designWeeks} weeks, permits ${c.permitWeeks} weeks ` + `(that's the council, not us), install a day, then ` + `${c.utilityWeeks} weeks waiting on ${c.utility} to sign off.\n` + `Realistically switched on around ${c.targetMonth}. ` + `I'll message at every stage, including the boring ones.`, // Send monthly even when nothing has moved. stillWaiting: (c: Ctx) => `${c.company}: monthly check-in — still with ${c.blockedOn}, ` + `submitted ${c.submittedDate}. Nothing needed from you. ` + `Current best guess for install: ${c.estimate}.`,};The no-news message is the one that prevents cancellations
Instinct says do not message when there is nothing to report. In a long-cycle business that instinct is wrong — silence is what customers interpret as trouble. A monthly 'nothing has changed, here is where we are' costs nothing and is the cheapest retention mechanism available.
Naming who you are waiting on matters
'We're waiting on permits' sounds like an excuse. 'Submitted to the county on the 14th, they're quoting six weeks, reference 2026-4471' sounds like a company doing its job. Specificity is the difference between the two, and it costs one extra clause.
- Site survey booked — who comes, how long, whether they need roof access.
- Design complete — the panel layout, with an image. Customers care about how it looks far more than they admit.
- Permit submitted — the authority, the date, the reference, the quoted turnaround.
- Permit approved — and install scheduling opens.
- Install day — crew size, hours, and that the power will be off for part of it.
- Inspection — who is coming, whether the customer needs to be home.
- Utility submitted — the last wait, and the one customers find hardest.
- Permission to operate — switch-on, and how to read the monitoring app.
Install day and the roof question
Two things worry customers on install day, and both deserve a message before they ask: what happens to the roof, and how long the power is off.
export const installDay = { dayBefore: (c: Ctx) => `${c.company}: tomorrow ${c.startTime}, crew of ${c.crewSize}, ` + `on site until about ${c.endTime}. Power off for roughly ` + `${c.outageDuration} around midday. Please keep the driveway clear ` + `and pets inside — there'll be people on the roof.`, roofWarranty: (c: Ctx) => `${c.company}: every penetration is flashed and sealed, and it's ` + `covered by our ${c.roofWarrantyYears}-year workmanship warranty ` + `— separate from the panel warranty. Details: ${c.link}`,};After switch-on, production is the conversation
The first winter is when solar customers get buyer's remorse — production drops and they wonder whether they were sold something that does not work. A short seasonal note explaining that this is expected, with their own numbers, prevents a support call and a bad review.
It is also the natural moment for referrals, which is how most solar companies actually grow. The referral requests playbook covers the ask; the timing is the first sunny month after a good bill.
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.