Call Us Toll Free - US & Canada : +1-(888) 602-0119

How to Fix WooCommerce Product Variations Not Working (2026 Guide)

A store with WooCommerce product variations not working loses sales quietly, and the cause is nearly always one of five things. Four are setup mistakes. One is a script conflict. They look identical from the shop page, which is why people fix the wrong one. This 2026 guide starts with a two-minute check. It tells you which fault you have. Then it gives you the exact steps for that fault, and what to try when the obvious fix does nothing.

Run This Two-Minute Check First

Open the product page as a customer would. Use a private browser window. What you see there tells you the cause.

No dropdowns at all. The page shows one plain price and a normal Add to cart button. Your product is not set as a Variable product, or the attribute is not marked for variations.

Dropdowns appear but stay empty. The select boxes are there. They contain nothing to choose. Your attribute has no terms assigned to this product.

Dropdowns work, but no price or button appears. You pick a size and colour. Nothing loads underneath. Your variations have no price set.

You get an error message. Note the exact wording. Two different messages point at two different faults, covered in their own sections below.

Nothing responds at all. The dropdowns are dead. Selecting a value changes nothing on screen. This is a broken script, not a setup problem.

Pick the line that matches. Then read only that section. Skipping this step is how a ten-minute fix turns into a whole morning.

Why WooCommerce Product Variations Are Not Working After Setup

Variations need four separate things to be true. Miss any one and the front end goes quiet. Most stores miss the same one.

Open the product and look at the Product data dropdown. It must read Variable product. Simple product is the default, and it cannot hold variations at all. Change it and the tabs on the left change with it.

Next, open the Attributes tab. Add your attribute, then add its values. Now find the checkbox labelled Used for variations. Tick it. Click Save attributes and wait for the panel to reload. This checkbox is the single most missed step in WooCommerce. Without it the attribute is treated as plain product information. It shows in the description table and does nothing else.

Then open the Variations tab. Attributes alone create nothing. You must generate the combinations. Use Generate variations to build them all, or add them one at a time.

Finally, give every variation a price. This is the fourth condition and the quietest one. A variation without a price is treated as unavailable. It will not appear, and it throws no warning.

Free items trip people up here. Leaving the price box empty does not mean free. Type a zero instead. Then the variation is valid and customers can add it to the cart.

Fix Variations That Never Appear on the Product Page

You saved everything and the dropdowns are still missing. Work through these three checks in order.

Check that the attribute terms are on this product

Global attributes behave differently from custom ones. A global attribute lives at Products > Attributes and holds its own list of terms. Adding the attribute to a product does not add its terms. You have to select them in the Attributes tab, on that product. An attribute with no terms selected renders an empty dropdown or none at all.

Custom attributes work the other way. Their values are typed into the product itself, separated by a vertical bar. They are quick to set up but cannot be filtered or reused. Convert them to global attributes if you plan to grow the catalogue.

Check the variation stock status

Open the Variations tab and expand each row. Look at Stock status. A variation set to Out of stock still shows in the dropdown. It just cannot be bought. If every variation is out of stock, the whole product reads as unavailable. Managed stock is stricter. A variation with a quantity of zero and backorders off behaves the same way.

There is a setting worth knowing here. Under WooCommerce > Settings > Products > Inventory you can hide out of stock items from the catalogue. Turn that on and sold-out variations vanish from the dropdowns rather than showing as unavailable.

Check the product is actually visible

If the product itself is hidden, nothing on it will render. Look at Catalog visibility in the Publish box. Also confirm the product is Published, not draft or private. A scheduled product behaves like a draft until its date arrives, and it gives no warning on the front end. Our guide on how to hide products in WooCommerce explains what each visibility option really does. If whole sections of your catalogue are missing, read our fix for the WooCommerce shop page not showing products instead.

Fix “No Products Matched Your Selection”

The full message reads “Sorry, no products matched your selection. Please choose a different combination.” It means the customer picked a set of options that has no matching variation.

Sometimes that is correct. You may genuinely not stock a red item in extra large. More often it is a gap you did not intend.

Go to the Variations tab and count. Two attributes with four values each need sixteen variations for full coverage. If you built ten, six combinations are dead. Every dead combination shows this message.

There are two ways to close the gaps. Regenerate all combinations, then delete the ones you do not sell. Or use the Any option. Setting an attribute to Any on a variation makes it match every value of that attribute. One variation with Any Colour and size Large covers every colour in Large. This keeps large catalogues manageable.

Watch for a subtler cause. If you edit or rename attributes after building variations, the links break. The variation still exists but points at a value that is gone. Rebuild the variations after any attribute change. This is the most common reason a working product suddenly stops working.

Fix “Please Select Some Product Options”

This message appears on Add to cart. The full text is “Please select some product options before adding this product to your cart.” WooCommerce is saying it did not receive a full selection.

The honest cause is the common one. Your product has two attributes and the customer only chose one. Both must be set. Nothing to fix there.

The frustrating cause is different. The customer did choose everything, and the message still appears. That means the form value did not reach the server. Check the attribute slug first. Go to Products > Attributes and look at the slug column. Accented letters, ampersands, slashes and spaces in a slug can break the form field name. Rename the slug to plain lowercase letters and hyphens. Then rebuild the variations, because the old ones point at the old slug.

Long attribute names cause the same failure. WordPress limits taxonomy names to 32 characters. An attribute name that runs past that limit gets truncated behind the scenes. The form then submits a value the product does not recognise. Keep attribute names short and this never happens.

What Changes Above Thirty Variations

Variation behaviour changes once a product passes a threshold. By default that number is thirty. This surprises store owners who add a size and suddenly find the page acting differently.

Below the threshold, WooCommerce loads every variation into the page. The dropdowns are smart. Choose Red and the sizes you do not stock in red grey out immediately. Customers cannot pick a dead combination.

Above the threshold, that data is too heavy to send. WooCommerce switches to loading each variation on demand instead. The dropdowns now show every value all the time. Nothing greys out. The customer only learns a combination is unavailable after selecting all of it, and then they see the no-match message.

Nothing is broken here. It is a deliberate trade for page speed. If your product has forty variations and you want the smart dropdowns back, a developer can raise the threshold with the woocommerce_ajax_variation_threshold filter. Raise it carefully. Every extra variation adds weight to the page, and slow product pages cost more sales than clumsy dropdowns do. Products with hundreds of variations are usually better split into several simpler products.

Rule Out Cache, Theme and Script Conflicts

If the dropdowns are completely dead, your setup is probably fine. A script is failing before it can run.

Start with the browser console. Right-click the product page, choose Inspect, then open the Console tab. Reload the page. A red error naming a missing file or an undefined function tells you where to look. The variation form depends on a WooCommerce script called add-to-cart-variation. If that file fails to load, every dropdown goes inert.

The usual culprit is optimisation. Combining or minifying JavaScript can reorder files and break dependencies. Deferring scripts can run the variation form before its libraries exist. Turn off JavaScript optimisation for product pages and test again. If that fixes it, add the variation script to your optimiser’s exclusion list.

Caching plugins cause a slower version of the same problem. A page cached before you added variations keeps serving the old markup. Clear every layer. That means the plugin cache, any server cache, and any network cache in front of the site. Then test in a private window.

If the console is clean, do a conflict test. Switch to a default WordPress theme. If variations work, your theme overrides the variation template. If they still fail, disable other plugins one by one. Filter, swatch and speed plugins are the usual suspects. For pages that will not render at all, see our guide on not being able to view WooCommerce product pages.

Get Expert Help With Your WooCommerce Store

Broken variations are expensive in a quiet way. The product page still loads. Nothing looks obviously wrong. Customers simply cannot buy, and most of them leave without telling you. A single unpriced variation can hide a whole product line for weeks.

The good news is that the causes are few and they repeat. An untouched Used for variations checkbox. A variation with no price. A renamed attribute that orphaned its combinations. A minifier that broke one script. Run the two-minute check at the top of this guide and you will land on the right one straight away.

It is also worth tidying the product pages while you are in there. Clear option labels and a good summary reduce the questions that reach your inbox. Our guide on how to add a short product description in WooCommerce covers that part.

If your variations still refuse to behave, we can take a look. Our team fixes WooCommerce stores every day. We check the product setup, the attribute data, your theme templates and your script stack. Then we tell you plainly what is wrong and what it takes to fix it. Visit WP Customify for expert WooCommerce support today.

How to Export Orders From a WooCommerce Store (2026 Guide)

Store owners who try to export WooCommerce orders usually hit one of four walls. The download never starts. The file arrives but rows are missing. The WordPress export tool hands back an empty file. Or the totals do not match the store. Each wall has its own cause. Fix the wrong one and you lose an afternoon. This 2026 guide shows you how to tell them apart in about two minutes. Then it walks you through the fix that matches your store.

Start With the Symptom, Not the Fix

Most guides open with a long list of steps. That wastes your time. Order exports fail in four distinct ways. Match your symptom first, then jump to that section.

Nothing downloads. You click Download and the screen just sits there. Nothing lands in your downloads folder. This is normal for larger date ranges. Your file is being built in the background and mailed to you.

The file arrives, but rows are missing. You know there were 90 orders last month. The file holds 61. This is almost never a bug. It is a filter you did not know was on.

The file is completely empty. You used the WordPress export screen, not the store report. That screen reads the wrong database table on modern stores.

The numbers look wrong. Your report data is cached. It may also be keyed to a date field you did not expect.

Write down which line matches you. One of these four covers nearly every case. The sections below follow the same order.

How to Export WooCommerce Orders From the Analytics Report

WooCommerce ships with a working order export. You do not need to add anything. It lives inside the reports, which is why so many people miss it.

Go to Analytics > Orders in your WordPress admin menu. This is a separate top-level menu from WooCommerce. Set your date range with the picker at the top. You get presets such as Today, Last Week and Last Month. Pick the Custom tab if you need exact dates.

Now scroll to the table below the chart. Look at the top right corner of that table header. There is a Download link. Click it.

What happens next depends on size. If every row fits on one screen, the file saves straight away. If the data runs to more than one page, WooCommerce builds it in the background instead. It then emails you a link. That email goes to the address on your own WordPress user profile. It does not go to the store admin email.

The default page size is 25 rows. So any export above 25 orders takes the email route. That single number explains most “my export never downloaded” reports.

You can raise the rows per page in the table footer. Set it higher than your order count and the file downloads on the spot. That trick is handy for a quick check of forty or fifty orders. It is a poor idea for a full year, because the browser has to hold the whole report.

The same Download link sits on every Analytics report. Revenue, Products, Coupons and Taxes each export the same way. Learn it once and you can pull any of them.

Why Your Order Export Is Missing Rows

A short file is the most common complaint. It has three usual causes, and all three are settings.

Some order statuses are hidden by default

Go to Analytics > Settings and look at Excluded Statuses. Out of the box, WooCommerce leaves out Pending payment, Cancelled and Failed orders. Those orders exist in your store. They simply never reach the report, so they never reach your file. Uncheck a status to bring it back in. Do this before you download, not after.

This matters most for tax work and fraud reviews. It matters less for revenue reports. If you are chasing orders that stalled before payment, our guide to errors preventing order completion covers why they pile up.

The report uses Date paid, not Date created

Still on Analytics > Settings, find Date type. The default is Date paid. An order placed on 30 June and paid on 1 July lands in July, not June. Bank transfer and cheque orders can sit unpaid for weeks. Those orders fall outside your chosen range entirely. Switch to Date created if you need the order date instead.

Pick one setting and stick with it. Half your team exporting by paid date and half by order date is how month-end figures stop agreeing. Note your choice somewhere your bookkeeper can see it.

The report data is out of date

Analytics keeps its own cached tables. On recent versions it refreshes on a schedule, roughly every twelve hours. Very new orders may not be in there yet. Look for the data status line at the top of the report. It shows the last update and gives you an Update now button. Use it, then export again.

Older orders are a different case. If you moved from another platform, or turned reports on late, that history may never have been indexed. Go to Analytics > Settings and scroll to Import historical data. Run it once with the range set to All. Large stores should import a year at a time to spare the server.

Why the WordPress Tools Export Comes Back Empty

Many store owners reach for Tools > Export in WordPress. It offers an Orders option. It produces an XML file. On a modern store, that file is often empty or badly short.

The reason is a storage change. WooCommerce now uses High-Performance Order Storage, known as HPOS. Orders live in their own database tables. They are no longer stored as posts. The WordPress export tool only reads the posts table. So it finds nothing to hand you. This is a known gap, not a broken install.

You have two clean options. The simple one is to stop using that screen and use the Analytics download instead. It reads the correct tables.

The second option suits anyone mid-migration. Go to WooCommerce > Settings > Advanced > Features. There you can switch order storage back to legacy posts, or turn on syncing between both. Syncing copies orders into the posts table as well. The old export tool then sees them. Be careful here. Syncing costs write time on busy stores, so switch it back off when you are done.

If you are unsure which mode your store runs, check WooCommerce > Status. The report names your order storage method near the top.

When the Download Email Never Shows Up

You clicked Download. A notice said the file was being prepared. Nothing landed in your inbox. Work through these in order.

Check the address on Users > Profile first. The link goes to the email on your own account. On sites with several admins, only the person who clicked gets the mail. A shared login with an old address is a common trap.

Next, check your spam folder. The mail carries a download link, so filters are harsh on it. Whitelist your own domain if this keeps happening.

If nothing arrives at all, your site probably cannot send mail. Most hosts block the default PHP mail function. Test this by asking WordPress to send a password reset to yourself. If that does not arrive either, the export is not the problem. Your whole site is silent, which also means customers get no receipts.

One more cause is worth knowing. The file is built by a queued background task. If that queue is stuck, the job never runs. Look at WooCommerce > Status > Scheduled Actions. A long list of pending actions with old dates points at a stalled queue. A real cron trigger on the server fixes this for good.

Make the File Match Your Accounting Records

An export that opens is only half the job. It also has to reconcile. Three habits save hours here.

First, decide what counts as revenue. Completed orders are money you kept. Refunded orders reduce it. Export both statuses in one range so the net figure is right. Exporting only Completed gives you a gross number that never ties out.

Second, be precise about tax. Order totals include tax unless your store is set to show prices without it. If your books need net figures, pull the Taxes report separately for the same range. Mismatched tax settings cause most reconciliation gaps. Our notes on tax misconfiguration issues in WooCommerce explain the usual setup errors.

Third, watch how the file opens. A CSV is plain text. Spreadsheet software often guesses badly at it. Long order numbers turn into scientific notation. Leading zeros vanish. Dates flip between day-first and month-first formats. The safe route is to import rather than double-click. Use the import option in your spreadsheet tool, then set the encoding to UTF-8 and the delimiter to comma. Accented customer names stay readable that way.

Exporting Before a Store Move or a Backup

A report export is a snapshot for analysis. It is not a backup. This distinction catches people out during migrations.

The Analytics file holds what the report shows. It does not hold every custom field on the order. It skips internal order notes. It skips refund records tied to each line. It does not carry the link between an order and a registered customer account. Restore from that file and you get a spreadsheet, not a working store.

For a real move, take a full database export instead. Ask your host for a database dump, or use the backup tool built into your hosting panel. That captures the order tables intact, along with everything attached to them.

There is a second trap in migrations. Order numbers are not guaranteed to survive. Sequential numbering is often added by a plugin. Move the store without it and numbering can restart. Record your highest order number before the move. Check it afterwards. If you are also rebuilding the front end, our guide to checkout process issues in WooCommerce is worth reading before you go live.

Get Expert Help With Your WooCommerce Store

Order data sits at the centre of every store. When exports go wrong, the fix is rarely a plugin. It is usually a setting three menus away from where you were looking. Excluded statuses hide rows. The date field shifts orders into the wrong month. A stalled queue swallows the file before it is built. None of that is obvious from the screen you are on.

That is where most owners lose time. They try tool after tool when the store was fine all along. Working through the four symptoms above in order will save you that trip.

If your store still will not hand over clean order data, we can look at it for you. Our team works on WooCommerce every day. We check your storage mode, your report settings, your mail delivery and your scheduled tasks. Then we tell you plainly what broke and what it costs to fix. Payment problems are a common neighbour to this one, so it is worth reviewing why a WooCommerce payment gateway is not showing as well. Visit WP Customify to get started with expert WooCommerce support today.