---
title: Workflow
product: workflows
url: /docs/workflows
type: conceptual
prerequisites:
  []
related:
  - /docs/queues
  - /docs/workflow/concepts
  - /docs/workflow
  - /docs/workflow/pricing
summary: Learn about workflow on Vercel.
install_vercel_plugin: npx plugins add vercel/vercel-plugin
---

# Vercel Workflows

Vercel Workflows is a fully managed platform built on top of the
open-source [Workflow SDK](https://useworkflow.dev),
a TypeScript framework for building apps and AI agents that can pause,
resume, and maintain state.

With Workflow, Vercel manages the infrastructure so you can focus on writing business logic. **Vercel Functions** execute your workflow and step code. **[Vercel Queues](/docs/queues)** enqueue and execute those routes with reliability. **Managed persistence** stores all state and event logs in an optimized database.

Your workflows are:

- **Resumable**: Pause for minutes or months, then resume from the exact point.
- **Durable**: Survive deployments and crashes with deterministic replays.
- **Observable**: Use built-in logs, metrics, and tracing and view them in your [Vercel dashboard](https://vercel.com/d?to=%2F%5Bteam%5D%2F%5Bproject%5D%2Fobservability%2Fworkflows\&title=Vercel+Workflow).
- Write async/await JavaScript with two directives. No YAML or state machines.

![Image](https://vercel.com/docs-assets/static/docs/workflow/workflow-diagram-light.avif)

Use a workflow when your logic needs to pause, resume, or span minutes to months:

```typescript filename="app/workflows/ai-content-workflow.ts" {2}
export async function aiContentWorkflow(topic: string) {
  'use workflow';

  const draft = await generateDraft(topic);

  const summary = await summarizeDraft(draft);

  return { draft, summary };
}
```

## Getting started

Install the Workflow SDK package:

<CodeBlock>
  <Code tab="pnpm">
    ```bash
    pnpm i workflow
    ```
  </Code>
  <Code tab="yarn">
    ```bash
    yarn i workflow
    ```
  </Code>
  <Code tab="npm">
    ```bash
    npm i workflow
    ```
  </Code>
  <Code tab="bun">
    ```bash
    bun i workflow
    ```
  </Code>
</CodeBlock>

Follow the [Workflow SDK getting started guide](https://useworkflow.dev/docs/getting-started) to create your first workflow.

## Features

- [**Workflows and steps**](/docs/workflow/concepts): Write durable functions with `'use workflow'` and `'use step'` directives.
- [**Sleep and hooks**](/docs/workflow/concepts#sleep): Pause for minutes to months, or wait for external events.
- [**Observability**](/docs/workflow#observability): Track runs in real time, trace failures, and analyze performance.
- [**Streams**](https://useworkflow.dev/docs/foundations/streams): Stream data in and out of workflows with managed persistence.
- [**Skew Protection**](/docs/workflow/concepts#skew-protection): Protect your workflows from version skew.
- [**Usage-based pricing**](/docs/workflow/pricing): Pay only for Events, Data Written, and Data Retained.

## Observability

Every step, input, output, sleep, and error inside a workflow is recorded automatically.

You can track runs in real time, trace failures, and analyze performance without writing extra code.

To inspect your runs, go to your [Vercel dashboard](https://vercel.com/d?to=%2F%5Bteam%5D%2F%5Bproject%5D%2Fobservability%2Fworkflows\&title=Vercel+Workflow)
, select your project and navigate to **Observability**, then **Workflows**.

## Resources

**Pricing and Limits**: Billing, included usage, and service limits. [Learn more →](/docs/workflow/pricing)

**Slack bot guide**: Stateful Slack bots with Vercel Workflow Guide [Learn more →](/kb/guide/stateful-slack-bots-with-vercel-workflow)

**Agent guide**: Build a Claude Managed Agent Guide [Learn more →](/kb/guide/claude-managed-agent-vercel)

**Workflow SDK**: Full SDK documentation, guides, and API reference. [Learn more →](https://useworkflow.dev)

**Concepts**: Learn how workflows, steps, sleeps, and hooks work together. [Learn more →](/docs/workflow/concepts)

**Vercel Queues**: The durable event streaming system that powers Workflow. [Learn more →](/docs/queues)


---

[View full sitemap](/docs/sitemap)
