Appearance
Notifications
Neverline includes a notification system for sending SMS and push notifications to customers at key moments during their queue experience.
Notification Templates
The following notification types are available, each with SMS and push variants:
| Event | Trigger | SMS Content |
|---|---|---|
| Session Called | Customer's turn arrives | "It's your turn! Please proceed to {location}" |
| Approaching | Customer is almost next | "You're {posLabel} in line. Running late? {link}" |
| No-Show | Customer missed their turn | "We couldn't reach you. Tap to rejoin" |
| Away Reminder | Away timer nearing expiry | "Return soon — {minutes}min left of away time" |
| Jump Offer | Earlier slot became available | "A slot just opened! Can you come early?" |
All SMS notifications include the organization name and relevant action links.
Deep-Link Actions
Notifications contain signed action URLs that allow customers to respond with one tap. These links are secured with HMAC-SHA256 signatures and include an expiration timestamp.
Supported Actions
| Action | Description | Expiry |
|---|---|---|
late | Mark yourself as running late | Session expiry window |
cancel | Leave the queue | Session expiry window |
return | Confirm return from away | Session expiry window |
jump_accept | Accept a queue jump offer | 5 minutes |
URL Format
https://app.neverline.fi/action?payload={base64json}&sig={hmac-sha256}The payload contains the session token, action type, and expiration timestamp. The server verifies the signature and checks expiration before executing the action.
Security
- Links are signed with
HMAC-SHA256using thePII_ENCRYPTION_KEY - Buffer lengths are checked before
timingSafeEqualcomparison - Expired links are rejected with a clear error message
- Each link is scoped to a specific session and action
Timer Processor
A background service (TimerProcessor) runs every 60 seconds to scan for expired timers:
- Expired away timers — customers whose away time has elapsed are automatically returned to normal status
- Expired late timers — customers whose late grace period has elapsed are returned to normal status
Each expiration emits a queue event (session.away_expired / session.late_expired) for webhook integrations.