Hoppa till huvudinnehåll
Petanque Life

Customer Portal & Loyalty (PL-T198)

F22.16 8 features

I korthet

The logged-in customer portal on each tenant's CMS. My-bookings split into three lazy-loaded buckets (upcoming, history, cancelled) paginated 50 per page, repeat-book lifting prior configuration via sessionStorage prefill, ChainPassport tier badge with animated progress arc, NPS prompt that auto-opens after a visit, self-service rebook/cancel with live quote preview and party-size modify, gift-card balance overview, and notification preferences with full audit trail.

Så fungerar det

Logged-in customers land at /account/bookings, which renders three lazy-loaded buckets — upcoming, history, cancelled — each paginated 50 per page, so the page paints instantly even for power users with hundreds of past visits. Repeat-book lifts the configuration of any past booking (resource type, party size, food package) via POST /me/bookings/{id}/repeat, prefills sessionStorage, and redirects to /book/{lane} so the customer just picks a date — every other field is filled. The LoyaltyTierBadge component shows ChainPassport tier (regular / gold / platinum) with an animated progress arc towards the next tier; tier rules and thresholds come from the venue profile.

After a completed visit, the platform schedules an NPS prompt — when the customer next opens the portal, NpsPromptModal auto-opens (0-10 score plus optional comment), feeding both analytics and the marketing automation post-detractor recovery loop. Self-service rebook and cancel use CancelBookingDialog with a live quote preview (shows what fee/refund applies under the venue's cancellation rules), a reason picker, and party-size modify in-place. /account/gift-cards shows balance, expiry, and redemption count for every card the customer has added. /account/preferences exposes per-channel opt-outs (email, SMS, push) with an audit trail so support can see when a preference changed. The whole portal is tenant-branded via ChainWhiteLabelConfig, just like the booking wizard.

Centrala funktioner

  • /account/bookings with three lazy-loaded buckets (paginated 50/page)
  • Repeat-book via POST /me/bookings/{id}/repeat + sessionStorage prefill
  • ChainPassport tier badge with animated progress arc
  • NPS prompt auto-opens when outstanding prompt exists
  • Self-service rebook / cancel with quote-preview + party-size modify
  • Gift-card balance overview with expiry + redemption count
  • Notification preferences with audit-trail (tenant-branded throughout)

I praktiken

Three weeks after their first visit, a customer logs in to plan another evening. They open My Bookings → Past, find last month's reservation, and tap Repeat — sessionStorage fills with two lanes, party of four, and the previous food bundle. The wizard opens at the date-picker; they pick next Saturday and confirm.

Before submit they notice the LoyaltyTierBadge — they're 2 visits from gold tier with its 10% discount, which the next booking will trigger. After they confirm, the NPS modal from their previous visit pops asking how it went; they answer 9 and add "Lovely outdoor seating". The tenant operator sees the score in analytics, and the marketing engine quietly skips them from the post-detractor recovery loop since they're a clear promoter.

Features i detta subsystem

8
ID Status Funktioner
F22.16.01 Levererad "My bookings" view on tenant CMS (/account/bookings, three lazy-loaded buckets)
F22.16.02 Levererad Booking history (history + cancelled tabs, paginated 50 per page)
F22.16.03 Levererad Repeat-book ("same as last time") (POST /me/bookings/{id}/repeat + sessionStorage prefill → /book/{lane\ table|event}) | ✅
F22.16.04 Levererad ChainPassport tier-progress badge (<LoyaltyTierBadge> med animerad progress-arc, regular/gold/platinum)
F22.16.05 Levererad NPS feedback after visit (<NpsPromptModal> 0-10 + comment, auto-open när outstanding prompt finns)
F22.16.06 Levererad Self-service rebook / cancel (<CancelBookingDialog> med quote-preview + reason, party-size modify)
F22.16.07 Levererad Gift-card balance overview (/account/gift-cards, balance + expiry + redemption count)
F22.16.08 Levererad Notification preferences (/account/preferences, email/SMS/push toggles + audit-trail)