Push Notifications
Jonot sends a system notification to customers when their ticket transitions
to CALLED — even when the browser tab is backgrounded or the phone is locked.
Notifications are also sent when a skipped ticket is recalled and then called again.
How it works
Section titled “How it works”- A customer is about to join a queue and sees the queue picker screen.
- A push opt-in card appears above the queue list — the customer taps Turn on notifications and grants browser permission before joining.
- Their browser registers a Web Push subscription.
- The customer joins the queue and receives a ticket. The subscription is linked to the ticket server-side.
- When a desk calls the ticket, the server sends a push message to all active subscriptions for that ticket.
- The customer's device wakes up and shows a system notification with the ticket number, queue name, and location. Tapping the notification opens the ticket screen.
- Subscriptions are automatically deleted when the ticket reaches a terminal state (
COMPLETED,CANCELED, orNO_SHOW) or when the push endpoint expires (browser unsubscribed / permission revoked).
Customers who did not opt in on the queue picker can still opt in from the ticket screen — a notification card is shown while the ticket is WAITING or CALLED.
Skipped ticket recall notifications
Section titled “Skipped ticket recall notifications”If a customer's ticket is skipped (moved to SKIPPED state), their push subscription is kept active. When staff subsequently recall the ticket (moving it back to WAITING) and then call it, the customer receives the push notification — even if they closed the ticket page.
This means a customer who opted in and then stepped away still gets notified when staff call them back, without needing to keep the browser open.
Opt-in — customer experience
Section titled “Opt-in — customer experience”| State | Shown |
|---|---|
| Prompt (permission not yet requested) | Opt-in CTA card (queue picker + ticket screen) |
| Permission granted + subscribed | "We'll notify you — you can close this tab" confirmation |
| Permission denied | Fallback advice + link to browser settings |
| Browser unsupported | Nothing (silently skipped) |
Once subscribed, push notifications are delivered by the browser even when the tab is closed or the phone is backgrounded — customers do not need to keep the ticket page open.
Reconnecting indicator
Section titled “Reconnecting indicator”If the customer's device loses its WebSocket connection while the ticket page is open (for example after going offline briefly), a "Connection lost — reconnecting…" pill appears on screen. It is shown only for non-terminal tickets and never on initial page load. The connection is restored automatically; no manual action is needed.
iOS — Home Screen required
Section titled “iOS — Home Screen required”iOS Safari 16.4+ supports Web Push, but only when the app has been added to the Home Screen (standalone mode). On iOS Safari in the regular browser:
- The queue picker shows an "Add to Home Screen for notifications" guidance card above the queue list.
- After adding to the Home Screen, the customer reopens Jonot from the Home Screen icon and the standard opt-in CTA appears.
Transactional only — no marketing
Section titled “Transactional only — no marketing”Push subscriptions are linked to a single ticket. They are strictly transactional: one subscription exists for one ticket's lifecycle. There is no mechanism to send promotional or bulk pushes — only ticket-CALLED events trigger a notification.
GDPR / consent basis: the subscription is tied to the ticket the customer just created. The same consent basis (legitimate interest / performance of contract) that covers the ticket itself covers the single notification. No separate consent collection is needed.
Technical reference
Section titled “Technical reference”- Standards: Web Push with payload encryption per RFC 8291 (AES-128-GCM) and VAPID-authenticated requests per RFC 8292.
- Subscription storage: each subscription is tied to one ticket and is automatically deleted when that ticket reaches a terminal state.