Topics:Serverless

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.

Netlify Scheduled Functions vs Crontap, dimension by dimension
DimensionNetlify Scheduled FunctionsCrontap
StatusGenerally available on all plansHosted product
Max function duration30 secondsWhatever your target supports
Cadence floor1 minute on all plans1 minute (Pro)
Deploy behaviorScheduled runs only on published deploysAny reachable environment URL
Cron syntaxYes (5-field)Yes (5-field)
Custom scheduled payloadNo; request body contains Netlify next_run dataMethods, headers, and JSON body
Free tierIncluded on all Netlify plans; Function usage appliesStarter: 2 combined items; schedules hourly+, 1 uptime monitor daily, and 1 heartbeat hourly
Human NotificationsFunction logs; no documented per-invocation scheduled-function 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 scheduled-function-specific 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 monitor in Scheduled FunctionsNative HTTP uptime: down/recovered alerts, history, 90-day rollups, and integration controls
Retries and customizationNo standard scheduled-function retry controlsDefault 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.

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.

  1. Identify the Netlify Scheduled Function and what it does.
  2. 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).
  3. 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

GET

/wp-cron.php?doing_wp_cron=1

Running
Your next schedule

Schedule

"every 5 minutes"

Next

in 23s