A person reaches for a series of abstract shapes inside and outside of a circle surrounding their head.
Illustration by Marina Verdu.

Fulfilling the needs of in-house teams

6 principles for designing internal products

A good designer is a liaison between a product and the people it’s intended for. When we deeply understand the people using a product, we craft experiences that bring value to their lives. It takes time to develop this understanding, but it’s necessary.

This is true when designing both consumer and internal products. Internal products are inward-facing tools designed to improve employee jobs and productivity. I’ve spent the last year designing internal products for the operations team behind Shopify Fulfillment Network (SFN), a full-service network of fulfillment centers that Shopify businesses use to store inventory and fulfill orders. SFN’s dedicated operations team handles everything going on behind the scenes for online stores in this network — account management, managing the inventory coming into and going out of the network, and many other administrative tasks. It’s a stimulating problem space to design for with plenty of juicy problems that involve both digital and physical tasks.

Our small-but-mighty team has been working to design and develop a new internal app that supports myriad operational workflows behind SFN. This app supports the management of merchant accounts, inbound and outbound shipments of products, and other administrative tasks. The goal of this app is to unlock efficiencies for the operations team while seamlessly integrating with internal systems, third-party software, data reports, and spreadsheets.

It’s been a challenge. As we entered the new year, I took a moment to reflect on my experiences designing for internal products, and created a list of the design principles that helped me work more effectively in this problem space.

1. Design for real people

Like any other product, an internal product is for real people. It needs to work for them to help them achieve an outcome. To do so, we need to understand the people using our product. Only then can we craft experiences that will bring real value to their lives. It is important for product teams to respect the time it takes to develop this understanding.

To do this, commit a good amount of time to shadowing and talking to the people who will be using the tools. This will uncover their objectives, the tools they use, their frustrations, and what can improve. Don’t be afraid to involve these users in product ideation as well — they’ll bring a vast amount of knowledge to the table, and co-creation will help them transition to the new tool you’re designing for them.

A chart showing the inputs for an optimal design solution.

The best part about designing an internal product is the lack of distance to the people you’re designing for. Being a Slack message or meeting away from the people who use the product was a huge help for our team. Before any design work, our team spent lots of time shadowing and talking to our colleagues on the operations team. We used co-creation sessions to increase our user’s direct involvement, literally designing concepts in collaboration with them. This unlocked velocity for our team, while properly orienting us towards practical, outcome-based solutions.

2. Harmonize with real workflows

When designing internal tools, we strive for a state where teams and software become one. The only way to create this harmony is to design with a deep understanding of the business, its teams, and the jobs that team members have to complete.

Dedicate time to navigating and understanding the complexity of internal workflows. This will help you develop a respect for their complexity and enable you to design tools that fit into real processes. If done correctly, a user should be able to effortlessly complete a goal with minimal friction.

An orders page linking to support tickets.
A screenshot of how our app links support tickets to specific orders.

Through job shadowing we discovered our support team was linking outbound shipments to support tickets using a spreadsheet. As we learned more about the support team and their objectives, we uncovered the need for a space to link support tickets in the software when there were issues. Designing for this use case allowed us to create a single source of truth in the tool, reducing time spent maintaining a spreadsheet and further driving harmony between the team’s job and the software.

3. Think about your user’s objectives

Understanding real-world workflows is the best way to identify and understand a user’s underlying objectives. Being aware of those objectives helps us strip away the irrelevant and non-essential elements, enabling us to increase the efficiency of tasks people complete many times per day.

Extract the underlying objectives from your research and understanding of workflows. Always orient yourself to thinking about a user’s objectives. What is a user trying to accomplish? What are their goals? What impedes them from achieving these objectives? How can you design your tooling in a way that supports a user in achieving these objectives?

An order page with contextual actions.
An order page with contextual actions.

While studying an outbound shipment workflow, we learned about the team’s objectives to understand issues with “held” shipments (shipments flagged by the system for potential errors), and the need to resolve with a set of common actions. We also discovered that these common actions were not closely mapped to where they gained context on issues. This led us to design a card that gave users information on issues while providing contextual actions derived from their objectives. The introduction of this simple card led to a reduction in the number of clicks and time needed to resolve frequent issues.

4. Optimize for efficiency

Internal products should improve how people work by helping them achieve their objectives with the least amount of effort. It’s important to keep in mind that internal teams may use these tools for many hours everyday. That’s why minimizing time spent to complete tasks needs to be a top priority. Incremental improvements that shave off even a small percentage of time from a task add up to hours of efficiency gains over time. This ultimately frees up people’s time for more engaging, creative, and fulfilling tasks.

Keep efficiency top of mind when designing internal products. Experiences should help people achieve their goals quickly, accurately, and with less effort. They should value speed and simplicity, but they should value productivity even more.

Here are some tips for designing efficient experiences from Shopify’s Polaris experience values:

  • Break complex tasks down into simple steps, and remove repetitive tasks whenever you can.
  • Use friction to highlight important decisions, then let users get back to work.
  • Give users the ability to reduce and optimize their workloads through automation and bulk actions.
An orders page with 3 orders selected for a bulk action.
An orders page with a bulk action selected.

As we learned more about the frequency with which the operations team was resolving issues, we uncovered the need to also support bulk issue resolution. The introduction of bulk actions for issue resolution enabled our team to resolve hundreds of duplicate issues with a drastic reduction in the amount of clicks needed to do so.

5. Make it easy to find key information

Internal products should capture and store data in a manner that allows people to easily query and retrieve it. Internal teams benefit from increased knowledge sharing, so tools should make information accessible to all the people who need it, when they want it. As a result, internal tools should also enable the creation and sharing of goals, derived from this access to information.

Design tooling that supports users in quickly finding the information they need during their workflow. When dealing with large amounts of information, design in a way that allows people to easily search for the information they need

An orders page with sorting and filtering capabilities.
An orders page with sorting and filtering capabilities to make key information easier to find.

While working on an index displaying all outbound shipments, we realized there were a few key pieces of information our operations team consistently looked for. The problem was that there was no easy way to find this information without workarounds and the use of spreadsheets. We worked with them to co-create actionable metrics and robust filtering/sorting capabilities to help them identify and triage issues, which led to a reduction in the time needed to gather information and complete their tasks.

6. Keep things consistent and scalable

Internal apps should use consistent design patterns wherever possible to reduce cognitive load. A lack of consistency slows people down when doing routine tasks, and can make their workflows more prone to error. When internal software slows people down, teams lose efficiency and the business loses money. That’s why consistency is paramount to an experience.

Work with your team to design scalable patterns. Make a library of structures and components that you can transform to fit unique design needs. Of course, the information will change in different structures and components, but the intent here is to reduce the number of things a user has to learn to use your software efficiently. Be purposeful in deviating from these patterns — only do so if you absolutely need to.

An orders page and a shipping page that show parallel structure.
Order and shipment pages follow very similar structures.

Our team worked hard to establish scalable structures, components, and actions that could mold to fit the unique needs of different objects in the software we were designing. Doing so allowed our operations team to onboard to the software quicker, since there were fewer patterns to learn. This had the dual benefit of unlocking velocity by preventing our team from spending effort on designing and developing new structures and components.

While this list of principles is by no means exhaustive, it certainly helped me make great decisions and deliver real value. I’m sure there are plenty of other important things to keep top of mind, and I look forward to uncovering them as I continue to delve into internal product design. Of course, at the root of all of these design principles lies one fundamental truth — we’re designing for real people with important jobs and our goal should always be to make their lives easier.

Are there any principles you work to when designing internal tools and software? Let me know!

--

--

Design @shopify – Design enthusiast with a love for nature, economics, and technology. Always learning and making; occasionally sharing.