Use case
Reliable scheduled actions for WooCommerce stores without the wp-cron lottery.
Action Scheduler is a great background system but still relies on wp-cron for the tick. Wp-cron only runs when somebody loads a page. Crontap is the external tick: every minute, every 5 minutes, whatever your store actually needs.
Free plan · no credit card required
The problem
Why this is painful without the right tool
- Subscription renewal emails fire hours late on quiet shop days because no shopper has loaded a page since 02:00.
- Delayed order status updates and webhook follow-ups stack up in the Action Scheduler table marked pending until somebody visits.
- Scheduled discounts start or end on the wrong day, especially around weekend launches when desktop traffic dips.
- On idle stores the Action Scheduler queue fills with overdue actions overnight and the morning recovery is a flood instead of a steady drip.
The fix
How Crontap solves it
Point Crontap at wp-cron.php directly, or at the WooCommerce Action Scheduler trigger URL (admin-ajax.php?action=as_async_request_queue_runner), on a real cadence. Every 1 to 5 minutes covers all but the heaviest stores. Failures alert to email / webhook (Slack / Discord / Telegram).
*/1 * * * *The pattern WooCommerce documents in its own "Scheduled Actions" guide is to disable wp-cron entirely and let an external trigger drive the queue. With define('DISABLE_WP_CRON', true); in wp-config.php, no visitor traffic is ever needed to run scheduled actions; Crontap fires wp-cron.php on its own cadence and Action Scheduler drains as fast as the cadence allows.
Two URL shapes work in practice. The simple one is https://yourstore.com/wp-cron.php?doing_wp_cron=1 every minute, which lets every plugin's scheduled events run (Action Scheduler, WP Webhooks, anything else hooked into wp-cron). The targeted one is the Action Scheduler admin-ajax URL, which only runs the queue runner and leaves the rest of wp-cron for a slower schedule.
For the busiest stores, WP-CLI triggered by a system cron is still the gold standard, but for the middle 80% of shops an external HTTP cron is both easier to set up and more reliable than wp-cron alone. Crontap stores any auth header you need (basic auth, a bearer token, a custom WAF cookie) on the schedule.
FAQ
Common questions
- Will this double-fire actions?
- No. Action Scheduler is idempotent at the action level; if two queue runners try to claim the same action, one wins and the other returns immediately. Calling wp-cron.php every minute is safe even on busy stores.
- Can I avoid calling wp-cron.php and hit an admin-ajax endpoint instead?
- Yes. The WooCommerce docs describe `admin-ajax.php?action=as_async_request_queue_runner` as the targeted Action Scheduler trigger. Crontap supports it; use whichever your host allows. Some managed WordPress hosts cache wp-cron.php aggressively, in which case the admin-ajax route is the cleaner option.
- What's the shortest interval Crontap supports?
- Every 1 minute on paid plans. Free tier available for slower cadences. Most stores are fine on 5 minutes; high-volume subscription stores typically run at 1 minute so renewal mailers fire on the same wall-clock minute they were scheduled for.
- How do I get notified if a queue stalls?
- Each schedule has an Integrations panel; wire failure alerts to email / webhook (Slack / Discord / Telegram). The failure payload includes the run's status code, duration, and response body so a stalled queue (5xx from wp-cron.php, slow PHP-FPM) shows up in the alert without you opening the dashboard.
Adjacent use cases
Ready to fix it?
Point Crontap at any URL. Pick any cron. Done.
WordPress, Shopify, Railway, Cloud Run, Vercel, HubSpot, Ghost, your own box. If it answers HTTP, Crontap can drive it on a clock you can read, in the timezone that actually matters, and page you when something breaks.
Free forever tier ・ No credit card required
/wp-cron.php?doing_wp_cron=1
Schedule
"every 5 minutes"
Next
in 23s