REIGN

16 min read · 3,112 words

WooCommerce Product Tabs: What Shoppers Look For Below the Price

A product page with description, size and fit, shipping and reviews tabs

A product page has one job after the price: answer the question that would otherwise send the shopper to another tab, a chat window or a competitor. Most of those answers live in the tabbed area below the add to cart button, and most stores leave it at WooCommerce’s defaults. A Description tab, sometimes an Additional information tab, and Reviews. That is enough for a mug and not enough for a jacket, a router or a bag of coffee.

This guide is about what to put in that area and how to build it. First, which tabs shoppers actually look for, by type of product. Then the part most roundups skip: how WooCommerce builds the tabs, so you can add, rename, reorder and remove them with a small filter. Last, when a plugin is worth paying for. If you only want a list of tab manager plugins to compare, our roundup of WooCommerce tab manager plugins covers that. Here the question is different: what belongs under the price, and who should be able to edit it.

What the default tabs do and do not cover

WooCommerce’s source code defines three default tabs on a single product page. You can read them in the woocommerce_default_product_tabs() function in wc-template-functions.php in the WooCommerce repository.

Tab key Default title Default priority When it appears
description Description 10 The product has content in the main editor
additional_information Additional information 20 The product has attributes, a weight or dimensions
reviews Reviews, with a count 30 Comments are open on the product

Two details in that table matter later. First, the tabs are conditional. If a product has no description, there is no Description tab, and if reviews are switched off, there is no Reviews tab. Any code that edits those tabs has to check that they exist before touching them. Second, each tab has a numeric priority, and lower numbers come first. Reordering tabs is a matter of changing numbers.

What the defaults do not give you is anywhere to put content that is neither a description nor an attribute. Shipping costs, a size chart, a warranty, a manual, an ingredients list: stores either cram these into the description or leave them off the page. Both choices cost you. A long description buries the facts that decide a purchase, and a missing answer becomes a support email.

Which tabs shoppers look for, by product type

There is no study behind the list below, and we are not going to invent one. It is a working checklist based on what buyers of each type of product generally need to know before they commit. Use it to decide which tabs to build, then check your own support inbox and search terms to confirm the order.

Product type Tabs worth having Why it earns its place
Clothing and shoes Size and fit, Fabric and care, Shipping and returns Wrong size is the common reason for a return, and returns are the common worry before buying
Electronics and gadgets Specifications, What is in the box, Compatibility, Warranty Buyers compare specs side by side and need to know what else they must buy
Furniture and large items Dimensions, Assembly, Delivery Buyers need to know it fits through the door and who carries it in
Food and drink Ingredients, Allergens, Storage These are facts people check before they eat something. Labelling rules vary by country, so check yours
Beauty and personal care Ingredients, How to use, Skin or hair type Fit for the buyer decides the purchase
Digital downloads What is included, File formats, Licence, Requirements The buyer cannot see the product, so the page has to describe it precisely
Courses and memberships Curriculum, Who it is for, Access terms The buyer is paying for an outcome, and needs to know what they get and for how long
Made to order items Options, Lead time, Care Waiting time and customisation limits are the questions asked most before purchase

A few principles sit under that table.

Put the decision-making facts first

Order the tabs by the question a hesitant buyer asks first. For clothing that is usually size and fit. For a gadget it is specifications. The default order, Description then Additional information then Reviews, reflects how WooCommerce stores data, not how shoppers think.

Keep the count low

Three to five tabs is easy to scan. Past that, shoppers stop reading labels. If you have eight things to say, some of them belong in the description, some in a single combined Delivery and returns tab, and some on a separate help page that the product page links to.

Do not hide the price-affecting facts

Delivery cost and delivery time can change whether someone buys. If they only appear inside a closed tab, a shopper may reach the checkout before seeing them. Consider a one line summary near the price, with the tab holding the full policy.

Keep reviews and questions close to the decision

Reviews answer a different question from your description. They tell a buyer how the product behaved after purchase. Some stores prefer to show them as a section below the tabs instead of one tab among others. If you run a Reign theme, there is a setting for exactly that, covered below. A Questions and answers area is a related option. Our guide to WooCommerce questions and answers plugins compares tools for that, and the roundup of advanced reviews plugins does the same for review features.

Size information deserves its own treatment

A size chart is usually a table, and tables in a tab need to scroll sideways on a phone rather than overflow the page. For a dedicated tool, see the list of WooCommerce product size chart plugins. If you only have a few charts, a table in a custom tab with a scrollable wrapper is often enough.

How WooCommerce builds the tabs

To change the tabs in code, you need to know where they come from. The template single-product/tabs/tabs.php in the WooCommerce source starts with one line that matters:

$product_tabs = apply_filters( 'woocommerce_product_tabs', array() );

That call starts with an empty array and lets every callback on the woocommerce_product_tabs filter add to it. WooCommerce’s own callback, woocommerce_default_product_tabs(), is hooked to this filter at the default priority and adds the three tabs above. A second callback, woocommerce_sort_product_tabs(), is hooked at priority 99 and sorts the array by each tab’s priority value. Both registrations are in wc-template-hooks.php.

The template’s own comment states the contract: each tab is an array containing a title, a callback and a priority. The template then loops over the array twice, once to print the tab labels and once to print the panels. For each panel it calls your callback with two arguments, the tab key and the tab array.

That tells you the whole recipe:

  1. Hook a function to woocommerce_product_tabs.
  2. Pick a priority for it that runs after the defaults exist and before the sort at 99. Priority 98 does that.
  3. Add, change or unset array entries.
  4. Return the array.

You do not need a plugin for any of that. You need a small snippet, placed where it will survive theme updates.

Where to put the snippet

Put it in a child theme’s functions.php, or in a small site plugin. Do not edit a parent theme. If you are on Reign, its child theme guide explains how to customise without losing changes on update.

Add a custom tab

This adds a Shipping and returns tab after Additional information and before Reviews. It reads its text from a WordPress option. You could just as easily print a block pattern, a shortcode, or a post meta value.

add_filter( 'woocommerce_product_tabs', 'myshop_add_shipping_tab', 98 );

function myshop_add_shipping_tab( $tabs ) {
    $tabs['shipping'] = array(
        'title'    => __( 'Shipping and returns', 'myshop' ),
        'priority' => 25,
        'callback' => 'myshop_shipping_tab_content',
    );

    return $tabs;
}

function myshop_shipping_tab_content() {
    echo wp_kses_post( wpautop( get_option( 'myshop_shipping_text' ) ) );
}

The key, shipping, becomes part of the tab’s HTML id and CSS class, because the template builds tab-title-shipping and tab-shipping from it. Use a short, lowercase key without spaces.

A priority of 25 slots between the default 20 and 30. If you want your tab first, use a number below 10.

Rename a tab

Two options work. You can change the title in the array, as long as the tab exists:

add_filter( 'woocommerce_product_tabs', 'myshop_rename_tabs', 98 );

function myshop_rename_tabs( $tabs ) {
    if ( isset( $tabs['additional_information'] ) ) {
        $tabs['additional_information']['title'] = __( 'Specifications', 'myshop' );
    }

    return $tabs;
}

Or you can use the title filter that the template applies to every label, woocommerce_product_{key}_tab_title, which receives the title and the key. For the reviews tab that is woocommerce_product_reviews_tab_title.

Renaming Additional information to Specifications is a small change that helps. Shoppers know what specifications are, and the default label is vague.

Reorder tabs

Reordering is a priority change. This puts Reviews before Description and leaves the rest alone:

add_filter( 'woocommerce_product_tabs', 'myshop_reorder_tabs', 98 );

function myshop_reorder_tabs( $tabs ) {
    if ( isset( $tabs['reviews'] ) ) {
        $tabs['reviews']['priority'] = 5;
    }

    return $tabs;
}

Because the sorting callback runs at 99, after your function, the new priority takes effect.

Remove a tab

add_filter( 'woocommerce_product_tabs', 'myshop_remove_tabs', 98 );

function myshop_remove_tabs( $tabs ) {
    unset( $tabs['additional_information'] );

    return $tabs;
}

unset on a key that is not there is harmless in PHP, so you do not need an existence check for removal. For edits, as shown above, you do.

Show a tab only for some products

Inside the filter you are on a single product page, so the usual conditional tags work. This adds a Size and fit tab only to products in a category with the slug clothing:

add_filter( 'woocommerce_product_tabs', 'myshop_size_tab', 98 );

function myshop_size_tab( $tabs ) {
    if ( has_term( 'clothing', 'product_cat' ) ) {
        $tabs['size_fit'] = array(
            'title'    => __( 'Size and fit', 'myshop' ),
            'priority' => 15,
            'callback' => 'myshop_size_tab_content',
        );
    }

    return $tabs;
}

function myshop_size_tab_content() {
    echo wp_kses_post( wpautop( get_post_meta( get_the_ID(), '_myshop_size_notes', true ) ) );
}

The content comes from a custom field on each product. To let editors fill that field without code, add it with the custom fields tool you already use. The tab then stays empty until someone writes something, so consider returning early when the field is blank, which avoids an empty panel.

Test it

After adding a snippet, open a product in a private window and check four things:

  1. The tab label appears and the order is what you expect.
  2. The panel opens and the content is escaped properly.
  3. A product that should not show the tab does not show it.
  4. The page still works at phone width.

Also check a product with no description, since the Description tab will not exist and code that assumes it does will throw a notice.

Check how your theme builds the product page

The filter works because the standard template calls it. Some themes override tabs.php, and some build the product page with blocks or a page builder. WooCommerce’s template structure documentation explains how theme overrides work, and warns that overridden templates need to be kept in step with WooCommerce updates.

If your product page is built with the block editor or a page builder, confirm that the tabs element you see is the classic WooCommerce tabs output before relying on the filter. We did not test every builder, so treat this as a check to run on your own site, not a guarantee.

What Reign does

If you use the Reign theme, the shop is covered by two facts we checked in the theme’s source. Reign ships its own woocommerce/single-product/tabs/tabs.php, and that file still applies the woocommerce_product_tabs filter, so the snippets above work on a Reign site. It adds a wrapper element around each tab label for styling, and nothing else changes in how tabs are built.

Reign also adds a setting for reviews. In the Customizer, under WooCommerce and then Single Product Page, there is a Review Position option with two choices: Inside Tab and Outside Tab. Choosing Outside Tab removes Reviews from the tab row and prints the reviews section below the product summary instead. If you want reviews to be the first thing under the tabs rather than one more label, that setting does it without code. The Reign shop setup guide lists the other single product options.

When a plugin is worth it

Code is the right tool when the tabs are the same for every product, or when a developer maintains the site. A plugin starts to make sense when the people editing products are not developers, or when the rules for which tab appears where become complicated.

Situation Code snippet Tab plugin
Same two or three extra tabs on every product Good fit Not needed
Tab text is the same for a whole category Good fit with a category check Fine, if the plugin has category rules
Tab text differs for each product and editors are non-technical Needs custom fields plus a form for editors Good fit
You want reusable tab content you edit once and apply to many products Possible, takes more code Good fit
You want icons, accordions on phones, or visual styling controls A lot of code and CSS Good fit
You rely on a page builder for product templates Check the builder first Check for builder support
A developer maintains the site and wants fewer plugins Good fit Not needed

Whichever route you choose, a few checks apply.

Ask what happens if you disable it

A tab plugin that stores your tab content in its own tables or custom post type leaves that content stranded if you remove the plugin. Ask whether the content is in standard post meta or a custom structure, and whether you can export it.

Check the front end it produces

Look at the markup the plugin creates. Tabs that keep the classic WooCommerce structure work with themes that style .woocommerce-tabs. Tabs that replace it entirely may need their own CSS.

Check the cost against the benefit

A tab plugin that costs a modest yearly fee is cheap if it saves a developer’s hour every month. It is expensive if you only need one extra tab. Prices and licences change, so confirm them on each vendor’s own page. We deliberately do not quote prices in this guide. The tab manager roundup linked at the top compares the main options.

Look at the whole product page, not just the tabs

If your real problem is that shoppers need to pick a size, engrave a name or choose an add-on before buying, tabs are not the right tool. That is a product options problem, and our guide to adding custom product options with Advanced Product Fields covers it.

Writing the tab content

A tab full of vague copy does not help the shopper any more than no tab. A few habits make tab content useful.

Lead with the answer

Start each tab with the fact the reader came for. In a Shipping and returns tab, that is the delivery time and the return window, not a paragraph about your company.

Use tables for comparable facts

Dimensions, sizes and specifications are comparable data. A table lets a shopper scan down a column. A paragraph forces them to read every word.

If your returns policy runs to several pages, the tab should hold the three facts that matter and a link to the full policy. That keeps the product page short and keeps the policy in one place, where you maintain it once.

Match the labels to the words shoppers use

Call it Size guide if your shoppers search for a size guide. Call it Specifications if they say specs. Your store search logs and support emails tell you the words in use.

Keep the same tabs across similar products

If every shoe has Size and fit, Materials and Shipping, a shopper who has read one page knows where to look on the next. Consistency across a category does more for usability than a clever layout on a single product.

A short plan you can follow this week

  1. List your five best selling products and the three questions customers ask most about each, from support email and chat.
  2. Group the questions into tabs using the product type table above.
  3. Decide per tab whether the content is global, per category or per product.
  4. For global and category tabs, add them with a snippet from this guide in a child theme.
  5. For per product content, add a custom field or choose a plugin that fits your editors.
  6. Check every change on a phone, and with a product that has no description.
  7. After a few weeks, compare support questions with what the tabs now answer, and adjust.

Frequently asked questions

What is the WooCommerce filter for product tabs?

The filter is woocommerce_product_tabs. The single product tabs template applies it to an empty array, and WooCommerce’s default tabs are added by a callback on the same filter. Each tab is an array with a title, a callback that prints the content, and a numeric priority that controls the order.

Can I change the tab order without a plugin?

Yes. Hook a function to woocommerce_product_tabs at priority 98, change the priority value of the tabs you want to move, and return the array. WooCommerce sorts the tabs by priority at priority 99, so your change takes effect. Lower numbers appear first.

Why is my Description or Reviews tab missing?

Both tabs are conditional. The Description tab appears only when the product has content in the editor, and the Reviews tab appears only when comments are open for the product. Check those two settings before assuming a bug. If you edit these tabs in code, test that the key exists first.

Do tabs work with block themes and page builders?

Not automatically. The filter is called by the classic tabs template. If your theme or builder renders the product page another way, check that the tabs you see still come from that template before relying on the filter. Test on a staging copy.

Is it better to use tabs or one long page?

It depends on the product. Tabs keep a page short when the content is long and optional. A single scrolling page can suit short content, because nothing is hidden. Put the facts that decide a purchase, such as delivery cost, where they are visible without a click, and let tabs hold the detail.

How many tabs should a product page have?

Three to five is a practical range for most stores. If you need more, combine related topics into one tab, or move long policies to their own page and link to them.

Reading
16 min · 3,112 words
Published
Aug 28, 2025
Shashank Dubey
Reign contributor

Writing about WordPress communities, BuddyPress, BuddyBoss, LMS plugins, and the business of paid communities.

Keep reading

More from the Reign blog

Browse all posts on community, WordPress, BuddyPress and the studio of plugins behind Reign.

What customers say on Trustpilot

Swift and expert coding!

Swift and expert coding by Kerit to apply a personalised display adjustment on the Reign Theme for a media plugin that was not fully supported at the moment.

RussellGB