Comparison
Crontap vs Netlify Scheduled Functions
Netlify Scheduled Functions are generally available on every plan, support one-minute UTC cron, and run only on published deploys. They are a strong native fit for 30-second functions that do not need a custom scheduled payload. Crontap moves the clock outside Netlify and adds configurable HTTP requests, retries, alerts, uptime, and heartbeats.
At a glance
Netlify Scheduled Functions vs Crontap, side by side.
| Dimension | Netlify Scheduled Functions | Crontap |
|---|---|---|
| Status | Generally available on all plans | Hosted product |
| Max function duration | 30 seconds | Whatever your target supports |
| Cadence floor | 1 minute on all plans | 1 minute (Pro) |
| Deploy behavior | Scheduled runs only on published deploys | Any reachable environment URL |
| Cron syntax | Yes (5-field) | Yes (5-field) |
| Custom scheduled payload | No; request body contains Netlify next_run data | Methods, headers, and JSON body |
| Free tier | Included on all Netlify plans; Function usage applies | Starter: 2 combined items; schedules hourly+, 1 uptime monitor daily, and 1 heartbeat hourly |
| Human Notifications | Function logs; no documented per-invocation scheduled-function 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 scheduled-function-specific 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 in Scheduled Functions | Native HTTP uptime: down/recovered alerts, history, 90-day rollups, and integration controls |
| Retries and customization | No standard scheduled-function retry controls | 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.
Netlify Scheduled Functions
Netlify Scheduled Functions use a cron expression in code or netlify.toml, execute in UTC, and are available on all plans. The runtime caps execution at 30 seconds. Only published deploys run automatically; Deploy Previews and branch deploys can be invoked manually with Run now. Custom scheduled payloads are not supported.
Crontap
Crontap fires HTTP requests at any URL on cadence. The target can be a regular Netlify function (without Scheduled Functions), a Cloud Run service, a Railway app, or anywhere else that exposes HTTP. Cadence and timezone are set per schedule; runtime is bound only by what the target supports.
Where each side wins
Honest broker, both columns.
Netlify Scheduled Functions wins on
- Native to Netlify, zero infra to provision.
- Lives next to the function in the same project.
- Same observability as your other Netlify functions.
- One-minute cron is available on every plan.
Crontap wins on
- Per-schedule IANA timezones instead of UTC-only execution.
- No 30-second cap on the target. The function can run as long as your backend platform allows.
- Custom methods, headers, and JSON bodies.
- Automatic retries, routed Notifications, machine Integrations, uptime, and heartbeats.
- A team running Netlify preview + Railway prod uses the same Crontap schedules across both environments without duplicating config.
The math
Cadence and pricing, worked out.
- Need a job that takes 90 seconds? Netlify Scheduled Functions cap at 30. Move the work to your own backend (Railway, Cloud Run, your own box) and let Crontap fire it.
- Netlify already supports one-minute cron on all plans. Crontap Pro starts at $2.99/mo when you need the external target, timezone, payload, retry, alerting, and monitoring controls.
Moving from Netlify Scheduled Functions
The migration, in 3 steps.
- Identify the Netlify Scheduled Function and what it does.
- Either keep the function as-is and expose it via a regular (non-scheduled) Netlify function with Authorization-header verification, or move the work to a backend that does not have a 30-second cap (Railway, Cloud Run, your own box).
- Point Crontap at the new HTTP target with the Authorization header on the schedule. Remove the Scheduled Functions block from netlify.toml.
Decision
Which one fits.
Pick Netlify Scheduled Functions if
Your job fits in 30 seconds, UTC is fine, it needs no custom scheduled payload, and it belongs in a published Netlify deploy.
Pick Crontap if
You need longer runs, per-schedule timezones, custom HTTP requests, retries, or cross-environment monitoring.
Pair both if
Keep light Netlify Scheduled Functions for in-project work; add Crontap for jobs that need longer runtime or cross-environment parity.
FAQ
Crontap vs Netlify Scheduled Functions, in detail.
- Can Crontap call my Netlify function?
- Yes. Convert the function to a regular non-scheduled Netlify function and add Authorization-header verification on the route. Point Crontap at the function URL with the header set on the schedule.
- Will Netlify Scheduled Functions and Crontap conflict?
- No. They run independently. Many teams pair them: keep simple in-project Scheduled Functions on Netlify; use Crontap for anything that needs longer runtime or sits outside Netlify.
- What if my function takes longer than Netlify allows on any plan?
- Move the work to a backend without that cap (Railway, Cloud Run, your own box) and have Crontap fire that endpoint on cadence. The hard 30-second timeout is what makes Scheduled Functions a poor fit for non-trivial work.
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