10 min read

How Often to Update Your Best Sellers Page

Shashank Dubey
Content & Marketing, Wbcom Designs · Published Jul 29, 2024 · Updated Aug 29, 2026
Update Your Best Sellers Page on Your E-Commerce Website

A best sellers page only works while it tells the truth. The short answer on timing: let WooCommerce recalculate the ranking automatically every time an order completes, review the page by hand once a month, and do a full rethink each quarter or before a seasonal peak. Below we cover how WooCommerce actually ranks “best selling”, how to build the page so it refreshes itself, what a manual monthly review should check, and the handful of cases where a static, curated list beats a live one.

What “best selling” means inside WooCommerce

How WooCommerce ranks a best sellers page: the lifetime total_sales counter updates on every order

WooCommerce keeps a running counter for every product in a post meta field called total_sales. Each time an order reaches Processing or Completed, the counter for each purchased product goes up by the quantity ordered. Refunds and cancellations decrement it. That single number is what the [products best_selling="true"] shortcode and the Best Sellers collection in the Product Collection block read when they sort your catalogue.

Two things follow from that. First, the ranking is lifetime, not recent. A product that sold 900 units in its first year and nothing since will still outrank a newer product that sold 400 units last quarter. Second, the ranking updates itself constantly. You never need to “refresh” the data; you only need to decide whether lifetime sales is the right signal for your store.

In the WooCommerce docs for the Product Collection block, the Best Sellers collection is described as “the products that have been purchased the most on your site”, with ties broken by the most recently published product. That tie-break matters on small stores where many products sit at 3 or 4 sales each.

Three ways to build the page, and how often each one updates

Comparison of best sellers page build methods in WooCommerce and how often each updates itself

Before you set a review schedule you need to know which mechanism the page uses, because they have very different maintenance profiles.

MethodHow it ranksUpdates itself?Best for
Product Collection block, Best Sellers presetLifetime total_sales, newest first on tiesYes, on every orderBlock themes and most modern stores
[products best_selling="true" limit="12" columns="4"]Lifetime total_salesYes, on every orderClassic themes, page builders, widgets
Hand-Picked collection or a manual product categoryWhatever you chooseNoMerchandising, seasonal pushes, new launches
Custom WP_Query with a date-bounded sales countSales in the last N daysYes, if you cache and recalculate on a scheduleLarge catalogues where lifetime sales is misleading

If you are on a block theme, our default recommendation is the Product Collection block. Open the page in the editor, add a Product Collection block, pick “Best Sellers” from the collection chooser, set Products per page to 8 or 12, and turn off “Sync with current query” so the page is not affected by whatever archive it happens to be embedded in. Done. It will be correct tomorrow without anyone touching it.

On a classic theme, the shortcode does the same job. The official products shortcode reference notes that best_selling, on_sale and top_rated cannot be combined with each other, so keep one per shortcode. You can still add category="hoodies" to scope a best sellers grid to one department, which is a cheap way to build several “top picks” rows on a single page.

The automatic layer: what updates on its own

With either of the dynamic methods, the following happens without your involvement:

  • The ranking changes as soon as an order status moves to Processing or Completed.
  • Products that go out of stock drop off if you have “Hide out of stock items from the catalog” enabled under WooCommerce → Settings → Products → Inventory. If you leave that off, a sold-out product can sit at the top of the page and lose you the click.
  • Price, sale badges, ratings and images are pulled live from the product, so there is nothing to copy across.

So for a store with steady, year-round demand and a catalogue under a few hundred products, “how often should I update the page” has a boring answer: you don’t. The page updates itself and your job is a periodic sanity check.

The manual layer: a monthly review checklist

The ten-minute monthly review checklist that keeps a best sellers page honest and up to date

Automatic data still produces bad pages. A once-a-month review takes ten minutes and catches the usual problems. We run through this on client stores at the start of each month:

  1. Compare the page with Analytics. Go to WooCommerce → Analytics → Products, set the date range to the last 30 days, and sort by Items sold. If the top five there are not on your best sellers page, the lifetime ranking has drifted away from what people actually buy now. That is your cue to switch to a recency-based query (covered below) or to curate.
  2. Check for ghosts. Discontinued variations, products with zero stock and no restock date, or a free sample item that racked up thousands of “sales” will all poison the list. Either set the product to Hidden under Catalog visibility or exclude its category from the block.
  3. Look at margin, not only volume. Your highest-volume item is often your cheapest. If a £4 accessory tops the page, consider scoping the collection to categories with healthier margins, or add a second row: “Most popular” and “Customer favourites over £50”.
  4. Re-read the page copy. If the intro paragraph mentions “this summer” or a campaign that ended, rewrite it. Stale copy undermines the whole page more than a slightly stale ranking does.
  5. Test the add-to-cart path. Click through two products from the page on a phone. Best sellers pages get a lot of mobile traffic from social and email links, and a broken variation dropdown there costs real money.

Quarterly and seasonal resets

Every three months, and always two to three weeks before a seasonal peak (Black Friday, Christmas, back to school, whatever your calendar looks like), do a bigger review. This is where you decide whether the page should be honest or strategic.

An honest page shows whatever sold most. A strategic page shows what you want to sell most, informed by what sold. Both are legitimate, but mixing them silently is where stores get into trouble. If you are going to curate, we suggest keeping the heading truthful: “Popular right now” or “Staff and customer favourites” instead of “Best sellers”.

Things to do at the quarterly review:

  • Pull WooCommerce → Analytics → Products for the previous quarter and the same quarter last year. Seasonal items that will spike again belong on the page now, even if their lifetime count is low.
  • Decide on the window. A store selling consumables probably wants a 30- or 90-day ranking. A furniture store with long purchase cycles is fine with lifetime.
  • Check that any cache plugin or CDN is not serving a weeks-old copy of the page. Full-page caches are the most common reason a “dynamic” best sellers page looks frozen. Purge the URL after making changes and check the cache lifetime for that page.
  • Rebuild the lookup tables if the ranking looks wrong. WooCommerce → Status → Tools has a “Regenerate the product lookup tables” action, and you can also run wp wc tool run regenerate_product_lookup_tables via WP-CLI. This fixes cases where imports or direct database edits left total_sales out of sync.

A recent-sales ranking when lifetime numbers mislead

For stores older than two or three years, lifetime totals almost always favour the old guard. The fix is to rank on a time-bounded count. The cleanest way is to query the wc_order_product_lookup table (present on any store with Analytics enabled), cache the result, and feed the IDs into the shortcode or a Product Collection block in Hand-Picked mode.

add_action( 'wbcom_refresh_recent_best_sellers', function () {
    global $wpdb;
    $since = gmdate( 'Y-m-d H:i:s', strtotime( '-90 days' ) );
    $ids = $wpdb->get_col(
        $wpdb->prepare(
            "SELECT product_id
             FROM {$wpdb->prefix}wc_order_product_lookup
             WHERE date_created >= %s
             GROUP BY product_id
             ORDER BY SUM( product_qty ) DESC
             LIMIT 12",
            $since
        )
    );
    set_transient( 'wbcom_recent_best_sellers', array_map( 'absint', $ids ), DAY_IN_SECONDS );
} );

if ( ! wp_next_scheduled( 'wbcom_refresh_recent_best_sellers' ) ) {
    wp_schedule_event( time(), 'daily', 'wbcom_refresh_recent_best_sellers' );
}

add_shortcode( 'recent_best_sellers', function () {
    $ids = get_transient( 'wbcom_recent_best_sellers' );
    if ( empty( $ids ) ) {
        return do_shortcode( '[products best_selling="true" limit="12"]' );
    }
    return do_shortcode( '[products ids="' . esc_attr( implode( ',', $ids ) ) . '" orderby="post__in" limit="12"]' );
} );

This recalculates once a day, costs one grouped query, and falls back to the standard lifetime ranking if the transient is empty. Put it in a small site-specific plugin rather than the theme so it survives a theme switch. If you would rather not maintain code, WooCommerce.com sells a Best Sellers extension that adds date-range rankings and a dedicated best sellers page, and several free plugins do a lighter version of the same thing. Either way, check the plugin’s last update date before installing; this category has a lot of abandoned options.

How often the ranking should change, by store type

Putting it together, here is the cadence we tend to recommend when a client asks the question in the title:

Store profileRanking windowManual reviewFull reset
Small catalogue, steady demand (under 200 products)Lifetime, automaticMonthlyTwice a year
Consumables, fast-moving stockLast 30 days, recalculated dailyFortnightlyQuarterly
Seasonal (gifts, garden, sports)Last 90 days or same period last yearMonthly, weekly in peakBefore each season
Large catalogue with many departmentsPer-category best sellers, 90 daysMonthly per department ownerQuarterly
Digital products, services, coursesLifetime is usually fineMonthlyWhen the product line changes

If you sell services through your store, for example with Woo Sell Services, treat each service as a product in this table. Lifetime ranking works well there because the catalogue is small and demand is stable, but check that the page shows services you still offer.

Common mistakes we see on best sellers pages

  • Mixing the page with a cached static export. Someone once pasted product cards into a page builder “for design control”. Two years later the page still listed a product that had been deleted. If you need design control, style the block; do not replace it with static HTML.
  • Showing 40 products. A best sellers page is a shortcut for undecided shoppers. Eight to twelve products per section is plenty. Past that, it is just your shop page with a different heading.
  • Ignoring social previews. The page gets shared a lot. Make sure it has a proper title, description and image when it lands on Facebook or LinkedIn. A plugin such as Woo Open Graph handles this for product and shop pages.
  • Not linking to it. Add it to the main navigation or the shop sidebar. A best sellers page nobody can find does not need an update schedule at all.
  • Letting a sample or freebie top the list. Free items convert at a rate nothing else can match, so they dominate lifetime counts. Hide them from the catalogue or exclude the category.

Frequently asked questions

Does the best sellers ranking include refunded orders?

When an order is fully refunded or cancelled, WooCommerce reduces total_sales by the ordered quantity. Partial refunds of individual line items also adjust the count. Manually deleted orders do not, which is one reason a lookup table regeneration occasionally helps.

Can I show best sellers per category?

Yes. Add category="slug" to the shortcode, or in the Product Collection block disable “Sync with current query” and use the Filters panel to pick categories. A row per department usually performs better than one site-wide list.

Why does my page not change after new orders?

Almost always caching. Purge the page in your cache plugin and CDN, then check whether the page is excluded from full-page cache or has a short TTL. If the data itself looks wrong in WooCommerce → Analytics, regenerate the product lookup tables from WooCommerce → Status → Tools.

Should I manually reorder the list for marketing reasons?

You can, but rename the heading so it stays honest. Customers notice when “best sellers” is obviously a list of whatever you are overstocked on, and it erodes trust in every other label on the site.

Where to start

Open your best sellers page and work out which of the three methods built it. If it is a static list, replace it with the Product Collection block or the shortcode today. Then put a monthly reminder in the calendar for the checklist above, and a quarterly one for the bigger review. That is the whole system for most stores. If your lifetime ranking no longer reflects what people buy, add the 90-day query, or talk to our WooCommerce development team about building a ranking that fits how your catalogue actually moves.

Shashank Dubey
Content & Marketing, Wbcom Designs

Shashank Dubey, a contributor of Wbcom Designs is a blogger and a digital marketer. He writes articles associated with different niches such as WordPress, SEO, Marketing, CMS, Web Design, and Development, and many more.

Related reading