Comparison
Crontap vs Heroku Scheduler
Base Heroku Scheduler is a free add-on for commands every 10 minutes, hourly at a chosen minute, or daily in UTC. It uses billed one-off dynos and documents rare missed or duplicate jobs, with no built-in retries or dedicated failure alerts. The separate Advanced Scheduler add-on adds cron, IANA timezone, history, and API management.
At a glance
Heroku Scheduler vs Crontap, side by side.
| Dimension | Heroku Scheduler | Crontap |
|---|---|---|
| Cadence options | 10 min, 1 hour, 24 hours | Any cron expression |
| Cron expression support | No (3 fixed buckets) | Yes (5-field) |
| Per-schedule timezone | Account-wide UTC | Yes (any IANA) |
| Per-execution cost | One-off dyno per run (billed by the second) | Zero (hits your existing dyno) |
| Dashboard scope | Per-app | All apps + non-Heroku targets |
| Logging | Limited dyno log | Status, code, duration, size, error summary |
| Free tier | Free add-on, limited by dyno time | Starter: 2 combined items; schedules hourly+, 1 uptime monitor daily, and 1 heartbeat hourly |
| Advanced Scheduler add-on | Cron, IANA timezone, history, and Service API | Built into paid Crontap plans; management API is Ultra |
| Human Notifications | Base Scheduler has logs but no dedicated failure-alert surface | All plans: email, test sends, product defaults, per-item default/custom/off routing, and delivery history. Pro, Ultra, and legacy Pro add Slack, Discord, and Telegram |
| Machine webhook Integrations | No base Scheduler machine callback routing | Separate machine webhook Integrations with per-event success, failure, missed, and recovered levers where applicable |
| Schedule failure batching | Not compared; Crontap schedule-specific alert setting | Schedule alerts: unsaved default Starter 24h / 3 failures, paid 10m / 3; configurable floor Starter 1 day, paid 1 minute |
| Heartbeat / dead-man monitoring | No native dead-man monitor | Native: period + grace, /fail, missed/recovered/explicit-failure alerts, ping URL, and 90-day history |
| Uptime monitoring | No native uptime monitor | Native HTTP uptime: down/recovered alerts, history, 90-day rollups, and integration controls |
| Retries and customization | Base Scheduler has no automatic retries | Default on: 3 retries with 2× exponential backoff and jitter. Pro, Ultra, and legacy Pro: 1–5 retries plus delay and retry outcomes; alert after exhaustion |
| AI response processing | No response transform-and-forward workflow | AI response transforms: transform, summarize, normalize, extract, or triage, then forward. Pro: daily, 1 per schedule. Ultra: hourly, unlimited; test-run UX |
How they work
The two approaches in one paragraph each.
Heroku Scheduler
Base Heroku Scheduler runs a Rake task, shell command, or process type in a billed one-off dyno every 10 minutes, hourly at a selected minute, or daily in UTC. Heroku explicitly says execution is not guaranteed and may rarely skip or duplicate. Advanced Scheduler is a distinct add-on with cron, IANA timezone, history, and an API.
Crontap
Crontap fires any cron expression at the HTTP endpoint of your choice (a route on your existing Heroku app, a Cloud Run service, a Vercel function, anything reachable). The schedule lives in Crontap, not in your app, so cadence changes never require a redeploy and there is no per-execution dyno billed.
Where each side wins
Honest broker, both columns.
Heroku Scheduler wins on
- One install. Already in the Heroku ecosystem.
- Runs Rake or shell commands directly without a public HTTP endpoint.
- Free add-on if you can live with three cadences.
Crontap wins on
- Cadences in between. Every 5, 15, 30 minutes are not options on Heroku Scheduler.
- Cron expressions like Tuesday 06:30 Europe/Berlin that Heroku Scheduler simply cannot represent.
- No per-execution dyno spin-up cost. Crontap hits the URL on dynos you already pay for.
- Per-schedule IANA timezones.
- Alerts when the job never ran through native heartbeats.
- A real Heroku customer fires daily user notifications at 17:00 Europe/Berlin via Crontap, exactly because Heroku Scheduler is UTC-only with 24-hour cadence.
The math
Cadence and pricing, worked out.
- Want a job every 5 minutes via Heroku Scheduler? You cannot. The closest is every 10 minutes.
- Run a job every 10 minutes via Heroku Scheduler and you spin up a one-off dyno 4,320 times a month. On Eco dynos that is real money. With Crontap, your existing web dyno serves the request.
- Advanced Scheduler is a separate paid add-on and does provide five-field cron, IANA timezones, execution history, and a Service API. Crontap Pro starts at $2.99/mo and adds HTTP retries, uptime, and heartbeats.
Moving from Heroku Scheduler
The migration, in 5 steps.
- Paste your existing config into the free cron migrator to get every schedule pre-filled as a Crontap deep link.
- Identify the Rake task or process that Heroku Scheduler runs.
- Wrap it as an HTTP endpoint on your existing dyno (e.g. POST /scheduled/your-job) and verify a bearer token on the route.
- Create a Crontap schedule pointing at that URL with the header.
- Remove the Heroku Scheduler entry. Verify the next run lands in your Crontap log.
Decision
Which one fits.
Pick Heroku Scheduler if
You are content with 10 min, 1 hour, or 24 hours, your job runs as a Rake task you do not want to expose over HTTP, and you do not mind UTC.
Pick Crontap if
You want any cron expression, sub-10-minute cadence, per-schedule timezones, central logs, or notifications when something fails.
Pair both if
Keep Heroku Scheduler for one daily Rake task and add Crontap for the every-15-minute health pings.
FAQ
Crontap vs Heroku Scheduler, in detail.
- Does Crontap require a public HTTP endpoint?
- Yes. The endpoint can be auth-protected: Crontap sends an Authorization header you control, your route checks it before doing any work.
- Can I keep Heroku Scheduler running too?
- Yes. Many teams pair them: keep Heroku Scheduler for the one daily Rake task that already works, add Crontap for everything that needs a cadence Heroku Scheduler does not offer.
- Will this save me money?
- Often, because you skip the per-execution dyno spin-up. Heroku Scheduler bills a small one-off dyno per run; Crontap calls the URL on the web dyno you already pay for.
- What about Heroku Advanced Scheduler?
- Advanced Scheduler is materially more capable than the base add-on: it supports five-field cron at one-minute granularity, IANA timezones, one-off triggers, execution history, and a Service API. Compare it directly if you want commands on one-off dynos. Crontap Pro starts at $2.99/mo for external HTTP scheduling with retries and monitoring.
Sources
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