Recurring expiration is driven by WP-Cron, so it only runs when your site gets traffic — the most common fix is to confirm the scheduled task exists and, on low-traffic sites, replace WP-Cron with a real server cron.
Recurring expiration works by scheduling a background task (cctor_pro_process_recurring_expiration) that rolls each recurring coupon's expiration forward on its interval (every 30 minutes by default). Because WordPress triggers WP-Cron on page visits, a site with little traffic can run the task late, which looks like "the expiration didn't update."
To diagnose and fix:
- Check the schedule. Install the WP Crontrol plugin and look for the
cctor_pro_process_recurring_expirationevent. If it is present, the feature is scheduled correctly and the delay is most likely a traffic/timing issue. - Re-register it if missing. If the event is not listed, deactivate and reactivate Coupon Creator Pro — the task is scheduled on activation. If it still does not appear, add it in WP Crontrol with hook name
cctor_pro_process_recurring_expiration, no arguments, and set it to run now. - Fix low-traffic timing. For reliable, on-time updates, disable WP-Cron's visitor-based triggering and add a real server cron job that calls
wp-cron.phpon a schedule. This makes the expiration task fire on time regardless of visitor traffic.
If coupons still are not rolling forward after the task is confirmed running, open a support ticket (see What support you can expect). For how to set recurring expiration up in the first place, see the Expiration & recurring guide.