Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion content/getting-started/7.create-an-automation.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Create a `posts` collection with at least a `title` and `content` field. [Follow

![Create a new flow pane - including name, metadata, and option to track activity and logs.](/img/3c337848-a40f-4e62-9370-c943e8d5e761.webp)

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

Expand Down
10 changes: 6 additions & 4 deletions content/guides/06.flows/3.triggers.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`.
Expand Down Expand Up @@ -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.
Expand Down
1 change: 1 addition & 0 deletions content/guides/06.flows/4.operations.md
Original file line number Diff line number Diff line change
Expand Up @@ -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<sup>[1]</sup>.
- **BCC** — Email addresses to be blind copied<sup>[1]</sup>.
- **Reply To** — The email address replies will be sent to<sup>[1]</sup>.
- **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.
Expand Down
58 changes: 58 additions & 0 deletions content/guides/06.flows/5.manage-flows.md
Original file line number Diff line number Diff line change
@@ -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 Create Folder dialog on the Flows page](/img/857d4e58-24b5-4a8c-be42-eed011b95164.webp)

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

![Filtering the Flows table by folder name and status](/img/166bfc26-b9c0-4609-82da-6c7930d226dc.webp)

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

![The Flow context menu with the Export Flow option](/img/f8004890-d889-4a24-a168-c1cbb48ee435.webp)

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

![The Import panel in the Flows page sidebar](/img/64dc472d-3846-4d3e-84fa-9bd708096017.webp)

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.
::
3 changes: 3 additions & 0 deletions content/guides/06.flows/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
::
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion content/guides/09.extensions/0.overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ Extensions execute code inside the Directus server. See [Security Best Practices

![A module in Directus](/img/7db9b50a-d25b-40b1-86dc-3e09dad388bf.webp)

[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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/img/2e6dec0e-2550-4c13-8cf0-0bca786b71cc.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/img/724d4aae-7dd7-4d36-8c1c-88e8cb59a9ee.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/img/87a4a8ea-3a07-49d4-b1c4-e4a791e0b293.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/img/d32100e6-1238-4234-83be-93eb3427b8d2.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/img/f5f5d71c-462f-4a45-a6bc-6ad1ed3a8462.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading