Interactive Guide for the TYPO3 Backend

I'm happy to be back with another report on one of our recent initiatives. Over the past few weeks, we have focused on creating an interactive guide/tour for the TYPO3 backend. This idea was proposed in the Community Budget Ideas for Q1/2025, and the community selected it for implementation through voting.

In this article, I'll describe our main goals, who participated in the initiative, and what we've achieved in the end. So, grab something to drink, sit back, and enjoy reading!

The Reasons Behind the Initiative

With each new release, TYPO3 evolves and aligns more closely with modern standards. It adds new functionalities desired by users and introduces improvements and updates to the user interface. Overall, TYPO3 continues to grow, providing increasingly powerful possibilities for developers, integrators, and editors. Thanks to its modularity and extensibility, TYPO3 remains an excellent choice for small, medium, and large projects.

However, one of the challenges new users often face with TYPO3 is its somewhat higher learning curve compared to similar products. This applies both to developers who are new to TYPO3 and users whose primary role is content management. The TYPO3 community has made significant progress over the past years, providing better and better documentation, standardizing code, simplifying testing processes, and improving the backend interface with proven solutions. But we believed there was room for one more addition - something to help new users become familiar with TYPO3 even faster...

The idea was to create an interactive guide for the TYPO3 backend. Its role was to provide a series of short tours that guide users through various parts (modules) of the TYPO3 backend, explaining their functionalities in a clear and simple way. An additional requirement was to allow developers to easily define their own tours for custom extensions. Such predefined tours would help new users quickly become familiar with the TYPO3 backend, serving as a great supplement to traditional documentation. The tours could also be used to introduce new features as they're implemented in the project.

The Implementation — First Steps

When the development began, it was important to establish clear naming conventions to communicate what the extension offered and how to identify its individual functionalities. The central term we chose was Guide, similar to a human guide you might hire. This Guide offers users various Tours they can take. As you explore the code, you'll frequently see references to these terms.

The feature is currently available as a standalone TYPO3 extension to make testing easier for users. The ultimate goal is to integrate this functionality into the TYPO3 Core - either as part of existing extensions or as a new extension under the TYPO3 vendor name.

Selecting the Base Library for Handling Tooltips

Since TYPO3 is an open-source project, it was important to avoid reinventing the wheel and select an existing open-source library as the core for rendering tour popups. We chose Driver.js because it's lightweight, feature-rich, extensible, and provided under the MIT license. However, it's important to note that there were several challenges integrating Driver.js due to TYPO3's use of iframes for rendering module content. Here, Mateusz Gdula from Macopedia made significant contributions. He created workarounds for correctly selecting target elements within iframes, positioning popups based on step configuration, and handled nearly all of the frontend integration. Great work, Mateusz, and thank you!

Configuration of Tours and Steps

Next, we needed a way to configure tours and their steps. This was achieved by defining the configuration through the YAML files, which are stored within extensions in the Configuration/Tours folder. Using this approach, a single extension can provide multiple tours. Additionally, we introduced the option to mark each tour as either standalone or module-bound. Standalone tours are triggered automatically in the backend (if the user has access), while module-bound tours appear only when users navigate to the relevant backend module. The module-bound tours will likely be used more frequently. This concept is explained in greater detail in the documentation.

Each tour can have multiple steps. Each step is presented as a floating popup positioned next to a specific element. Steps have a title, content, a defined target element they're associated with, and optional JavaScript events. These events can be triggered when the popup appears or disappears. Additionally, a special set of events can be defined that users must perform before they can proceed to the next step. At the tour configuration level, it is also possible to specify the next tour (using its identifier) that should automatically start after the current one finishes. This allows creating a sequence or chain of tours. More details related to tours and steps configuration can be found in the documentation.

Implementing Backend Module

It was also important to provide users with a way to view the list of available tours, track their progress, and manually trigger selected tours. To accomplish this, we introduced a new backend module called Guide, located within the Help module group. The Guide module enables users to:

  • View a list of tours available to the current backend user.
  • Start, continue, or restart a selected tour.
  • Track their progress within each tour.
  • Mark a selected tour as completed.
  • Disable the automatic start of tours (with a single switch), while still allowing users to launch them manually.

Tours Configuration Preview

To allow administrators to view all tours configured in TYPO3, we decided to extend the Configuration module by adding a new entry called Backend Guide Tours. This feature enables administrators to inspect each tour's configuration, review the defined steps, check assigned permissions, and more. Here's how it looks:

Improving the User Experience — Consultation With the TYPO3 UX Team

When the extension reached a stable state, we approached the TYPO3 UX team to demonstrate its features and gather feedback. Mateusz and I met with Rachel Foucard and Riccardo De Contardi, and our meeting proved to be very valuable.

Below is a summary of their key suggestions:

  • Add a Skip button on the popup to allow users to easily skip the tour without needing to go through all the steps
  • Visually distinguish the Next button as it represents the primary action
  • Ensure the content of each step is clear, concise, and easily understandable
  • Make sure that titles and content of the steps are translatable
  • Contact the TYPO3 translation team promptly to include the extension on Crowdin, allowing community-driven translations
  • Avoid using a floating button for quick access to the tours list, as this would add unnecessary complexity and clutter to the interface
  • Add a clearly visible toggle button on the tours list to easily enable or disable tours (the current switch in the backend user settings form isn't easily discoverable)
  • Ensure the Start Again button in the tours list resets the tour status, marking it as incomplete for users
  • Provide an option in the tours list to manually mark tours as completed
  • Allow defining permissions for tours, as certain steps only make sense if users have appropriate access (e.g., specific modules, widgets, or database tables)
  • Create a simple dashboard widget to display users' current tour progress and provide a quick link to the Guide module, where the full tours list is displayed

Again, thank you very much for your valuable time and feedback, Rachel and Riccardo!

Final Touches, Polishing, and Creating Documentation

After receiving feedback from the TYPO3 UX team, we started implementing improvements. We made visual adjustments to the popups, including adding a Skip button to allow users to exit the entire tour quickly. We also created a simple Dashboard widget that displays the user's current tour progress, showing how many tours they've completed out of those available to them. This widget includes a button linking directly to the Guide module, enhancing its discoverability. The Guide module itself is located in the Help group, accessible via the question-mark icon in the top bar.

As agreed with the TYPO3 UX team, users will not see tours they don't have access to. For instance, if a tour is bound to a module the user lacks permission for, that tour will not be shown. Similarly, if a tour requires additional permissions and the user doesn't meet these, the tour will remain hidden.

During development, and especially after implementing all key features, it was important to thoroughly document the extension's functionalities, describe all available configuration options for tours and steps, and clearly explain related topics. We hope you like what we've created and that the documentation will help you easily start creating your own tours!

Known Issues

One main issue that still needs to be addressed is ensuring each step is relevant and makes sense to present to the user. Due to TYPO3's high customizability and advanced permission management, it's challenging to accurately determine whether a user will have access to, and actually see, the target element associated with a specific tour step.

For instance, a new user account without any permissions sees little more than the top bar in the backend interface. This significantly limits which tours make sense for such a user — especially if a tour targets elements like main menu entries, the page tree, or specific module components.

This topic should be discussed with TYPO3 Core developers. A decision needs to be made on whether to introduce custom validation logic for tours or individual steps - for example, checking if a user has access to at least one backend module or whether they can see any pages in the page tree.

There are also many places where having a dedicated identifier for an element would greatly simplify selectors and clearly distinguish certain element types. For example, in the page tree, it would be helpful if standard pages or folders had specific identifiers to simplify selection.

Thanks to the TYPO3 Community

I would like to extend a big thank-you to the TYPO3 community for selecting our initiative as part of the Community Budget Ideas for Q1 2025, and to everyone who has been involved in this project so far — your help and feedback have been invaluable!

Test, Explore, Contribute

This article describes the general topics related to our initiative without going deeper into the implementation or describing each configuration option separately.

For those interested in the code and what possibilities the extension provides, please check the repository on GitHub and the documentation.

Check out the two minute video overview of the extension: TYPO3 Interactive Tour Showcase

All users are invited to test this extension, define their own tours, provide feedback, and help us improve it, making it more mature, feature-rich, and stable. If you encounter any issues or have new ideas, please submit them on GitHub.

Additional contributors for this article