Vercel · Cron Jobs

Monitor Vercel Cron Jobs

Vercel Cron Jobs invoke a route on a schedule defined in vercel.json. Vercel's own dashboard shows recent invocations, but there's no alerting if a run fails or silently stops firing — adding one ping call at the end of the route handler closes that gap.

Setup

1

Create an incoming monitor

Add a heartbeat monitor in Pingtastic matching your cron schedule, with a grace period a little past the expected run time.

2

Ping at the end of the route handler

After your job logic succeeds, call the Pingtastic ping URL before returning a response.

app/api/cron/daily-sync/route.ts
export async function GET(request: Request) {
  // ...existing job logic...

  await fetch('https://ping.pingtastic.net/ping/daily-sync');
  return new Response('ok');
}
3

Keep vercel.json and the monitor schedule in sync

Vercel Cron Jobs are defined declaratively in vercel.json — if you change the cron expression there, update the monitor's grace period in Pingtastic to match.

vercel.json
{
  "crons": [{ "path": "/api/cron/daily-sync", "schedule": "0 6 * * *" }]
}

Gotchas

  • ⚠Vercel's free/Hobby plan limits cron job frequency and count — if a cron silently stops firing after a plan change or a vercel.json typo, the missed-ping alert is often the first signal you'll get.
  • ⚠If the route handler is protected by Vercel's cron secret header check, make sure the ping call happens inside the authenticated branch — a ping that fires even when the auth check fails will mask real failures.

Questions

Does Vercel alert me if a cron job fails?

Vercel's dashboard shows invocation history, but there's no built-in alerting on failure or on a cron that stops firing entirely — that's the gap a heartbeat ping closes.

What if the function times out before reaching the ping call?

That's the intended behavior — no ping means no "success" signal, so Pingtastic alerts after the grace period exactly as if the job never ran.

Start monitoring your Vercel cron jobs

Set up your first monitor in under five minutes.

Get started — $5/month