Use case

Railway has no native scheduler. Crontap is the one you were looking for.

Railway is a great PaaS. It just does not ship a scheduler. Crontap is the missing piece: every minute, every hour, every Monday in your customer's timezone, without a worker container that costs a full service for a handful of triggers.

Get started

Free plan · no credit card required

The problem

Why this is painful without the right tool

  • Railway has no native scheduled HTTP primitive; the only built-in path is an always-on container that runs node-cron or a similar in-process scheduler.
  • An always-on worker container is a full Railway service for what is often a handful of triggers per day, which adds real cost and a real failure mode.
  • GitHub Actions cron drifts during peak (the docs warn about it explicitly); using Actions as a scheduler for a Railway endpoint silently misses runs.
  • Per-environment parity (prod plus preview plus staging) is hard to keep right when each environment needs its own copy of the schedule definition.

The fix

How Crontap solves it

Deploy your Railway app normally and expose an HTTP endpoint for the scheduled work. Point Crontap at the https://yourapp.up.railway.app URL on whatever cadence you want, in any IANA timezone. No worker container, no GitHub Actions drift, no per-environment copy-paste. Failures alert to email / webhook (Slack / Discord / Telegram).

cron expression
*/5 * * * *
Every 5 minutes, hit your Railway app's /api/jobs/index route in America/New_York.

Three concrete patterns from the dataset, all archetyped to preserve customer privacy. A Railway-hosted internal-tools team runs admin and data-sync jobs every 5 minutes against /api/jobs/index; the same shape covers a marketing SaaS pushing weekly Sunday emails to a different endpoint, and a fitness app firing a 30-minute morning push and a 30-minute evening push to a Railway sender service. All three are pure HTTP triggers; none of them needs an always-on worker.

For per-environment parity, the cleanest pattern is one Crontap schedule per environment with its own URL and its own auth header. Production hits app-prod.up.railway.app/api/jobs/index, staging hits app-staging.up.railway.app/api/jobs/index, and a preview deployment can have its own short-lived schedule that gets paused or deleted when the preview is torn down. The schedules live next to each other in one Crontap dashboard, so a missed run is obvious.

Auth is whatever your Railway app expects. Crontap stores arbitrary headers per schedule (bearer tokens, basic auth, custom X-Crontap-Secret) and sends them on every run. The endpoint stays public-by-DNS but the auth check lives in your handler, which is the same model as every other production HTTP service.

FAQ

Common questions

Can I still do a worker-in-Railway pattern?
Yes, if your workload needs long-running state (a queue consumer, a websocket server, a model inference worker). For pure HTTP triggers on a cron, Crontap is the smaller answer: no always-on container, no node-cron drift, no per-environment service.
What about custom domains?
Works with any URL you control: Railway's up.railway.app domain, your own custom domain, or a Cloudflare-fronted proxy. Crontap is just an HTTPS client; whatever resolves and accepts the request will work.
Will GitHub Actions cron work for this instead?
It will work most of the time. GitHub's own docs warn that scheduled workflows can be delayed during peak load; for triggers that have to fire on the minute, Actions cron is the wrong tool. For a daily refresh that does not care about a few minutes of slip, Actions is fine; for everything else, Crontap.
What's the shortest interval Crontap supports?
Every 1 minute on paid plans. Free tier available for slower cadences. Many Railway customers in the dataset sit at every 5 minutes; the most aggressive sit at every minute on Pro for inbox-pollers and per-vehicle health checks.

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