Cronjob.de › Guides › Vercel Cron
Monitoring Vercel Cron: know whether the job ran
A cron job on Vercel calls a route of your app on a schedule, such as /api/cron. That applies to Next.js projects as well as apps built with v0, Lovable or Bolt that you deployed on Vercel. Whether the call came today and went through is in the logs – you get no message. A heartbeat at the end of the route tells you.
Why at all
Why you would not notice otherwise
By its own account Vercel delivers cron invocations “best effort”: most run as scheduled, occasionally an invocation does not reach your function. Then there is no log entry either. Vercel does not retry failed invocations.
On the free Hobby plan there is more: jobs run at most once a day, and Vercel starts them some time within the given hour – so 0 1 * * * runs between 1:00 and 1:59. The time zone is always UTC.
And if a cron invocation hits a redirect, Vercel considers it done. A heartbeat at the end of your route, by contrast, only reports what really went through.
- Ping address (example)
https://runcheck.de/a8k3m2x9q1- Schedule
- UTC; Hobby once a day, some time within the hour
- Applies to
- Vercel Cron Jobs, Next.js App Router
- Sufficient Cronjob.de plan
- One heartbeat is free; you see its status in your account. Email alerts come with Plus (€17.88 a year), Slack, Teams and Discord with Unlimited.
Setup
Set up in three steps
What is a heartbeat?
A regular sign of life: after every run your job calls its own address at Cronjob.de. If the call is overdue or the job reports a failure, we alert you. More about heartbeats
-
Create a heartbeat
In your account, create a new one under “Heartbeats”, with the rhythm from your
vercel.json. On the Hobby plan give it generous leeway, at least two hours, because Vercel starts the job some time within the hour. You receive a ping address of its own, such ashttps://runcheck.de/a8k3m2x9q1. -
The check-in at the end of the route
Open the route listed under
cronsinvercel.jsonand put the check-in after the actual work, before the response. TheCRON_SECRETcheck comes from the Vercel documentation and stays as it is.// app/api/cron/route.ts import type { NextRequest } from 'next/server'; export async function GET(request: NextRequest) { const authHeader = request.headers.get('authorization'); if (!process.env.CRON_SECRET || authHeader !== `Bearer ${process.env.CRON_SECRET}`) { return new Response('Unauthorized', { status: 401 }); } // ... your work ... await fetch('https://runcheck.de/a8k3m2x9q1', { signal: AbortSignal.timeout(10000) }).catch(() => {}); return Response.json({ success: true }); } -
Deploy and trigger once
After the next deployment you can run the job by hand in the Vercel dashboard. In your Cronjob.de account, “Waiting for the first check-in …” turns green.
The ready-made lines for Linux, PHP, Python, Node.js, n8n, Make, Supabase and Vercel are on the page Cron job monitoring. Your own ping address appears in your account once you create the heartbeat, with the same lines ready to copy.
When something fails
What happens when a run fails
If the invocation does not arrive, the work throws an exception or the function runs into its time limit, the last line is never reached – the check-in is missing. After the leeway we alert you; the next successful run brings the all-clear.
FAQ
Common questions about Vercel Cron
- What does the vercel.json entry look like?
- Like this, with your route's path and the schedule in UTC:
{ "crons": [ { "path": "/api/cron", "schedule": "0 5 * * *" } ] } - Why await – would the check-in not go out anyway?
- A Vercel Function can be stopped as soon as the response is out. With
awaitit waits for the check-in, ten seconds at most, and errors while checking in are ignored. - Pages Router or another framework?
- The check-in is an ordinary
fetchcall and works in any Vercel Function on Node.js 18 or later. What matters is the place: after the work, before the response.
Set up your heartbeat now
One heartbeat is free; you see its status in your account. Email alerts come with Plus (€17.88 a year), Slack, Teams and Discord with Unlimited. The first 14 days run on the Unlimited plan, no payment details needed.
Set up a heartbeat for free More about heartbeatsMore monitoring guides
Official documentation of Vercel Cron
The details about Vercel come from their own documentation, as of October 2026. Please check there whether anything has changed since. Vercel, Next.js, v0, Lovable and Bolt are trademarks of their respective owners. This guide comes from Cronjob.de and has no business relationship with these providers.