Review generation
Two customers had the same haircut on the same Friday. One gets the request at 5pm that day. The other gets it at 9am Wednesday. The same-day send has a better shot, because the visit is still a recent memory, but the only way to know for your shop is to measure it.
This guide covers the mechanics: what event to fire on, how long to wait by service type, who is eligible, and how to cap the nudge.
By Ray Williams, Founder, RAWTech
Published · Updated
Ray Williams builds booking, payment, reminder, review, and rebooking systems for owner-operated service businesses.
the short answer
Fire the review request off the appointment-completed event, not a clock time or a nightly batch. For short in-person services, send the same day while the visit is still fresh. For longer jobs, send once the work is verifiably finished. Apply one eligibility rule to every completed customer and allow one follow-up.
Use the same request logic for every eligible customer. Never suppress a request because a customer might leave a negative review. Confirm the current terms of each review platform before you configure the send.
Trigger on verified completion
Not a nightly batch. Not a next-day cron. The moment your booking tool marks the appointment as completed, a short delay starts and the request sends at the end of it.
Verified completion means the event your system can prove: the appointment marked complete, the job closed, or the technician's visit signed off. Payment is not proof of completion, because payment can happen at booking.
Confirm whether your booking tool exposes that event. If it does not, that is the seam to close before anything else in the review flow, because everything downstream depends on it firing at the right moment.
Timing matrix by service type
Start with the row that matches your service, then compare the send window against your own response and opt-out data.
| Service type | Completion event | First request | Follow-up |
|---|---|---|---|
| Short in-person visit (cut, detail, treatment) | Appointment marked complete | 2 to 6 hours after completion, same day | One nudge after 3 days |
| Multi-hour or same-day job (repair, install) | Job closed by the technician | Same evening or next morning | One nudge after 3 to 4 days |
| Multi-day project | Final walkthrough or sign-off | Within 24 hours of sign-off | One nudge after 5 days |
| Recurring or maintenance visit | Visit marked complete | After the second completed visit, then quarterly at most | None |
| Consult with no service performed | Not a completed service | Do not request | None |
Eligibility and exclusion rules
Write one eligibility rule and apply it to every completed customer. Eligibility depends on whether the appointment completed and whether a recent request already went out. It never depends on predicted satisfaction.
A private service-recovery path can run in parallel. It must not suppress an eligible public request.
Private service recovery without review gating
- No-shows and same-day cancels. Not a completed appointment, so no request.
- Customers who already received a request inside your defined window.
- Customers who opted out of that channel.
- Everyone else who completed a visit gets the same request, including customers who raised an issue.
SMS and email examples
Name the service, thank the customer, one link, no pre-filled text. The wording is deliberately plain.
Ask for a review without making it awkwardGoogle vs platform reviews
- SMS: “Thanks for coming in today, [name]. If you have 30 seconds, a short review helps other locals find us: [link]”
- SMS follow-up: “No pressure at all, [name]. Leaving the link here in case it is easier today: [link]”
- Email subject: “How did your [service] go?”
- Email body: “Thanks again for your [service] on [date]. If it went well, a short review helps a lot. If anything was off, reply to this email and it comes straight to me.”
Automation event map
This is the whole workflow. If any row cannot be built in your current tools, that row is the seam.
| Trigger | Condition | Action |
|---|---|---|
| appointment.completed | Customer eligible and no request in the window | Start the delay for that service type |
| delay ends | Still eligible and not opted out | Send the request on the channel the customer booked with |
| payment.succeeded within 15 minutes of the send | Payment message already sent | Space the review request so the two do not collide |
| no review after the follow-up window | Only one request sent so far | Send one shorter nudge on the same channel, then stop |
| customer replies with an issue | Any | Route to the private recovery path |
What to measure
Record the baseline before you change anything, then read four numbers monthly: requests sent, reviews posted, replies that were complaints, and opt-outs. Change one variable at a time so you can attribute the difference.
Frequently asked questions
start here
Confirm which part of the review path is missing.
The Loop Audit reviews your records and a test booking, then names the seam and what to change first.