---
title: Schedule Workflow instances directly from your Workflow binding
description: Add cron schedules to a Workflow binding in wrangler.jsonc to create Workflow instances automatically on a recurring interval.
image: https://developers.cloudflare.com/changelog-preview.png
---

> Documentation Index  
> Fetch the complete documentation index at: https://developers.cloudflare.com/changelog/llms.txt  
> Use this file to discover all available pages before exploring further. 

[Skip to content](#%5Ftop) 

# Changelog

New updates and improvements at Cloudflare.

[ Subscribe to RSS ](https://developers.cloudflare.com/changelog/rss/index.xml) [ View RSS feeds ](https://developers.cloudflare.com/fundamentals/new-features/available-rss-feeds/) 

![hero image](https://developers.cloudflare.com/_astro/hero.CVYJHPAd_26AMqX.svg) 

[ ← Back to all posts ](https://developers.cloudflare.com/changelog/) 

## Schedule Workflow instances directly from your Workflow binding

Jun 02, 2026 

[ Workflows ](https://developers.cloudflare.com/workflows/)[ Workers ](https://developers.cloudflare.com/workers/) 

You can now attach cron schedules directly to a Workflow binding in `wrangler.jsonc`. Each scheduled run creates a new Workflow instance automatically, so you do not need to define a separate Worker with a `scheduled` handler just to trigger your Workflow on an interval.

For example, you can configure hourly, every-15-minute, or weekday schedules on the same Workflow:

JSONC

```
{  "workflows": [    {      "name": "my-scheduled-workflow",      "binding": "MY_WORKFLOW",      "class_name": "MyScheduledWorkflow",      "schedules": ["0 * * * *", "*/15 * * * *", "0 9 * * MON-FRI"],    },  ],}
```

Cron workloads get all the same benefits of Workflows with built-in retries, multi-step durable execution, and configurable timeouts of Workflows.

TypeScript

```
import {  WorkflowEntrypoint,  WorkflowEvent,  WorkflowStep,} from "cloudflare:workers";
// Runs automatically on each cron schedule defined for the MY_WORKFLOW binding in wrangler.jsonc.export class MyScheduledWorkflow extends WorkflowEntrypoint<Env> {  async run(event: WorkflowEvent, step: WorkflowStep) {    const data = await step.do("fetch source data", async () => {      return await fetchSourceData();    });
    // If this step fails, only this step is retried with the custom logic below    await step.do(      "process and store results",      {        retries: { limit: 5, delay: "30 seconds", backoff: "exponential" },        timeout: "10 minutes",      },      async () => {        await processAndStore(data);      },    );  }}
```

This makes it easier to build recurring, scheduled jobs such as database backups, invoice generation, report aggregation, and cleanup tasks without wiring up a separate Cron Trigger entrypoint.

For more information, refer to [Trigger Workflows](https://developers.cloudflare.com/workflows/build/trigger-workflows/).

```json
{"@context":"https://schema.org","@type":"BlogPosting","@id":"https://developers.cloudflare.com/changelog/post/2026-06-02-cron-workflows/#page","headline":"Schedule Workflow instances directly from your Workflow binding · Changelog","description":"Add cron schedules to a Workflow binding in wrangler.jsonc to create Workflow instances automatically on a recurring interval.","url":"https://developers.cloudflare.com/changelog/post/2026-06-02-cron-workflows/","inLanguage":"en","image":"https://developers.cloudflare.com/changelog-preview.png","dateModified":"2026-06-02","datePublished":"2026-06-02","publisher":{"@type":"Organization","name":"Cloudflare","url":"https://www.cloudflare.com/"},"isPartOf":{"@type":"WebSite","@id":"https://developers.cloudflare.com/#website","name":"Cloudflare Docs","url":"https://developers.cloudflare.com/"}}
```
