The confirmation page turns a payment into a meeting
After a client completes checkout, the wizard does not show a thank-you message with a link to go somewhere else. It replaces the entire viewport with a full-screen confirmation splash — a fixed-position overlay with backdrop blur that fills the screen edge to edge. At the centre is a checkmark in a tinted circle, the client's name, and the package they just bought. Below that is a consultation booking calendar. The client just paid, and the very next thing they see is a grid of available time slots for a free 45-minute call. The ConsultationPicker component fetches real availability from Google Calendar through the availability API. Slots that are already taken do not appear. When the client picks a slot, the booking request includes the product name in the notes field — Purchased: Landing Page, Purchased: Quick Audit — so I know what the meeting is about before I join the call. The booking fires with skipEmail set to true because the Stripe webhook already sent a confirmation. No duplicate emails. If the booking request fails — network error, API timeout, calendar conflict — the payment is still confirmed. The client sees the consultation section but can book later through the confirmation email or by replying directly. The what happens next section adapts to whether they booked. If they did, step two reads Join your consultation at the scheduled time. If they did not, it reads Book your consultation call above. A Back to services link at the bottom takes them to the service page they came from, not the homepage, because the URL includes the product's service type. One confirmation page, two states, and the distance between paying and talking to me is one click.
Comments coming soon
Sign in with TikTok to leave a comment. Coming soon.