# Versioned browser workflows for repeatable automation

Author, validate, publish, and run reusable browser workflows in RunHarvester. Inspect action traces and keep automation scoped to its environment.

Canonical: https://runharvester.com/browser-workflows

By: [RunHarvester](https://runharvester.com/about-us)

Updated: 2026-10-03

## Give browser automation a versioned lifecycle

Browser Workflows operates on a distinct control plane separate from the Data API. Structure your automation hierarchy as workspace, project, environment, workflow, immutable version, and run. Once definitions are published, they cannot be altered; instead, update them by releasing a new version.

1. Choose a project and environment for the integration.
2. Create a declarative definition and output schema, then validate the draft.
3. Publish and activate the version before starting a run or batch.
4. Inspect the run status, output, action trace, and available masked evidence.

## Typed steps, with explicit boundaries

The initial contract includes actions like navigate, click, fill, select, wait_for_selector, assert, extract, and download. For instance, a workflow might navigate to a catalog, pause until the product container loads, verify its presence, and then extract the records.

This is a linear sequence. Do not design integrations that assume loops, branches, arbitrary JavaScript, or a free-form graph. Validate the definition through the workflow API before publication.

## Run safely across environments

Server integrations rely on Browser Workflow credentials scoped to a specific project and environment. Assign only the required scopes and provide an Idempotency-Key for repeatable write operations. If a conflict occurs, retrieve the resource again before attempting a retry.

Terminal webhooks are sent at least once; validate their signature and timestamp, then remove duplicates using the event ID. Evidence and signed download URLs have expiration times and should not be treated as permanent public links. Managed CDP requires a dedicated scope and a valid, unexpired session.

- [Workflow integration examples](https://docs.runharvester.com/guides/browser-workflows)

## Can I submit structured extraction in a Data API batch?

Data API batches accept raw scrape jobs only. Submit structured extraction as individual requests. Browser Workflow batches belong to a separate API and should not be confused with Data API batches.

[Documentation](https://docs.runharvester.com/concepts/structured-extraction)

## How are Browser Workflows different from browser mode?

Browser mode acts as a path for a Data API request. Browser Workflows handles reusable automation via workspaces, projects, environments, fixed published versions, and executions. Its basic structure is a linear sequence of typed steps, excluding arbitrary JavaScript, loops, or branching graphs.

[Documentation](https://docs.runharvester.com/concepts/browser-workflows)

## Where should I keep API keys?

Store API keys securely in a server-side secret manager and assign only the necessary scopes for the integration. Avoid placing credentials in public frontend code, documentation examples, or logs. Browser Workflow keys and scopes are scoped to their specific project and environment.

[Documentation](https://docs.runharvester.com/getting-started/authentication)

## Continue reading

- [Single-request browser API](https://runharvester.com/browser-api)

- [Retries and idempotency](https://runharvester.com/guides/async-scraping-retries)

- [Pricing](https://runharvester.com/pricing)

[Source: RunHarvester documentation](https://docs.runharvester.com/concepts/browser-workflows)
