This release introduces new ability for Accounts to subscribe to Notifications.
The primary goal of this phase is to let users manage notification preferences directly from the Account page and from Managed Accounts in the Dashboard, without changing the existing Contacts notification UI.
The Account page now includes a new Notifications card.
Users can now:
The Managed Accounts table now includes a notifications button for each managed account.
Selecting that button opens a dedicated notifications dialog for the selected manager. The dialog uses the same shared form as the Account page so both entry points behave consistently.
The Contacts notifications UI was intentionally left unchanged.
Email delivery continues to use the existing SendGrid-based notification pipeline.
SMS delivery might be broken because AI struggled with it. We'll verify in QA.
Notification scheduling now includes eligible Accounts documents in addition to legacy Contacts documents.
An account is considered eligible when:
notifications.problemTypes.Blackout dates suppress notifications on matching local dates for the configured notification timezone.
Missed notifications are not backfilled after the blackout date passes.
When the same recipient could be matched through more than one source, delivery now deduplicates notification recipients before sending.
Account records now support two new optional properties:
smsPhoneNumbernotificationsThe notifications object now supports:
emaildaysdurationtime.fromtime.totime.timezoneOffsetproblemTypesblackoutDatesNew action types introduced in this release:
[
{
"type": "SUBMIT_UPDATE_ACCOUNT_NOTIFICATIONS",
"purpose": "Submit self-service account notification settings from the Account page",
"payload": {
"smsPhoneNumber": "string | undefined",
"notifications": {
"email": "boolean",
"days": "[boolean, boolean, boolean, boolean, boolean, boolean, boolean]",
"duration": "number",
"time": {
"from": { "hour": "number", "minute": "number" },
"to": { "hour": "number", "minute": "number" },
"timezoneOffset": "number"
},
"problemTypes": ["string"],
"blackoutDates": ["string"]
},
"helpers": "FormikHelpers"
}
},
{
"type": "INSTANCE_SET_NOTIFICATION_PROBLEMS",
"purpose": "Store dynamic notification problem definitions loaded from module metadata",
"payload": [
{
"key": "string",
"label": "string",
"group": "string | undefined"
}
]
}
]
The existing managed-account update action was extended to carry notifications data.
{
"type": "INSTANCE_UPDATE_MANAGER_ACCOUNT",
"payload": {
"managerId": "string",
"firstName": "string",
"lastName": "string",
"roles": ["string"],
"smsPhoneNumber": "string | undefined",
"notifications": {
"email": "boolean",
"days": "[boolean, boolean, boolean, boolean, boolean, boolean, boolean]",
"duration": "number | string",
"time": {
"from": { "hour": "number", "minute": "number" },
"to": { "hour": "number", "minute": "number" },
"timezoneOffset": "number | string"
},
"problemTypes": ["string"],
"blackoutDates": ["string"]
},
"helpers": "FormikHelpers | undefined"
}
}
New Redux state paths introduced in this release:
state.instance.notificationProblemsNew persisted account document paths used by this release:
Accounts/{accountId}.smsPhoneNumberAccounts/{accountId}.notificationsAccounts/{accountId}.notifications.emailAccounts/{accountId}.notifications.daysAccounts/{accountId}.notifications.durationAccounts/{accountId}.notifications.time.from.hourAccounts/{accountId}.notifications.time.from.minuteAccounts/{accountId}.notifications.time.to.hourAccounts/{accountId}.notifications.time.to.minuteAccounts/{accountId}.notifications.time.timezoneOffsetAccounts/{accountId}.notifications.problemTypesAccounts/{accountId}.notifications.blackoutDatesThe following backend behavior was added or updated:
smsPhoneNumber and notifications.smsPhoneNumber and notifications.Available notification problem types are now loaded dynamically from module metadata instead of being hardcoded in the new account-based UI.
This allows the UI to stay aligned with the notification problem definitions already declared by enabled modules.
Key implementation areas for engineering review:
packages/module-common-account/lib/AccountNotifications.tsxpackages/module-common-account/lib/epics.tspackages/module-common-instance/lib/accountNotifications.tspackages/module-common-instance/lib/dashboard/components/AccountNotificationsEditor.tsxpackages/module-common-instance/lib/dashboard/components/AdminInstances/ManagedAccountNotificationsDialog.tsxpackages/module-common-instance/lib/epics.tspackages/module-common-instance/lib/reducers/notificationProblems.tspackages/shell-functions/src/auth/account.tspackages/shell-functions/src/notifications/notifyer.tspackages/shell-functions/src/notifications/scheduler.tsIn this release we introduce our new agentic AI kiosk browser, Zamok Genie. Conversational and intelligent, the Zamok Genie is capable of assisting users in exciting new ways. Try it today!
We’re excited to announce Zamok Genie, a new AI-powered agentic browser built directly into the Zamok kiosk platform. Genie brings conversational intelligence, real-time kiosk awareness, and actionable automation to every kiosk running the latest version of Zamok.**
**Genie is designed to help customers navigate complex websites, complete multi-step workflows, resolve common questions, and perform kiosk-specific actions—naturally and reliably.
Genie uses Google Gemini to provide fast, context-aware voice and text interaction. The model can reason over kiosk data, user intent, website data, and third-party APIs to deliver accurate step-by-step assistance.
Genie can call the Zamok Kiosk API tools to perform real actions, not just answer questions.
This enables the AI to do things such as:
Pull contact details from a directory and initiate a VoIP call
Help user navigate a website or fill out complex web forms
Greet users and guide them to their destination
Translating webpages on demand
All tool calls follow the same permissions and auditing rules as standard Zamok operations.
Genie can inspect the current webview and kiosk state, allowing it to:
Understand the user’s position in a website
Provide contextual reminders (i.e. “Click the button that says, 'Continue' to proceed”)
Detect errors or missing fields
Invoke kiosk functionality (i.e. “Would you like me to call customer support?”)
This makes Genie a natural fit for sites with complex navigation or long workflows.
Users can interact in the mode most comfortable for them:
Natural voice conversations with full speech-to-text and text-to-speech
Text chat for quiet environments or accessibility needs
Voice mode has been optimized for kiosk acoustics, and the AI works seamlessly across multiple written and spoken languages.
Administrators can configure Genie’s behavior centrally:
Organization-level and kiosk-level AI instructions
Dynamic prompt fragments with environment context
Custom knowledge and workflow hints
Optional restrictions on tool use
Optional guardrails for kiosk-safe language
Changes apply instantly across the kiosk fleet.
Zamok Dashboard now includes detailed reporting for AI usage:
Token consumption per kiosk
High-traffic periods
Chat session summaries
Tool-use reports
Cost-estimation export
This gives organizations full visibility into usage and spending.
Zamok Genie is now available for all customers on Zamok’s latest release. Contact your Advanced Kiosks representative for onboarding, pricing, or custom integrations.
Some features require microphone, speakers, and/or camera.
Revamps the No Network experience:
Fully offline-ready content
Auto-displays when no internet is detected
New settings card (enable/disable, RTE for content, timeout control)
Fixes related to maintenance mode and kiosk-level overrides
Improves email entry on kiosks by adding “@” key and “.com” key
Full integration with the Pertech 6100 check scanner: https://www.pertechindustries.com/server-side/downloads/support/6100-information-sheet.pdf
Kiosk API functions and scan state available now.
Fixes an issue where VOIP calls reset Windows mic volume to 75%.
Volume now remains consistent across sessions.
Our API documentation has been updated as well. Check it out at: https://kiosk-api-docs.web.app/