# 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="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2FH6Fu8T0voay4pXHAqWbS%2Ferrror%201.jpg?alt=media&#x26;token=8e074ffc-5c76-49a0-93e7-3ceb3559f942" 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="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2FDZIx5o7dIoNjjaDjc7Oo%2Ferror%202.jpg?alt=media&#x26;token=088a23bf-5a49-4140-b24e-341bd9fb0597" 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="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2Fe8PPtOcKGMdmXAdpQpCS%2Ferrror%204.jpg?alt=media&#x26;token=2cee72a2-fece-47ae-9af9-44fa0402d227" 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="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2Fkr9OZXgIQnFXIzjN4yk4%2Ferror%203.jpg?alt=media&#x26;token=4c7de0cd-4fd1-40a1-aed3-c64740ef461b" 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="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2FKVgzx6LQx7sZPsYL6ToZ%2Fsuccess%201.jpg?alt=media&#x26;token=272ade1f-b664-4564-b2ce-6a3a7120cf16" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2FKNPIst7wJTNBBqmqZujq%2Fsuccess%202.jpg?alt=media&#x26;token=51aded40-e036-400e-bed2-74f9c34eff53" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2FQ1HBCQqmiZRbM25XaaGJ%2Fsuccess%203.jpg?alt=media&#x26;token=b0f540c0-60f0-4644-9b66-ae8ca18526b8" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2FpizIjiGwLRu6p9aUXSTv%2Fsuccess%204.jpg?alt=media&#x26;token=cdc2d8e3-236b-40e5-b64f-cd86a5f2a649" 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="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2F7On471WSUoTbUb5N2pnu%2Floading%201.jpg?alt=media&#x26;token=0bb0459c-7d70-4221-a9c5-6a54c51f8157" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2FxcB0Y7uGz2Ddv604YOgS%2Floading%202.jpg?alt=media&#x26;token=7d94e379-af4d-4bc5-9175-2ac7283025c7" 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="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2FAa3CPsHVzbQp25dmeZwM%2Fempty%201.jpg?alt=media&#x26;token=0c1937e8-ec95-46ac-b58e-972712d598e9" 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="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2FZ2pbr4Z8I8xyq6zNUmTf%2Fempty%202.jpg?alt=media&#x26;token=e8635917-d78c-4cff-a80a-ca74b54daef0" alt=""><figcaption></figcaption></figure>

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

***

### Feature not in use

<figure><img src="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2FBY98AKtDc2l7AHlHTf8C%2Fempty%203.jpg?alt=media&#x26;token=03648bc4-c5d1-467b-8aec-d581ba1babe4" 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="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2FKW8yCqp3GDdhLAIWY2PR%2Fempty%204.jpg?alt=media&#x26;token=57276fab-4132-46e4-9ef3-5ceb60ae4854" 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="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2Focj2MWFCaY07YMb974yu%2Fempty%205.jpg?alt=media&#x26;token=22270dde-d42f-4844-a4b7-8de6658169f6" 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="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2FSQS8MX6EB9CG4RjIGqyy%2Fdialog%201.jpg?alt=media&#x26;token=99984dc7-17b5-4d22-b944-dc6d4c113ebc" 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="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2FqHw87qwNtTqwdtZPqVCk%2Fdialog%202.jpg?alt=media&#x26;token=fd0aec1a-b045-4142-b2a7-6c5d76ab7415" alt=""><figcaption></figcaption></figure>

> **Be brutally concise.**

***

### Buttons

<figure><img src="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2Ffrzr1Se57ZLliBspvLfj%2Fdialog%203.jpg?alt=media&#x26;token=7408bf53-48c3-4334-afab-dc399e058464" 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="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2FdHnIUPctR3q8bZLWFXTi%2Fdialog%204.jpg?alt=media&#x26;token=5b4f6023-32f5-4962-994a-1fd1ee5f555b" 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="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2FHjnl1MOrBUjFTdC7fEAm%2Fdialog%205.jpg?alt=media&#x26;token=6cbb1646-845d-4df7-ab3d-f96c7c674523" 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="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2F6X9EEwO3B8uTaCcBoT5P%2Fdialog%206.jpg?alt=media&#x26;token=0a4934e9-9f84-49e7-bd5e-1bd59ea0fe07" 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="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2Fh8mY42Ds2EGMcBySwykH%2Fdialog%207.jpg?alt=media&#x26;token=266612e5-9808-42c3-94e3-ce1542f57645" 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="https://1713760500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WvjZe1MeyuSKcswT743%2Fuploads%2FJ6Rt31cMzmPRPbnCD0dD%2Fdialog%208.jpg?alt=media&#x26;token=461cd1ed-218f-4ac4-8037-c0e13ec4fc1f" 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.

***
