# How to write messages

## 👋 Introduction

Messages in the product, like error messages, success messages, are a combination of titles, body copy and buttons. When written well, they give the user feedback, clarity and reinforce brand voice.

***

## 1️⃣ Error messages

An error message interrupts a user’s flow and can be frustrating. A good error message eases that frustration by explaining the problem, providing a solution, and turning the delay into a neutral, if not pleasant, experience.

<figure><img src="/files/pTilS6lHf64jf6aLr8qq" alt=""><figcaption></figcaption></figure>

> **Describe the problem—**&#x54;ell the user what went wrong and why the system responded with an error.

<figure><img src="/files/yeIaY5eKzXmSSRNfdZpg" alt=""><figcaption></figcaption></figure>

> **Describe the solution—**&#x54;ell the user what to do to complete the process. If there is no solution, offer an alternative action such as turning to support.

<figure><img src="/files/UPLkwNxIA025XvyNmEvd" alt=""><figcaption></figcaption></figure>

> **In standard error messages,** you can leave out either the description of the problem or the solution to the problem.

<figure><img src="/files/ptzeTNF13l8M5UOYZWYG" alt=""><figcaption></figcaption></figure>

> **Make it human—**&#x52;ewrite the error message to reinforce the brand’s personality and to speak like a human.

***

## 2️⃣ Success messages

When users complete a task successfully, they expect a success message to confirm that the action was completed and to tell them what the next step is. There are four components of a good success message.

<figure><img src="/files/EFkhDsgBamqZyyEzLY0F" alt=""><figcaption></figcaption></figure>

> **Confirmation—**&#x47;ive a clear indication that what the user wanted to do, did in fact occur.

<figure><img src="/files/DCRmNqQ9tybUBIYweWxF" alt=""><figcaption></figcaption></figure>

> **Consequence—**&#x4E;ow that the user has completed the action, what can they expect?

<figure><img src="/files/6O9leNn5wBcQWxRXdrEx" alt=""><figcaption></figcaption></figure>

> **Guide users forward—**&#x44;irect the users to a mandatory or optional next step.

<figure><img src="/files/UCziQHRM9TjXPZiY9A3G" alt=""><figcaption></figcaption></figure>

> **Go beyond the template—**&#x44;o not use a template “x successfully completed” message for every time. Speak to your user with warmth.

***

## 3️⃣ Loading states

Every system needs time to load, process data or run a search. While the user is waiting, changing text, animation or even a progress bar can shorten the perceived time.

<figure><img src="/files/OhD5tiP45JG8yt6N9zRE" alt=""><figcaption></figcaption></figure>

> **Inform the user—**&#x54;ell the user what the system is doing for them.

<figure><img src="/files/2V3Ze0XBqVcIujJw0Yxq" alt=""><figcaption></figcaption></figure>

> **Delight the user—**&#x49;f the loading time is long, suggest an alternative way to spend time or reinforce brand voice.

***

## 4️⃣ Empty states

Empty states can set the expectation and build excitement while indicating that the empty space is intentional. Empty states can be just a title, or a title and description and a button.

### Feature before first use

<figure><img src="/files/q7UmCmG6bUBkUm2QM6ly" alt=""><figcaption></figcaption></figure>

> **Tell the user what is supposed to be there—**&#x49;f a user has never used a feature and lands on an empty page, it will turn them away,

<figure><img src="/files/JTAAcmTXThfZUGycNRck" alt=""><figcaption></figcaption></figure>

> **Add instructions—**&#x54;ell the user how to use the feature.

***

### Feature not in use

<figure><img src="/files/LkzASUq7ovkyo0NPM5v8" alt=""><figcaption></figcaption></figure>

> **Tell the user why there is nothing there—**&#x53;et expectations with the user and let them know that nothing is wrong.

<figure><img src="/files/z76OljwjPwrEvDJ5g8Dn" alt=""><figcaption></figcaption></figure>

> **Encourage the user to use the feature—**&#x57;hat can the user do next? Direct them to action.

***

### Search

Sometimes, when a user searches for something, the system might not have anything to show. When this happens, use the empty state to inform and suggest.

<figure><img src="/files/5IkReEJwwUcm2iQXAA8Q" alt=""><figcaption></figcaption></figure>

> **Inform and suggest—**&#x54;ell the user that you didn’t find what they were looking for. Suggest other ways to find what they were looking for. For example: try rephrasing your search, search for a category, check spelling.

***

## 5️⃣ Dialog boxes

Dialog boxes are useful and necessary, but that they interrupt a user’s flow. Write the copy so that the user needs to spend as little time as possible reading and understanding the copy.

### Titles

<figure><img src="/files/aS5APaVhLwXjEe1mcfvL" alt=""><figcaption></figcaption></figure>

> **Be clear—**&#x54;he dialog box is used for alerts or confirmations. In the title, speak about the action the user will take.

<figure><img src="/files/h3GoPPjI604EUszRAeDZ" alt=""><figcaption></figcaption></figure>

> **Be brutally concise.**

***

### Buttons

<figure><img src="/files/1s91CEAaNz57JgIMyeIP" alt=""><figcaption></figcaption></figure>

> **Be consistent with the title—**&#x55;se the same verb in the title and the button. Using two different verbs will confuse the user.

<figure><img src="/files/qPVQIFIYALnz7Mb0Nm7h" alt=""><figcaption></figcaption></figure>

> **Be descriptive—**&#x49;t’s important that the user knows exactly what will happen when they click on a button.

<figure><img src="/files/3K2u2QjIRT5rPBnTe0f1" alt=""><figcaption></figcaption></figure>

> **Keep two buttons—**&#x4D;ost dialog boxes need just two buttons. Add a third button only if there is a third action.

***

### Body

<figure><img src="/files/HiClnQL6PW9w7E8AaxsO" alt=""><figcaption></figcaption></figure>

> **Not all dialog boxes need body copy.** If there is nothing to add, don’t add body copy in the dialog box.

<figure><img src="/files/dZ4GcGAIZMT7T3TWbOuM" alt=""><figcaption></figcaption></figure>

> **Inform the user of the consequence—**&#x49;f the action has a consequence the user should know about, write that in the body copy.

<figure><img src="/files/1D1N1t2jRk54BRqfG0t8" alt=""><figcaption></figcaption></figure>

> **Suggest an alternative action—**&#x49;f the user can pursue an alternative course of action, let them know in the body copy.

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://university.obvious.in/product-design/microcopy/how-to-write-messages.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
