Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[UX] Providing effective user feedback guidelines #198

Open
wants to merge 26 commits into
base: 5.x
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
ce36c26
[UX] Providing effective user feedback guidelines
andersonjeccel Jul 5, 2024
60fe81b
vale fix
andersonjeccel Jul 5, 2024
3734a5f
fix vale error for warnings and errors
favour-chibueze Jul 25, 2024
8320743
fix vale suggestions
favour-chibueze Jul 25, 2024
86f725e
fix vale .
favour-chibueze Jul 25, 2024
aae1291
fix vale
favour-chibueze Jul 25, 2024
7172c2b
Update docs/design/feedback.rst
andersonjeccel Jul 25, 2024
c81eda8
Update docs/design/feedback.rst
andersonjeccel Jul 25, 2024
429dfb8
Update docs/design/feedback.rst
andersonjeccel Jul 25, 2024
7d2d0d4
Update docs/design/feedback.rst
andersonjeccel Jul 25, 2024
c1c101c
Update docs/design/feedback.rst
andersonjeccel Jul 25, 2024
1455119
Update docs/design/feedback.rst
andersonjeccel Jul 25, 2024
289a857
Update docs/design/feedback.rst
andersonjeccel Jul 25, 2024
d6aa187
Update docs/design/feedback.rst
andersonjeccel Jul 25, 2024
754060c
Update docs/design/feedback.rst
andersonjeccel Jul 25, 2024
bd35d25
Update docs/design/feedback.rst
andersonjeccel Jul 25, 2024
87b495e
Update docs/design/feedback.rst
andersonjeccel Jul 25, 2024
bb39bf3
Update docs/design/feedback.rst
andersonjeccel Jul 25, 2024
69451d5
Update docs/design/feedback.rst
andersonjeccel Jul 25, 2024
4b26a6c
Update docs/design/feedback.rst
andersonjeccel Jul 25, 2024
b9ec9cd
Update docs/design/feedback.rst
andersonjeccel Jul 25, 2024
7e46f91
Merge branch '5.x' into ux-feedback-guidelines
favour-chibueze Jul 30, 2024
6e7a2af
Update docs/design/feedback.rst
andersonjeccel Aug 28, 2024
bdae60d
Update docs/design/feedback.rst
andersonjeccel Aug 28, 2024
d99df14
Update docs/design/feedback.rst
andersonjeccel Aug 28, 2024
f010768
Update docs/design/feedback.rst
andersonjeccel Aug 28, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitpod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,6 @@ vscode:
- errata-ai.vale-server
- eamodio.gitlens
- trond-snekvik.simple-rst

ports:
- port: 3000
119 changes: 119 additions & 0 deletions docs/design/feedback.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
.. vale off

Providing effective user feedback
=================================

.. vale on

When developing features, it's crucial to ensure that Users receive clear feedback and guidance when certain information or data isn't available. Instead of hiding tabs or displaying zeroed metrics, for example, adopt a proactive approach to inform and guide Users.

Fundamental principles
----------------------

The principles of visibility, transparency, and guidance form the foundation of an intuitive and informative user experience.

- **Visibility**: keep all functionalities visible, even when there's no data available.
- **Transparency**: communicate that information is missing.
- **Guidance**: provide instructions on how to obtain the data or activate the necessary settings.

Visibility ensures that Users are aware of all available functionalities, even when they're not active or populated. Transparency builds trust by clearly explaining why certain information might be missing. Guidance empowers Users by providing clear paths for action and improvement. Together, these principles transform moments of frustration into solutions, helping marketing professionals complete their tasks.

Practical implementation
------------------------

The practical implementation of these guidelines in Mautic goes beyond avoiding blank screens. It involves creating a conversation with the User, anticipating their needs, and guiding them with minimal workload. Every informative message, call to action, or configuration tip serves as a contextual mini-tutorial, educating Users about the platform's capabilities while helping them overcome obstacles.

When encountering situations where data is absent, follow these guidelines:

- Replace empty areas or zeroed metrics with explanatory messages. For example:

'There's no information about the devices used yet. This happens automatically when Users interact with your Campaigns.'

- Include clear call to actions that guide the User on how to proceed. For example:

'No Email activity? Start sending some Campaigns to populate this data!'

- If the lack of data is due to incomplete configuration, provide direct guidance:

'It looks like device tracking isn't active. Go to settings to turn it on.'

- Help Users understand the value of the missing data:

'Device information helps optimize your Campaigns for different platforms. Once this data becomes available, see detailed analytics here.'

- Use icons, colors, or visual elements to indicate areas that need attention.

This approach not only improves immediate usability but also accelerates the Users' learning curve, leading to more sophisticated use of the platform over time. Users don't feel 'stuck' when encountering areas without data, but are instead motivated to explore and fill those gaps.

.. vale off

'No Results' template
---------------------

.. vale on

Mautic includes a reusable template for displaying informative messages when no results are available. This template offers a consistent and flexible way to provide User feedback, with options for additional actions.

Template structure
------------------

.. code-block:: twig

{% if tip is defined %}
<div class="alert alert-info">
{{ tip|trans }}
{% if link is defined and (href is defined or onclick is defined) %}
<a class="ml-a" href="{{href}}" onclick="{{onclick}}">{{link|trans}}</a>
{% endif %}
</div>
{% endif %}

Parameters
----------

The template accepts the following parameters:

.. vale off

- **tip** (required): display a translation string that contains the main message.
- **link** (optional): a translation string for the link/button text.
- **href** (optional): use the ``URL`` for navigation when clicking the link.
- **onclick** (optional): JavaScript function to be executed when the link is clicked.

.. vale on

Functionality
-------------

If you've defined ``tip``, a ``div`` with the class ``alert alert-info`` that contains the translated message displays, if not then nothing renders. If you've defined `link` and at least one of ``href`` or ``onclick``, a link below the main message displays. Configure the link to navigate to a new page with ``href`` or execute a JavaScript function with ``onclick``.

Usage example
-------------

To use this template in your code, you can include it as follows:

.. code-block:: twig

{{ include('@MauticCore/Helper/no-information.html.twig', {
'tip': 'Mautic.segment.no.results',
'link': 'Mautic.segment.add.new',
'href': '{{ path('Mautic_segment_action', {'objectAction': 'new'}) }}'
}) }}

In this example, the template displays a message indicating that no Segments are available, with a link to create a new Segment.

Why?
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Headings need to be unique, perhaps we should expand this to 'Why provide a uniform message in the absence of results?'?

----

It ensures a uniform presentation of 'no results' messages across the platform, providing consistency in the User experience. Its flexibility allows use in various situations, from empty lists to graphs without data, adapting to different contexts. The optional link makes the template actionable, guiding the User to actions that can resolve the 'no results' situation, promoting engagement and problem resolution. Additionally, support for internationalization translates messages into different languages, making the platform more globally accessible.

Best practices
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Headings need to be unique across the entire docs, so I wonder if it makes sense to expand this to 'best practices for xxxx'?

--------------

To maximize the effectiveness of this template, it's important to follow some best practices. Always provide a clear and informative message in the ``tip`` parameter, ensuring that the User understands the current situation. When appropriate, include a link to an action that can help the User resolve the 'no results' situation, promoting a more interactive and solution-oriented experience. It's crucial to use specific messages for each context, avoiding generic texts like 'No results found,' which may not provide useful information to the User. Finally, include all strings in the translation files to guarantee a consistent experience in all supported languages.

This approach aligns with modern User experience (UX) design best practices. It incorporates principles of informative design, immediate feedback, and contextual guidance. Providing relevant information and actions at the exact moment and place where the User needs them creates an interface that not only reacts to User actions but anticipates and meets their needs.

Clear messages and specific guidance reduce the number of support tickets related to User confusion or 'missing' functionalities. Additionally, standardizing the handling of empty or inactive states across the platform creates a more consistent and maintainable codebase.

It's essential to note that, while general guidelines exist, customize implementation for each specific context. A message that works well for empty Email metrics might not be appropriate for a Campaign Report without data. Think critically about the specific context of each implementation and adapt the messages and call to actions accordingly.
7 changes: 7 additions & 0 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,13 @@ There are several ways to support Mautic other than contributing with code.
development-environment/setup
development-environment/environments

.. toctree::
:maxdepth: 2
:caption: Design and UX
:hidden:

design/feedback

.. toctree::
:maxdepth: 2
:caption: Themes
Expand Down