Recurring Campaigns
8 min read
Recurring schedules run a sale on certain days, times, or dates — automatically, without recreating the promotion by hand. Answer three plain questions in the Schedule step and the campaign turns its discount on and off exactly as previewed. This feature is available in the Free version.
Updating from a version before 2.2.0? Recurring schedules were rebuilt in version 2.2.0, and recurring campaigns created on earlier versions are paused during the update. See Upgrading to 2.2.0 below — resuming each campaign takes under a minute.
Once or On a Schedule #
The Schedule step starts with one choice — how should this discount run?
| Option | Behavior | Best For |
|---|---|---|
| Once | Runs non-stop for a set period. No end date means it runs permanently. | Flash sales, seasonal sales, product launches |
| On a schedule | Runs only on certain days or at certain times — forever, or until a date you choose. | Weekend specials, happy hours, first-of-month deals |
Choosing On a schedule reveals three questions. That’s the entire configuration.
Question 1: Active On #
Which days should the discount apply?
| Choice | What Appears | Example |
|---|---|---|
| Every day | Nothing further — every day is active | A daily happy hour |
| Certain weekdays | Mon–Sun day chips; select one or more | Every Friday, Saturday & Sunday |
| Days of the month | A 1–31 grid plus a Last day chip | The 1st and 15th of each month |
Month-Day Details #
- Last day: The dedicated “Last day” chip always fires on the true last day of each month — the 28th, 29th, 30th, or 31st, whichever it is.
- Days 29–31: A numeric day that doesn’t exist in a given month is simply skipped that month. Day 31 fires only in 31-day months. For a reliable end-of-month sale, use Last day instead.
- February 29: Fires only in leap years.
Question 2: Time of Day #
| Choice | Behavior |
|---|---|
| All day | The discount applies for the whole active day |
| Specific hours | Set From and To times — the discount applies only inside that daily window |
Overnight Windows #
Windows that cross midnight are supported. Set From 10:00 PM and To 2:00 AM and the wizard shows a “spans midnight” badge. The window is anchored to the day it opens: on each active day it starts at 10 PM and spills into the early hours of the next morning.
Example: Late-Night Deal Active on: Every Friday Time of day: 10:00 PM to 2:00 AM (spans midnight) Result: Discount runs Friday 10 PM through Saturday 2 AM, every week
Note: Time windows are daily windows. A single multi-day block like “Friday 6 PM straight through Monday 6 AM” isn’t a recurring window — for a one-off period like that, use a Once campaign with those exact start and end times.
Question 3: Keep Running #
| Choice | Behavior |
|---|---|
| Forever | The schedule genuinely never stops — it repeats until you pause or delete the campaign |
| Until a date | The campaign expires at the date you pick; the schedule runs normally up to that date |
There is no separate “number of occurrences” counter. If you want a schedule to run for a defined stretch — say, twelve weekends — set Until a date to the end of that stretch.
You’ll also choose when the campaign starts: Immediately, or Scheduled for a future date and time.
Schedule Templates #
Five one-click templates set up the whole schedule instantly. Apply one, then adjust anything you like:
| Template | What It Sets |
|---|---|
| Flash Sale | Once, 24 hours |
| Weekend Special | Every Friday, Saturday & Sunday, all day, forever |
| Weekdays | Every Monday through Friday, all day, forever |
| Daily Happy Hour | Every day from 4 PM to 6 PM, forever |
| First of the Month | The 1st of each month, all day, forever |
The Honest Preview #
Below the schedule controls, the wizard shows two things, both computed by the same logic the discount engine uses — so what you see is exactly what runs:
- A plain-English sentence: for example, “Active every Monday & Tuesday, all day — ongoing.”
- The next run dates: the next five real dates the schedule will be active, in your store’s timezone.
If the preview doesn’t describe what you intended, adjust the three questions until it does — there is no gap between the preview and the engine.
Impossible Schedules Are Prevented #
The wizard checks your choices against the campaign period as you build the schedule:
- Disabled options with a reason. Choices that could never fire are disabled with a short explanation — for example, a campaign lasting only a few days can’t use “Days of the month” (“A date won’t repeat within a week”), and a one-day campaign can’t recur at all (“Too short to repeat; use a one-time flash sale”).
- Greyed-out chips. In a bounded campaign, a weekday or date that never occurs inside the period is greyed out.
- A schedule that would never run cannot be saved. If the rule fires zero times within the campaign period, saving is blocked with an error.
- Helpful nudges. If the schedule would only fire once, the wizard suggests a one-time campaign may be simpler. If you pick “Every day” with “All day” — which is identical to a normal campaign — it suggests switching to Once. Selecting all seven weekday chips suggests “Every day”.
How Recurring Campaigns Behave #
- Status stays Active. On non-scheduled days the campaign remains Active in your campaign list — the discount simply doesn’t apply. It’s not paused, expired, or broken; it’s between scheduled days.
- Timezone. The schedule is evaluated in your store’s WordPress timezone.
- Works with everything. Recurring schedules work with every discount type (percentage, fixed, BOGO, tiered, spend threshold) and every product selection type (All, Specific, Random, Smart Selection).
- Daylight saving time. With a city-based timezone, DST is handled automatically. On the spring-forward night, a time window set inside the skipped hour simply doesn’t fire that day. On the fall-back night, a window set inside the repeated hour is active through both passes.
Upgrading to 2.2.0 #
Version 2.2.0 replaced the old recurrence engine with the system described on this page. Because the old and new engines interpret settings differently, recurring campaigns created before 2.2.0 are automatically paused during the update — this is deliberate, so no campaign silently runs on days you didn’t intend.
To resume each one:
- Look for the “Recurring campaigns were rebuilt” notice on the Smart Cycle Discounts dashboard or campaigns list, and click Review Campaigns (or filter the campaigns list by Paused).
- Open a paused campaign and go to the Schedule step.
- Set the schedule with the new controls — pick the days, time window, and how long it keeps running.
- Save. The campaign resumes on the new engine.
Not affected: one-time campaigns, and occurrence campaigns already created by the old system’s Instances mode (those are ordinary one-time campaigns — they keep running and expire naturally).
Removed in 2.2.0: the “Repeat every N days/weeks/months” interval, the Continuous/Instances mode toggle, and the “After N occurrences” end option no longer exist. The calendar-anchored choices above (weekdays, month days, time windows, forever/until-a-date) replaced them.
Configuration Examples #
Weekend Special #
Active on: Certain weekdays — Sat, Sun Time of day: All day Keep running: Forever Preview: "Active every Saturday & Sunday, all day — ongoing"
Daily Happy Hour #
Active on: Every day Time of day: 4:00 PM to 6:00 PM Keep running: Forever Preview: "Active every day, 4:00 PM to 6:00 PM — ongoing"
Payday Sale #
Active on: Days of the month — 1, 15 Time of day: All day Keep running: Forever Result: Runs the 1st and 15th of every month
Holiday-Season Weekly Sale #
Active on: Certain weekdays — Fri Time of day: All day Keep running: Until December 31 Result: Every Friday through year-end, then the campaign expires
Best Practices #
- Trust the preview: The sentence and next run dates are computed by the engine itself — if they look right, the schedule is right.
- Use “Last day” for month-end: Never rely on day 31 for an end-of-month promotion.
- Use sustainable discounts: Customers learn to expect a standing schedule, so pick a margin-safe discount level.
- Mind other campaigns: A forever schedule will eventually overlap seasonal sales; the priority system decides which discount applies.
- Review periodically: Check forever campaigns every few months to confirm they’re still earning their keep.
Common Questions #
Can I have multiple recurring campaigns? #
Yes. Each campaign has its own schedule. When they overlap on the same product, the priority system decides which discount applies.
How do I skip one week? #
Pause the campaign before the scheduled day and resume it afterwards. Pausing stops the discount immediately; resuming picks the schedule back up from the current date.
Can I run a sale every second week? #
Not with a single schedule — recurring schedules are calendar-anchored (weekdays, month days), not interval-based, because interval cycles drift and behave unpredictably across months. For an every-other-week cadence, use “Days of the month” (for example the 1st and 15th) for a similar rhythm that never drifts.
What happens to Random Products between scheduled days? #
The random product pool is chosen when the campaign launches and stays the same across scheduled days. To rotate the selection, edit and re-save the campaign — with “Avoid same products in consecutive rotations” enabled, the refreshed pool avoids repeating the previous one.
Does the schedule change the campaign’s status? #
No. A recurring campaign stays Active for its whole lifetime (until its end date, if any). The schedule only controls whether the discount is applying right now.
Updated on July 28, 2026