In Paid Memberships Pro v3.5+, our integration of Action Scheduler was released offering some new developer tooling and options.
This feature is especially useful for troubleshooting, performance optimization, and understanding the cadence of recurring PMPro processes.
Table of contents
Action Scheduler runs regular PMPro background tasks and breaks down bigger tasks into smaller ones to improve performance and ensure completion of tasks.
These tasks include:
- Membership about to expire reminder emails
- Membership expiration emails
- Checking and expiring memberships
- Checking for previously expired memberships, removing them, and then sending emails
- Send admin activity emails
- Send recurring payment reminder emails
And maintenance routines like:
- Disabling memberships referencing non-existent levels
- Database cleanup of duplicate data
- Cleanup of temporary files
Accessing the Scheduled Actions Screen
Navigate to Tools > Scheduled Actions within your WordPress Admin. The Scheduled Actions screen will display a list table showing all the background actions on your site.
The table offers several viewing options, such as:
- All: View every action, regardless of status.
- Completed: See actions that have successfully finished.
- Failed: Identify actions that failed and may need attention.
- Pending: Check actions waiting to run.
Within the Scheduled Actions Table, information about the action can be reviewed. This information includes:
- Hook: The trigger name (e.g.,
pmpro_schedule_quarter_hourly
). - Status: Complete, Pending, or Failed.
- Arguments: Additional data passed to the action.
- Group: The category, often
pmpro_recurring_tasks
. - Recurrence: How often it runs (e.g., every 15 minutes).
- Log: Timestamped steps (created, started, completed, or errors).

Filters
There are a couple of filters we offer to make adjustments to PMPro’s Action Scheduler.
pmpro_action_scheduler_queue_limit
This filter affects the maximum number of tasks that can be queued before a delay is added to new actions. (Default 500)
In Action Scheduler there are no in-built delays. If you don’t specify a time the action should run (or a schedule it should belong to) the action is added immediately to the queue and run ASAP. In PMPro, we add a delay if the number of items being added for a single group of actions exceeds the pmpro_action_scheduler_queue_limit
. This ensures that when a large number of items is added to the queue we begin to stagger those new tasks apart further out over time to smooth demand on your server’s resources.
The delay is only added if the number of actions in the queue for the group exceeds this limit, and the delay decreases as the queue gets smaller.
In practice you likely don’t need to modify this, but in some circumstances may decide you don’t need a limit, or want to modify it for better performance.
Lowering the limit threshold means more delay and less server use, while raising the limit means less delay and more server use. Passing a high number (like 99999) will essentially disable the queue delay limit altogether.
pmpro_action_scheduler_batch_size
Action Scheduler claims a batch of actions to process in each request. It keeps the batch fairly small (by default, 25) in order to prevent errors like memory exhaustion.
This filter increases or decreases it so that more/less actions are processed in each queue cycle, which can speed up or slow down overall processing time due to latency in requests and the minimum 1 minute between each queue being processed.
This method also sets the batch size to 0 (essentially pausing all action processing) if PMPro is paused or Action Scheduler is halted for any reason.
In PMPro we keep the same default as Action Scheduler itself, with a couple minor tweaks for known hosting environments Pantheon (50) and WPEngine (20), which both benefit from adjustments.
pmpro_action_scheduler_time_limit_seconds
By default, Action Scheduler will only process actions for a maximum of 30 seconds in each request. This time limit minimizes the risk of a script timeout on unknown hosting environments, some of which enforce 30-second timeouts.
If you know your host supports longer than this time limit for web requests, you can increase this time limit. This allows more actions to be processed in each request and reduces the lag between processing each queue, greatly speeding up the processing rate of scheduled actions.
We increase this for hosts like Pantheon to 120 and WP Engine to 60 automatically.
Get Support From Our Team of Experts
For more help with this PMPro feature, check out our Support Page with three ways to get support as a free or premium member.
Last updated on July 11, 2025