Topics:PaaS

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.

Heroku Scheduler vs Crontap, dimension by dimension
DimensionHeroku SchedulerCrontap
Cadence options10 min, 1 hour, 24 hoursAny cron expression
Cron expression supportNo (3 fixed buckets)Yes (5-field)
Per-schedule timezoneAccount-wide UTCYes (any IANA)
Per-execution costOne-off dyno per run (billed by the second)Zero (hits your existing dyno)
Dashboard scopePer-appAll apps + non-Heroku targets
LoggingLimited dyno logStatus, code, duration, size, error summary
Free tierFree add-on, limited by dyno timeStarter: 2 combined items; schedules hourly+, 1 uptime monitor daily, and 1 heartbeat hourly
Advanced Scheduler add-onCron, IANA timezone, history, and Service APIBuilt into paid Crontap plans; management API is Ultra
Human NotificationsBase Scheduler has logs but no dedicated failure-alert surfaceAll 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 IntegrationsNo base Scheduler machine callback routingSeparate machine webhook Integrations with per-event success, failure, missed, and recovered levers where applicable
Schedule failure batchingNot compared; Crontap schedule-specific alert settingSchedule alerts: unsaved default Starter 24h / 3 failures, paid 10m / 3; configurable floor Starter 1 day, paid 1 minute
Heartbeat / dead-man monitoringNo native dead-man monitorNative: period + grace, /fail, missed/recovered/explicit-failure alerts, ping URL, and 90-day history
Uptime monitoringNo native uptime monitorNative HTTP uptime: down/recovered alerts, history, 90-day rollups, and integration controls
Retries and customizationBase Scheduler has no automatic retriesDefault 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 processingNo response transform-and-forward workflowAI 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.

  1. Paste your existing config into the free cron migrator to get every schedule pre-filled as a Crontap deep link.
  2. Identify the Rake task or process that Heroku Scheduler runs.
  3. Wrap it as an HTTP endpoint on your existing dyno (e.g. POST /scheduled/your-job) and verify a bearer token on the route.
  4. Create a Crontap schedule pointing at that URL with the header.
  5. 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

GET

/wp-cron.php?doing_wp_cron=1

Running
Your next schedule

Schedule

"every 5 minutes"

Next

in 23s