Installation
↑ Back to top- Download the .zip file from your WooCommerce account.
- Go to: WordPress Admin > Plugins > Add New and click Upload Plugin.
- Choose the file you downloaded and click Install Now.
- Click Activate the extension.
More information at: Install and Activate Plugins/Extensions.
Requirements
↑ Back to top- WordPress 5.8 or higher
- PHP 7.4 or higher
- WooCommerce 6.0 or higher
Bulk Product Price Update for WooCommerce requires an active WooCommerce installation. The plugin will display a notice if WooCommerce is not detected.
Setup and Configuration
↑ Back to topNo additional credentials or API keys are needed. Once the plugin is activated, you can start updating WooCommerce product prices in bulk right away.
- Go to: WooCommerce > Bulk Product Price Update.
- Use the Product Filters section to target specific products by category, tag, attribute, price range, date added, product name, stock status, product type, or custom field.
- Configure the Price Settings to define the discount type, value, and additional options.
- Click Preview to verify which products will be affected before applying.
- Click Apply Changes to update product prices in bulk.
Usage
↑ Back to topProduct Filters
↑ Back to topBulk Product Price Update for WooCommerce provides a powerful filter builder to narrow down exactly which products should receive a price update. You can combine multiple filters with AND (must match all) or OR (must match any) logic. If no filters are added, the discount applies to all published products.
Available filter types:
- Taxonomy – Filter by product category, product tag, or any product attribute (e.g., Color, Size). Select specific terms or leave empty to match all terms in the chosen taxonomy.
- Date Added – Only include products published within a specific date range (from/to).
- Price Range – Target products whose regular price falls between a minimum and maximum value. Works with both simple and variable products (checks each variation).
- Product Name – Filter by product title using Contains, Exact match, or Starts with.
- Stock – Filter by stock status (In stock, Out of stock, On backorder) and optionally by stock quantity range (min/max).
- Product Type – Filter by WooCommerce product type: Simple, Variable, Grouped, or External/Affiliate.
- Custom Field – Filter by any custom meta field (key and optional value). Useful for targeting products with specific supplier, brand, or custom data.
Click Add Filter to create a new filter row. Use the AND / OR toggle button between filters to switch between intersection and union logic.
Price Settings
↑ Back to topAfter setting your product filters, configure how the prices should be updated:
- Price to update – Choose between Sale price (sets a discounted sale price, keeping the regular price intact) or Regular price (changes the base regular price directly).
- Type – Choose Percentage (%), Fixed amount, or Exact price.
- Direction – When updating the regular price, choose whether to Decrease or Increase by the specified amount.
- Value – The discount or adjustment value (e.g., 10 for 10% off or a fixed amount).
- Rounding – Round the calculated price to a psychological price ending: .99, .95, .49, or .00. Select None to keep the exact calculated value.
- Also apply to products already on sale – When checked, the discount overwrites any existing sale price. When unchecked, products with an existing sale price are skipped.
- Calculate discount from – For products already on sale, choose whether the discount is calculated from the original regular price or from the current sale price.
- Schedule discount – Set sale start and end dates on each product. WooCommerce automatically activates and removes the sale price on the scheduled dates.
Preview Before Applying
↑ Back to topClick the Preview button to see a detailed table of all matching products before any changes are made. The preview shows the product name, regular price, current price, the new calculated price, and the percentage change. Products that will be skipped (e.g., already on sale or price out of range) are clearly marked with a reason.
Apply Changes
↑ Back to topClick Apply Changes to update the product prices in bulk. The plugin processes products in batches with a real-time progress bar, so you can safely apply changes to thousands of products without timeouts. Once the process completes, you will see a success notice with the number of products updated.
Remove Sale Prices
↑ Back to topUse the Remove Sale Prices button to remove sale prices from all products matching your current filters. This restores each product to its original regular price and clears any scheduled sale dates. The operation is processed in batches with progress tracking.
Run History and Rollback
↑ Back to topEvery bulk price update is logged in the Run History table at the bottom of the page. Each entry shows the date, filters applied, discount settings, and the number of products updated.
If a discount was applied by mistake, click the Revert button next to the run to rollback all product prices to their previous values. The rollback restores regular prices, sale prices, and scheduled sale dates exactly as they were before the run. Rollback is processed in batches with progress tracking.
Presets – Save, Load, Export, and Import
↑ Back to topSave your frequently used filter combinations as Presets to speed up your workflow. Use the preset toolbar at the top of the filters section to:
- Save as Preset – Save the current filter and relation configuration with a custom name.
- Load – Select a saved preset from the dropdown and click Load to restore it.
- Delete – Remove a saved preset you no longer need.
- Export – Download all your presets as a JSON file. Share them with team members or use as a backup.
- Import – Upload a JSON file to import presets. Imported presets are merged with your existing presets.
The plugin also remembers the last form state (filters, relations, and discount settings) so your configuration is restored automatically when you return to the page.
Troubleshooting
↑ Back to topNo products are being updated
↑ Back to topMake sure your filters are not too restrictive. Use the Preview button to check which products match your current filter combination. If the preview shows 0 products, adjust your filters. Remember that products without a regular price are always skipped.
Products already on sale are skipped
↑ Back to topBy default, products that already have a sale price are skipped. Enable the “Also apply to products already on sale” checkbox in the Price Settings section to include them.
Variable product prices are not updating
↑ Back to topBulk Product Price Update updates each variation individually. If you are using a Price Range filter, each variation’s regular price is checked independently. Variations outside the specified price range will be skipped even if the parent product was matched by other filters.
Timeout or slow processing
↑ Back to topThe plugin processes products in batches via AJAX to avoid server timeouts. If you experience issues with very large catalogs, contact your hosting provider to ensure adequate PHP memory and execution time limits. You can also adjust the batch size using the wcbdi_batch_size filter in your theme or custom plugin.
Enabling debug logging
↑ Back to topAdd define( 'WCBDI_DEBUG', true ); to your wp-config.php file (before the “That’s all, stop editing!” line). This enables detailed debug messages in your WooCommerce logs (WooCommerce > Status > Logs, source: wc-bulk-discounts) showing which products were updated or skipped and why.
Frequently Asked Questions
↑ Back to topCan I update only the sale price or only the regular price?
↑ Back to topYes. In the Price Settings, choose “Sale price” to set a discounted sale price while keeping the regular price intact, or choose “Regular price” to change the base price directly. When modifying the regular price, you can choose to increase or decrease by a percentage, fixed amount, or set an exact price.
Can I schedule a bulk sale with start and end dates?
↑ Back to topYes. Enable the “Schedule discount” option in the Price Settings and set the sale start and end dates. WooCommerce automatically activates the sale price on the start date and removes it on the end date, just like the built-in product editor sale schedule.
What happens if I apply a discount by mistake?
↑ Back to topEvery bulk discount run is saved in the Run History. Click the Revert button next to the entry to rollback all affected products to their exact previous prices, including regular price, sale price, and scheduled sale dates.
Does it work with variable products and individual variations?
↑ Back to topYes. Bulk Product Price Update for WooCommerce fully supports variable products. Each variation’s price is updated individually. If a Price Range filter is active, only variations within that range are updated. The parent product’s price range is automatically synced after all variations are processed.
Can I combine multiple filters?
↑ Back to topYes. Add as many filters as you need and connect them with AND (products must match all filters) or OR (products must match at least one filter). For example: Category = “Shoes” AND Price Range = 50–200 AND Stock = In stock.
Can I round prices to psychological price endings like .99 or .95?
↑ Back to topYes. The Rounding option lets you round the calculated price to .99, .95, .49, or .00 endings. For example, a calculated price of 37.60 can be automatically rounded to 37.99 or 38.00.
Can I save and reuse filter setups?
↑ Back to topYes. Use the Presets toolbar to save your current filter configuration with a custom name. Load it anytime with a single click. You can also export all presets as a JSON file and import them on another site or share them with your team.
Can I preview changes before applying them?
↑ Back to topYes. The Preview button shows a full table with current and new prices for every matched product, including the percentage change. Products that will be skipped are clearly marked. No changes are made to your store until you click Apply Changes.
Does the plugin clean up after uninstall?
↑ Back to topYes. When you delete the plugin through the WordPress admin, all plugin settings, presets, rollback data, and the run history table are removed from your database. Product prices that were already changed remain as-is.
Is it compatible with WooCommerce HPOS (High-Performance Order Storage)?
↑ Back to topYes. Bulk Product Price Update for WooCommerce declares full compatibility with WooCommerce HPOS (Custom Order Tables).
Can I filter products by custom fields or meta data?
↑ Back to topYes. Use the Custom Field filter to target products with a specific meta key (e.g., _brand, _supplier). You can optionally set a specific meta value to match, or leave the value empty to match any product that has the key.
How many products can the plugin handle at once?
↑ Back to topThere is no hard limit. The plugin processes products in AJAX-powered batches (default 25 per batch) with a real-time progress bar, allowing it to handle catalogs of any size without server timeouts. You can adjust the batch size using the wcbdi_batch_size filter.