# Choose the Right Step

> Start with the outcome you need, then choose the Step or workflow pattern that fits.

Start with the outcome you need. Most workflows combine four things: a trigger, data from earlier Steps, logic that routes or repeats the work, and an action in the destination app.

## Start with a workflow pattern

These five patterns cover much of what people build. Use one as the shape of your workflow, then open the linked guides for the exact settings.

  - [Something arrives, put it somewhere](/build/which-step#something-arrives-put-it-somewhere): Receive a form, email or webhook, reshape its data and write it to another system.

- [Every morning, send a summary](/build/which-step#every-morning-send-a-summary): Collect recent data on a schedule, reduce it to what matters and send the result.

- [Do the same thing for a list](/build/which-step#do-the-same-thing-for-a-list): Apply the same action or group of actions to every item in a list.

- [Watch for something and raise the alarm](/build/which-step#watch-for-something-and-raise-the-alarm): Check a system, take the alert route when a condition matches and finish quietly when it does not.

  - [Read something and decide](/build/which-step#read-something-and-decide): Ask AI for a structured answer, then route it with an exact rule.

### Something arrives, put it somewhere

[Webhook](/build/triggers/webhook) → Destination app

Use the arriving app's trigger when one is available, or a Webhook when another system sends the request directly. [Mapping or Transforming Data](/build/core-concepts/mapping-or-transforming) helps you prepare the incoming fields for the destination.

### Every morning, send a summary

[Scheduler](/build/triggers/scheduler) → Fetch the data → [Sort and Limit](/build/action-steps/sort) → [Summarize](/build/action-steps/summarize) → Send it

Use [AI Prompt](/build/ai-features/ai-prompt) instead of Summarize when the result should be prose rather than a count, total or average.

### Do the same thing for a list

Fetch the list → [Repeat the work](/build/action-steps/loops) → Write or send the result

Repeat one Step for each item when only one action changes. Use a Repeater when several Steps must run together for every item. [Loops & Iteration](/build/action-steps/loops) compares the two models.

### Watch for something and raise the alarm

[Scheduler](/build/triggers/scheduler) → Check the system → [Conditions](/build/action-steps/conditions) → Alert or Do Nothing

Use one Conditions route for the alert and another for [Do Nothing](/build/action-steps/no-operation). A check that finds no problem can then finish successfully without sending anything.

### Read something and decide

Trigger → [AI Prompt](/build/ai-features/ai-prompt) → [Switch](/build/action-steps/switch) → One route per answer

Ask the AI Step for a fixed category or structured value when a later Step must route its answer. Use [Switch](/build/action-steps/switch) to map each expected value to its route.

## Choose by goal

| I need to…                                        | Start with                                                                                                                                                                 | Read next                                                            |
| ------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| Run on a schedule                                 | [Scheduler](/build/triggers/scheduler)                                                                                                                                     | [Scheduler](/build/triggers/scheduler)                               |
| Receive data from another system                  | [Webhook](/build/triggers/webhook)                                                                                                                                         | [Webhook](/build/triggers/webhook)                                   |
| Test manually while building                      | [Click to start](/build/triggers/click-to-start)                                                                                                                           | [Operating Workflows](/build/core-concepts/operating-workflows)      |
| Choose one route from exact rules                 | [Conditions or Switch](/build/action-steps/routing)                                                                                                                        | [Choosing a Flow Step](/build/action-steps/routing)                  |
| Split a list into matching and non-matching items | [Filter](/build/action-steps/filter-items)                                                                                                                                 | [Choosing a Flow Step](/build/action-steps/routing)                  |
| Repeat work for every item                        | [Run for Each Item or Repeater](/build/action-steps/loops)                                                                                                                 | [Loops & Iteration](/build/action-steps/loops)                       |
| Rename, convert or reshape data                   | [Mapping or Transforming Data](/build/core-concepts/mapping-or-transforming)                                                                                               | [Data Transformation](/build/core-concepts/data-transformation)      |
| Sort, limit, deduplicate or combine lists         | [Sort](/build/action-steps/sort), [Limit](/build/action-steps/limit), [Remove Duplicates](/build/action-steps/remove-duplicates) or [Combine](/build/action-steps/combine) | Open the guide for the operation you need                            |
| Call a service without a dedicated app Step       | [HTTP Request](/build/action-steps/http-request)                                                                                                                           | [Connecting an App](/manage/apps-and-integrations/connecting-an-app) |
| Classify, summarize or draft with AI              | [Choosing an AI Step](/build/ai-features/choosing-a-step)                                                                                                                  | [Choosing an AI Step](/build/ai-features/choosing-a-step)            |
| Wait for a person's decision                      | [Human Review](/build/action-steps/user-approval)                                                                                                                          | [Human Review](/build/action-steps/user-approval)                    |
| Pause or stop a run deliberately                  | [Wait](/build/action-steps/delay) or [Stop and Error](/build/action-steps/stop-and-error)                                                                                  | [Error Handling & Retries](/build/core-concepts/error-handling)      |

## Four decisions worth comparing

### Conditions, Switch or Filter?

Use **Conditions** for a small number of rule-based routes, **Switch** when one value can lead to several named routes, and **Filter** when you need to divide the items inside a list. See [Choosing a Flow Step](/build/action-steps/routing) for the full comparison.

### Run for Each Item or Repeater?

Use **Run for Each Item** when one Step should run once per item. Use **Repeater** when a group of connected Steps must repeat together. See [Loops & Iteration](/build/action-steps/loops).

### Map or transform?

Map a value when the next Step can use it unchanged. Transform it when the value needs formatting, calculation or reshaping first. See [Mapping or Transforming Data](/build/core-concepts/mapping-or-transforming).

### AI Prompt, AI Data Transform or AI Agent?

Use **AI Prompt** for one generated answer, **AI Data Transform** when you want described data outputs, and **AI Agent** when the Step must choose among enabled tools while the workflow runs. Compare their inputs and trade-offs in [Choosing an AI Step](/build/ai-features/choosing-a-step).

## When no dedicated Step fits

Search **Apps** in the dock before building a custom integration. A dedicated app Step handles its supported authentication and operations. If the service exposes an API but has no suitable Step, use [HTTP Request](/build/action-steps/http-request). Use the [Code editor](/build/action-steps/code-execution) when the workflow needs custom Python logic rather than another network request.

## Still not sure?

Describe the outcome to the [Workflow Assistant](/build/ai-features/workflow-assistant). It can draft the Steps and connections on the canvas; review the structure, connect the required accounts and test the result before switching the workflow to Live.

You can also begin from a complete [cookbook recipe](/getting-started/cookbook/overview) or a [public template](/getting-started/templates/overview).

## What's Next?

- 👉 **[Build Your First Workflow →](/getting-started/tutorials/your-first-workflow)**
- Compare Conditions, Switch and Filter in [Choosing a Flow Step](/build/action-steps/routing).
- Learn how earlier output reaches later Steps in [Workflow Data](/build/core-concepts/workflow-data).
