5 Common WooCommerce Issues and How to Fix Them
WooCommerce is arguably one of the best ecommerce software options out there, but that doesn’t mean it’s not without its issues. Sure, you can get your store up and running in record time, but what […]

Copy the link to a markdown format of this article for ChatGPT, Claude, Gemini, or your favorite AI.
Cron jobs are an often overlooked component of a reliable WooCommerce store. Behind the scenes, they automate essential tasks like subscription renewals and cleaning up the database. Without them, many of your store’s features would stop working or behave unpredictably.
WordPress uses a built-in scheduling system called WP-Cron to handle task automation. It works well for many use cases, but it has limitations that can affect store performance and reliable task automation, especially as your WooCommerce site grows.
In this article, we’ll explain what WP-Cron is, how WooCommerce depends on it, how you can monitor and manage WooCommerce cron jobs, and several techniques for adding custom cron jobs.
WP-Cron is WordPress’s built-in task scheduler. It is triggered whenever someone visits your site. Every page load prompts WordPress to check whether any scheduled tasks — known as cron events — are due to run.
WooCommerce and its extensions can use WP-Cron to automate some store operations. Examples include:
If tasks didn’t run reliably, your store wouldn’t provide the ecommerce experience that shoppers expect. Orders could be missed, customers wouldn’t get emails, and your stock levels would be inaccurate — all without any visible warning. That’s why understanding WP-Cron and how it affects WooCommerce is useful for maintaining a healthy and dependable store.
WooCommerce stores include two different systems for task automation: WP-Cron, the default WordPress scheduler tied to site traffic, and Action Scheduler, a queue-based alternative that is installed alongside WooCommerce. Action Scheduler is an Automattic-developed, standalone scheduler that can also be used with other plugins.
Both systems can handle background processes like order updates or email notifications, but they differ in reliability, scalability, and execution control. As we’ve mentioned, WP-Cron’s traffic-dependent design can be inadequate for mission-critical operations. Action Scheduler, which is widely used by WooCommerce’s core functionality, addresses these limitations through intelligent queue management.
It processes tasks incrementally to prevent server overload, with built-in retries for failed actions. WooCommerce relies on it for payment processing and real-time order updates, where split-second reliability matters.
WP-Cron is easy to use and reliable enough for simple tasks like daily reports. Action Scheduler is the better option for complex workflows and high-volume operations like bulk email campaigns.
In this article, we’re primarily focused on simple WordPress automations, so we’ll explore WP-Cron in more depth. If you’re looking to implement complex, time-sensitive automations that consume significant resources, check out the Action Scheduler documentation.
WP-Cron is not a true cron system. It does a similar job to the cron utility on Linux (and other Unix) servers, but it works differently and is more limited. Most importantly, WP-Cron only runs when someone visits your WooCommerce store.
A system cron, in contrast, is a server-level scheduling tool that runs on fixed time intervals, independent of web traffic. It’s used to execute commands or scripts at precise times and is generally more reliable for high-frequency or performance-critical tasks.
Managed WordPress hosting plans — including those optimized for WooCommerce — do not allow direct access to system-level cron jobs. Misconfigured or overly aggressive jobs result in excessive server load, conflicting schedules, or runaway processes, all of which can degrade your WooCommerce store’s speed or even cause outages.
However, WooCommerce store owners can view, manage, and add custom cron jobs to WP-Cron, as we explain below.
WP-Cron performs essential background tasks, but it has limitations that can impact automation reliability:
Misbehaving cron jobs can degrade performance. Background tasks may compete with customer-facing activity for server resources, slowing page loads or the checkout flow. If too many tasks accumulate — thousands of queued emails or imports — WP-Cron becomes a bottleneck that hurts your store’s consistency and responsiveness.
A failed or delayed cron event is often the culprit when a task you expect to be completed isn’t. WordPress’s cron provides no visibility into what has failed or why. However, you can view and manage scheduled events using WordPress plugins developed for that purpose.
Let’s look at how you can inspect scheduled cron jobs, identify common issues, and streamline the task schedule.
The best way to inspect and manage WP-Cron is to install the plugins Advanced Cron Manager or WP Crontrol. They add a new section to your WordPress admin menu under Tools where you can:

You can use this information to diagnose performance issues potentially caused by cron jobs.
It’s safe to delete tasks tied to plugins you no longer use. If a hook name is unfamiliar, consult the plugin documentation or temporarily disable the plugin to verify whether it is responsible for the task.
Avoid deleting scheduled events that are still in active use. Removing a necessary task can break important WooCommerce functions. When in doubt, make a backup or consult a developer before making changes.
For a quick overview of scheduled tasks on your Pressable-hosted WordPress sites and WooCommerce stores, you can also visit “Cron Events” under the “Advanced” tab in the Pressable Control Panel
Keeping an eye on your store’s WP-Cron schedule can prevent delays, reduce performance issues, and keep key automations functioning as intended.
If you find that WordPress cron jobs are not running when you expect them to, it may be because your store is experiencing periods of low traffic. Remember, WP-Cron only works when a visitor loads a page. To make sure scheduled jobs are run, you can visit yoursite.com/wp-cron.php or use a service like Uptime Robot to periodically visit it for you.
Most WooCommerce sites rely on plugins to schedule automated tasks, but you can also create custom cron jobs. Custom scheduling is useful when your store has automation needs that aren’t addressed by off-the-shelf plugins.
Use cases include:
Before scheduling a custom job, it’s helpful to understand how WordPress’s event system works:
You schedule an event by registering a hook, linking it to a callback function, and telling WordPress when to run it.
The safest way to add custom cron jobs in WooCommerce is with a plugin like WP Crontrol or Advanced Cron Manager. These tools allow you to manage and create scheduled events from the WordPress dashboard.
However, to schedule your own custom task, you need to define the callback function in code and connect it to a hook using add_action(). Here’s a simple example.
1. Create the callback function in your theme’s functions.php file or in a child theme.
For example:
function send_inventory_report() {
// Your custom logic here
wp_mail( 'admin@example.com', 'Inventory Report', 'Report generated.' );
}
add_action( 'send_inventory_report_hook', 'send_inventory_report' );
The callback function sends an email and is connected to the custom hook send_inventory_report_hook.
2. Open WP Crontrol from the WordPress admin menu (Tools > Cron Events), and click “Add New Cron Event”.

3. Configure the event

4. Save the event. WP-Cron will trigger the hook on the defined schedule, and your function will run in the background.
The plugin approach is ideal for non-developers who can register the function once and then control its schedule through the WordPress admin interface. You also gain full visibility over timing and behavior through the plugin’s interface.
For more flexibility, you can register your own events in code. Here’s a simple example that schedules a daily email:
if ( ! wp_next_scheduled( 'send_daily_email' ) ) {
wp_schedule_event( time(), 'daily', 'send_daily_email' );
}
add_action( 'send_daily_email', 'my_send_email_function' );
function my_send_email_function() {
wp_mail( 'you@example.com', 'Daily Report', 'This is your automated report.' );
}
The code checks if the event is already scheduled and, if not, registers it to run daily. The add_action() function connects the event hook (send_daily_email) to the callback function (my_send_email_function) that sends the email.
For straightforward tasks, you can add the above code to your WordPress theme’s functions.php file.
Just as plugin developers can hurt your store’s performance with poorly implemented cron jobs, so can you. Before creating a WordPress cron job, think about whether it is the best way to achieve your WooCommerce automation objective. It may be safer to use an existing plugin, an automation service like Zapier, or the Pressable API.
If you decide to add a scheduled task:
Custom WP-Cron events can be a powerful way to extend WooCommerce automation without relying solely on third-party plugins. However, improperly configured cron jobs can lead to overlapping executions, duplicated actions, or missed tasks. For complex workflows — such as syncing with external systems or processing bulk data — it’s best to work with a developer on a custom plugin that uses Action Scheduler and implements protections like duplicate event prevention and activation/deactivation hooks.
The safest way to add custom cron jobs in WooCommerce is with a plugin like WP Crontrol or Advanced Cron Manager. These tools allow you to manage and create scheduled events from the WordPress dashboard.
However, to schedule your own custom task, you need to define the callback function in code and connect it to a hook using add_action(). Here’s a simple example.
WooCommerce is arguably one of the best ecommerce software options out there, but that doesn’t mean it’s not without its issues. Sure, you can get your store up and running in record time, but what […]
Ecommerce landing pages are a valuable step in the digital sales funnel. Unlike generic product or category pages, purpose-built landing pages can significantly improve conversion rates by thoughtfully driving specific actions. You can meet a […]
There’s so much more to email marketing than sending out a newsletter or a “10% off sale” announcement to your list once or twice a week. Every single time you email your customers it’s a […]