System messages¶
System messages are the body copy for notifications that aren't part of the Coach schedule — for example spike follow-ups, weekly check-in reminders, and other event-driven pushes. Each message is looked up by a key + language when the app or a backend dispatcher needs to send it.
This is the one collection that uses a flat (key, locale) shape rather than
parent + translations.

Fields (per row)¶
| Field | What it means |
|---|---|
| Key | The event/message identifier the code looks up, e.g. spike_followup. One key has one row per language. |
| Locale | en / de — the language of this row's body. |
| Body | The notification body text for that key + language. |
For every key that the app uses, author both an en and a de row.
English is the fallback if a localized row is missing, but German is live, so
author it. (Push titles are the fixed brand "Naluma" — you author the
body here.)
How it reaches the user¶
A backend dispatcher (or the app) resolves the message by (key, locale) at send
time and uses the body as the notification text. If a key's row is missing,
the dispatcher falls back to English, and if that's missing too, the
notification for that key won't send — so keep keys complete.
What blocks a save¶
- An empty body.
- (Keys are referenced by code; adding a brand-new key only matters once code looks it up — coordinate new keys with engineering.)
Where it shows up¶
As the text of push notifications outside the day-by-day Coach program.