Workflow Pricing and Limits
Vercel bills Workflows usage across three resources:
- Workflow Events: Every state transition in a workflow run is persisted as an event. See Events for more details.
- Workflow Data Written: The amount of data written to managed persistence for workflow state and event logs, including stream data.
- Workflow Data Retained: The amount of data stored per month in managed persistence.
Vercel bills each resource based on usage. Each plan has an included allotment. See the Hobby plan limits for included usage.
| Resource | Hobby Included | On-demand Rates |
|---|---|---|
| Workflow Steps | First 50,000 Steps | $2.50 per 100K Steps |
| Workflow Data Retained | — | $0.00069 per GB per hour |
Functions invoked by Workflows continue to be charged at the existing compute rates. We recommend using Fluid compute with Workflow for reduced costs and higher performance.
Workflow uses Vercel Queues to orchestrate workflow runs. Vercel bills Queues usage at standard rates, see Vercel Queues pricing for more details.
Every state transition in a workflow run is persisted as an event. The full list of events is available in the Workflow SDK documentation.
As an example, a normal step function execution produces three events: step_created, step_started, and step_completed. For every time a step re-tries due to a transient error, a step_retrying event is also created.
Storage for managed persistence is retained based on your team plan:
| Plan | Retention after run completion |
|---|---|
| Hobby | 1 day |
| Pro | 7 days |
| Enterprise | 30 days |
Storage retention is not configurable by default. You can request a custom retention period by contacting support.
The following limits apply to all Workflow runs.
| Limit | Value | Details |
|---|---|---|
| Run creations per second | 1,000 | |
| Events per run | 25,000 limit | |
| Steps per run | 10,000 | |
| Event creations per run per second | 200 | |
| Hook creations per second | 200 | |
| Max payload size | 50 MB | |
| Maximum total entity storage per run | 2 GB | |
| Max workflow replay duration | 240s | |
| Maximum run duration | No limit | |
Maximum sleep duration | No limit | |
| Max runtime of individual step | see Vercel Functions limits | |
| Max stream storage size | Unlimited | |
| Max stream chunk size | 10 MB | |
| Max stream chunks per second per stream | 1,000 | |
| Hook token size | 255 bytes | |
| Workflow name | 255 bytes | |
| Step name | 255 bytes |
Runs that exceed 2,000 events or 1 GB of total entity storage have slower replay times. To maintain high performance, we recommend creating child workflows to break long-running workflows into smaller pieces.
| Limit | Value | Details |
|---|---|---|
| Concurrency | up to 100,000, see Vercel Functions limits | |
| Queued runs | No limit, see Vercel Queues limits | |
| Schedules/cron | No limit | |
| Projects | Unlimited | |
| Real-time connections | No limit | |
| Observability retention | See Observability | |
| Compute resources | See Vercel Functions limits | |
| Maximum total bundle size | 250MB, see Vercel Functions limits |
Requests include any event creation or stream write operation, as well as any operation for reading events, stream chunks, metadata, or event data.
For any request made from your deployment, exceeding the rate limit will automatically re-try with backoff. This includes the initial request to start the workflow. If the call to start() does not throw an error, the workflow will eventually start and run to completion or failure.
This means hitting the rate limit will not cause your workflow to fail, but it will slow down the rate at which your workflows run.
| Plan | Requests per minute |
|---|---|
| Hobby | 100,000 |
| Pro | 1,000,000 |
| Enterprise | 5,000,000 |
Was this helpful?