>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.

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

Up Next

More custom systems.