Booking confirmation email + customer self-service cancel/reschedule #18

Closed
opened 2026-07-23 14:07:57 +02:00 by mivanchenko · 1 comment
Owner

Parent

#14

What to build

The email side of the customer experience: a confirmation email on booking, and a token-linked
self-service page where a customer can cancel or reschedule without ever creating an account.

  • On booking creation (from ticket 2's engine, regardless of whether it came through ticket 3's
    public page or ticket 6's owner-manual-entry path), send a confirmation email via SMTP (mailcow)
    containing the booking details and a link embedding the ticket-2 signed cancel/reschedule token.
  • Sender address: the client's own domain (noreply@<client-domain>) when configured, falling back
    to a mivanchenko.de address otherwise. SMTP host/credentials come from environment
    configuration — this ticket does not set up the mail relay itself (that's a separate
    infra/triage item), only sends through whatever SMTP endpoint is configured.
  • A small "manage your booking" page reachable via the emailed link: shows the booking, offers
    "Cancel" and "Reschedule" (reschedule reuses ticket 2's slot-picking UI/logic against the same
    service/resource).
  • Clear feedback on an expired/already-used link (distinct from a generic error).

Acceptance criteria

  • Completing a booking (via ticket 3's public page) results in a confirmation email being sent
    with correct booking details and a working manage-booking link.
  • Following the link lets the customer cancel the booking, which is reflected immediately in
    the database (status becomes cancelled).
  • Following the link lets the customer reschedule to a different available slot for the same
    service/resource, protected by the same double-booking constraint as ticket 2.
  • An expired or already-used link shows a clear message distinct from a generic server error.
  • Sender address uses the client's configured domain when present, otherwise the fallback
    address.

Blocked by

  • #16 (Availability engine + booking API)
## Parent #14 ## What to build The email side of the customer experience: a confirmation email on booking, and a token-linked self-service page where a customer can cancel or reschedule without ever creating an account. - On booking creation (from ticket 2's engine, regardless of whether it came through ticket 3's public page or ticket 6's owner-manual-entry path), send a confirmation email via SMTP (mailcow) containing the booking details and a link embedding the ticket-2 signed cancel/reschedule token. - Sender address: the client's own domain (`noreply@<client-domain>`) when configured, falling back to a `mivanchenko.de` address otherwise. SMTP host/credentials come from environment configuration — this ticket does not set up the mail relay itself (that's a separate infra/triage item), only sends through whatever SMTP endpoint is configured. - A small "manage your booking" page reachable via the emailed link: shows the booking, offers "Cancel" and "Reschedule" (reschedule reuses ticket 2's slot-picking UI/logic against the same service/resource). - Clear feedback on an expired/already-used link (distinct from a generic error). ## Acceptance criteria - [ ] Completing a booking (via ticket 3's public page) results in a confirmation email being sent with correct booking details and a working manage-booking link. - [ ] Following the link lets the customer cancel the booking, which is reflected immediately in the database (status becomes cancelled). - [ ] Following the link lets the customer reschedule to a different available slot for the same service/resource, protected by the same double-booking constraint as ticket 2. - [ ] An expired or already-used link shows a clear message distinct from a generic server error. - [ ] Sender address uses the client's configured domain when present, otherwise the fallback address. ## Blocked by - #16 (Availability engine + booking API)
mivanchenko added the bookingready-for-agentenhancement labels 2026-07-23 14:07:57 +02:00
mivanchenko added a new dependency 2026-07-23 14:09:18 +02:00
Author
Owner

Shipped in commit 644c99e ("Booking confirmation email + customer self-service cancel/reschedule (#18)"). Closing — this was already implemented, just never closed in the tracker.

Shipped in commit 644c99e ("Booking confirmation email + customer self-service cancel/reschedule (#18)"). Closing — this was already implemented, just never closed in the tracker.
Sign in to join this conversation.