BEAR - WooCommerce Bulk Editor and Products Manager Professional

Put all products on sale in WooCommerce, then end the sale cleanly

To put all products on sale in WooCommerce you have to give every product, and every variation, a sale price below its regular price. WooCommerce has no shop-wide sale switch, so for a catalogue of hundreds of items that means hundreds of edits. In BEAR it is one run in the Bulk Edit tab: pick the products, set the sale price as a percentage off the regular price, and end the sale later the same way. Below is the setup that works for simple and variable products, how to adjust a sale that is already running, and how to remove it without leaving 0.00 prices or stale dates behind.

How WooCommerce decides that a product is on sale

A product is on sale when its sale price is filled in and lower than its regular price, and, if sale dates are set, today falls between them. The sale price is a field of the product itself, not a rule: nothing recalculates it when the regular price changes later.

Variable products have no prices of their own. Each variation carries its regular and sale price, and the product page shows the range of its variations. A sale on a variable product therefore means a sale price on its variations. BEAR does not write prices on variable parents at all; to reach the variations, switch on variations on the tools panel.

One more detail matters later: a sale price of 0 is still a sale price. WooCommerce shows such a product as on sale for free.

Choose the products for the sale

The Bulk Edit tab works on all products of the shop, on the products left after filtering, or on the products ticked on the current page; ticked products take priority. The line Bulk editing will be applied to at the top of the tab says which of the three it will be. Read it before every run.

  • A category, tag or brand. In the Filters tab select the terms and press Filter. Attributes, price ranges and stock work the same way and can be combined.
  • A hand-picked collection. Ticking works for one page. For a Black Friday selection spread over the whole catalogue, give those products a tag such as black-friday first, then filter by the tag. The tag also lets you find the same products again when the sale ends.
  • Simple and variable products together. With the variations switch on, bulk operations apply to the variations of the listed variable products and skip everything else, simple products included. With it off, simple products get their price and variable parents are left untouched. A mixed selection therefore takes two runs with the same settings: one with the switch off, one with it on.

With the switch on, the Bulk Edit tab also lets you limit the run to attribute combinations, for example only size XL. That is covered in filtering WooCommerce variations by attribute.

Set the sale price as a percentage off the regular price

  1. Filter or tick the products as above and check the line at the top of the Bulk Edit tab.
  2. In the Basic section tick the sale price row, enter the discount, for example 25, and choose regular price minus % in its drop-down.
  3. Pick a rounding under the numeric rows if you want clean prices: 00 rounds to whole numbers, 99 ends every price in .99. The rounding documentation lists all options.
  4. Press Do Bulk Edit and wait for the run to finish.

For a fixed amount off instead of a percentage, use regular price minus value. Both read each product's own regular price, so a 25% sale on items of different prices gives each item its own sale price.

Do not use decrease by % for this. It works on the current sale price, and a product that is not on sale has none: 25% off nothing is nothing, so those products stay as they were. Two more rules decide what is written. A result that is not lower than the regular price is not written. A result of zero or less removes the sale price instead of writing one, which is what happens to products without a regular price. These skipped products are the reason why History can show fewer changed products than you selected.

For a few products on one page there is a shorter route: tick them, switch on binded editing and use the calculator in a sale price cell. The 20% FAQ shows it step by step.

Adjust a sale that is already running

Change only the products that are on sale

Filter by sale price from 1 with the to box left empty. That lists the products, and the variable products with variations, that have a sale price. The FAQ on products with a sale price describes the filter.

Choose the operation with care. increase by % and decrease by % on the sale price leave items without a sale untouched, because a percentage of nothing is nothing. increase by value does not: it would give every item without a sale price a sale price equal to that value. With variable products this matters even after filtering, because the filter lists the whole product and the run then works on all of its variations, including those that are not on sale. Use percentages, or tick the variations by hand.

Lower regular and sale prices together

In one run BEAR writes the regular price first and the sale price after it, and every new sale price is compared with the regular price the product has at that moment. Two setups give a predictable result:

  • The sale stays a fixed percentage off the new regular price. In the same run: regular price, decrease by % 10; sale price, regular price minus % 20. The sale price is calculated from the regular price written a moment earlier.
  • Every product keeps its own discount. Use decrease by % on both fields, as two runs: the sale price first, then the regular price. The lowered sale price is checked against the old, higher regular price and always passes; the regular price follows in the second run. For a price increase, reverse the order: regular price first, sale price second.

End the sale cleanly

Select the same products again (the tag or category you used for the sale, or sale price from 1), then in the Bulk Edit tab tick the sale price row, enter -1 and choose set new. The field is cleared rather than set to a price, and WooCommerce goes back to the regular price. A 0 or an empty cell clears it the same way. The FAQ on removing sale prices has the short version.

Clear the sale dates too if the sale had any. Sale time from and Sale time to are separate fields and stay on the product after the price is gone. WooCommerce keeps honouring them: an old end date that is still in the future will end the next sale you give that product on that day. The sale dates FAQ shows how to clear them for many products at once.

A sale price of 0.00, or products shown as free

BEAR clears the field when a sale price of zero or less is entered, so it does not write a sale price of 0. A stored 0 comes from an import, another tool or an older version, and it shows in the Sale price column as 0.00, while products without a sale show an empty cell. To find them, filter by sale price from 0 to 1: the range lists products whose stored sale price is below 1, which catches the zeros. Check the list, then clear them with -1 and set new as above.

The regular price of variations changes when the sale is removed

BEAR clears only the sale price. If the regular price of variations changes at the same moment, another plugin rewrites prices when a variation is saved. Role Based Price for WooCommerce has been seen doing exactly this. Run the change with such a plugin deactivated, or check its settings for price syncing.

Before and after the run

  • Run the operation on a filter with two or three products first and look at them in the shop.
  • Every bulk run is one entry in the History tab and can be rolled back as a whole, so a wrong percentage costs one click.
  • For a sale with a start and an end, set Sale time from and Sale time to in the Additional section of the Bulk Edit tab in the same run; the end date counts until the end of that day.
  • If prices do not change on the product pages after a successful run, clear the page cache of the site before suspecting the prices themselves.

Questions about a specific setup go to the BEAR support forum.