Skip to main content

Notifications

What a tenant's messages look like, and when they may arrive. A journey decides what is sent (Actions); these settings shape it.

notifications.quiet_hours​

{ "start": "21:00", "end": "07:00" }: a window, on a 24-hour clock, in each participant's own time zone, which may run across midnight. Empty, or a start equal to its end, means no window, and so does a participant with no time zone recorded.

Inside the window:

MessageWhat happens
A journey's createUserPushNotification push, an assignment pushDropped: what it announced is on the home screen in the morning
A chat message's pushHeld, and sent when the window closes; several held go as one
A text messageHeld, and sent when the window closes

The platform's own pushes​

Some pushes are the platform's, not a journey's. Each is headed by the app's name, and none names what was assigned or who did it.

Sent whenOneSeveral within a minute
Staff assign a sequence"You have a new sequence.""You have 8 new sequences."
Staff assign a journey"You have a new journey.""You have 3 new journeys."
A chat message arrives, from staff or a journey"You have a new message.""You have 3 new messages."

The first goes at once; any more of the same kind to the same participant within the next minute go as one push carrying the count, which replaces the last on the phone. What a journey assigns sends no push of its own: add a createUserPushNotification for that.

A schedule never sends anything itself. The app reminds the participant, unprompted and in its own words, when something is due, at the time the schedule names (09:00 when it names none).

email.<template>​

The platform's own emails, one row per template, each with subject, html, fromName and fromEmail; each field falls back to the platform's on its own.

TemplateSent whenMerge tags
invitationA participant is invitedrecipient.firstName, tenant.name, claimUrl
staff_invitationSomeone is invited with a staff role; it names the rolerecipient.firstName, tenant.name, claimUrl, role.name
email_validationA member is asked to confirm their address, where the tenant accepts only some domainsrecipient.email, tenant.name, confirmUrl, intervalLabel, linkLifeLabel
  • Write a tag as {{ tenant.name }}, or {{ tenant.name | fallback: "words" }} for when it is empty. A template naming anything else is refused when it is saved. recipient.firstName is "there" for someone with no first name.
  • Set fromName and fromEmail together: a tenant's name over the platform's address reads as a mistake.
  • Links are never rewritten for tracking, so a link always opens the app. A plain-text version is made from the HTML.
  • There is no password email: passwords are the identity provider's, on its own pages.

A journey's createUserEmailMessage has no template and none of these tags: it goes from the platform's sender, and fills only the tokens a message that leaves the app may carry (Referencing a participant's data).

sms.countries​

The countries a tenant texts, as codes (NZ, AU). A text to a mobile outside them is skipped, and the record says why. Empty means the deployment's own list. A participant must have agreed to be texted, and a STOP reply from a number stops texts to it in every tenant.