Action labels
A button label is a promise. It tells the person what will happen when they press it. Write labels that make that promise clearly and specifically.
The pattern: verb + object
Action labels should follow a verb + object structure. The verb says what happens; the object says what it happens to. Together they remove ambiguity and tell the person exactly what they’re about to do.
- Sentence case. “Save draft”, not “Save Draft” or “SAVE DRAFT”. Title case in buttons is a common UI pattern — avoid it. It makes labels harder to scan.
- 1–3 words is the target. 4–5 is acceptable when clarity genuinely requires it. More than 5 words is a sentence, not a label — rethink the UI.
- Specific over generic. “Save draft” tells someone more than “Save”. “Send invitation” tells someone more than “Submit”.
- Present tense, active voice. “Export report”, not “Report will be exported”.
- No periods. Button labels aren’t sentences.
Do
Save draft
Don’t
Save
Do
Publish consultation
Don’t
Go live
Do
Export responses
Don’t
Click here to export
Do
Add stakeholder
Don’t
New
Destructive actions
Don’t soften destructive labels. Euphemistic language on a destructive action is how someone deletes three months of consultation data they didn’t mean to. The label should name the consequence.
If the action is irreversible, the confirmation dialog should state that clearly — but the label itself still needs to be direct. “Remove” and “Archive” are not synonyms for “Delete” when what you mean is delete. If data is permanently destroyed, the label says “Delete”.
- ”Delete consultation” — not “Remove” or “Clear” when the action is permanent deletion
- ”Remove stakeholder” — correct when removing from a list without deleting the record
- ”Archive project” — correct when the project is being archived, not deleted
- ”Revoke access” — correct; names the consequence precisely
Do
Delete consultation
Used in a confirmation dialog where the action permanently deletes the consultation and all its submissions.
Don’t
Yes, remove it
Vague. Doesn’t name what’s being removed or that it’s permanent.
Do
Revoke access
Don’t
Deactivate
Do
Delete project
The confirmation copy explains what “Delete” means in this context. The label doesn’t need to carry all that weight, but it does need to be the right word.
Don’t
OK / Confirm / Proceed
Confirmation dialog buttons should name the action, not just affirm it.
Icon-only buttons
An icon button without a visible label still needs an accessible label. Icons alone are not universally understood — a three-dot menu icon means different things to different people, and means nothing at all to a screen reader user without an accessible name.
The accessible label lives in code, not in a tooltip. A tooltip is better than nothing,
but it requires hover and doesn’t work on touch. Use aria-label on the
button element. Make the label specific — not just “More” but “More actions for
Northside Highway consultation”.
Do
<button aria-label=“More actions for Northside Highway consultation”> <Icon name=“ellipsis” /> </button>
Don’t
<button> <Icon name=“ellipsis” /> </button>
Do
<button aria-label=“Delete submission from Alex Johnson”> <Icon name=“trash” /> </button>
Don’t
<button aria-label=“Delete”> <Icon name=“trash” /> </button>
Too generic — “Delete” doesn’t tell a screen reader user what will be deleted.
Links vs. buttons
This is a writing question as much as a development one. The label should match what the element actually does.
- Buttons perform actions: “Save draft”, “Send invitation”, “Export responses”. They do something to data or application state.
- Links navigate: “View consultation”, “Go to project”, “Open report”. They take you somewhere.
- If a link looks like a button but navigates, its label still follows navigation conventions — “View responses”, not “View responses here”.
- Don’t use “Click here” as a link label. The label should describe the destination or action, not the mechanic of clicking.
Do
View all submissions
A link that navigates to the submissions list for a consultation.
Don’t
Click here to view submissions
Do
Open stakeholder profile
Don’t
More info
Common Open Point labels
These are established patterns in the product. Use them consistently — diverging without reason introduces inconsistency across the suite.
| Context | Preferred label | Avoid |
|---|---|---|
| Save work in progress | Save draft | Save, Save changes, Save & close |
| Make a consultation visible to participants | Publish consultation | Go live, Activate, Launch |
| Take a published consultation offline | Unpublish consultation | Deactivate, Take offline, Pause |
| Add a person to a stakeholder list | Add stakeholder | New, Create, + |
| Send an email invitation | Send invitation | Invite, Submit, Go |
| Download a data file | Export responses / Export report | Download, Get data |
| Permanently delete a record | Delete [item name] | Remove, Clear, Yes, OK |
| Leave a flow without saving | Discard changes | Cancel, Exit, No |
| Close a dialog or panel | Close (icon with aria-label) | X with no label, Done, OK |
Was this page helpful?