---
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://edgetunnel-b2h.pages.dev/changelog-preview.png
---

> Documentation Index  
> Fetch the complete documentation index at: https://edgetunnel-b2h.pages.dev/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://edgetunnel-b2h.pages.dev/changelog/rss/index.xml) [ View RSS feeds ](https://edgetunnel-b2h.pages.dev/fundamentals/new-features/available-rss-feeds/) 

![hero image](https://edgetunnel-b2h.pages.dev/_astro/hero.CVYJHPAd_26AMqX.svg) 

[ ← Back to all posts ](https://edgetunnel-b2h.pages.dev/changelog/) 

## Schedule Workflow instances directly from your Workflow binding

Jun 02, 2026 

[ Workflows ](https://edgetunnel-b2h.pages.dev/workflows/)[ Workers ](https://edgetunnel-b2h.pages.dev/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**

```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**

```ts
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://edgetunnel-b2h.pages.dev/workflows/build/trigger-workflows/).

```json
{"@context":"https://schema.org","@type":"BlogPosting","@id":"https://edgetunnel-b2h.pages.dev/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://edgetunnel-b2h.pages.dev/changelog/post/2026-06-02-cron-workflows/","inLanguage":"en","image":"https://edgetunnel-b2h.pages.dev/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://edgetunnel-b2h.pages.dev/#website","name":"Cloudflare Docs","url":"https://edgetunnel-b2h.pages.dev/"}}
```
