diff --git a/content/getting-started/7.create-an-automation.md b/content/getting-started/7.create-an-automation.md
index 10a4e879..08f7785b 100644
--- a/content/getting-started/7.create-an-automation.md
+++ b/content/getting-started/7.create-an-automation.md
@@ -22,7 +22,7 @@ Create a `posts` collection with at least a `title` and `content` field. [Follow

-Navigate to the Flows section in the Settings module. Click on :icon{name="material-symbols:add-circle-outline"} in the page header and name the new flow "Post Created".
+Navigate to the Flows module in the module bar. Click on :icon{name="material-symbols:add-circle-outline"} in the page header and name the new flow "Post Created".
## Configure a Trigger
diff --git a/content/guides/06.flows/3.triggers.md b/content/guides/06.flows/3.triggers.md
index 97d2d492..e93c0bbe 100644
--- a/content/guides/06.flows/3.triggers.md
+++ b/content/guides/06.flows/3.triggers.md
@@ -23,7 +23,7 @@ Any data generated by the event will be nested in the `$trigger`.
- Action (Non-Blocking) — Actions do not block the event. A non-blocking action is mostly useful for
completing tasks in response to an event, without modifying the event or slowing the API.
- **Scope** — Set the types of events that trip this trigger.
-- **Collections** — Set the collections whose events trip this trigger.
+- **Collections** — Set the collections whose events trip this trigger. Use the search box to find a collection quickly.
- **Response Body** — This is optional and only for "Filter (Blocking)" events. It defines data to replace the
event's original `payload`. Choose to return:
- **Data of Last Operation** — Replaces event `payload` with value from `$last`.
@@ -141,9 +141,11 @@ The manual trigger must take in item ID(s) before you can click it. On the colle
grayed out until you select some number of items. From the item page, the current item's ID is passed in
automatically. These item IDs are passed in to `$trigger` as an array.
-- **Collections** — Choose the Collection(s) to add the button to.
-- **Location** — Choose to display the button on the [Item Page](/guides/content/editor),
- [Collection Page](/guides/content/explore), or both.
+- **Collections** — Choose the Collection(s) to add the button to. Use the search box to find a collection quickly.
+- **Location** — Choose where the button appears: the [Item Page](/guides/content/editor),
+ the [Collection Page](/guides/content/explore), both, or **None (Hidden)**. Choose **None (Hidden)** when the
+ Flow should not add a button of its own. It can still be run from a [Button Links](/guides/data-model/interfaces#button-links)
+ interface configured to trigger it.
- **Asynchronous** — Toggle whether the Flow executes asynchronously. If enabled, you can immediately trigger the Flow
again. If not, you must wait for the Flow to complete to use it again.
- **Collection Page (Requires Selection)** — Toggle whether a selection is required in the Collection Page to trigger.
diff --git a/content/guides/06.flows/4.operations.md b/content/guides/06.flows/4.operations.md
index 921a1221..ba272d63 100644
--- a/content/guides/06.flows/4.operations.md
+++ b/content/guides/06.flows/4.operations.md
@@ -247,6 +247,7 @@ If you are self-hosting Directus, then you need to make sure that email capabili
- **CC** — Email addresses to be copied[1].
- **BCC** — Email addresses to be blind copied[1].
- **Reply To** — The email address replies will be sent to[1].
+- **From Name** — The sender name shown to recipients. Defaults to the project name.
- **Type** — The email body format: `WYSIWYG`, `Markdown`, or `Template`.
- **Body** — Available for `WYSIWYG` and `Markdown` types. Use the editor to compose the email content.
- **Template** — Available when the type is set to `Template`. Select the template to use.
diff --git a/content/guides/06.flows/5.manage-flows.md b/content/guides/06.flows/5.manage-flows.md
new file mode 100644
index 00000000..7cd5f09c
--- /dev/null
+++ b/content/guides/06.flows/5.manage-flows.md
@@ -0,0 +1,58 @@
+---
+stableId: a953ba99-dea5-44a2-8c7b-176180759fe9
+title: Manage Flows
+description: Organize, find, duplicate, import, and export Flows from the Flows module.
+---
+
+Flows have their own module in the module bar. The Flows page lists every Flow in a table with its folder, status, trigger type, name, and description. From here you can organize Flows into folders, search and filter the list, duplicate a Flow, and import and export Flows.
+
+::callout{icon="i-lucide-info"}
+Flows used to live in the Settings module. Links to the old location redirect to the Flows module, so existing bookmarks keep working.
+::
+
+## Organize Flows into Folders
+
+
+
+The navigation pane on the left lists your folders. **All Flows** is the root and shows every Flow in the project. Selecting a folder shows only the Flows inside it, and the folder is stored in the page URL so you can bookmark or share a link to it.
+
+- **Create a folder** — Select the **Create Folder** button in the header bar and enter a name. The new folder is nested under the folder you currently have open.
+- **Rename, move, or delete a folder** — Open the folder's context menu in the navigation pane and select **Rename Folder**, **Move to Folder**, or **Delete Folder**.
+- **Move Flows** — Open a Flow's context menu and select **Move to Folder**. To move several Flows at once, select them in the table and use the **Move to Folder** button in the header bar.
+
+::callout{icon="i-lucide-info"}
+Deleting a folder never deletes the Flows inside it. Choose **Delete this folder only** to move its subfolders up one level, or **Delete this folder and its subfolders** to remove the whole tree. Flows from deleted folders return to **All Flows**.
+::
+
+## Search and Filter Flows
+
+
+
+Use the search box in the header bar to find Flows by name. Select the filter icon to add conditions on Flow fields such as **Status**, **Trigger**, or the folder's **Name**.
+
+## Duplicate a Flow
+
+To copy a Flow together with its trigger configuration and all of its operations, open the Flow's context menu and select **Duplicate Flow**. Enter a name for the copy and select **Duplicate**. The copy is placed in the same folder as the original.
+
+::callout{icon="i-lucide-info"}
+A duplicated Flow is always created with an **inactive** status so it will not run until you review and activate it.
+::
+
+## Export Flows
+
+
+
+To export a single Flow, open its context menu and select **Export Flow**. To export several Flows at once, select them in the table and use the **Export Flows** button in the header bar. Each export is a JSON file containing the Flow and its operations.
+
+## Import a Flow
+
+
+
+To import a Flow, open the right-hand sidebar and expand **Import**. Choose a JSON file that was previously exported from Directus, then select **Start Import**. If a folder is open when you import, the Flow is placed in that folder.
+
+Directus rejects files that are not valid JSON, files that are not a Flow export, and exports that contain an operation belonging to a different Flow.
+
+::callout{icon="i-lucide-triangle-alert" color="warning"}
+**Review an imported Flow before activating it**
+An imported Flow is always set to an **inactive** status, so it will not run until you activate it. If it references collections that do not exist in your project, update those operations to use collections that are available.
+::
diff --git a/content/guides/06.flows/index.md b/content/guides/06.flows/index.md
index 589b5c62..539fbc9f 100644
--- a/content/guides/06.flows/index.md
+++ b/content/guides/06.flows/index.md
@@ -6,6 +6,8 @@ description: Flows enable custom, event-driven data processing and task automati
Flows enable custom, event-driven data processing and task automation within Directus. Each flow is composed of one trigger, a series of operations, and a data chain that is passed between each step.
+Flows live in the **Flows** module in the module bar and are available to users with admin access. See [Manage Flows](/guides/flows/manage-flows) to organize, search, duplicate, import, and export them.
+
::callout{icon="i-lucide-info"}
Flows run arbitrary code with elevated accountability. See [Security Best Practices](/guides/security/best-practices#flows) for guidance on restricting who can create, edit, or trigger them.
::
@@ -17,6 +19,7 @@ Flows run arbitrary code with elevated accountability. See [Security Best Practi
- **Icon** — Adds an icon to help quickly identify the flow.
- **Description** — Sets a brief verbal description of the flow.
- **Color** — Sets a color to help identify the flow.
+- **Folder** — Organizes the flow into a folder on the Flows page.
- **Activity and Logs Tracking** — Selects whether the flow should be tracked in both the [activity log](/guides/auth/accountability) and the flow's logs, only in the activity log, or neither.
## Logs
diff --git a/content/guides/09.extensions/0.overview.md b/content/guides/09.extensions/0.overview.md
index f0890e05..02f7e9e4 100644
--- a/content/guides/09.extensions/0.overview.md
+++ b/content/guides/09.extensions/0.overview.md
@@ -49,7 +49,7 @@ Extensions execute code inside the Directus server. See [Security Best Practices

-[Modules](/guides/extensions/app-extensions/modules) are top-level areas of the Data Studio, navigated to from the left-hand module bar. They will load at the specified routes. The Data Studio splits up functionality into modules - the content module, the files module, the user module, the insights module, and the settings module. Extensions can add new modules to the Data Studio.
+[Modules](/guides/extensions/app-extensions/modules) are top-level areas of the Data Studio, navigated to from the left-hand module bar. They will load at the specified routes. The Data Studio splits up functionality into modules - the content module, the files module, the user module, the insights module, the flows module, and the settings module. Extensions can add new modules to the Data Studio.
### Themes
diff --git a/content/guides/13.integrations/2.clay/use-directus-webhooks-with-clay.md b/content/guides/13.integrations/2.clay/use-directus-webhooks-with-clay.md
index b2d4a4c3..31a10b07 100644
--- a/content/guides/13.integrations/2.clay/use-directus-webhooks-with-clay.md
+++ b/content/guides/13.integrations/2.clay/use-directus-webhooks-with-clay.md
@@ -41,7 +41,7 @@ See this webhook flow setup in action with our interactive demo or skip to the s
---
-1. **Go to Settings → Flows** in your Directus Admin Panel
+1. **Open the Flows module** from the module bar in your Directus Admin Panel
2. **Click "Create Flow"**
3. **Configure the flow:**
- **Name:** Give it a descriptive name (e.g., "Send New Posts to Clay")
diff --git a/content/tutorials/5.extensions/send-sms-messages-with-twilio-in-custom-operations.md b/content/tutorials/5.extensions/send-sms-messages-with-twilio-in-custom-operations.md
index 30f7b75e..09325bc6 100644
--- a/content/tutorials/5.extensions/send-sms-messages-with-twilio-in-custom-operations.md
+++ b/content/tutorials/5.extensions/send-sms-messages-with-twilio-in-custom-operations.md
@@ -193,7 +193,7 @@ code has no negative effect.
## Use the Operation
-In the Directus Data Studio, open the Flows section in Settings. Create a new flow with an event trigger. Select the
+In the Directus Data Studio, open the Flows module. Create a new flow with an event trigger. Select the
collection(s) to include.
If the payload does not contain the phone number, use the **Read Data** operation to fetch the phone number from the
diff --git a/content/tutorials/5.extensions/use-npm-packages-in-custom-operations.md b/content/tutorials/5.extensions/use-npm-packages-in-custom-operations.md
index 8a44ba14..4b440f69 100644
--- a/content/tutorials/5.extensions/use-npm-packages-in-custom-operations.md
+++ b/content/tutorials/5.extensions/use-npm-packages-in-custom-operations.md
@@ -118,7 +118,7 @@ code has no negative effect.
## Use the Operation
-In the Directus Data Studio, open the Flows section in Settings. Create a new flow with a manual trigger. Select the
+In the Directus Data Studio, open the Flows module. Create a new flow with a manual trigger. Select the
collection(s) to include this button on.
Add a new step (operation) by clicking the tick/plus on the card, then choose **Lodash Camel Case** from the list. In
diff --git a/content/tutorials/7.workflows/generate-images-with-dall-e-and-directus-automate.md b/content/tutorials/7.workflows/generate-images-with-dall-e-and-directus-automate.md
index ea20eb7e..4919ae68 100644
--- a/content/tutorials/7.workflows/generate-images-with-dall-e-and-directus-automate.md
+++ b/content/tutorials/7.workflows/generate-images-with-dall-e-and-directus-automate.md
@@ -22,7 +22,7 @@ In your Directus project, create a new collection called `generations` and add a
## Create Flow Trigger
-In the Settings Module, go to the Flows section and create a new Flow called “Generate Image”. Use a Manual Flow Trigger and select the Generations collection. In the Location dropdown, select Item Page Only. Finally, select Require Confirmation.
+In the Flows module, create a new Flow called “Generate Image”. Use a Manual Flow Trigger and select the Generations collection. In the Location dropdown, select Item Page Only. Finally, select Require Confirmation.
[Confirmation Dialogs](/guides/automate/triggers) are shown in a modal before a flow is triggered, and any data entered is made available to the flow.
diff --git a/content/tutorials/7.workflows/generate-social-posts-with-gpt-4-and-directus-automate.md b/content/tutorials/7.workflows/generate-social-posts-with-gpt-4-and-directus-automate.md
index 468940a8..ad155a50 100644
--- a/content/tutorials/7.workflows/generate-social-posts-with-gpt-4-and-directus-automate.md
+++ b/content/tutorials/7.workflows/generate-social-posts-with-gpt-4-and-directus-automate.md
@@ -23,7 +23,7 @@ In your Directus project, create a new collection called `posts` with the follow
## Create Flow Trigger & Read Data
-In the Settings Module, go to the Flows section and create a new Flow called “Generate Social Post”. Use a Manual Flow Trigger and select the Posts collection.
+In the Flows module, create a new Flow called “Generate Social Post”. Use a Manual Flow Trigger and select the Posts collection.
The trigger will only return the `ID` of the article, but the whole post is needed to send to OpenAI. Create a **Read Data** operation called "Article" and give it full access permissions. On the Articles collection, access the `{{$trigger.body.keys[0]}}` item.
diff --git a/public/img/166bfc26-b9c0-4609-82da-6c7930d226dc.webp b/public/img/166bfc26-b9c0-4609-82da-6c7930d226dc.webp
new file mode 100644
index 00000000..15bc7ef6
Binary files /dev/null and b/public/img/166bfc26-b9c0-4609-82da-6c7930d226dc.webp differ
diff --git a/public/img/2e6dec0e-2550-4c13-8cf0-0bca786b71cc.webp b/public/img/2e6dec0e-2550-4c13-8cf0-0bca786b71cc.webp
index 0fc6ef4f..54439612 100644
Binary files a/public/img/2e6dec0e-2550-4c13-8cf0-0bca786b71cc.webp and b/public/img/2e6dec0e-2550-4c13-8cf0-0bca786b71cc.webp differ
diff --git a/public/img/64dc472d-3846-4d3e-84fa-9bd708096017.webp b/public/img/64dc472d-3846-4d3e-84fa-9bd708096017.webp
new file mode 100644
index 00000000..9544d7e2
Binary files /dev/null and b/public/img/64dc472d-3846-4d3e-84fa-9bd708096017.webp differ
diff --git a/public/img/724d4aae-7dd7-4d36-8c1c-88e8cb59a9ee.webp b/public/img/724d4aae-7dd7-4d36-8c1c-88e8cb59a9ee.webp
index e53e6b30..83b44916 100644
Binary files a/public/img/724d4aae-7dd7-4d36-8c1c-88e8cb59a9ee.webp and b/public/img/724d4aae-7dd7-4d36-8c1c-88e8cb59a9ee.webp differ
diff --git a/public/img/857d4e58-24b5-4a8c-be42-eed011b95164.webp b/public/img/857d4e58-24b5-4a8c-be42-eed011b95164.webp
new file mode 100644
index 00000000..166ed668
Binary files /dev/null and b/public/img/857d4e58-24b5-4a8c-be42-eed011b95164.webp differ
diff --git a/public/img/87a4a8ea-3a07-49d4-b1c4-e4a791e0b293.webp b/public/img/87a4a8ea-3a07-49d4-b1c4-e4a791e0b293.webp
index 20f27ef6..46cc4171 100644
Binary files a/public/img/87a4a8ea-3a07-49d4-b1c4-e4a791e0b293.webp and b/public/img/87a4a8ea-3a07-49d4-b1c4-e4a791e0b293.webp differ
diff --git a/public/img/d32100e6-1238-4234-83be-93eb3427b8d2.webp b/public/img/d32100e6-1238-4234-83be-93eb3427b8d2.webp
index 58e6df6e..3654ef94 100644
Binary files a/public/img/d32100e6-1238-4234-83be-93eb3427b8d2.webp and b/public/img/d32100e6-1238-4234-83be-93eb3427b8d2.webp differ
diff --git a/public/img/f5f5d71c-462f-4a45-a6bc-6ad1ed3a8462.webp b/public/img/f5f5d71c-462f-4a45-a6bc-6ad1ed3a8462.webp
index c4ab9070..814262b5 100644
Binary files a/public/img/f5f5d71c-462f-4a45-a6bc-6ad1ed3a8462.webp and b/public/img/f5f5d71c-462f-4a45-a6bc-6ad1ed3a8462.webp differ
diff --git a/public/img/f8004890-d889-4a24-a168-c1cbb48ee435.webp b/public/img/f8004890-d889-4a24-a168-c1cbb48ee435.webp
new file mode 100644
index 00000000..77d2e555
Binary files /dev/null and b/public/img/f8004890-d889-4a24-a168-c1cbb48ee435.webp differ