Hello! Welcome back to our course on analyzing and optimizing user flows.
In our last lesson, we explored how to use progress indicators to manage user expectations during successful operations and system delays. We learned that keeping users informed about what's happening builds trust and makes waiting more tolerable.
Today, we'll tackle the inevitable flip side: what happens when things go wrong? An error is a critical touchpoint in the user journey. Handled poorly, it can cause frustration and abandonment. Handled well, it can actually build user trust and confidence in your product.
This lesson addresses the learning outcome: Design clear error messages and recovery paths to guide users back on track.
We will cover:
- The core principles of effective error messages.
- Strategies for designing efficient recovery paths that help users solve problems quickly.
- How to categorize errors to provide the most appropriate response.
- Best practices for the timing, placement, and tone of your error notifications.
Let's begin.
1. The Anatomy of a Good Error Message
At its heart, a good error message follows one of Jakob Nielsen's most famous usability heuristics: Help users recognize, diagnose, and recover from errors. This single principle breaks down into three clear directives for designers.
To introduce these concepts, let's watch a short video from the Nielsen Norman Group that explains this heuristic.
Usability Heuristic 9: Help Users Recognize, Diagnose and Recover from Errors
This video, 'Usability Heuristic 9: Help Users Recognize, Diagnose and Recover from Errors,' provides the foundational framework for designing user-centric error handling.
Please watch from the beginning up to 01:34. Pay close attention to the three core recommendations for effective error messages.
As the video outlines, every effective error message must do three things:
- Recognize: Clearly inform users that an error has occurred. This is often done with visual cues like red text, an icon, and a prominent message. Don't make the user guess if something is broken.
- Diagnose: Explain what the problem is in plain, human-readable language. Avoid technical jargon or cryptic error codes. A user shouldn't need a developer's help to understand what went wrong.
- Recover: Offer a constructive path forward. The best error messages don't just state the problem; they provide a solution or a shortcut to fix it.
To explore these ideas further, the following article provides a great overview of best practices.
Error messages and UX: a complete guide
The article 'Error messages and UX: a complete guide' by Torresburriel Estudio offers a solid summary of the characteristics of well-designed error messages.
Please read the section titled 'Best practices for effective error messages'. This section reinforces the principles from the video and adds important considerations like tone and timing.
2. Designing Efficient Recovery Paths
Simply telling a user what went wrong is only half the battle. The true mark of excellent UX is making the recovery process as painless as possible. An efficient recovery path respects the user's time and effort.
Let's watch another video from the NNgroup that focuses specifically on the efficiency of error messages.
Create Efficient Error Messages
This video, 'Create Efficient Error Messages,' moves beyond just identifying errors and focuses on how to help users get back on track with minimal effort.
Watch the entire video. It outlines four key guidelines for making your error handling more efficient and user-friendly.
The video highlights four crucial guidelines for efficient error recovery:
- Safeguard Against Likely Mistakes: The best error message is the one that's never needed. Proactively warn users before they commit an error, like the email attachment reminder mentioned in the video.
- Preserve User Input: This is critical. Never clear a form because of a single validation error. It's incredibly frustrating for users to re-enter all their information. Let them edit the incorrect field and resubmit.
- Reduce Correction Effort: Don't just tell them what's wrong; give them a shortcut to the solution. If a city and ZIP code don't match, suggest the correct combination. If a search returns no results, offer a link to remove a filter, as seen in the Kayak example from the first video.
- Concisely Educate: Use the error message as a micro-learning moment. Briefly explain why the error occurred (e.g., "Password must contain a special character") to help the user succeed on their next attempt and understand the system's rules.
3. Slips vs. Mistakes: Tailoring Your Recovery Strategy
To design the right recovery path, it's helpful to understand the type of user error you're dealing with. UX pioneer Don Norman distinguishes between two types: slips and mistakes.
Error handling - UX design patterns
The article 'Error handling - UX design patterns' by Matan Rosen provides a clear explanation of this important distinction.
Read the section titled 'Slips vs Mistakes'. Focus on understanding the difference between the two and why that distinction matters for design.
To summarize this key concept:
- A Slip is an error of execution. The user knew what they wanted to do but accidentally did the wrong thing (e.g., a typo, clicking the wrong button).
- Recovery Strategy: Forgiving interfaces. This is where preserving user input, providing "undo" options, and offering autocorrect are most effective.
- A Mistake is an error of intention. The user's goal was based on a misunderstanding of the system (e.g., trying to use a coupon code in the wrong field).
- Recovery Strategy: Clearer communication. This is where concisely educating the user, improving labels, and providing contextual help becomes crucial.
By identifying whether an error is more likely a slip or a mistake, you can design a more targeted and helpful recovery path.
4. Categorizing Errors by Origin
The user isn't always the source of the error. Sometimes, the problem lies with the system or the environment. A robust error handling strategy accounts for all possibilities.
The same article, "Error handling - UX design patterns," provides an excellent framework for this.
Error handling - UX design patterns
This section of the article breaks down errors into three main levels based on their origin, offering specific strategies for each.
Read the sections '3 Levels of errors - and how to handle them' and 'Additional and notable error types'. This will give you a practical framework for designing different kinds of error states.
Here is a summary of the error categories and the recommended design approach for each:
| Error Type | Description | How to Handle It |
|---|---|---|
| User-Generated | Caused by the user's action, like invalid input in a form. | Be specific and helpful. Use inline validation, highlight the problematic field, and preserve their correct input. |
| Environmental | Caused by external factors, like loss of internet connectivity or denied permissions. | Communicate the issue clearly and neutrally. Offer offline support or a "Retry" option. Don't blame the user. |
| System | Caused by a backend failure, like a server crash or bug. | Be reassuring and non-technical. Apologize, hide the technical details, and provide a path forward (e.g., "Try again" or "Contact support"). |
| Business Logic | Caused by hitting a rule of the system, like an expired coupon code. | Explain the rule in a friendly tone. The user didn't make a mistake; they just encountered a system constraint. |
Activity: Designing Error States for a Travel App
Imagine you are designing the user flow for a flight booking app. For each of the three scenarios below, describe how you would apply the principles from this lesson.
Specifically, for each scenario, detail:
- The error message text.
- The visual presentation (e.g., placement, color, icons).
- The recovery path you would provide to the user.
Scenarios:
- A) User-Generated Error: A user is filling out the passenger details form and enters "1985" in the "Year of Birth" field, but the airline requires all passengers to be at least 18 years old.
- B) Environmental Error: The user is on the final payment screen and their phone loses its internet connection just as they tap the "Confirm & Pay" button.
- C) System Error: The user successfully submits their payment, but the airline's booking system returns an unknown error, and the ticket cannot be confirmed.
Take a few minutes to think through each one. This will help solidify your understanding of how to design for different error conditions.
Conclusion
Great job today. We've moved from designing for the "happy path" to creating resilient, user-friendly flows that can gracefully handle the unexpected. By designing clear error messages and efficient recovery paths, you turn moments of friction into opportunities to build trust and guide your users to success.
Here are your key takeaways:
- Effective error messages must help users recognize, diagnose, and recover.
- Go beyond just stating the problem; design efficient recovery paths by preserving input, offering solutions, and educating users.
- Tailor your response by understanding the error's origin: user-generated, environmental, or system-level.
- Thoughtful error handling is not an afterthought; it is a core component of a positive user experience.
In our next and final lesson of this module, we'll look at how to validate the changes we make. We will learn how to develop an A/B testing plan to measure the effectiveness of a redesigned user flow, allowing you to prove with data that your optimizations, like improved error handling, have made a real impact.
Can't find a good explanation? Sign up and we'll make it for you
Sign up