Skip to content

Customer Experience

The customer-facing Progressive Web App (PWA) is what customers see when they scan a QR code or visit a queue join link.

Language Support

The PWA supports Finnish and English, defaulting to Finnish. Customers can switch using the FI | EN toggle below the Neverline logo. The selection is remembered in the browser.

Landing Page & Global Directory

When a customer directly visits the root domain (e.g. https://app.neverline.fi/), they are presented with the Welcome to Neverline global directory. Here, they can search for organizations or active queues currently flagged as public.

Additionally, organizations have dedicated profile landing pages via deep slugs (/org/:slug), which act as custom directories tailored exclusively to their distinct open queues.

Join Flow

  1. Customer taps a queue from a directory, or visits a direct queue URL (e.g. /join/:queueId)
  2. Customer sees the queue name and current number of people waiting
  3. Customer optionally enters their name
  4. Clicks Join Queue

If the queue is closed or paused, the customer receives a status notification instead of the join form.

Waiting Screen

After joining, the customer sees:

  • Their ticket number (e.g. #6)
  • Number of people ahead (e.g. "3 people ahead of you")
  • Estimated wait time (e.g. "Est. wait: ~12 min") — calculated automatically
  • "You're next!" when they're at the front of the queue

The screen polls for updates every 5 seconds (silently — no technical details shown to the customer).

Announcements

While waiting, customers may be presented with announcement banners at the top of the screen. Announcements are created by staff and can be scoped to the organization, location, or specific queue. They support:

  • Priority levels — info, warning, urgent
  • Pinned messages — always shown at the top
  • Scheduled visibility — start and end times

Queue Alternatives

If alternate queues are configured and have shorter wait times, the customer sees a smart suggestions card recommending faster options. Each suggestion shows the alternative queue name and current estimated wait time.

Away Mode

Customers can temporarily leave without losing their spot. To activate away mode:

  1. Tap the "Step away" button on the waiting screen
  2. Select how long they'll be away (e.g. 10, 20, 30 minutes)
  3. A countdown timer appears showing the remaining away time

While away, the customer's position is preserved. If the away timer expires, they're automatically returned to normal status. Staff can see which customers are currently away.

The away timeout is configurable per queue via queue policies (see Queue Management).

Running Late

If a customer is called but can't arrive immediately, they can mark themselves as running late:

  1. Tap the "Running late" button
  2. Select an ETA (e.g. 5, 10, 15 minutes)
  3. Their status changes to "late" with the expected return time

Staff can monitor late statuses and ETAs via the administrative dashboard. When the grace period expires, the customer is returned to normal status.

Chat with Staff

If chat is enabled for the queue (via queue policies), customers can send messages to staff directly from the waiting screen:

  1. Tap the 💬 Chat button
  2. Type a message and send
  3. Staff replies appear in real time via Supabase Realtime

The chat interface shows:

  • Staff messages (left-aligned, labeled "Staff")
  • Customer messages (right-aligned, primary color)
  • Timestamps on each message

Wayfinding

When a queue is linked to a service location, customers can access arrival guidance:

  1. Tap the "How to Arrive" button on the waiting screen
  2. See structured navigation information:
    • Building name, floor, and room
    • Address with a link to open in Maps
    • Step-by-step arrival instructions
    • Active wayfinding overrides (e.g. "Construction — use side entrance")

Wayfinding overrides are managed by staff and can be scheduled with start/end times.

Cancel & Leave Queue

Customers can leave the queue at any time:

  1. Tap the "Leave Queue" button
  2. A confirmation dialog appears
  3. Confirm to leave — the session is cancelled

Called Screen

When a staff member sequentially calls the customer, the interface transitions to display:

  • "It's your turn!"
  • "Please proceed to the counter"

This interface utilizes a prominent visual animation to notify the customer.

Session Persistence

If a customer closes their browser and returns to the same URL, they're automatically reconnected to their existing session (stored in localStorage). This prevents accidental re-joins.

Completion

After service is complete, the customer sees a "Service Complete" screen with an option to Join Again if needed.

Customers may receive SMS or push notifications containing signed action links. These links allow one-tap actions:

  • Mark as late — set an ETA without opening the app
  • Return from away — confirm return
  • Accept jump offer — accept a queue position jump
  • Cancel session — leave the queue

Links are HMAC-signed with an expiration timestamp for security.