Workflows are built from blocks. Each block performs one specific operation: navigating a page, extracting data, making an API call, or branching logic. This page covers every block type available in the [editor](/cloud/building-workflows/build-a-workflow), grouped by category.
| **Prompt** | text | Natural language instructions for the AI |
Additional fields in **Advanced Settings** (Skyvern 1.0 only):
| Field | Type | Description |
|-------|------|-------------|
| **Complete if...** | text | Condition that signals the block is done |
| **Include Action History in Verification** | boolean | Include prior actions when verifying completion |
| **Complete on Download** | switch | Mark the block as complete when a file download occurs |
| **File Name** | text | Custom filename for downloaded files |
*Plus [common browser fields](#common-fields).*
<Tip>
Browser Task is the recommended block for most browser automation. Use it for anything from form filling to multi-page navigation. Include your success criteria directly in the prompt so the AI knows when it's done.
</Tip>
### Browser Action
Execute a single browser action. Best for precise, one-step operations like clicking a specific button or entering text in a field.
| Field | Type | Description |
|-------|------|-------------|
| **URL** | text | Starting URL (optional) |
| **Action Instruction** | text | Specify the single action to perform |
Additional fields in **Advanced Settings:**
| Field | Type | Description |
|-------|------|-------------|
| **Complete on Download** | switch | Mark the block as complete when a file download occurs |
| **File Name** | text | Custom filename for downloaded files |
*Plus [common browser fields](#common-fields).*
### Extraction
Extract structured data from the current page using AI.
| Field | Type | Description |
|-------|------|-------------|
| **Data Extraction Goal** | text | What data to extract |
| **Data Schema** | JSON | [JSON Schema](https://json-schema.org/) defining the output format. Enable the checkbox to reveal the editor. Click **Generate with AI** to auto-suggest a schema from your extraction goal. |
*Plus [common browser fields](#common-fields).*
### Login
Authenticate to a website using stored credentials. Pre-filled with a default login goal that handles common login flows including 2FA.
| Field | Type | Description |
|-------|------|-------------|
| **URL** | text | Login page URL |
| **Login Goal** | text | Login instructions (pre-filled with a comprehensive default) |
| **URL** | text | **(Required)** The URL to navigate to. Supports [parameter references](/cloud/building-workflows/add-parameters#referencing-parameters-in-blocks). |
Print the current browser page to a PDF file. The PDF is saved as a downloadable artifact.
| Field | Type | Description |
|-------|------|-------------|
| **Page Format** | select | Paper size: A4, Letter, Legal, or Tabloid |
| **Print Background** | boolean | Include CSS background colors and images in the PDF |
| **Headers & Footers** | boolean | Add date, title, URL, and page numbers to the PDF |
Additional fields in **Advanced Settings:**
| Field | Type | Description |
|-------|------|-------------|
| **Custom Filename** | text | Custom name for the generated PDF |
| **Landscape** | boolean | Use landscape orientation |
---
## Data and Extraction
### Text Prompt
Send text to the LLM for processing without browser interaction. Useful for summarizing, transforming, or analyzing data between browser steps.
| Field | Type | Description |
|-------|------|-------------|
| **Prompt** | text | The text prompt to send to the LLM |
| **Model** | selector | Which LLM model to use |
| **Data Schema** | JSON | Expected output structure. Enable the checkbox to reveal the editor. Click **Generate with AI** to auto-suggest a schema. |
### File Parser
Parse PDFs, CSVs, Excel files, and images to extract structured data.
| Field | Type | Description |
|-------|------|-------------|
| **File URL** | text | URL or parameter reference to the file |
| **Data Schema** | JSON | Schema for the extracted output. Enable the checkbox to reveal the editor. |
| **Model** | selector | Which LLM model to use |
---
## Control Flow
### Loop
Repeat a sequence of blocks for each item in a list. Child blocks are placed inside the loop on the canvas.
| Field | Type | Description |
|-------|------|-------------|
| **Loop Value** | text | The list to iterate over. Use a parameter reference (e.g., `{{ my_list }}`) or a natural language description (e.g., "Extract links of the top 5 posts") which triggers automatic extraction. |
| **Continue if Empty** | boolean | Mark the loop as complete if the list is empty |
Branch the workflow based on conditions. The UI shows branches as tabs (A, B, C, etc.). Each branch has an expression that determines when it executes. Expressions can be Jinja2 templates or natural language prompts.
| Field | Type | Description |
|-------|------|-------------|
| **Branches** | tabs | One or more conditions. Each branch has an **Expression** field. Click **+** to add branches. |
| **Else branch** | auto | Automatically added. Executes when no other condition matches. |