Two systems are at work. Platform notifications are emails and SMS rendered from templates by the server when something happens to a ticket, booking, event or participant. Community notifications are in-app records that fill the Inbox → Notifications tab. They are not the same thing, and only the first reaches someone who has closed the app.
Platform notifications
Dispatched server-side as CreateNotificationCommand with a template name. SMS uses a separate template, normally the same name with -sms.
| Trigger | Template | Goes to |
|---|---|---|
| Tickets issued from a paid or free booking; pending stock activated at the venue | event-ticket-confirmation | Ticket holder |
| Ticket cancelled | event-ticket-cancelled | Holder |
| Ticket refunded | event-ticket-refunded | Holder |
| Booking cancelled | event-order-cancelled | Buyer |
| Event starts in 24 h, then 1 h | event-reminder | Every holder |
| Event edited (time, venue, and so on) | event-update | Every non-cancelled holder, de-duplicated by email |
| Photos shared with a guest | event-media-share, event-media-share-sms | The guest, with signed links |
| Entrance scan recorded | event-checkin-confirmation | The attendee |
| Participant confirmed | event-participant-confirmed | The speaker or exhibitor |
| Participant cancelled | event-participant-cancelled | The participant |
| A party assigned a table from the check-in queue, or re-notified | reservation-ready, reservation-ready-sms | The guest (email and SMS) |
Templates live in Studio Manager under the organization's notification templates, keyed by these names. A missing template is not fatal: the command logs a warning and skips the send, which is the usual reason a message "never arrived" on a fresh organization.
Saving an event change sends event-update to every holder. Batch your edits before the event, and expect an email per save otherwise.
Copies and senders
| Setting | Effect |
|---|---|
notificationCopyTo | Per-module copy recipients; the reservation copy (reservation.sendCopyTo) defaults to the organization email unless explicitly false. |
systemEmail | The from-address for platform email. |
systemPhone, systemSmsPhone | The sending numbers for SMS. |
These are organization base-setting keys, edited in Studio Manager. See organization settings.
Community notifications
Datatype community_notification, created by the community services and read by the app through GET /client/community/notifications, notifications/unread-count, notifications/read and notifications/read-all.
| Type | Trigger |
|---|---|
connection_request, connection_accepted | Someone requested or accepted a connection |
message, group_message | A direct or group message |
reaction, comment, mention, share | Activity on your post |
follow | Someone followed you |
page_invite, page_join_request | Page membership |
announcement | A page announcement |
event_reminder, session_starting | Programme reminders |
post_trending, badge_earned | Community milestones |
meeting_invite, meeting_reminder | Meetings |
system | Everything else |
Each record carries the actor, the target, a summary, a groupKey for aggregation, and read state.
The notification record has pushed, pushSentAt and pushChannel (fcm, apns, web, email) fields, and the server can deliver over the /community-chat socket while the app is open. But EventOxygen registers no push token and includes no Firebase or APNs code. A closed app learns about a connection request when it is next opened. Do not promise attendees push alerts.
A quiet Notifications tab on a demo organization usually means no records exist at all, not a delivery failure. Check the community_notification collection before debugging the app.
What attendees see and when
| Attendee action | Notified party | Channel |
|---|---|---|
| Buys a ticket | Themselves | Email (confirmation) |
| Transfers a ticket | Recipient | Email with a new QR |
| Is scanned in | Themselves | |
| Sends a connection request | Target | In-app record |
| Accepts a request | Requester | In-app record |
| Sends a message | Recipient | Socket while open; in-app record |
| Proposes a meeting | Participants | In-app record |
| Is seated from a check-in queue | Themselves | Email and SMS |