70+
September 21, 2026
November 27, 2025
Real example: Black Friday + Christmas + January Sale, all scheduled at once
Say you sell a t-shirt at 29,99 € and want three sales planned for November and beyond:
Every sale can be a fixed price, a percentage off or an amount off, and you see the resulting price before saving. Each sale can start and end at an exact time (hour and minute), so flash sales begin and end right when you plan them, and WordPress cron (configurable down to every 5 minutes) applies each price automatically. No separate campaign screen to learn: everything lives in the product editor you already use.
Scheduled Sales and Discounts for WooCommerce extends WooCommerce’s native sale scheduling by letting you queue up unlimited sale prices per product, each with its own dates, times and discount type, and it keeps a rolling 30-day price history so it can flag the prior price the EU Omnibus Directive requires you to disclose when discounts chain together.
Need private support or custom development?
Do you need one-on-one help, priority troubleshooting, or a custom feature, integration, or tweak built specifically for your site? I offer private support and custom development. Just contact me and tell me what you need.
Need help or have suggestions?
Love the plugin? Please leave us a 5-star review and help spread the word!
We are specialists in WordPress security, SEO, AI and performance optimization plugins. We create tools that solve real problems for WordPress site owners while maintaining the highest coding standards and accessibility requirements.
/wp-content/plugins/multiple-sale-prices-scheduler/Yes, the plugin fully supports both simple and variable products. Each variation can have its own scheduled sales and priority settings.
You can configure the priority (lowest price, highest price, first scheduled, or last scheduled) both globally in settings and per product/variation. The plugin will automatically apply the sale price according to your priority setting.
Yes, the plugin includes an “Import current sale” button that converts existing WooCommerce sales into scheduled sales, allowing you to add more sales to the same product.
Yes, use the CSV import feature in the settings page to bulk import scheduled sales for multiple products. You can also download a CSV template to see the required format.
Yes, the plugin is fully compatible with WooCommerce’s High-Performance Order Storage (HPOS).
By default WordPress cron checks every hour, but you can change this to every 5, 10, 15 or 30 minutes in the Settings tab. More frequent checks make exact start and end times more precise. Note that WordPress cron depends on your site receiving traffic to run on schedule.
Yes. Since version 1.3.0 each scheduled sale has a start and end time (hour and minute), interpreted in your store’s timezone. Sales created before 1.3.0 keep working: with no specific time set, they start at the beginning of the first day and end at the end of the last day.
Yes, you can configure automatic deletion of expired sales after a specified period (30, 60, 90, 180, or 365 days) in the General settings tab. This helps keep your database clean.
You can configure log retention from 30 to 365 days in the General settings. Logs older than the retention period are automatically deleted.
You can use the “Clean orphaned schedules” button in the Overview tab to remove all scheduled sales from deleted or invalid products.
Yes, you can enable notifications to alert you a specified number of days (1-30) before a sale expires, giving you time to plan your next promotion.
Yes! While the plugin is designed primarily for scheduling sale prices (discounts), you have complete flexibility to set any price – including prices higher than the regular price. This allows you to handle seasonal pricing adjustments, high-demand periods, or other dynamic pricing strategies.
Note: If you schedule a price higher than the regular price, the product will simply show the scheduled price without displaying a “sale” badge or strikethrough pricing.
Yes! Since version 1.2.0, the plugin registers two commands in the WordPress Command Palette (Cmd+K on Mac, Ctrl+K on Windows): “Export scheduled offers to CSV” for quick CSV downloads, and “Show scheduled offers” to jump directly to the overview page. These commands work from any admin screen (requires WordPress 6.3 or higher).
They can. Directive (EU) 2019/2161 (the Omnibus Directive) requires that any price reduction announcement displays the prior price, meaning the lowest price applied during the 30 days before the reduction. If you schedule successive price changes or chained promotions, that prior price may not be your regular price but a lower price from a previous change within that window.
Since version 1.5.0, the plugin keeps a rolling 30-day price history for each product, recording every price change it applies plus any regular or sale price change made another way (manual edit, CSV import, another plugin). When the lowest price in that window is below the regular price WooCommerce would otherwise show struck through, the plugin adds a note with the correct prior price next to the price on the frontend, and shows a heads-up in the product editor.
This only covers price changes recorded while the plugin has been active on your site: it cannot reconstruct price history from before you installed it or before version 1.5.0. On a new install, give it 30 days to build a complete history. The plugin does not interpret or guarantee compliance with the Omnibus Directive on your behalf; verify the displayed prior price is correct for your situation.
Now tested with WooCommerce 11.1.
New automatic EU Omnibus prior-price tracking, with a heads-up in the editor and on the frontend when a scheduled sale needs a lower reference price. Renamed as Scheduled Sales and Discounts for WooCommerce.
For older changelog entries, please check the changelog.txt file.
| Version | Download | Type |
|---|---|---|
| 1.5.1 | Download | Stable |
| 1.5.0 | Download | Stable |
| 1.4.1 | Download | Stable |
| 1.4.0 | Download | Stable |
| 1.3.0 | Download | Stable |
| 1.2.3 | Download | Stable |
| 1.2.2 | Download | Stable |
| 1.2.1 | Download | Stable |
| 1.2.0 | Download | Stable |
| 1.1.4 | Download | Stable |
| 1.1.3 | Download | Stable |
| 1.1.2 | Download | Stable |
| 1.1.1 | Download | Stable |
| 1.1.0 | Download | Stable |
| 1.0.0 | Download | Stable |
| Development | Download | Trunk |