Encourage repeat sales in WooCommerce: Display all products purchased by user

Sometimes, customers want a way to view the products they already ordered. A 'WooCommerce display all products purchased by user' plugin does exactly this. Keep reading to learn which plugin to use, and how to set it up to display the current user's previously ordered products.

WooCommerce Display Products Previously Ordered by UserThere are lots of reasons to list products that the user has already bought:

  • Display purchased products on the My Account pageYou may wish to use a WooCommerce display all products purchased by user plugin to display their previous products in one place.
  • Quick re-order tableList the user's previous products in a quick one-page order form, so they can quickly find and select items to re-order.
  • List favorite productsMost customers who make repeat purchases have favorite items that they buy multiple times. Make it easier for loyal customers to find and re-purchase their regular and related products in your ecommerce store.
WooCommerce display previous orders by logged in user plugin
A WooCommerce Account page listing all products purchased by the current user

Displaying purchased items in this way offers benefits such as customer loyalty, enhanced satisfaction, and targeted product recommendations. This personalized shopping experience fosters loyalty, saves time, and allows for effective cross-selling, encouraging repeat sales and customer satisfaction. Keep reading to learn how to use WooCommerce to display purchased items only.

The easy way to display products previously ordered by user

WooCommerce Product Table is a flexible plugin which lists products in a convenient one-page order form. It has a little-known feature which allows you to display all products purchased by the current user. As a result, you can use it to enhance the overall customer experience for each user by showcasing their past purchases - either on the Account page or an another page of your website.

Show WooCommerce products previously ordered
An order form to display all products purchased by user

When you activate this feature, the WooCommerce recently purchased products plugin works like this:

  1. Depending on how you set it up, customers can either log in to their WooCommerce account or view a dynamic 'My Previous Products' page which shows different products depending on the user. The shop page would include a WooCommerce Product Table listing all products previously ordered by that user.
  2. If the user has never ordered any products from your WooCommerce store, then they will see a customizable message saying that there are no products in the table.

Why this is different from listing previous orders

The WooCommerce Account page already lists previous WooCommerce orders like this:

WooCommerce Account Page List Orders

As you can see, the default list of orders doesn't make it easy for customers to repeat an order or re-order products. You can click on an order to view more information in your online store. From there, you can click through to the single product page to re-order each product. That's a lot of clicks if you want to re-order products you have previously purchased!

Without using a WooCommerce get products from order plugin like WooCommerce Product Table, it's difficult to identify the specific order that includes the product you wish to reorder.

Why WooCommerce Product Table is different

WooCommerce Product Table automatically displays a comprehensive list of products that the currently logged-in user has previously purchased. Its 'display all products purchased by user' feature lists all products ever purchased by the customer. Each product is listed only once, regardless of the number of times the user has made the purchase.

As a result, shoppers can easily browse through a list of previously ordered products. The table contains search, sorting, and filtering options to quickly locate items they wish to reorder. By selecting their desired products and adding them to the cart, they can smoothly proceed to the WooCommerce cart before completing the checkout process as usual.

Next, I'll tell you how to set it up on your own WordPress website which can display all products purchased by user. The order history is generated automatically, making it surprisingly easy to set up!

Why it's different from a WooCommerce Repeat Orders plugin

You might have read about WooCommerce re-order plugins. These simply add an 'Order Again' button to the list of orders in the WooCommerce Account. They're different from the method described in this tutorial because instead of duplicating a previous order, WooCommerce Product Table displays products previously purchased by the user who is currently logged in. 

The customer doesn't have to remember which order their previous products related to. They just need to use the search, sort, and filter functions to quickly find their favorite products. Then, they simply add them to the checkout page and create a brand-new order.

Now you understand the importance of allowing existing customers to reorder their previous products using the WooCommerce get products from order feature. Next, we'll get into the most important part of this tutorial - how to set it up.

How to display products previously ordered by current logged in user

First, I'm going to tell you how to show products previously ordered by the current user on any page. Afterward, we'll look at specific places on your site where you might want to display this list. For example, you can add a 'My Products' section to the WooCommerce Account page, or create a hidden page that only logged in users can see.

1. Install WooCommerce Product Table

  1. Get WooCommerce Product Table and install it on your WordPress site (Plugins → Add New).
  2. Head to WooCommerce → Settings → Products → Product tables.
  3. Enter and activate your license key.

2. Configure your product table settings

WooCommerce Product Table plugin settings page
Now, the WooCommerce display all products purchased by user plugin setup wizard will open. Use it to choose how you want your product tables to work.

To optimize the display of previously purchased products in WooCommerce, consider implementing the following recommended settings for the WooCommerce display all products purchased by user feature:

  • Choose your columns - To list a customer's order history, I recommend keeping your columns simple. Just display factual customer data about each product, such as a thumbnail image, name, and price. Everything is optional, e.g. if you can list products without images if you prefer. Don't include more general information such as the description, as the user is already familiar with the product. You should almost certainly include a buy column because this allows users to re-order the product directly from the list. (Read full instructions)
  • Quantity inputs - You should generally tick this box because it allows users to select a quantity before adding it to the cart.
  • Add to cart button - If you're creating a quick re-order form then I generally recommend selecting the 'Checkbox' option. This adds multi-select tick boxes instead of standalone add-to-cart buttons for each product.
  • Product variations - It's generally best to select the 'Dropdown' option so that users can choose variations from the list of previously ordered products. Alternatively, choose 'Separate' to list each variation on its own row.

Keep going...

  • Search filters - If some customers have previously ordered a large number of products, then add filter dropdowns to make the products easier to find. You can even help customers to find specific products more easily by adding a search box and filters. This is essential for users with a large order WooCommerce customer history. (Tip: The WooCommerce recently purchased products plugin also comes with filter widgets.) (Read full instructions)
  • Lazy load - Since you don't know how many products each user has WooCommerce customers order history, there's a chance that some of them might list large numbers of products. Enable the lazy load option to avoid any performance problems for larger tables.
  • Caching - Disable this when listing a user's previous products. It's essential to load the list of products separately for each user because a cached version might show other users' products!
  • Search box - Enable this to add a keyword search above the table, helping users to find their favorite products more easily.
  • Links - Consider whether or not you want people to be able to click from the list of previous products to the single product page. If not, enter false here to disable the links. This keeps the user on the quick re-order form.

3. Use a shortcode to display previous products

Now, we get to the fun bit! It's time to list products ordered by the current logged in user. We'll do this by adding a simple shortcode to any page on your WordPress website:

[product_table user_products="true"]

View the page. As a logged in user with a WooCommerce customer history of previous orders, you will be delighted to find all your purchased products elegantly listed in a user-friendly table layout with the WooCommerce display all products purchased by user.

WooCommerce previously ordered products plugin

4. Decide where to put the list of previous products

Having effectively retrieved a list of products previously ordered by the current user using the WooCommerce get products from order functionality, it is now essential to determine how this seamlessly integrates within the overall structure of your ecommerce website. How will logged in users find their products?

There are three ways to do this:

  1. Add a 'My Products' section to the WooCommerce Account page
  2. Create a hidden page that only logged in users can see
  3. Display the products on a public page of your site

I'll show you how to set up each option.

Option 1: List previously ordered products on the Account page

The WooCommerce account page is the most obvious place to list the user's previously ordered products. For example, you can add a 'My Products' tab to the Account area.

You can easily do this with IconicWP's WooCommerce Account Pages plugin:

  1. Install the plugin.
  2. Go to the list of 'Pages' in the WordPress admin and click 'Quick Edit' on the page where you added the shortcode to show the logged in user's previous products.
    Add extra tab to WooCommerce account page
  3. Select 'My Account' as the parent page and click 'Update'.

This will add a new link to the list of tabs within the WooCommerce My Account page. The tab will have the same name as the page, for example 'My Products'. When users log in and click on the link, they will see the list of products they previously purchased:

Option 2: List previously ordered products on a hidden page

Alternatively, you might want to structure the list of previously ordered products outside of the Account area. To do this, you need another method for restricting the page so that only logged in users can see it.

Keeping the page away from the Account area gives you slightly more flexibility. For example, it makes it easier to choose a different page layout and add filter widgets to the sidebar, as you're not restricted by the layout of the account page.

You can hide the page using the free Restrict User Access plugin:

  1. Install Restrict User Access on your WordPress site.
  2. Go to User Access → Add New.
  3. Click '+ New Condition Group' and select 'Pages'. Click in the 'All Pages' box that appears below.
    Add New Access Level
  4. Select the page where you've added the shortcode to list the current user's previous products.
  5. Now go to the 'Members' tab and select the 'Logged-in' role. (Or, if you prefer, select the 'Customer' role so that only logged in customers can see the page.)
    Restrict WordPress page to logged in users
  6. Use the 'Options' tab to choose what happens if a guest or logged out user tries to access that page for any reason - for example, because they have bookmarked it.
  7. Click the blue 'Create' button.

Now, only logged in users with the role you selected will be able to access the page where you've added the product table shortcode. Each logged in user will only see the products that they have previously purchased.

Add the hidden page to the menu

Of course, your users need an easy way to find the list of products they have previously purchased. You can do this by adding a menu link that only logged in users can see:

  1. WordPress menu link logged in users
    Go to Appearance → Menus.
  2. Select the page from the list of Pages on the left, and click 'Add to Menu'.
  3. Click on the little arrow in the menu on the right. This will open up extra options for that menu item.
  4. Use the 'Access Levels' option to select which user role(s) can see the menu link.

Option 3: List previous products on a public page

Alternatively, you might want to list previously ordered products for logged in users, and all products for logged out users. For example, this is an excellent option if you want to display each user's favorite products on the homepage - but don't want new customers to see a blank table.

To do this, you need to combine WooCommerce Product Table with another plugin - Advanced Access Manager (AAM). AAM comes with some handy shortcodes that let you display different product tables to guests and logged in users.

To use the two WooCommerce plugins together, simply install them and then paste the following shortcodes onto a page:

[aam show="visitor" hide="customer"] [product_table] [/aam]

[aam show="customer" hide="visitor"] [product_table user_products="true"] [/aam]

This conditional statement will list all products for guests, logged out users, and non-customer user roles (e.g. people who have subscribed to your blog but not bought a product). Logged in users will see a table listing the products they have previously ordered.

Can I display order information in the table?

WooCommerce Product Table is all about listing products so that the customer can re-order them. You can display any type of information about the products, such as the image, name, short or long description, price, categories, tags, attributes, and much more. However, it's not possible to display order information alongside each product, such as the date the product was last ordered.

This is because orders are stored as a separate post type in WooCommerce. Even though you're listing products previously ordered by the current user, the order information is not stored against these products in the WordPress database.

To access their WooCommerce customers order history, they can conveniently navigate to the WooCommerce Account page, where they can explore their complete WooCommerce customer history with ease. This works nicely alongside the list of previously purchased products.

Can I show previously ordered variations?

When you use WooCommerce Product Table to display products that the user has previously purchased, this includes variable products. If the user previously ordered a product variation, then this product - along with its variations - will appear in the table.

For example, the following screenshot shows what it might look like if the current user had previously ordered 3 variable products. As you can see, all variations for each product (not just the ones that you have previously purchased) are listed as dropdowns next to the add to cart button. The user can select whichever variations they want to buy, and add them to the cart.

Previously Ordered Variations WooCommerce

In this example, the first and third products have no default variations, so the variation dropdowns are not pre-selected. The second product has a default variation of Black Small, which is selected by default. You can set default variations on the 'Edit Product' screen.

Bonus tips

Choose which types of product to include

So far, we've assumed that you want to list ALL products that the current user has ever ordered. If you prefer, you can have more control over which products to include.

WooCommerce Product Table comes with lots of options for displaying specific products only. In addition to setting it to only show products ordered by the current user, you can choose to list products from a specific category, tag, search keywords, and much more.

For example, you might like to create multiple tables listing items that the user has ordered from a specific category. If you sell clothing and jewelry, then the 'My Products' page might include one product table listing purchased products from the clothing category; and another product table from the jewelry category. If you stock a wide range of items, then this can be more intuitive for your customers.

Customize the message for users with no previous orders

If a user with no previous orders sees the product table, then they will see message notifications. By default, it looks like this:

WooCommerce product table no products message

I recommend customizing this message to make it more relevant to previous products. For example:

[product_table user_products="true" no_products_message="You haven't ordered any products yet! Place your first order, and then your products will appear here."]

User previous orders no products message

Use quick view to speed up re-ordering

WooCommerce Product Table Quick View Magnifying Glass
You have full control over which columns of product data to include in the table. Customers can choose quantities and variations from the add to cart column of the table, achieving true one-page ordering in your ecommerce platform.

However, there are situations where you might want to show more information, or if you have too many variations to fit into the product table. If that applies to you, then quick view is the solution.

The WooCommerce Product Table plugin is designed to work alongside its sister plugin, WooCommerce Quick View Pro. Use them together to add quick view buttons to the table. Shoppers click on these to view more product information in a quick view lightbox. Depending on which settings you choose, this might include the full product image gallery, short description, and add to cart options with variation dropdowns.

WooCommerce Quick View Lightbox with Product Variations

Get Quick View

Review: How Pete Griffith lists his customer's favorite products

Before we close, let's look at a real user of WooCommerce Product Table. Pete Griffith uses the WooCommerce recently purchased products plugin to allow repeat customers to order their favorite products more easily each week:

Great Plugin, Awesome Developer.
This plugin was almost exactly what my customers were asking me to do to make ordering products on a weekly basis much more convenient. Instead of having to wade through our entire catalog of products, they can have a customized order form of only the products they order on a regular basis. They can still access the other products, if their needs change, of course, but this is much more user friendly for them (and me) than the default shopping method on WooCommerce. I had a question for the developer when setting it up, and was amazed at the speed of their response, the depth of understanding of my issue and the amount of time they must have spent in researching the answer. This is the second plugin we've purchased from them and it is because of Katie's blog articles that we knew about it and how we could use it to solve our problem. Her articles are written from the user's point-of-view and give working solutions to some real-world problems that WooCommerce users face. My wish list for future improvement: Add the ability to limit the variable products to selected varieties. I have one popular product with 50+ flavors, but most of my regular customers only order a few of the flavors on a weekly basis. Having all 50+ flavors is not ideal, and while I've devised a sort of workaround for some clients, it would be best if the plugin could handle this itself (each variety has its own product id, so implementing the shortcode would be simple for me or any other WC user if they do add this feature down the road). Highly recommend this plugin and this developer's other products.

Where to get the plugin

WooCommerce Product Table is an ideal solution to display all products purchased by the current user. This powerful tool enables the display of specific products based on the past orders of the logged-in user.

This can significantly enhance the login experience for existing customers by providing swift access to a comprehensive list of previously ordered products. Customers can effortlessly select the desired items for reordering, swiftly adding their favorite products to the cart with just a few clicks.

And the result for you as the store owner? Improved customer loyalty and retention, leading to more repeat sales for you 😀


  1. Hi!
    I´ve been messing around with this plugin and I really like it, the only thing is that user_products seems to not be working for me, is it a PRO feature? If not, I've followed this tutorial and all users at my web page have access to all products, why could this happen?
    Thanks beforehand!

Please share your thoughts...

Your email address will not be published. Required fields are marked *