03 / Practice
The system that talks back.
Every button label, every error message, every empty state — that’s the voice the product speaks in. Most systems spec every pixel and leave the words to whoever ships last. Voice is constant; tone shifts by moment.
01 / Voice vs tone
Voice is who you are. tone is how you say it today.
Voice is constant. It’s the personality of the product — recognizable across every screen, every state, every surface. Three adjectives carry it.
Tone is variable. The same voice shifts register depending on the moment. A success message is breezy; the same product writing an error message is plain and helpful. Tone is voice + context.
Direct. Confident. Human.
The personality readers feel across every product surface — onboarding, errors, marketing site, support docs. Three attributes carry it; more than five and it becomes incoherent.
Encouraging in onboarding. Plain in errors. Light at success.
The same voice, dialed for context. The product still sounds like itself — but it reads the room.
02 / Three attributes
Pick three. pair each one with its opposite.
The this-but-not-that pattern Mailchimp’s style guide made famous: each attribute paired with the thing it’s not. The pairing matters more than the attribute — “Direct, not hedgy” tells a writer what to do; “Direct” alone is generic.
Direct
· not HedgyGet to the point. The user is here to do something, not to read your throat-clearing.
Saved.
Your changes have been successfully saved to your account.
Try again
Please consider trying that action one more time
Confident
· not PushySpeak from expertise. The product knows what it can do; the user should hear that, not feel sold to.
Connect a calendar to sync events.
Why not unlock the magic of calendar sync today?!
Delete account
We'd be sad to see you go but...
Human
· not CutePlain English. Contractions are fine. Jargon is fine when the audience uses it. Cuteness is what unconfident products reach for instead of clarity.
Nothing here yet.
Looks like the cupboard is bare! 🥺
We couldn't save your changes.
Oopsie! Something went wrong on our end...
03 / Four moments
Same voice, different register, four moments.
Onboarding, success, error, empty. Almost every product moment maps to one of these four. The voice attributes don’t change — the dial does. Encouraging at the start. Light at success. Plain at the error. Helpful at the empty state.
Encouraging · concise · forward
“Welcome. Three steps to get your first project running.”
Confidence the user came for, not a celebration. Get them moving.
Neutral · light touch · move on
“Saved.”
A success message that lingers becomes friction. Acknowledge, then get out of the way.
Plain · specific · with a fix
“We couldn't reach the server. Check your connection and try again.”
Name what went wrong, name the fix, drop the apology. "Oops!" is filler.
Helpful · pointed · one CTA
“No projects yet. Create your first one to start tracking work.”
The empty state is the first screen a new user meets. Tell the user the next step and where it lives.
Welcome to Acme.
Three steps to get your first project running.
Create a projectSaved.
One word. It acknowledges, then gets out of the way.
We couldn’t reach the server.
Check your connection and try again.
Names what failed, names the fix, skips the apology.
No projects yet.
Create your first one to start tracking work.
New project04 / Microcopy patterns
Four patterns that decide ninety percent of product copy.
Buttons, destructive confirms, field labels, error messages. Lock the rules for these four surfaces and you’ve written most of what a user will ever read in the product.
Verb + noun · five words max
Good
- Create project
- Save changes
- Send invite
Bad
- Click here
- Submit
- OK
Name the verb · name the noun · no hedging
Good
- Delete invoice
- Cancel subscription
- Revoke access
Bad
- Are you sure?
- Yes / No
- Continue
Visible · concrete · sentence-case
Good
- Email address
- Project name
- Phone (optional)
Bad
- Email *
- PROJECT_NAME
- Tel.
Field name · what failed · how to fix
Good
- Email is invalid. Use the format name@example.com.
Bad
- Error 400
- Invalid input
- Something went wrong
05 / Anti-patterns
Four voices the product should never use.
All four look friendly in a mockup. In front of a user who just lost twenty minutes of work, they read very differently.
Apologizing for the product
Avoid
Oops! Something went wrong :(Prefer
We couldn't save your changes. Try again.Sincere apologies are powerful and rare. Sprinkled on every error they read as evasion — the product doesn't take ownership, it just feels bad. Describe the problem and the fix; skip the regret.
Forced cheerfulness
Avoid
Yay! Your invoice is overdue! 🎉Prefer
Invoice 1042 is 3 days overdue. Send a reminder.Cheerfulness applied to a serious moment reads as gaslighting. Match the register to the moment — errors and overdue states should feel as concerned as the user already is.
Marketing voice inside the product
Avoid
Unlock the power of seamless collaboration!Prefer
Invite teammates to comment on this draft.Marketing copy lives on landing pages. Inside the product the user has already bought — they're trying to get work done. Drop the adjectives.
Placeholder pretending to be a label
Avoid
Input placeholder "Your email"Prefer
Visible label "Email" + input with helper textPlaceholder disappears on focus, fails contrast, isn't reliably announced. Voice and tone has to survive the UI patterns — a label can be sentence-case and human; a placeholder can't carry that weight.
Voice decides how the product sounds. naming decides how it’s referenced.
Token names, component names, the language teams use to talk about parts of the system — naming conventions are the API of the design system. The next page covers the grammar: tokens, components, CSS patterns, and the four mistakes that age worst.