How to schedule recurring support tickets in WordPress
WordPress has no built-in support ticket system or recurring-ticket feature. The manual route uses WP-Cron plus your ticket plugin's documented ticket-creation method, but a scheduling add-on is faster and safer for regular support work.
- 01Define the recurring ticket rules
- 02Check your ticket plugin
- 03Build the manual WP-Cron route
- 04Make cron run reliably
- 05Test duplicates and failures
- 06Use a scheduling add-on
What you need
- A WordPress support ticket system
- Administrator or developer access
- The recurrence pattern and ticket details
- A way to verify scheduled tasks and email delivery
Define the recurring ticket rules
Write down how often the ticket should be created, when the first ticket should appear, who should receive it, and whether the schedule has an end date. Decide whether each occurrence should be a new ticket or a reply on an existing ticket.
Also choose a duplicate rule. A useful rule is one ticket per scheduled occurrence, identified by the schedule ID and due date. Without this, a delayed cron run or duplicated event can create the same ticket twice.
Check your ticket plugin
Open the documentation for your existing helpdesk plugin and confirm that it can create tickets programmatically or provides its own recurring-ticket feature. Do not guess a function name or hook: ticket creation is specific to the plugin.
If the plugin has neither a recurring-ticket setting nor a documented creation method, WordPress alone cannot complete the job. You will need custom integration or a ticket plugin with scheduling support.
Build the manual WP-Cron route
Create a small custom plugin or site-specific plugin that schedules a recurring WordPress event with wp_schedule_event(). Use wp_next_scheduled() before scheduling so the event is not added repeatedly, then attach the event to code that creates the ticket through your helpdesk plugin's documented method. WordPress supports hourly, twice-daily, daily and weekly intervals by default; custom intervals can be added through the cron_schedules filter.
This route is flexible but is not a quick dashboard setting. You must handle ticket fields, assignment, notifications, duplicate protection, schedule changes and cleanup. Unschedule the event when the custom plugin is deactivated or the recurring rule is removed.
Make cron run reliably
Remember that WP-Cron is triggered by site requests rather than running continuously. On a low-traffic site, a ticket scheduled for a particular time may be created late because no request triggered the event.
For deadlines that matter, configure your hosting provider's system cron or another monitor to request wp-cron.php at a regular interval. If you replace visitor-triggered cron with a server task, disable automatic WP-Cron requests in wp-config.php to avoid duplicate processing.
Test duplicates and failures
Run the scheduled event manually or use WP-CLI to inspect and run due cron events. Confirm that one ticket is created, the correct agent is assigned, email notifications arrive, and the next occurrence remains scheduled. WP-CLI includes commands for listing, running, scheduling and deleting cron events.
Test a missed run, a failed email, a daylight-saving-time change and deactivation of the custom code. The common Friday problem is a schedule that still exists after its source code has been removed, or a low-traffic site that leaves overdue tickets waiting until the next visit.
Use a scheduling add-on
For the fast route, install and activate SupportCandy Schedule Tickets, then configure the recurring ticket's interval, first run, ticket content, assignment and notification settings in its scheduling controls. This avoids writing and maintaining the WP-Cron-to-ticket integration yourself.
Run one short test schedule before creating a daily or monthly rule. Check the generated ticket, email delivery and next scheduled occurrence, then remove the test rule and create the production schedule.
Let SupportCandy Schedule Tickets do it
Automates repeating ticket creation on custom intervals, unlike general ticket managers that require manual submissions.
Sources
- developer.wordpress.org /reference/functions/wp_schedule_event/?utm_source=openai
- developer.wordpress.org /plugins/cron/scheduling-wp-cron-events/?utm_source=openai
- developer.wordpress.com /docs/guides/wp-cron-on-wordpress-com/?utm_source=openai
- developer.wordpress.org /plugins/cron/hooking-wp-cron-into-the-system-task-scheduler…
- developer.wordpress.org /cli/commands/cron/event/?utm_source=openai
Questions
- Can WordPress schedule recurring support tickets without a plugin?
- WordPress can schedule recurring code with WP-Cron, but it cannot create support tickets on its own. You need custom code that connects the scheduled event to your ticket system's documented ticket-creation method. That code must also prevent duplicates, assign tickets, trigger notifications and clean up schedules, so a scheduling add-on is usually the practical choice.
- Why did a recurring ticket arrive late?
- A recurring ticket can arrive late because WP-Cron runs when WordPress receives a request, not at the exact scheduled time. Low-traffic sites are most affected. Ask your host to run a system cron that calls WordPress cron regularly, or use a monitoring request. Check that another cron process is not also running the same task.
- How do I stop duplicate recurring tickets?
- Prevent duplicates by checking whether the recurring event is already scheduled before adding it, and by recording which schedule and occurrence date created each ticket. Do not schedule the same event on every page load. If you change custom code, inspect the scheduled events and remove old copies before enabling the replacement.
- Can recurring tickets follow monthly dates?
- They can, but monthly schedules need a clear rule for dates that do not exist in every month, such as the 31st. Decide whether the ticket should run on the last day, skip that month or use a day-of-month rule supported by your scheduling tool. Test the schedule across February and daylight-saving-time changes before relying on it.