No-show follow-up sent only after no-show status is explicitly set on the booking record
Why it matters
A cron job that sends follow-up emails to all bookings where start_time < now AND status = 'confirmed' will send follow-ups to every completed booking that was never explicitly marked as completed — which in many booking systems is the majority. ISO 25010 functional-suitability.functional-correctness requires that no-show follow-ups fire only on verified no-shows, not on a time-based proxy. Without an explicit NO_SHOW status in the booking state machine, operators have no way to distinguish a completed appointment from a no-show, and any automation built on that distinction will misfire. Automated no-show detection without host confirmation also creates legal exposure if follow-up communications are construed as accusations.
Severity rationale
Medium because a time-triggered no-show follow-up sends accusatory or unwanted messages to customers who attended their appointment but whose booking was never marked as completed.
Remediation
Add NO_SHOW to the booking status enum and expose an explicit host-action endpoint that sets it. Trigger the follow-up email from the status-change handler, not from a time-based cron:
// prisma/schema.prisma
enum BookingStatus {
PENDING
CONFIRMED
COMPLETED
NO_SHOW
CANCELLED
}
// src/app/api/bookings/[id]/no-show/route.ts
export async function POST(req: Request, { params }: { params: { id: string } }) {
const booking = await db.bookings.update({
where: { id: params.id },
data: { status: 'NO_SHOW', marked_no_show_at: new Date() },
})
await emailQueue.add('send-no-show-followup', {
bookingId: booking.id,
customerEmail: booking.customer_email,
hostEmail: booking.host_email,
})
return Response.json({ ok: true })
}
Remove any cron job that infers no-show status from appointment time alone.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Booking Notifications & Reminders Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- iso-25010:2011 · functional-suitability.functional-correctness
Taxons
History
- 2026-04-18·v1.0.0·Initial import from booking-notifications-reminders·automated