# Write your own alert wording

> Change what Fregata Mobile's alerts say — the title and body templates, every variable from {{camera}} to {{ios_ai}}, sections that appear only when there's something to say, worked examples, and the live preview.

Every alert's words come from two templates, a **Title** and a **Body**, in **Settings › Device
Notification Settings › Wording**. The app fills them in from what the camera saw. Out of the box
they read:

> **Front Porch Alert**
> Person in Front Path Zone

You can write anything you like instead. The wording is this iPhone's own: each device keeps its
own, and it isn't synced. (This iPhone only)

_Picture: Wording with a Title of {{camera}}: {{subjects}} and a Body that says In {{zones}} at {{time}} when there's a zone, or At {{time}} when there isn't; the full list of Variables with what each holds; and How an alert reads, showing the wording filled in for three examples._

1. **Title** and **Body**: type freely, and tap a variable to insert it where the cursor is.
2. **Reset to the default wording**: back to how it started.
3. **Variables**: everything an alert can say, with what each holds.
4. **How an alert reads**: your wording, filled in for example alerts as you type, through the same code a real alert uses.

## Variables

| Variable | Becomes | For example |
|---|---|---|
| `{{camera}}` | The camera's name: its friendly name in Frigate, or its key in your config | Front Porch |
| `{{subjects}}` | Who and what was seen, with recognised names in place of the labels they stand for; with nothing seen, what was heard | Alice and Dog |
| `{{objects}}` | What was seen | Person and Car |
| `{{names}}` | Recognised faces and plates, where your server recognises them | Alice |
| `{{zones}}` | Zones entered | Front Path |
| `{{sounds}}` | What audio detection heard | Bark |
| `{{time}}` | When it started | 4:36 PM |
| `{{server_name}}` | The server's name, as you named it in this app | Cabin |
| `{{genai}}` | Your server's GenAI description, once it has written one | A person walked up to the door and left a package. |
| `{{ios_ai}}` | A description of the picture written on this iPhone; needs iOS 27 and **Describe alert pictures** | A person in a red jacket carries a box up the steps. |

Objects come out in your iPhone's language, named the way Frigate's web interface names them.
Anything you've hidden under **Labels** is left out.

## Say something only when there's something to say

A variable with nothing to say disappears. That can leave a sentence hanging: _Person in Zone_.
So wrap the words that belong to a variable in a **section**:

- `{{#zones}}…{{/zones}}` shows what's between them only when there **is** a zone.
- `{{^zones}}…{{/zones}}` shows what's between them only when there **isn't**.

So `{{subjects}}{{#zones}} in {{zones}}{{/zones}}` reads **Person in Driveway** when a zone was
entered, and just **Person** when none was. The default body uses exactly this.

Sections work for every variable. `{{#names}}{{names}} is here{{/names}}{{^names}}Someone is here{{/names}}`
says **Alice is here** for a face your server knows, and **Someone is here** for one it doesn't.

## Examples

| Title | Body | Reads |
|---|---|---|
| `{{camera}} Alert` | `{{subjects}}{{#zones}} in {{zones}} Zone{{/zones}}` | **Front Porch Alert** / Person in Front Path Zone _(the default)_ |
| `{{subjects}} at {{camera}}` | `{{time}}` | **Person at Front Porch** / 4:36 PM |
| `{{server_name}}: {{camera}}` | `{{subjects}}{{#genai}} — {{genai}}{{/genai}}` | **Cabin: Driveway** / Car — A white van stops at the gate. |
| `{{#names}}{{names}} is home{{/names}}{{^names}}{{camera}}{{/names}}` | `{{objects}}` | **Alice is home** / Person |

## The default wording and descriptions

The default body has more to it than its first line: below it, it adds your server's GenAI
description when there is one, and otherwise this iPhone's own description. When you write your
own wording, add `{{genai}}` or `{{ios_ai}}` yourself if you want them. **Add the description to
my wording**, under **Picture Description**, adds `{{ios_ai}}` for you.

The default wording is shown in your iPhone's language. If you change it, your words are used as
you wrote them.

## When the wording isn't used

Your wording needs this iPhone to reach your server when the alert arrives, to read what the
camera saw. When it can't, such as away from home with no **Away** address, the alert arrives in
Frigate's own words instead.
