Notifications
DisplaySync notifies you when something changes that you might want to know about: a sign drops offline, content stops loading, a remote command fails. Every notification is delivered through up to three channels — in-app, push, email — and you control which ones are loud for which events.
The goal is signal, not noise. Default settings err quiet; you opt in to specific events for specific channels.
The three channels
| Channel | Where it shows | When it fires |
|---|---|---|
| In-app | Bell icon in the dashboard, Notifications tab in the mobile app | Always, for everything you're subscribed to |
| Push | Browser push (web) or native push (iOS/Android) | When you've enabled push and granted permission |
| Your account email (delivered via Resend) | When you've enabled email notifications for this category |
In-app is on by default and can't be disabled — it's the source of truth for "what just happened." Push and email are opt-in and per-event-configurable.
What triggers a notification
| Event | Notification type | Default channels |
|---|---|---|
| Sign goes offline | sign_offline | In-app + push + email |
| Sign comes back online | sign_online | In-app + push + email |
| Sign error (content unreachable triggers backend-side) | sign_error | In-app + push + email |
| Content unreachable | content_unreachable | In-app + push |
| Content recovered | content_recovered | In-app + push |
| Sign claimed | sign_claimed | In-app + push |
| Sign unlinked | sign_unlinked | In-app + push |
| Network failover (multi-network kiosk swaps to backup) | network_failover | In-app + push |
These are defaults. Each user can override them in notification preferences.
Brief outages stay silent
A flapping content URL or short Wi-Fi blip would otherwise spam notifications. To keep alerts as signal, DisplaySync waits 60 seconds before sending the first offline-flavored notification:
- If the URL becomes reachable again before 60 seconds elapse, no notification fires.
- If it stays unreachable past 60 seconds, you get one offline notification — and one recovery notification when it's back.
- If the first never fired (the blip was short), the recovery doesn't fire either.
This applies to content_unreachable / content_recovered and the other signOffline-flavored events. See Sign states → Notification types for the full list.
Event subscriptions
The most useful concept is per-event subscriptions. Each user picks which events they're loud about; everything else stays quiet.
By default, when you're added to an event team, you're subscribed to that event with default channels. From the event detail page → Notifications, you can:
- Toggle subscription on/off
- Pick channels per category (offline alerts via push but not email; reachability via all three; etc.)
- Mute the entire event without unsubscribing (useful for retrospective work on completed events)
The result: a user who's the on-call tech for "Conference 2026 - Main Hall" and a passive viewer for "Sales Demo Loop" can get woken up by the first while staying silent on the second.
Push notifications
Web (browser)
The dashboard registers a Web Push subscription using the VAPID standard. To enable:
- Open the dashboard in a Chromium-based browser, Firefox, or Safari (modern versions all support Web Push)
- Profile → Notifications → Enable browser push
- Accept the OS permission prompt
Web push works even when the dashboard isn't open — your OS notification center will show the alert. Click it to deep-link back into the dashboard at the relevant sign.
To disable per-browser, open Profile → Notifications → Browser push tokens and remove the entry. Useful when changing laptops.
Mobile (iOS/Android)
The mobile app registers for native push on first launch (you'll be prompted). Tokens are managed via Expo Push (iOS APNs and Android FCM under the hood).
Each device shows up under Profile → Notifications → Push tokens. You can revoke individual devices remotely — useful when a phone is lost or replaced.
Push payload format
Pushes are short — title + body + a deep link:
Title: Sign offline — Lobby West
Body: No heartbeat in 45s. Last URL: demo.displaysync.live
Action: Tapping opens the sign's detail page in the dashboard or mobile app
The deep link works whether the dashboard tab is closed, you're using the mobile app, or you're not signed in (you'll get the login screen first, then routed to the right sign).
Email notifications
Sent via Resend with a clean templated layout: event name, sign name, what happened, when, and a "view in dashboard" button.
Triggers (when you've opted in for email on this event):
- Sign offline (
sign_offline, after the 60-second deferral — short blips don't email) - Sign error (
sign_error) - Sign online (
sign_online)
Email is the channel for "I should know this happened, I don't need to act right now." Push is the channel for "this is happening now and I might need to do something."
If you don't want email notifications, disable them globally in Profile → Notifications, or per-event from the event's notification settings.
Managing your preferences
Two places to configure:
Profile → Notifications (global defaults)
- Toggle each channel on/off globally
- Manage push tokens (revoke individual devices)
- Set the email address notifications are delivered to (defaults to your account email)
Event detail → Notifications (per-event overrides)
- Subscribe / unsubscribe from this event
- Override channels for this specific event (e.g., this event is critical — enable email even though it's globally off)
- Mute the event temporarily
Per-event settings beat global defaults. So if you globally disabled push but enable it on this event, you'll get push for this event only.
Webhook notifications (v2)
Webhook delivery for org-level integrations (Slack, PagerDuty, custom) is on the v2 roadmap. Until then, the channels above are the supported integration points.
Failure modes
| Symptom | Likely cause | Fix |
|---|---|---|
| Web push prompts not appearing | Browser push permission denied | Browser settings → Site settings → Notifications → Allow |
| Mobile push silent | OS-level push disabled, or mobile app revoked the token | Phone Settings → Notifications → DisplaySync → Allow |
| Email notifications not arriving | Address bounced, or marked spam | Profile → Notifications → resend test email; check spam |
| Spammed by a single noisy event | All sign offline alerts firing during a flaky-network show | Mute that event in its Notifications settings until the network's fixed |
What's next
- Monitoring — the underlying state transitions that drive notifications
- Remote control — when a command fails, you'll see the failure here
- Best practices → Live event checklist — pre-event subscription audit so you're loud on the right things