

Sale Campaigns create temporary WooCommerce sale prices with a defined start and end time. Regular prices remain unchanged.
Campaign Engine can calculate the sale, protect existing promotions, process the selected products in background batches, and restore previous sale information when the campaign ends.
Create a sale campaign
Go to WooCommerce → Marketing → Campaign Engine → Schedule.
Select Sale Campaign under Job type.
Choose the sale mode
Select one of the available sale modes:
- Percent reduces the regular price by a percentage.
- Fixed amount subtracts a fixed amount from the regular price.
- Set exact sale price assigns the entered amount as the sale price.
Examples:
- Percent + 20 creates a sale price that is 20% below the regular price.
- Fixed amount + 10 subtracts 10 from the regular price.
- Set exact sale price + 19.99 sets the sale price to 19.99.
Sale prices are calculated from each product’s regular price and use the decimal settings configured in WooCommerce.
Products without a regular price cannot receive a calculated sale price.
Set the sale period
Choose the campaign start and end under Sale window.
- Leave Start empty to begin as soon as possible.
- Select a future Start time to schedule the campaign.
- End is required.
- End must be later than Start.
Campaign Engine schedules both the campaign start and the campaign-ending process.
Dates and times use the timezone configured in WordPress.
Choose how to handle existing sales
Campaign Engine provides several options for products that already have a sale price.
Skip products already on sale
Enable this option to leave all products with an existing sale price completely unchanged.
Their sale price and sale dates will not be modified by the campaign.
Override an existing sale when the campaign price is higher
By default, Campaign Engine preserves an existing sale when it already provides an equal or better customer price.
Enable the override option if the campaign should replace that existing sale even when the new campaign price is higher.
If Skip products already on sale is also enabled, the skip option takes priority.
Auto-restore previous sale fields at end
Enable this option to restore each affected product’s previous sale price, start date, and end date when the campaign finishes.
If automatic restoration is disabled, Campaign Engine clears the sale fields created by the campaign at the end instead of restoring the previous sale information.
Include product variations
Enable Include variations to apply the campaign to product variations.
Campaign Engine processes each variation individually and synchronizes the parent variable product afterward.
Choose the campaign scope
Select All products to target the complete product catalog.
Select Filtered to define a more specific campaign using:
- Included categories
- Excluded categories
- Included product IDs
- Excluded product IDs
- Product search by name, SKU, or ID
Categories include their child categories. The final matched product selection is recorded when the campaign is scheduled.
Configure the batch size
Sale campaigns are applied and ended in background batches using WooCommerce Action Scheduler.
Lower the batch size if the store uses restricted hosting or if background tasks are being throttled.
Add a job label
Enter an optional label to make the campaign easy to recognize.
Click Suggest to generate a label containing the sale type, discount, campaign period, and product scope.
Run the Campaign Readiness Check
Click Run readiness check before scheduling the campaign.
The check shows:
- Number of matched products and variations
- Current regular price range
- Estimated sale price range
- Missing product images
- Missing regular prices
- Products already on sale
- Out-of-stock products
- Sale prices that may become zero
- Products that could not be loaded
The readiness check does not modify product data.
Schedule the campaign
Click Schedule job when the campaign is ready.
Campaign Engine opens Scheduled Jobs so you can confirm:
- Campaign label
- Scheduled start
- Product scope
- Current status
- Recorded targeting
The campaign appears in Recent Jobs when processing begins.
What happens when the campaign ends
At the configured end time, Campaign Engine processes the affected products in background batches.
Depending on the selected option, it either:
- Restores the sale price and sale dates that existed before the campaign, or
- Clears the sale fields created by the campaign
Variable parent products are synchronized after their variations are processed.
Roll back a sale campaign
A Sale Campaign can also be rolled back from Recent Jobs.
Rollback restores the sale price and sale dates saved for that specific campaign. This is useful if a campaign was configured incorrectly or must be stopped and reversed before its planned end.