Booking confirmation and calendar agree on displayed appointment time
Why it matters
When the booking confirmation email says "2 PM EST" and the calendar block says "7 PM UTC", the customer has no reliable signal about when to show up. This ISO 25010 functional-correctness failure typically stems from one component reading the raw UTC value while another converts it — two code paths, two different timezone assumptions, same appointment. The damage is a no-show or a wrong-time arrival, followed by a refund request and a support ticket. Confirmation-calendar parity is not cosmetic: it is the contract the customer relies on to plan their day.
Severity rationale
Low because the mismatch does not corrupt stored data, but it causes customers to appear at the wrong time, producing no-shows and direct refund liability.
Remediation
Extract time formatting into a single shared utility function and call it from both the confirmation display and the calendar view — never format the same appointment time twice from different code paths.
// src/lib/format-appointment-time.ts
import { toZonedTime, format } from 'date-fns-tz'
export function formatAppointmentTime(utcDate: Date, tz: string): string {
return format(toZonedTime(utcDate, tz), 'MMM d, yyyy h:mm a zzz', { timeZone: tz })
}
In src/components/BookingConfirmation.tsx and your confirmation email template in src/lib/email.ts, import and call formatAppointmentTime(appointment.start_time, appointment.customer_timezone). Remove any inline new Date().toLocaleString() calls that bypass the shared formatter.
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 Calendar & Availability Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- iso-25010:2011 · functional-correctness — Functional Correctness — confirmation and calendar must agree on appointment time
Taxons
History
- 2026-04-18·v1.0.0·Initial import from booking-calendar-availability·automated