Dialogs, Toasts, and Notifications
Everything BAFOS says in the moment is written by hand, in plain words, in the voice guide. This section sets the patterns and the copy for dialogs, toasts, inline messages, emails and later in-app notifications.
Which one to use
| Use | When | Example |
|---|---|---|
| Inline message | The person needs to read it to continue, or it belongs to one field | "Enter an email like [email protected]." |
| Toast | Something finished or failed and they can carry on | "Answers saved" |
| Dialog | They must decide before anything happens | "Delete this contact?" |
| Banner | A state that stays true for a while | "Demo is paused while we update it." |
| They are not here, or it is a record they will want | Waitlist confirmation |
Never use the browser's pop-ups.
Writing rules
- Say what happened, what it means, and what to do. Skip apologies and exclamation marks.
- Use the product's words: Connect, Projects, Pulse, Flow, On track, At risk, Stalled.
- Name the thing: "Delete this contact?", not "Delete this item?".
- Buttons repeat the verb: "Send newsletter" and "Cancel".
- Errors say whether the person's work is safe: "They are still on this device."
- No false urgency, no guilt, no countdowns.
Copy library
| Moment | Headline | Detail or buttons |
|---|---|---|
| Waitlist joined | Almost done | We sent a link to {email}. Open it to confirm. |
| Email confirmed | You are on the list | We will email you when there is room. |
| Questionnaire saved | Answers saved | Pick up where you left off any time on this device. |
| Questionnaire sent | Thank you | Your answers help us decide what to build first. |
| Network lost | You are offline | We will keep your answers and retry when you are back. |
| Save failed | We could not save your answers | They are still on this device. Try again. |
| Unsubscribed | You are unsubscribed | You will not get our newsletter. You can rejoin from the site. |
| Rate limit hit | Too many tries | Wait a minute, then try again. |
| Demo paused | The demo is paused | We are updating it. It will be back soon. |
| Admin: saved | Saved | None |
| Admin: send newsletter | Send to {count} people? | Send newsletter, Cancel |
| Admin: delete contact | Delete this contact? | Their questionnaire answers and waitlist place go too. You cannot undo this. Delete contact, Keep contact |
| Admin: export ready | Your export is ready | Download the file. It is deleted after 24 hours. |
| Session ended | You were signed out | Sign in again to carry on. Nothing was lost. |
Emails
- Subject of 50 characters or fewer, no tricks. Sent from a named person.
- The first line says why the person is getting it: "You joined the BAFOS waitlist today."
- One clear button, a plain link under it, and a plain-text version.
- Every marketing email has a one-click unsubscribe and the reason they receive it.
| Subject | First line | |
|---|---|---|
| Waitlist confirmation | Confirm your place on the BAFOS waitlist | You asked to join the waitlist. One click confirms it. |
| Welcome after confirming | You are on the BAFOS waitlist | Thanks for confirming. Here is what happens next. |
| Alpha invitation | Your BAFOS invitation | There is room for you in the first group. |
| Questionnaire thanks | Thanks for your answers | They help us decide what to build first. |
In-app notifications (from the MVP)
A notification is a record, not an interruption. It has a headline, a detail, a time, and a link to the thing. Health changes read like this: "Harbour app is now At risk. 3 blockers and the last deploy failed." Mark read on open, keep a history, and let people mute each type per project.