Free expert review. Get UX insights for your SaaS. Book a Free 30-minute review
Free expert review. Get UX insights for your SaaS. Book a Free 30-minute review

Pragmatic B2B SaaS Design: The Listing Page

A listing page is one of the most common screens in B2B SaaS. Here’s a practical checklist covering every element you need, when to use each pattern, and how the best products implement them.

Yana Slyshchenko
Yana Slyshchenko
Apr 1, 2026
Abstract mobile screen illustration representing a B2B SaaS listing page design

This year, Donux will be four years old. In the last years, we’ve collected many playbooks, best practices, tips, and other assets that we use internally to build the right product faster.

So we thought, why don’t we release them freely for every product team to use?

Many team members have a long time of experience contributing to open-source projects, and this is our way to give back to the whole product and design community, which has given us a lot.

Every article in the series will expand on a topic: we’ll start with common screens in many B2B SaaS products and then explore patterns and product activities. (If you don’t want to miss an article, make sure to subscribe to the newsletter)

But this is a pragmatic series, so let’s get started!

The listing page: definition

A listing page, in the context of B2B SaaS applications, is a screen that displays a collection of items, records, or entities in a structured format, often as a list or table.

These items could be products, services, user accounts, transactions, files, or any other data relevant to the application’s users.

The primary purpose of a listing page is to provide a clear overview of available data or options, enabling users to quickly find, understand, and interact with the information they need.

How might we design a good listing page?

A good listing page comprises many items, some required and some useful, depending on the context. Use this checklist as a starting point to design a good listing page.

Required elements for a SaaS listing page

These are all the elements you must add to design a good listing page for your product:

1. Choose the card type that most effectively represents your data

2. Ensure to add at least these elements (to learn more about the types of elements and their application contexts, consult the attached tables)

Additional/Optional elements

On some occasions, you may need some additional elements to guide the user more (to learn more about their application contexts, consult the next chapters):

Content types for a good listing

The type may vary depending on the information shown (e.g., if there are many numbers or texts to compare, the table may be the most suitable solution, while if images are shown, the card is better suited).

Card row

Card row

Main reasons to use it ✅

When not to use it ❌

Card Row Examples

Expedia and Monday.com use row cards to display all the required data

Card grid

Card grid

Main reasons to use it ✅

When not to use it ❌

Examples

GitHub and LinkedIn using a Card grid

Map listing

Map listing

Main reasons to use it ✅

When not to use it ❌

Examples

Trivago and Google Maps using Map Listing

Table

Table

Main reasons to use it ✅

When not to use it ❌

Examples

Notion using Table pattern

Types of filters for a SaaS listing

Before starting to design your filters, remember that:

Sidebar filters

Main reasons to use it ✅

When not to use it ❌

Examples

Expedia using sidebar filters

Filter area

Filter area

Main reasons to use it ✅

When not to use it ❌

Examples

A filter area in action in Toggl

Filter button

Filter button

Main reasons to use it ✅

When not to use it ❌

When using a filter button, you can use three different interactions to open the filters:

Examples

Filter button in action

Filter button interactions: modal

Best used when the focus should be on the filters, or the filters themselves involves complex logic.

Filter button: modal

Examples

Filter button: modal in action

Filter button interactions: drawer

This is useful when people need to peek at the context where the filters are applied.

Filter button: drawer

Examples

Filter button: drawer in action on Vimeo

Filter button interactions: popover

A popover is great when you don’t want to lose the context of the listing page.

Filter button: popover

Examples

The popover displays the filters in this CRM

Filter button interactions: Mobile version

All of these could collapse like this on mobile: you could either use a bottom sheet (left) or a full modal (right).

Filter button interaction on mobile: bottom sheet (left), full modal (right)

Examples

The filter button can open a sheet or a full modal on mobile

Sorting & Search in a listing

Sorting and search components should be used when there are many results in which the user may not find what he is looking for at first glance.

In particular, the sorting component makes sense when it is difficult for users to identify the extremes; instead, the search component must be clear about its application.

Inside the filtering area

Use when you want to have control and manage everything in one place.

Sorting and searching inside the filtering area

Examples

Example of search and sorting inside the filtering area

Separated from the filtering area

Best used with tables and card rows.

Search and sorting outside the filtering area

Examples

Search and sorting on User Interviews

Dealing with many items

Listing pages usually deal with many items, so it’s important to deal with this accordingly. There are two main patterns we suggest.

Pagination

Pagination pattern

Main reasons to use it ✅

When not to use it ❌

Examples

Pagination used on Employment Hero

Load more button

Load more pattern

Main reasons to use it ✅

When not to use it ❌

Examples

GitHub uses the load more pattern on their lists

Split a listing into sections

They must be immediately evident and not hidden on the page

With title

Categories with titles

Main reasons to use it ✅

When not to use it ❌

Examples

Categories with titles in the wild

Tabs

Category with tabs

Main reasons to use it ✅

When not to use it ❌

Examples

Tabs used in the wild

Accordion

Accordion

Main reasons to use it ✅

✅ Consente di compattare una significativa quantità di contenuti

When not to use it ❌

Examples

Asana uses accordions to split its categories

Number of items in a listing

Showing the number immediately provides information to the user without having to count, especially if there are many

By applying the filters you immediately have an idea of the quantity of filtered elements

At the top of the list

More suitable in the presence of an infinite scroll or “load more” button.

Number of elements at the top

Examples

Number of items at the top

At the end of a table (like a counter)

More suitable in the presence of a table list with pagination

Number of elements at the bottom of the list

Examples

Notion shows the number of elements at the bottom of each category

Where to put the main CTA in a listing?

Understanding what the CTA refers to is important, especially if you’re using categories.

Within the header

This is great when used in wizards or for application-wide actions.

CTA in the header

Examples

Typeform use of CTA in the header

Within the page

Best used when the action involves the items displayed in the listing.

CTA within the page

Examples

Dropbox using CTA within the page

Empty states: dealing with no items

An empty state can help people understand what’s supposed to be there and what the best first action to take to populate the list is.

Basic

The basic empty state

It features an illustration, a title and a short description of the page’s content

Examples

Examples of basic empty states

With action

An empty state with a call to action

You can use this when you want to push a certain action when there is no content

Examples

Examples of empty states with action

No results found

An empty state for a search result page

This is a subset of the previous one: when the listing page is a SERP you can use the empty state to prompt for changing filters

Examples

Empty state for no results page

Loading patterns for a listing

Listing pages often require heavy calculations to be rendered, especially on slow connections. Skeletons and loaders give users the feedback they need to understand that the page is still working.

Skeleton

They give the user a hint about the layout of the data, decreasing the chances

Skeleton

Examples

Skeleton used in the wild

Loader

A loader is a great alternative to give feedback to the user about something is about to happen,

Loader

Examples

Example of Loader’s use

What’s next?

Whew! This was a long run, but we hope it will help you design better listing pages for your product. To be notified when the new playbook is released, subscribe to Product Donuts, our newsletter!

Frequently Asked Questions

What’s the difference between a listing page and a dashboard?
A listing page shows a collection of items users can browse, filter, and act on. A dashboard aggregates data into summaries, charts, and KPIs. Listing pages are action-oriented (find this record, update that status). Dashboards are insight-oriented (how are we performing?). Many SaaS products link from dashboard widgets to listing pages.
Should I use infinite scroll or pagination for my B2B SaaS listing?
Pagination. B2B users need to return to specific positions, share URLs pointing to exact pages, and understand how many records exist. Infinite scroll works for content feeds (social media, news) but creates frustration in task-oriented workflows where users lose their place.
How many filters should I show by default?
Show 5-6 filters by default and hide the rest behind “Show more.” Prioritize by usage data if you have it. The most-used filters go first. Every visible filter adds cognitive load, so showing everything at once overwhelms users.
When should I use cards instead of a table?
Use cards when the content is visual (images, thumbnails), when there isn’t much data per item to compare, or when mobile responsiveness is a priority. Use tables when users need to compare fields across many records or perform bulk actions. If you’re unsure, offer a view toggle.
Do I really need to design empty states?
Yes. Empty states are one of the highest-impact, lowest-effort improvements you can make. They reduce confusion for new users, drive first actions, and signal that the system is working correctly. Companies that invest in empty state design see measurably higher activation rates.
How do I make my listing page accessible?
Start with keyboard navigation (tab through rows and controls), add ARIA landmarks for the listing, filters, and pagination regions, and always pair icons with text labels. Announce sort and filter state changes for screen reader users. These changes benefit all users, not just those using assistive technology.

Similar posts