Writing
We strive for UI text that is as clear and concise as possible, while giving users the right amount of information to help them get their jobs done.
Best practices
- Be concise.
- Write in the present tense.
The film review is saved.
Do
The film review has been saved.
Don't
- Use numerals (e.g. 1, 2, 3) instead of spelling out numbers.
- Write with direct, simple language that is easy to understand. Make sure your writing communicates only the essential details and is written for all reading levels.
- Our styles, patterns, and vocabulary are based on US English, which is the default language for Opus Ensemble. However, take localization into careful consideration for all of your writing decisions.
Writing style
Our writing style is friendly and direct while remaining professional. The majority of our users work in supply chain industries, so we want to make sure the content is as direct and clear as possible to help our users get their jobs done efficiently and effectively, which results in user trust in the software and documentation we provide.
Point of view
- Use second person (i.e. you and your) where it makes sense to do so. However, always ask yourself if using second person provides more value than the more neutral and professional third person. Using second person when the action users are taking is on behalf of their entire company is not helpful and could even be confusing, especially once localized.
Your settings are saved.
Do
Your incident is saved.
Don't
- Avoid using first person (i.e. me and my) except for screen titles related to the user's profile.
- Never combine second and first person in the same sentence or phrase.
Capitalization
- Use title case for all titles and labels within the experience.
View Film Review
Do
View film review
Don't
- Use sentence case for all assistive text.
Specify the film you want to review.
Do
Specify the Film You Want To Review.
Don't
Other sources
For any guidelines not covered in this guide, we refer to the Microsoft Style Guide.
UI text patterns
UI text refers to any text that displays on the screen. This includes but is not limited to titles, labels, assistive text that explains concepts on the screen, buttons, banner messages, and alt text for images.
Experience task labels
- Experience tasks within the Do menu item must use action-oriented labels (e.g. "Monitor Film Reviews").
Monitor Film Reviews
Do
Film Reviews
Don't
Screen, section, and component titles
Standard screen title
- Match the title of the screen linked from the side menu to the name of the experience task so that the breadcrumbs align with the experience task. For example, if users select the Monitor Film Reviews experience task, the screen they land on must also be titled Monitor Film Reviews.
- Use action-oriented titles for all screens.
Review All About Eve
Do
All About Eve Review
Don't
-
When users are exporting data from the system, use "Export [Object Types]" (e.g. Export Film Reviews) as the section title. For more information on using export and download, see Consistent word choices.
- For view details screens:
- Use "View [Object Type] [ID]" if the object users are viewing has a system-generated identifier.
View Film Review GH-1234
Do
View GH-1234 Film Review All About Eve
Don't
- Use "View [Object Type]" when users might not have enough context to remember what object type they're viewing by looking at the specific name of the object alone. In the example below, View All About Eve could be displaying the details of the film itself or of the film review.
View Film Review
Do
View All About Eve
Don't
- Use "View [Specific Object Name]" when users have enough context to understand exactly what object type they're viewing just by looking at the specific name of the object.
- Use "View [Object Type] [ID]" if the object users are viewing has a system-generated identifier.
Panel screen titles
- When users are adding a new object to the system, use "New [Object Type]" (e.g. New Film Review).
- For view-only (or view as the primary purpose) overlay panels, use the actual name of the object being viewed or the object type and identifier as the title, with no other words.
Jane Smith
Do
Jane Smith Details
Don't
Film Review GH-1234
Do
View GH-1234 Film Review All About Eve
Don't
- For overlay panels where the primary purpose is to perform an action, follow the same rules as a screen.
- For links to view the full details of an object within the title bar of an overlay panel, use "View Details".
Dialog screen title
- Use "[Action Verb] [Object Type]" for all dialog titles.
- Avoid punctuation in dialog titles, even for confirmation actions.
Remove Review
Do
Remove Review?
Don't
Other component titles
- Spell out "Identifiers" in section headers if the entire section header is only that word. Use "IDs" if there is an adjective.
Reviewer IDs
Do
Reviewer Identifiers
Don't
- For the steps within a Progress Indicator:
- The title of each step in the Progress Indicator uses the following pattern: "Step [Numeral]: [Object Type]" (e.g. Step 1: Film, Step 2: Review, Step 3: Reviewer Bio).
- The section headers within each step should match the noun from the step title (e.g. Film, Review, Reviewer Bio).
Button labels
- Use active verbs as the labels for all buttons. See Consistent word choices for specific verbs and how we use them.
- Use verbs that indicate what the user actually wants to accomplish (e.g. Add, Copy), instead of generic button labels (e.g. Submit).
Do
Don't
- Keep button labels short, preferably one word. If necessary, 2 words or 3 words with one word being a short preposition can be used. However, always try first to clarify with the title of the screen, dialog, or panel first, rather than in the button label. Usually, more than one word is necessary only when you place a secondary button next to a primary button and need to differentiate the function of each.
Do
Don't
Do
Don't
For more information about how to apply different styles, see Button.
Action icon and menu labels
- Labels for action icons and menu items follow similar patterns as button labels:
- Use active verbs as the labels. See Consistent word choices for specific verbs and how we use them.
- Use verbs that indicate what the user actually wants to accomplish (e.g. Edit, Copy), instead of generic labels (e.g. Manage).
- Include the noun in the label if the object that the user is acting on isn't immediately clear from the context. For example, in table rows, if all menu items are acting on the object represented in the row, you don't need to include the noun. However, if some of the menu items are acting on the object represented in the row and some of the menu items are acting on objects or data related to that object, then you need to include the nouns.
Edit, Remove
Do
Edit Review, Remove Review
Don't
Edit Review, View Activity History, Remove Review
Do
Edit, View Activity History, Remove
Don't
- Any nouns included in the labels must be singular, not plural, even if users can take action on multiple objects at once.
Add Review
Do
Add Reviews
Don't
Field labels
- The shortest label is ideal. Avoid labels that use multiple nouns if they don't all provide explicit value. For example, in Production Company Name, Name is an extraneous noun because Production Company gives users all of the relevant information.
- Do not include punctuation, even on toggles with Yes and No values.
Correct Review Information
Do
Correct Review Information?
Don't
Dates
- For fields that represent dates in the past, use "Date [Action]ed" instead of "[Action] Date." The exceptions to this rule are "Expiration Date" and "Event Date" because these are supply chain industry terms.
Date Released
Do
Release Date
Don't
- For fields that represent due dates in the future, use "[Noun] Due Date" instead of "Date [Noun] Due."
Review Due Date
Do
Date Review Due
Don't
- Date and time values should always display in the following formats:
- Date – DD Mmm YYYY
- Date and Time – DD Mmm YYYY HH:MM AM/PM
- Date, Time, and User – DD Mmm YYYY HH:MM AM/PM by [User Name]
Workflow states
- The default workflow state names are "To Do," "In Progress," and "Closed".
- If you have workflow states that would benefit from more specific names, or you need to add additional workflow states to your object, name all but the final state using active verbs or adjectives that describe what is happening while the object is in that state. For the final state name, use a verb in the past tense.
Under Investigation, In Review, Pending Approval
Do
Investigating, Reviewing, Approving
Don't
Closed
Do
Complete
Don't
- Avoid deviating from the default state names if the new name does not bring additional meaning to the state. For example, Not Started is extremely similar to To Do, and does not provide additional clarity or specificity, so there isn't a reason to introduce inconsistency. However, In Review is clearly more specific and provides additional meaning than In Progress, yet applies to all of the review objects.
Role names
- Don't use the app or solution name in the role name.
- Roles specifically for configuring and setting up the app or its networks are Administrators and should use the following pattern: "[Object] Administrator" (e.g. Application Administrator, Network Administrator, Team Administrator).
- Roles for end users use the following pattern: "Member – [Type of access] Access".
Member - Expanded Access
Do
Full Member
Don't
- Keep the Member role names as simple as you can. If possible, use the following role names:
- "Member - Expanded Access" for roles with access to all functionality.
- "Member - Standard Access" for roles with access to some functionality, including add and edit actions.
- "Member - Read-only Access" for roles with read-only access to the data.
Banner messages
- For system errors that users cannot do anything about, use this generic message: "Something went wrong. Try again later. If the issue continues, contact [App Provider name, and the name of their support department if available]."
-
For messages that contain a list of values:
-
Write the message as a stem sentence that introduces the list of values.
-
Use a colon at the end of the stem sentence.
- Do not include a period at the end of the list or a conjunction (i.e. and, or) prior to the last value.
The new reviews for the following films are added: All About Eve, An American in Paris, Argo
Do
The new reviews for the following films are added: All About Eve, An American in Paris, and Argo.
Don't
-
Confirmation messages
- For synchronous actions, use this pattern: "The [specific name] [object type] is [action in past tense]."
The Not Worth the Money review is added.
Do
Your review has been added.
Don't
- For asynchronous actions (e.g. exporting data that takes time before it is available), use this pattern: "[App Provider Name] is [action]. [Description of how users know when the action is complete or where to find the result]."
- For asynchronous export actions, use this pattern: "[App Provider Name] is exporting the [File Name] file. The file will be available in your notifications when it is ready."
- The Opus Platform backend writes new and updated data to a different database initially than the platform reads data from, which allows for high availability during app deployments. This functionality means that when users update the UI, they might not see their updates immediately, but they will see their updates momentarily (in under one minute). Because the updates display in under one minute, these actions are not truly asynchronous. Add these sentences to your confirmation messages when users land on a screen where they expect to see the updates they just made:
- For adding an object when redirected to the Search screen: "[confirmation message]. The new [object type] will display shortly."
- For editing an object while on the View Details screen: "[confirmation message]. The edits for this [object type] will display shortly."
- For deleting an object while on the Search screen or while on the View Details screen and then redirecting to the Search screen: "[confirmation message]. The [object type] will stop displaying shortly."
- For changing an object status while on the Search screen or while on the View Details screen and then redirecting to the Search screen: "[confirmation message]. The new [object type] status will display shortly."
- For adding a related object while on the View Details screen of an existing object: "[confirmation message]. The new [object type] will display shortly."
- For editing a related object while on the View Details screen of an existing object: "[confirmation message]. The edits for this [object type] will display shortly."
- For deleting a related object while on the View Details screen of an existing object: "[confirmation message]. The [object type] will stop displaying shortly."
System-generated IDs cannot be used in confirmation messages for Add actions. These confirmation messages can only include values from the form the user has just filled out.
If users are not currently on or redirected to the screen where the new or updated information should display and must navigate to a different screen to see that information, the extra sentence in the confirmation message is not needed because the information will display by the time users search for and find that information. For example, you might have a form that refreshes with blank fields when users select Submit, and then users must navigate back to the Search screen and enter filter criteria before any results display. By the time they find the object they are looking for, the information will be updated and reflect accurately on the screen.
- Cancel actions do not require confirmation messages.
Error messages
-
For required fields that are left blank, use the following format: "[Field Label] is required."
Ideally, required fields that are left blank should be indicated with a field-level error instead of a banner error message. Use this banner message if field-level errors are unavailable or for errors in API responses.
- State the error that occurred in the first sentence, and then in a second sentence, state why the error occurred. Phrase the second sentence as an instruction if that is useful to understanding what users must do to correct the error.
Actor Bette Davis is set as the lead. Set another actor as the lead to remove her from this review.
Do
Cannot remove Actor Bette Davis.
Don't
- If you refer to a specific value, capitalize the field label as a proper noun and place the field label in front of the value.
Release Market Germany is added multiple times. Only one review for each release market can be entered.
Do
Remove duplicate release markets for this review.
Don't
Notifications
Email notification subject lines should always be in title case, without end punctuation. For example: Your Review is Approved
File export notifications
For the Notifications panel:
- Title – Your [File Type] File is Ready
- Content –
The [file type] file you requested on [Timestamp: DD Mmm YYYY HH:MM] is now available:
[Link to the file in the form of the file name]
For the email notification:
- Subject – Your [App Provider Name] [File Type] File is Ready
- Body –
The [App Name] [file type] file you requested on [Timestamp: DD Mmm YYYY HH:MM] is now available:
[Link to the file in the form of the file name]
Assistive text
Assistive text is UI text that provides users with guidance, rather than labeling a UI element. Include assistive text for screens, sections, and components when it's useful. Don't include assistive text if it does not provide real value (i.e. the screen, section, or component is self-explanatory even to new users).
Screen-level
- Use punctuation at the end of the sentence, even if the assistive text only consists of one sentence.
- When users are confirming an action (e.g. removing something from the system), use this pattern: "[Implications of action, including the specific object being acted on]. [Action] this [object]?"
The review for the 1951 film All About Eve will be lost and cannot be retrieved. Remove this review?
Do
Are you sure you want to remove this review? It will be lost and cannot be retrieved.
Don't
- When users are importing data:
- Use this pattern: "Select a file containing [contents of file] to [action being taken with the imported data]. Match the CSV's format to the following sample: [Object]Sample.csv"
- E.g.: "Select a file containing review information to add or modify. Match the CSV's format to the following sample: ReviewSample.csv"
- The sample CSV file name should have a link that downloads an example file when selected.
- Don't include a period at the end of the second sentence.
- Use this pattern: "Select a file containing [contents of file] to [action being taken with the imported data]. Match the CSV's format to the following sample: [Object]Sample.csv"
Field-level
- In field-level assistive text, when specifying the maximum character count for a field, use the pattern: "[Number] characters max".
100 characters max
Do
Maximum 100 characters
Don't
- Avoid full sentences unless absolutely necessary.
In the film's original market
Do
Enter the distribution date for the film's original market
Don't
- Avoid periods or other end punctuation.
In the film's original market
Do
Enter the distribution date for the film's original market.
Don't
Empty states
- For searches with zero results, use this generic message: "No results found. Try modifying the search criteria."
- For components that do not have any data, and where users cannot modify search results, use this generic message: "No data available."
- For components that do not have any data because nothing as been added yet (i.e. first-time messages), use this pattern: "No [objects] are currently [verb or description]."
No users are currently assigned the Critic role.
Do
The Critic role has not been assigned to any users yet.
Don't
Vocabulary
TraceLink terminology
These terms are words specific to TraceLink and the Opus Platform and must be used in the defined contexts.
Term | Definition | Example |
---|---|---|
Application |
An app is a product offering that includes one or more business functions to fulfill customer and market needs. Opus apps are "headless" because they are exposed only as APIs and do not define how users interact with them. They are typically accompanied by a solution, which provides the user experience and allows Owners to customize parts of the app. |
Agile Process Teams is an app that enables collaboration with trade partners to digitally execute, manage, and track shared business processes. |
Link and linking |
A Link is the connection between an Owner and Partner where they collaborate and exchange data within the context of an app or network. Linking is an action taken by an Owner, which results in a Link within an instance of an Owner’s app. When used as a noun, Link is capitalized as a proper noun. When used as a verb, link, linking, or linked is not capitalized. |
Kendall Pharma sent a Serialized Operations Manager Link invitation to Einstein Industries. |
Member | A member is any company, location, or person on the TraceLink Network. |
Kendall Pharma is a member on the TraceLink Network. The TraceLink Network encompasses various members and their Partners. |
Network |
A network is comprised of a multienterprise app Owner and their linked Partners or internal locations that use the multienterprise app to meet a shared business goal. Owners can add networks only for apps that port multiple networks. |
Kendall Pharma added two networks to their instance of Agile Process Teams to support two different parts of their business: Kendall Generics and Kendall Branded. |
Owner |
A TraceLink member who has licensed a particular app (i.e. a customer). Once licensed, the Owner establishes a Link to one or more members, which makes that member a Partner within that app's instance. |
Kendall Pharma is the Owner of their Serialized Operations Manager instance. |
Partner |
A member that is linked to an instance of an app for the purpose of collaborating (i.e. exchanging data) with the app Owner. |
Einstein Distribution Industries accepted Pfizer's Serialized Operations Manager Link invitation and is now a Partner in Pfizer’s instance of Serialized Operations Manager. |
Process |
A process is the business function within a network that the user wants to complete. Processes are derived from the object types defined in the app's business model. |
Sally Goodwell goes to the Incidents - Direct Supplier process to add an incident with an incoming supply shipment. |
Solution |
A solution pulls together configurable assets (i.e. object types within the data model, workflows, user experience tasks, roles, and policies) that define certain elements of an app's behavior. Each solution is developed for use with a specific type of app (e.g. Agile Process Teams). |
Kendall Pharma's Kendall Generics network for Agile Process Teams has the Supplier Relationship Management solution applied. |
Team |
A team represents the users with access to a Link that connects the Owner to their Partner or internal location within a network. Each team includes all members from the Owner company with access to the app or network itself as well as any members from the Partner or internal location added to the Link. |
Sally Goodwell is a member of the Kendall Pharma - ABC Supplier team within the Kendall Generics Agile Process Teams network. |
TraceLink Network |
The TraceLink Network is the foundation of the TraceLink product offerings (i.e. TraceLink at the highest level). Members join the TraceLink Network and access apps either as Owners (if they licensed the app) or Partners (if they are linked to the app). |
Users log into the TraceLink Network. Owners and Partners exchange data on the TraceLink Network. The TraceLink Network encompasses various members and their Partners. |
Consistent word choices
We chose these words so that our UI text is consistent across all experiences. Make sure you also use consistent word choices across your experience for anything not covered here.
Word | Notes |
---|---|
add |
Instead of: create |
app and application |
|
apply |
Instead of: submit, save, edit, update For button labels when users are setting or configuring something. |
attach |
Instead of: upload, import When the user is inputting a file as-is to the app that does not require transformation (e.g. attaching an image or document to an object). |
back |
Instead of: previous, last, past For returning to a previous screen, especially within a wizard. Typically a tertiary button. |
cancel |
Instead of: abort, stop For canceling the action. Typically a tertiary button. |
customer |
Instead of: buyer For referring to other entities that purchase a product or service from the user's company. For indicating TraceLink customers, use Owner. See TraceLink terminology for more information. |
choose file |
Instead of: select file, choose, file For selecting a file to import. Typically a secondary button because once users select the file, they then have to select the primary "Import" button to complete the action. |
copy | Instead of: clone |
done |
Instead of: submit, select For confirming a field-level selection (e.g. for a date picker that includes both a start and an end date). |
download |
Instead of: export Anthem components are set up to avoid using the word download. Instead, they present a link to the user with the file name. This reduces the cognitive load for less technical users, so they don't have to discern the difference between "export" and "download." However, if necessary, use "download" when the user is getting data out of TraceLink that does not require transformation (e.g. downloading an image file). |
edit |
Instead of: update, modify "Edit" is used as the verb only. |
Instead of: email address | |
enter |
Instead of: select, specify For assistive text when users must type the values into text fields, type-ahead fields, or available values fields. |
expand and collapse |
Instead of: show and hide Use "Expand All" and "Collapse All" for expanding and collapsing all sections on a form or all components within a screen. Use "Show" and "Hide" to show and hide single components. |
expiration date | Instead of: expiry |
export |
Instead of: download When the user is pulling data out of the app that requires transformation (e.g. exporting a table as a CSV file). |
identifier | When used as a field label, abbreviate as "ID" (e.g. Reviewer ID). |
import |
Instead of: upload, attach For actions when the user is inputting data to the app and that data requires transformation (e.g. importing a CSV file of objects and their information). |
item code |
Instead of: packaging code, product code, identifier Identifies the actual pharmaceutical product. This could be a country drug code (e.g. NDC, DE-PZN) or an Internal Material Number maintained by the company. |
last |
Instead of: past For example, Last 30 Days might be a value in a chart. |
line item | Instead of: order item, PO item, purchase order item, item |
location | Instead of: site |
lot number | Instead of: lot, batch |
make |
Instead of: set as Use "Make [Adjective]" as a menu item label (e.g. Make Primary). |
modified |
Instead of: updated, edited "Modified" is used as the adjective only. |
name | For "Name" fields within forms (i.e. on Add, View, or Edit screens), only include an adjective in the field label (e.g. Film Name) if users might not understand what is being named (e.g. if there is another Name field on the same form). |
packaging code |
Instead of: item code, product code Identifies the specific packaging level of that pharmaceutical product and is included within the serial number (e.g. GTIN, NTIN, CN-Rescode). |
packaging level | Instead of: packaging unit of measure, packaging UOM |
product code |
Instead of: item code, packaging code Refers to either the item code or the packaging code (i.e. any code that refers to the product or its packaging). For field labels, ideally, you should use "Item Code or Packaging Code" to be specific and avoid confusion. However, if space is limited, you can use "Product Code". |
region | Instead of: province |
remove | Instead of: delete |
save |
Instead of: edit, update, submit Always use "Save" as the primary button label for edit actions. |
select |
Instead of: enter, specify, click For assistive text when users must select a value from a date picker, drop-down, or radio button. "Select" is device agnostic. |
shipment and receipt |
Instead of: delivery, transaction Delivery is only used for referring to shipments and receipts collectively, if absolutely necessary. Otherwise always use the specific term for outbound shipments and inbound receipts. |
show and hide |
Instead of: expand and collapse Use "Show" and "Hide" for showing and hiding single components. Use "Expand All" and "Collapse All" for expanding and collapsing all sections on a form or all components within a screen. |
specify |
Instead of: enter, select For assistive text when users must both enter and select values on the same screen or section. |
status | Instead of: state |
submit |
Instead of: request, save For button labels when users are asynchronously requesting information from the system. |
supplier | Instead of: seller, vendor |