Description
Set up a sale once: choose the products with rules, choose the discount, preview every product, pick a start and
an end. Sale Scheduler changes the prices at the start and puts them back at the end, keeping anything you edited by
hand in the meantime. A Black Friday sale that starts at midnight and ends on Monday night needs nobody awake.
The same rules and changes also run right away as a quick change (bulk edit), with a preview and undo.
What you can do
- Campaign calendar: every sale on a month or week calendar, or as a list, with its status and progress.
- Scheduled campaigns that start and end on their own, in the store’s timezone. End early with Revert now.
- Templates: Black Friday, Cyber Monday, a weekend flash sale and clearance, with the dates worked out for you.
- Priorities for overlapping sales: the review step lists every other campaign that touches the same products,
and the higher priority wins. When it ends, the other one takes over from the original price. - Product rules: category, tag, attribute, price, stock, stock status, product status, on sale, dates,
custom fields and IDs, in “all” or “any” groups. Published products only unless you include other statuses. - Whole variable products or single variations.
- Changes: sale and regular prices (set, percent, amount, remove sale, rounding to .99 and more, sale dates),
stock, status and visibility, backorders, shipping class, weight and dimensions, tax, categories, tags, brands,
attributes, find and replace in names, descriptions and SKUs, upsells and cross-sells, custom fields. - Preview before and after for every product, including the ones that will be skipped and why.
- Hand edits are kept: undo and campaign ends restore only values that still hold what Sale Scheduler set.
- Deeper sales are never raised: a 20% campaign does not replace an existing 40% sale.
- Quick changes: the same rules and changes, run now in background batches with progress, cancel and undo.
- Activity log: who did what and when, with adjustable retention.
- EU Omnibus: “Lowest price in the last 30 days” under sale prices, from a full price history.
- Scheduled tasks card: tells you whether WP-Cron or your server cron is running campaigns on time.
- Built-in docs on their own tab. HPOS compatible, translation-ready.
The plugin makes no external requests, loads nothing from other sites and collects no data. Every feature
described here is included, with no limits and no licence.
Pro version
A Pro version is sold separately, as its own plugin, by BrainCraft.rs. It adds sales reports, repeating
campaigns, a slow sellers template, notifications, storefront badges and countdowns, Dokan support and campaign
export and import. It is not needed for anything this plugin does. If you install it, it uses the same campaigns
and settings, and this plugin stays idle while it is active.
Features and pricing of the Pro version: https://braincraft.rs/products/salecraft
Screenshots









Installation
- In Plugins › Add New, search for “BrainCraft Sale Scheduler”, then Install Now and Activate. WooCommerce must be active.
- Open WooCommerce › Sale Scheduler.
Background work runs on WooCommerce’s Action Scheduler and needs WP-Cron or a server cron job. If your site
cannot call its own URL, or gets little traffic, run wp-cron.php from a server cron every minute. The Scheduled
tasks card on the Campaigns tab shows whether this works.
FAQ
-
Do I need to be awake when a sale starts?
-
No. A campaign changes the products at its start time and puts them back at its end time on its own, through
WooCommerce’s scheduled tasks. -
A campaign shows “Did not run”.
-
Scheduled tasks did not run between its start and its end, so nothing was changed. Set up a server cron job
(see Installation). -
What happens to a product I edit by hand during a campaign?
-
Your edit stays. At the end, only values that still hold what the campaign set are restored.
-
Two campaigns discount the same product. Which one applies?
-
The one with the higher priority (on a tie, the one that started later). When it ends, the other takes over,
starting from the original price. -
Can I undo a quick change?
-
Yes. Undo puts back every product the change touched, except values edited by hand since.
-
Where does the “Lowest price in the last 30 days” come from?
-
From a history of every price change recorded from activation on, including hand edits and imports. Turn it on,
off or automatic (EU stores) under WooCommerce › Sale Scheduler › Settings. -
Does it slow down my store?
-
No. Changes run in the background in small batches, and the storefront only gets the optional lowest price label.
-
What does deleting the plugin remove?
-
By default only its queued tasks; its data stays for a reinstall. To remove its campaigns, the history of quick
changes, the activity log, price history and settings too, tick “Delete all data” under WooCommerce › Sale Scheduler ›
Settings before deleting. Products keep their current values, including changes from campaigns that are still
active, so end or revert those first. -
Is there a Pro version?
-
Yes, sold separately as its own plugin; see “Pro version” above. This plugin is complete without it.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“BrainCraft Sale Scheduler & Campaign Calendar for WooCommerce” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “BrainCraft Sale Scheduler & Campaign Calendar for WooCommerce” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.1.31
- Renamed to BrainCraft Sale Scheduler & Campaign Calendar for WooCommerce, with its own slug.
- Every feature is included: the plugin has no licence checks.
1.1.27
- A product’s own WooCommerce sale dates now keep their exact time of day: a sale starting at 18:00 no longer holds back a campaign running 09:00 to 17:00, and paused dates are put back with their original timestamps when the campaign ends.
1.1.23
- Campaign discounts now take effect even when a product has its own WooCommerce sale dates: dates that would delay or end the discount early are paused for the campaign and put back when it ends. A deeper sale of the product’s own that runs during only part of the campaign is skipped, with the reason in preview and results.
1.1.20
- Undoing a cancelled quick change now also restores a product whose change was saved just as the background work stopped, keeps any edit made by hand since, and waits for a batch that is still writing.
1.1.16
- When a campaign ends while restoring one of its products is failing, a campaign waiting for that product (or one starting later) now waits until the restore succeeds instead of applying on top of the old sale price. The original price comes back when both campaigns end.
1.1.14
- When a higher-priority campaign takes over a product and restoring the other campaign’s price fails (for example a database error), that campaign keeps its record of the original price and the takeover waits and is tried again every few minutes. The original price comes back when both campaigns end.
1.1.13
- A product that could not be restored when a campaign ended or a quick change was undone (a lock, a time-out) is tried again automatically a few minutes later, up to three times, and then with a Retry restore button. Prices edited by hand in the meantime are kept.
1.1.8
- Editing a campaign set to repeat in the Pro version no longer removes its repeat rule.
1.1.3
- Recovery of stalled background work now reaches every campaign, not only the newest 100: the watchdog looks only at campaigns with work left, oldest first, and carries on from where its last run stopped.
1.1.2
- Changes that were saved before a later part of the same product write failed (for example a brand change) stay eligible for undo and campaign restoration; manual edits made since are kept. Brand changes are checked before the product is saved.
1.1.1
- First release on wordpress.org.
