> ## Documentation Index
> Fetch the complete documentation index at: https://learn.workflow.dog/llms.txt
> Use this file to discover all available pages before exploring further.

# Filter With Workflow

> Keep the list items for which another workflow returns a truthy value.

**Filter With Workflow** runs a selected workflow once for each input item and
keeps the items whose run returns a truthy **Data Out** value.

## Quick start

<Steps>
  <Step title="Prepare a predicate workflow">
    Give the workflow a **Data In** input and return the decision through **Data
    Out**. The decision is converted to true or false by truthiness.
  </Step>

  <Step title="Select it and provide items">
    Choose that workflow, then connect a list to **Payloads**.
  </Step>

  <Step title="Use the filtered list">
    Connect **Results** to the next action.
  </Step>
</Steps>

## Inputs

| Input                 | Type     | Required | Description                                   |
| --------------------- | -------- | -------- | --------------------------------------------- |
| **Selected Workflow** | Workflow | Yes      | The workflow used to test each item.          |
| **Payloads**          | List     | No       | Items to test, up to 1,000. Defaults to `[]`. |

## Output

| Output      | Type | Description                                   |
| ----------- | ---- | --------------------------------------------- |
| **Results** | List | Passing items in the same order as the input. |

The predicate runs sequentially. If any child workflow fails, this action
fails instead of returning a partial list.

<Note>
  The selected workflow receives the current item as **Data In**. Values such as
  non-empty strings and non-zero numbers pass because the returned value is
  evaluated by truthiness, not required to be a Boolean.
</Note>
