Automated Promotion Engine Reclaiming Marketing Team Hours
Smart promotion scheduler automating campaign lifecycle management. 📅
Client
Lee Company
Services
Custom Development, Automation
Industry
Home Services
Launched
October 2025
>100.
Annual promotions
~30.
Manual hours saved / month
100%.
Automation accuracy
The challenge
Marketing manually managed temporary vs. ongoing promotions, repeating setup work monthly and wasting hours.
The marketing team was managing temporary and ongoing promotions in the most time-consuming way possible: completely manually. When a promotional period was supposed to end—say, a weekend sale or a seasonal discount—someone had to remember to log into WordPress over the weekend and unpublish the expired post. If they forgot, the promotion stayed live past its window, confusing customers and undercutting pricing integrity.
Compounding the confusion was the lack of clarity about which promotions were temporary (limited-time offers) versus ongoing (always-available discounts or service bundles). Posts about promotions were scattered throughout the content calendar, and there was no single mechanism to distinguish between them. The team would sometimes run a temporary promotion, unpublish it, then need to republish similar content the next month—repeating the same setup work over and over, manually.
This workflow was burning real hours every month. The marketing team was doing administrative work instead of strategy. There was no consistency in how promotions were managed, no audit trail showing what was active when, and no way to automate the lifecycle of a promotion from draft to publication to expiration to renewal.
“Our team burnt hours every month on repetitive promotion setup. I built them a scheduler that automates the entire lifecycle. The marketing team has reclaimed real time, and promotions are more consistent.”
— Rob Petrin
Automation Enthusiast
The Build
Custom cron-driven promotion post type with auto-unpublish, rollover logic, and draft-to-publish automation.
A custom ACF fieldset was added to promotion posts, giving marketers two key controls: a start date and end date selector, plus a true/false toggle for “auto-unpublish vs. auto-renew.” When a promotion is drafted, the marketer sets the dates and chooses the behavior: should it unpublish automatically when the window closes, or should it roll over to the next month (with the end date auto-incrementing)?
A daily WordPress cron job runs at 3 AM, checking all promotion posts against their date ranges and the auto-behavior setting. If a promotion’s end date has passed and auto-unpublish is enabled, it unpublishes. If auto-renew is enabled, it stays published and the end date shifts forward by a month (or whatever interval was set). The system handles the entire lifecycle without human intervention.

The result is a clear, auditable record of promotion activity. The marketing team no longer logs in on weekends to manage expirations. Recurring seasonal promotions (Black Friday, holiday specials) are set once and then managed by cron thereafter. New ad-hoc promotions can be quickly added without worrying about manual unpublishing. The team has reclaimed hours per month and can focus on promotion strategy rather than administrative logistics.
Stack
What we used.
- WordPress
- WP Cron
- ACF Pro
- WP Engine
- Vanilla JS
