Blog · Serverless
Serverless cron patterns for Vercel, Lambda, Workers and more
Every serverless platform ships its own scheduler, with its own ceiling: UTC-only, plan-gated, low-frequency, or quietly capped. These posts cover the gaps and how to fill them.
About this topic
Serverless
Vercel Cron is fine if you live on Vercel Pro, accept UTC, and stay under the plan's hourly invocation cap. Cloudflare Workers gives you cron triggers, but minute cadence is paid-plan only and you only get 3 schedules per Worker on free. AWS Lambda has EventBridge Scheduler, which is excellent once you finish the IAM and timezone wiring. Cloud Run wants you to pair Cloud Scheduler, which costs a sliver per job and drags a second GCP service into the mix. Netlify Scheduled Functions floor at 1 hour. Firebase Scheduled Functions require the Blaze plan.
Crontap sits outside all of them. It calls your function URL on whatever cadence you actually need (down to 1 minute on Pro), in any IANA timezone, with custom headers and JSON payloads, and surfaces failures through Slack, Discord, Telegram, email or a webhook the moment a 5xx comes back. Retries handle the cold-start flakiness. The posts below cover each platform's specific gap (the hourly cap on Vercel, the minute floor on Cloudflare, the Function URL on Lambda, the Cloud Scheduler bypass on Cloud Run, the Blaze workaround on Firebase, the Netlify 1-hour floor) and the migration pattern.
Blog on Serverless
6 items- Alternatives
Vercel Cron every minute: beating the Hobby hourly limit
Vercel Cron caps Hobby at hourly cadence and 5 jobs, and ties every change to a redeploy. Here is the external cron pattern teams use to ship per-minute schedules, per-IANA timezones, and one dashboard across projects without paying $20/mo per user for Pro.
- Alternatives
Cloud Run cron without Cloud Scheduler
Cloud Scheduler costs $0.10 per job per month after the first 3 and asks for OIDC plus IAM bindings on every target. Here is the IAM-free pattern Cloud Run teams use to fire their .run.app URLs on a clock with one bearer token and one dashboard across every GCP project.
- Alternatives
Netlify Scheduled Functions alternative: any cadence, no 30-second cap
Netlify Scheduled Functions are beta with a 30-second function timeout and an hourly cadence floor on lower plans. Here is the external cron pattern that gives you any cadence, longer runs, and prod-and-preview parity from one dashboard.
- Alternatives
Firebase scheduled functions without the Blaze plan
Firebase Scheduled Functions sit on top of Cloud Scheduler and Pub/Sub and require Blaze. Here is the external HTTP cron pattern that keeps you on Spark, runs the scheduled work on any HTTPS endpoint, and gives you per-IANA timezones and per-job alerts.
- Guides
AWS Lambda cron without EventBridge: the Function URL pattern
EventBridge wants an IAM role per target, an invoke permission per Rule, and a console wizard per region. Lambda Function URLs plus a bearer-in-handler check skip every step of that and let one Crontap schedule fire your Lambda on any cron in any IANA timezone.
- Alternatives
Cloudflare Workers Cron Triggers vs external cron
Cron Triggers are great for a single-purpose Worker. Once you have several Workers across several zones, the schedules live in eight wrangler.toml files. Here is the external-cron pattern teams use for one dashboard, per-IANA timezone, retries, and a cadence change without a deploy.
Related on Crontap
The same Serverless topic, from other angles.
FAQ
Common questions on Serverless
- Vercel Cron handles my one job. Why bring in a second tool?
- If you're on Vercel Pro with a single UTC schedule, Vercel Cron is the simplest path. The seams show when you need a second timezone, want to keep your cron when you move off Vercel, or hit the hourly invocation cap. An external Crontap schedule hitting /api/cron the same way removes the lock-in.
- Can Crontap hit a Cloudflare Worker or AWS Lambda Function URL directly?
- Yes. Anything with a public HTTPS endpoint works. Lambda Function URLs (https://<id>.lambda-url.<region>.on.aws/), Cloudflare Workers (https://<name>.<account>.workers.dev), Cloud Run services, and Vercel API routes all accept Crontap pings the same way, including custom headers for shared-secret auth.
- How do I keep the endpoint from being publicly callable?
- Add a shared-secret header check inside the handler. Crontap sends configurable headers per schedule, so an X-CRON-TOKEN paired with an env var on the function side keeps drive-by traffic out. The platform-specific posts each show the exact handler snippet.
- Cold starts and the 1-minute minimum, any conflict?
- 1 minute is the floor on Crontap Pro, which is the sweet spot for most serverless work. If your function has a 30-second cold start and runs every minute, you'll be paying for warm time anyway, so consider every 2 to 5 minutes or move to provisioned concurrency.
More from Crontap
Topics across the site.
Every topic Crontap covers, in one row. Each one has its own page on the blog surface.
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