# Workflow steps

> Workflow steps are the building blocks of a workflow. Learn the difference between steps and values, how to add them, and where to find each one.

A workflow is made of steps connected on a canvas. Each step does one job: read records, send an email, make a decision, build a PDF, or calculate a value. This page explains how steps work. The pages below list every step by category.

## Steps and values

There are two kinds of building blocks.

- **Steps that run** happen when the workflow reaches them, one after the other along the execution connections. Some of them take time, such as an HTTP request, a wait, an approval, or building a file. Their results are available to every step after them.
- **Values** have no place in the order. They are calculated the moment a later step needs them. Arithmetic, text, dates, comparisons, and fixed values work this way.

For example, a **Send Email** step runs in order. The **Concat** value that builds its subject line is calculated just before the email is sent.

## Inputs and outputs

Each step has inputs on its left and outputs on its right. Connect an output to an input to pass a value along. If an input isn't connected, you can usually type a value into it directly.

Values have types, such as text, number, date, a record, a user, or a list. Connect outputs to inputs of the same type. Use the conversion values, such as **To String** or **To Number**, when you need to change a type.

## Add a step

- Open **Palette** and drag a step onto the canvas, or search for it by name.
- Right-click the canvas to open the step picker at that spot.
- Drag a connection from an output and drop it on empty canvas to pick a step that fits.

Common steps have single-key shortcuts when the canvas has focus:

| Key | Step |
| --- | --- |
| `B` | Branch |
| `F` | For Each |
| `O` | For Loop |
| `W` | Wait |
| `L` | Log |
| `R` | Reroute, a bend point that tidies long connections |

To remove a step, select it and press `Delete` or `Backspace`.

## Steps by category

  - [Flow](/docs/workflows/nodes/flow): Start and end, branches, loops, error handling, waits, variables, and sub-workflows.
  - [Data](/docs/workflows/nodes/data): Read and write records through a view, including transactions.
  - [People and messages](/docs/workflows/nodes/people): Email, notifications, approvals, users, and groups.
  - [Files and documents](/docs/workflows/nodes/files-and-documents): Attachments, images, PDFs, spreadsheets, CSV, ZIP, and generated documents.
  - [Other systems](/docs/workflows/nodes/other-systems): HTTP, FTP and SFTP, AI, EDI messages, and geocoding.
  - [Values](/docs/workflows/nodes/values): Fixed values, comparisons, math, text, dates, lists, and locations.

## Tips

- Plan the path a person would describe, including what happens when something fails. Wrap risky steps in **Try / Catch / Finally**.
- When several writes must succeed or fail together, put them inside a **Begin Transaction** step.
- Use **Log** to record what the workflow saw at a given point. Logs appear in the run's details.
- Group steps you use in several places into a function, from the **Functions** panel.

> **Tip:** Not sure which step you need? Ask the AI Assistant while the workflow is open, for example "add error handling to this workflow" or "explain what this workflow does".

---

Source: https://community.sapugo.app/docs/workflows/nodes
