PrestaShop's built-in cron service shut down in December 2025. This guide covers what breaks without external cron, how to set up reliable task scheduling, and how to monitor it with Cloud Cron.
PrestaShop killed its built-in cron service. It used to ping stores on shared hosting and fire background tasks on their behalf: currency updates, price rules, abandoned cart emails. Now the endpoint returns an empty 200, and the tasks sit there.
Worst part: nothing crashes. The store works, pages load, orders go through. But currency rates quietly go stale, discounts don't activate on time, and cart abandonment reminders never leave the queue.
What PrestaShop runs on a schedule
There is no single cron system in PrestaShop. Tasks are spread across core features and modules, each expecting periodic execution through a different mechanism.
Core handles currency exchange rate updates from the ECB feed, catalog price rule activation and expiration, search index rebuilding, session and log cleanup. Modules pile on their own jobs: abandoned cart reminder emails, product feed syncs to Google Merchant Center, backup routines, cache purges, import and export automation. A store running 15 modules might have 8-10 distinct tasks that need a regular trigger.
The old Cron Tasks Manager module (bundled with PrestaShop 1.6, never updated for 8.x) centralized all of that behind one URL:
https://yourstore.com/modules/cronjobs/cron.php?secure_key=YOUR_SECURE_KEY
Call that URL on a schedule, and it cycles through registered tasks. The module hasn't been touched in over eight years. On PrestaShop 8.x it won't install without patching, and the official cron service that used to call it is gone.
Signs your PrestaShop cron is broken
Exchange rates stuck on last manual update, orders charged at wrong amounts
Scheduled discounts show regular prices until someone opens the back office
Reminder module queues messages but nothing triggers delivery
Three ways to trigger PrestaShop cron tasks
With the old cron service dead, three options remain. Each fits a different hosting situation.
Server crontab (requires SSH)
Most reliable. Connect via SSH and edit the crontab:
crontab -e
Add a line that hits your store's cron endpoint every 15 minutes:
*/15 * * * * curl -sS "https://yourstore.com/modules/cronjobs/cron.php?secure_key=YOUR_KEY" > /dev/null 2>&1
On PrestaShop 8.x without the legacy cron module, individual tasks have their own URLs. Currency updates, for example:
0 */6 * * * curl -sS "https://yourstore.com/admin-dir/cron_currency_rates.php?secure_key=YOUR_KEY" > /dev/null 2>&1
Replace admin-dir with your actual admin folder name (PrestaShop renames it during installation for security). The secure key shows up in the module configuration or admin URL parameters.
Problem is, most PrestaShop stores run on shared hosting. No SSH, no crontab.
Hosting panel cron (cPanel, Plesk)
Shared hosting providers usually offer a cron scheduler in their control panel. cPanel has it under "Cron Jobs." Paste the same curl command, pick an interval, save. Plesk puts it under "Scheduled Tasks."
Works, but with limits. Some hosts cap frequency at once per hour. Others silently kill cron jobs that run too long or eat too many resources. I've seen a PrestaShop store on SiteGround where the hosting panel cron ran fine for three months, then stopped after a server migration. No notification. No error log. The owner found out when a customer complained about a discount that should have expired two weeks prior.
External cron service
An external cron service hits your store's URL on a schedule from outside the server. No SSH, no hosting panel quirks. Enter the URL, pick a cron expression, done.
This approach works regardless of hosting: shared, managed, cloud, dedicated. The service makes an HTTP request on schedule, your store processes the task. It doesn't care whether you're on cPanel, Plesk, or something custom.
Which tasks to schedule and how often
Not everything needs the same frequency. Running all tasks every minute wastes resources on a store that processes 20 orders a day.
| Task | Endpoint | Interval |
|---|---|---|
| Cart cleanup and session purge | Cron Tasks Manager URL | Every 30 minutes |
| Abandoned cart reminders | Module-specific URL | Every hour |
| Currency rate updates | cron_currency_rates.php | Every 6 hours |
| Catalog price rules | Cron Tasks Manager URL | Every 15 minutes |
| Search index rebuild | Cron Tasks Manager URL | Every 2 hours |
| Product feed sync (Google) | Module-specific URL | Every 4-6 hours |
| Backup | Module-specific URL | Daily |
With the legacy Cron Tasks Manager (or a compatible replacement like CronTab by PrestaToolBox), one URL covers most core tasks. Modules registered with the task manager fire automatically. Premium extensions with their own endpoints need separate cron entries.
The cron expression builder helps with syntax: */15 * * * * for every 15 minutes, 0 */6 * * * for every 6 hours.
Monitor PrestaShop cron with WatchCron Cloud Cron
Setting up cron is half the job. Knowing when it stops is the half that saves you from stale prices and undelivered emails three weeks into a silent failure.
Cloud Cron covers both. Enter your PrestaShop cron URL, set the schedule, and Cloud Cron calls it from outside your server, independent of your host's cron reliability. If the store returns a 500, times out, or goes unreachable, you get an alert through Slack, Telegram, email, or any of 20+ channels.
Why Cloud Cron fits PrestaShop stores
Works with shared hosting, managed hosting, any setup without crontab access
Alerts on failures, timeouts, and HTTP errors before customers notice
Same concept as what PrestaShop used to offer, but with reliability tracking
Different intervals for cart cleanup (30 min) vs. currency updates (6 hours)
Setup takes about two minutes. Copy your cron URL from the module configuration (or your custom endpoint), paste it into Cloud Cron, choose the interval. WatchCron hits the URL on schedule and tracks every response.
For stores that already have a working server crontab, pairing it with heartbeat monitoring adds the same safety net. Append a ping to your cron command:
*/15 * * * * curl -sS "https://yourstore.com/modules/cronjobs/cron.php?secure_key=KEY" && curl -fsS https://ping.watchcron.com/your-monitor-id > /dev/null
If the cron command fails, the ping doesn't fire, and WatchCron alerts you after the grace period. Server goes down entirely — same result.
PrestaShop's own cron service proved it: a trigger without monitoring runs for months after it breaks, and nobody notices until customers start writing in. WooCommerce and Magento stores deal with the same problem around their own cron dependencies. The fix is identical: an external trigger you can trust, with alerts when something goes wrong.
Cloud Cron triggers your store's scheduled tasks on time and alerts you when something breaks. Free plan includes 3 Cloud Cron monitors.