Scheduling Issues
6 min read
If campaigns aren’t starting or ending at the expected times, or recurring campaigns aren’t following their schedule, this guide helps diagnose and resolve scheduling issues.
Quick Checklist #
- ☐ WordPress timezone is correctly configured
- ☐ WP-Cron or Action Scheduler is functioning
- ☐ Server time matches expected timezone
- ☐ Campaign dates are set correctly
- ☐ Recurring settings are properly configured
Common Causes #
1. Timezone Misconfiguration #
Symptom: Campaigns activate hours early or late.
Check:
- Go to Settings → General
- Look at “Timezone” setting
- Verify it matches your intended timezone
Solution:
- Set correct timezone (city-based is best, e.g., “America/New_York”)
- Save settings
- Campaign times will use this timezone
Note: UTC offsets don’t handle daylight saving time automatically.
2. WP-Cron Not Running #
Symptom: Scheduled campaigns don’t activate on time.
Why This Happens:
- WP-Cron triggers on page visits
- Low-traffic sites may not have visits at scheduled times
- Some hosts disable WP-Cron
Check:
- Go to SC Discounts → Tools
- Run Health Check
- Look for WP-Cron status
Solution A: Server-Level Cron (Recommended)
- Add to server crontab:
*/5 * * * * wget -q -O - https://yoursite.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
- Add to wp-config.php:
define( 'DISABLE_WP_CRON', true );
Solution B: Cron Plugin
- Install a plugin like “WP Crontrol”
- Use external service like UptimeRobot to ping wp-cron.php
3. Action Scheduler Issues #
Symptom: Scheduled actions are pending but not running.
Check:
- Go to Tools → Scheduled Actions
- Look for pending Smart Cycle Discounts actions
- Check if actions are stuck or failing
Solution:
- Failed actions can be retried manually
- Clear very old pending actions
- Ensure WP-Cron is running (Action Scheduler needs it)
4. Server Time Mismatch #
Symptom: Timing is off by a consistent amount.
Check:
Add this temporarily to a page to check server time:
<?php echo 'Server time: ' . date('Y-m-d H:i:s'); ?>
Solution:
- Contact hosting provider if server time is wrong
- Server should use NTP for time synchronization
5. Campaign Dates Set Incorrectly #
Symptom: Campaign activates at unexpected time.
Check:
- Edit the campaign
- Go to Schedule step
- Verify start and end dates/times
Common Mistakes:
- AM/PM confusion (12:00 PM vs 12:00 AM)
- Wrong date (December 15 vs November 15)
- Date format confusion (MM/DD vs DD/MM)
6. Recurring Schedule Misconfiguration #
Symptom: Recurring campaign runs on wrong days/times.
Check:
- Edit the campaign
- Go to Schedule step
- Read the schedule preview — the plain-English sentence and the next run dates are computed by the same logic the discount engine uses, so they show exactly what will run
- Review the three schedule questions:
- Active on: Every day, the selected weekday chips, or the selected month days
- Time of day: All day, or the From/To window (watch for a “spans midnight” badge on overnight windows)
- Keep running: Forever, or the chosen end date
Common Issues:
- Wrong weekday chips selected
- Time window From/To reversed unintentionally (creates an overnight window that spans midnight)
- “Until a date” reached — the campaign has expired
- Month day 29/30/31 selected — it is skipped in months without that day (use the “Last day” chip for end-of-month)
7. Recurring Campaign Paused After Updating to 2.2.0 #
Symptom: After updating to version 2.2.0, a recurring campaign shows Paused and its discount isn’t applying.
Why This Happens: Version 2.2.0 rebuilt the recurrence engine. Recurring campaigns created on earlier versions are deliberately paused during the update, because the old and new engines interpret settings differently. A dashboard notice (“Recurring campaigns were rebuilt”) lists how many were paused.
Solution:
- Click Review Campaigns in the notice, or filter the campaigns list by Paused
- Open each paused campaign and go to the Schedule step
- Set the schedule with the new controls (days, time window, forever/until a date)
- Save — the campaign resumes on the new engine
One-time campaigns and occurrence campaigns already created by the old Instances mode are not affected.
Diagnostic Steps #
Step 1: Verify Timezone #
Go to: Settings → General Check: Timezone setting Best: Use city-based timezone (e.g., "New York")
Step 2: Check Current Time #
WordPress shows current time at: Settings → General (below timezone) Should match your expected local time
Step 3: Review Campaign Schedule #
Edit campaign → Schedule step Verify: - Start date and time - End date and time - Recurring settings (if enabled)
Step 4: Check Scheduled Actions #
Go to: Tools → Scheduled Actions Filter by: "scd" or "smart_cycle" Look for: Pending activation/expiration tasks
Step 5: Test Cron #
Visit: https://yoursite.com/wp-cron.php Or go to: SC Discounts → Tools → Health Check
Recurring Campaign Scheduling #
Understanding Recurring Schedules #
A recurring campaign’s discount applies only on its scheduled days and times:
Example: Weekend Sale Active on: Saturday, Sunday Time of day: All day Keep running: Forever Discount applies: Saturday and Sunday, all day Discount does not apply: Monday → Friday
Why the Discount Seems Inactive #
- The current day or time is outside the schedule
- The campaign’s status stays Active the whole time — the schedule only controls whether the discount applies right now
- This is expected behavior
Verifying the Next Run Dates #
- Edit the campaign and open the Schedule step
- The preview shows the plain-English schedule sentence plus the next dates it will run
- These are computed by the same logic the discount engine uses
Daylight Saving Time #
DST Transitions #
If using city-based timezone (recommended), DST is handled automatically.
Spring Forward:
- A recurring time window set inside the skipped hour (e.g. 2:30 AM) simply doesn’t fire that day
- It resumes normally the next active day
Fall Back:
- A recurring time window set inside the repeated hour is active through both passes of that hour
- This is expected — the discount just runs slightly longer that night
UTC Offset Issues #
If using UTC offset (e.g., “UTC-5”):
- DST is NOT automatically handled
- You must manually adjust twice per year
- Recommend switching to city-based timezone
Manual Intervention #
Force Campaign Activation #
If a scheduled campaign should be active now:
- Edit the campaign
- Change start date to past date/time
- Save
- Campaign should activate immediately
Force Campaign Expiration #
If a campaign should have expired:
- Edit the campaign
- Change end date to past date/time
- Save
- Campaign will expire
Manually Run Scheduled Tasks #
- Go to Tools → Scheduled Actions
- Find the pending task
- Click “Run” to execute immediately
Preventing Scheduling Issues #
Best Practices #
- Use city-based timezone – Handles DST automatically
- Set up server cron – More reliable than WP-Cron
- Test before launch – Create test campaigns first
- Double-check times – Especially AM/PM
- Monitor scheduled actions – Check for stuck tasks
Scheduling Notifications #
Enable notifications to confirm scheduling works:
- Campaign Start notifications confirm activation
- Campaign Expiration warnings alert before end
Still Having Issues? #
Enable Debug Mode #
- Go to SC Discounts → Settings → Advanced
- Enable Debug Mode
- Wait for scheduled event to occur
- Check debug log for scheduling information
Contact Support With #
- System report
- Campaign schedule settings (screenshot)
- WordPress timezone setting
- Current time vs. expected activation time
- Scheduled Actions screenshot if relevant
Updated on July 28, 2026