---
title: Troubleshooting Vercel Cron Jobs
description: Learn how to troubleshoot cron jobs that aren't being run or logged when using Vercel Cron Jobs.
url: /kb/guide/troubleshooting-vercel-cron-jobs
canonical_url: "https://vercel.com/kb/guide/troubleshooting-vercel-cron-jobs"
last_updated: 2026-07-16
authors: Justin Vitale
related:
  - /docs/functions/serverless-functions
  - /docs/functions/edge-functions/limitations
  - /docs/cron-jobs/usage-and-pricing
  - /docs/cron-jobs/manage-cron-jobs
  - /docs/cron-jobs
  - /docs/cron-jobs/quickstart
  - /docs/cli/build
install_vercel_plugin: npx plugins add vercel/vercel-plugin
---

## About cron jobs

Cron jobs are automated tasks that run at specified intervals. Vercel Cron Jobs specifically are designed to work within the Vercel ecosystem, and allow you to schedule automated tasks to run at specified intervals on Vercel.

### Important Considerations

- Cron jobs **will** still execute even for paths that don’t exist, but a 404 will be returned.
  
- New deployments do **not** affect existing cron jobs.
  
- The timeout duration of cron jobs are identical to that of [**Serverless**](https://vercel.com/docs/functions/serverless-functions#limits) and [**Edge**](https://vercel.com/docs/functions/edge-functions/limitations) functions. If you're hitting these limits, consider splitting your cron jobs into smaller batches.
  

## Troubleshooting Vercel Cron Jobs

### 1\. Check your plan limits

Ensure you're within the cron job limits for your plan. Refer to [**Usage & Pricing for Cron Jobs**](https://vercel.com/docs/cron-jobs/usage-and-pricing).

### 2\. Verify the cron job is being run on a Production deployment

Cron jobs only run on \`Production\` deployments. Make sure you're not trying to run them on a \`Preview\` deployment.

### 3\. Validate your CRON\_SECRET environment variable

Ensure your [CRON\_SECRET](https://vercel.com/docs/cron-jobs/manage-cron-jobs#securing-cron-jobs) environment variable does not contain any invalid, new line, or special characters that cannot be used in the authorization header.

### 4\. Validate your cron job expression

Double-check that your cron job expression matches your intended schedule. You can use our [cron expression validator](https://vercel.com/docs/cron-jobs#validate-cron-expressions) to ensure it's correct.

### 5\. Cron jobs and redirects

Cron jobs do not follow redirects. When a cron-triggered endpoint returns a 3xx redirect status code, the job completes without further requests. Redirect responses are treated as final for each invocation. For example, if your cron job is in `/api/cron`, you could visit the following endpoint in your browser: `http://localhost:3000/api/cron`. You should be aware that while your browser may follow redirects, [cron job invocations in production will not](https://vercel.com/docs/cron-jobs/manage-cron-jobs#cron-jobs-and-redirects) follow redirects. If your project has the [trailingSlash](https://nextjs.org/docs/pages/api-reference/config/next-config-js/trailingSlash) option enabled, you need to add missing trailing slashes (`/`) to your cron jobs. This should prevent the redirect and allow the cron jobs to function as expected.

There is currently no support for `vercel dev`, `next dev`, or other framework-native local development servers. The view logs button on the cron job overview can be used to verify the response of the invocations and gain further insights.

### 6\. Use `force-dynamic` to prevent caching

If you're not seeing logs for your cron job, it might be due to caching. To prevent this, add `export const dynamic = 'force-dynamic';` to your cron job's [route handler](https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config). This ensures the function runs every time, rather than serving a cached response. Refer to the [**Cron Jobs Quickstart guide**](https://vercel.com/docs/cron-jobs/quickstart) for further examples.

### 7\. Check your Vercel WAF rules

If you're using custom WAF rules, they might inadvertently block your cron job, especially if it's making requests to external services. Review your WAF configuration to ensure it's not blocking your cron job.

### 8\. Confirm that your function names and routes are valid and up-to-date

Make sure the function name or route in your cron job configuration matches what's in your project's Deployment Summary. If you've changed the function name or route since setting up the cron job, update your cron job settings accordingly.

### 9\. Confirm that cron is registered during build process

Run [vercel build --prod](https://vercel.com/docs/cli/build) locally and verify the `.vercel/output/config.json` file to ensure the `crons` property exist to register Cron Jobs properly during Build Step.

"crons": \[ { "path": "/api/example-cron", "schedule": "\* \* \* \* \*"} } \] }