GitHub Repository
You can find the project source code on GitHub.
Deploy With Cloudflare Workers
Deploy the project to Cloudflare Workers with a single click.
Prerequisites
- An Upstash QStash API key.
- Node.js and npm (another package manager) installed.
Step 1: Installation
First, install the Workflow SDK in your worker project:Step 2: Configure Environment Variables
Create a.dev.vars
file in your project root and add your QStash token. This key is used to authenticate your application with the QStash service.
Terminal
Option 1: Local QStash Server
To start the local QStash server, run:QSTASH_URL
and QSTASH_TOKEN
values in the console. Add these values to your .dev.vars
file:
.dev.vars
Option 2: Local Tunnel
Alternatively, you can set up a local tunnel. For this option:- Copy the
QSTASH_TOKEN
from the Upstash Console. - Update your
.dev.vars
file with the following:
.dev.vars
- Replace
***
with your actual QStash token. - Set
UPSTASH_WORKFLOW_URL
to the public URL provided by your local tunnel.

Step 3: Create a Workflow Endpoint
A workflow endpoint allows you to define a set of steps that, together, make up a workflow. Each step contains a piece of business logic that is automatically retried on failure, with easy monitoring via our visual workflow dashboard. To define a workflow endpoint with Cloudflare Workers, navigate into your workers entrypoint file (usuallysrc/index.ts
) and add the following code:
src/index.ts
Step 4: Run the Workflow Endpoint
To start your worker locally, run the following command:Terminal
http://localhost:8787
.
You can verify your correct environment variable setup by checking the wrangler output, which should now have access to your QSTASH_TOKEN
binding and log your local URL:

Terminal


Step 5: Deploying to Production
When deploying your Cloudflare Worker with Upstash Workflow to production, there are a few key points to keep in mind:-
Environment Variables: Make sure that all necessary environment variables from your
.dev.vars
file are set in your Cloudflare Worker project settings. For example, yourQSTASH_TOKEN
,ENVIRONMENT
, and any other configuration variables your workflow might need. - Remove Local Development Settings: In your production code, you can remove or conditionally exclude any local development settings. For example, if you used local tunnel for local development
-
Deployment: Deploy your Cloudflare Worker to production as you normally would, for example using the Cloudflare CLI:
Terminal
-
Verify Workflow Endpoint: After deployment, verify that your workflow endpoint is accessible by making a POST request to your production URL:
Terminal
- Monitor in QStash Dashboard: Use the QStash dashboard to monitor your production workflows. You can track workflow runs, view step statuses, and access detailed logs.
- Set Up Alerts: Consider setting up alerts in Sentry or other monitoring tools to be notified of any workflow failures in production.
Next Steps
- Learn how to protect your workflow endpoint from unauthorized access by securing your workflow endpoint.
- Explore the source code for a detailed, end-to-end example and best practices.
- For setting up and testing your workflows in a local environment, check out our local development guide.