# What is Diaflow?

[**Diaflow**](https://diaflow.io/) is an autonomous AI agent platform that makes sophisticated workflow automation accessible to everyone, regardless of technical expertise. Founded in 2024, Diaflow was built on a bold thesis: the next generation of workflow automation wouldn't just connect apps, it would *think*.

<figure><img src="/files/9vlKaAQM5qfeSH1c9n06" alt=""><figcaption></figcaption></figure>

### The Problem with Traditional Automation

Legacy workflow tools were designed for a simpler era, static triggers, rigid rules, and brittle connections that break at scale. As businesses grow more complex, these tools become bottlenecks instead of accelerators. Diaflow believes automation should think, adapt, and act, not just follow instructions.

### The Diaflow Way

Where traditional tools require manual configuration for every edge case, Diaflow's **autonomous AI agents** understand context, make intelligent decisions, and handle complexity that would otherwise require entire teams to manage manually.

### What Diaflow Offers

* **AI Chat:** Interact with your workflows, data, and agents in natural language
* **Flow Builder:** Design and deploy automation workflows visually, no coding required
* **Productivity Suite:** A complete toolkit to supercharge your team's output
* **1,000+ Integrations:** Connect to the apps your business already runs on

<figure><img src="/files/sfgewb1OfRqpsLFWEuVF" alt=""><figcaption></figcaption></figure>

### Trusted & Backed by the Best

Diaflow is backed by **Insignia Ventures Partners** and supported by industry giants including **AWS, Microsoft, Google, and NVIDIA**. With over **10,000+ active users** and a global presence across Saigon, Singapore, New York, and Zurich, Diaflow is scaling fast across continents, serving enterprise customers in financial services, digital retail, and entertainment.

<figure><img src="/files/Iz62uMYV4TsZNPtVi5py" alt=""><figcaption></figcaption></figure>

### 📣 Connect with Diaflow

<table><thead><tr><th width="182.78515625">Platform</th><th>Link</th></tr></thead><tbody><tr><td>Facebook</td><td><a href="https://facebook.com/diaflow.io">facebook.com/diaflow.io</a></td></tr><tr><td>Discord</td><td><a href="https://discord.gg/AU5aYGrc">discord.gg/AU5aYGrc</a></td></tr><tr><td>Instagram</td><td><a href="https://instagram.com/diaflow.io">instagram.com/diaflow.io</a></td></tr><tr><td>LinkedIn</td><td><a href="https://linkedin.com/company/diaflow">linkedin.com/company/diaflow</a></td></tr><tr><td>Twitter / X</td><td><a href="https://twitter.com/diaflow_io">twitter.com/diaflow_io</a></td></tr><tr><td>YouTube</td><td><a href="https://youtube.com/@diaflow_io">youtube.com/@diaflow_io</a></td></tr></tbody></table>

*Born and engineered with love from Saigon, Singapore, NYC, and Austin.*&#x20;

[**Get started free →**](https://platform.diaflow.app/register)&#x20;

[**Book a demo →**](https://www.diaflow.io/book-a-demo)


# Introduction to Generative AI

Generative AI (GenAI) has gained a lot of attention thanks to ChatGPT, but it is still a complex topic that many people find confusing. We will help you learn the basics of GenAI.

## What is Generative AI?

Generative AI, or GenAI, is a type of AI that creates new content. It can write text, generate images, produce audio, and even make videos.

It learns patterns from large amounts of data. Then it uses those patterns to create something new that feels natural and useful.

Tools like chat assistants, image generators, and AI copilots are all examples of GenAI.

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXfK-mFF5sfT2WsrLEXZYwBPcvPXLh_VZLz2fJROPgMebpwpm97zGec9pQxpDC-zyeC9SWIk31_pI8qLoBDXLbsurkVagWdsNgjRwofYiz_Ua7JgFK9rknARP2ty9UMf-B4ZnH0emHFB2qvvnJQ1qzTytAoN?key=iDh3cSWwhM_kLgCn2Yz8zw" alt="" width="375"><figcaption></figcaption></figure>

***

## What are the use cases of GenAI?

GenAI is useful in many everyday tasks and business workflows. Some common use cases are:

* **Writing and communication**: Draft emails, summarize documents, translate text, and create reports or marketing content.
* **Chat and support**: Power chatbots, virtual assistants, and copilots that answer questions in natural language.
* **Creative work**: Generate or edit images, audio, video, and design ideas from a simple prompt.

It can also support research, learning, product design, and data analysis.

***

## What is an LLM?

Large Language Models, or LLMs, are AI models built to understand and generate human language. They can answer questions, write content, summarize information, and help with many text-based tasks.

They learn from very large amounts of text. When you give them a prompt, they predict what should come next. That is how they generate useful and natural responses.

They are called "large" because they are trained with a huge number of internal settings, often called parameters. These settings help the model understand patterns, meaning, and context.

Some examples of LLMs are:

* <img src="/files/BfW5JHHhWNaNxd8N6cn3" alt="" data-size="line"> **GPT**: A family of models from OpenAI that can write, explain, summarize, and answer questions.
* <img src="/files/MhYPTRGU1ALZhlaU0z9T" alt="" data-size="line"> **Gemini**: A family of models from Google that can work with text and, in some versions, images and other media.
* <img src="/files/N9UdhwAs3g5VMbLULyuc" alt="" data-size="line"> **Claude**: A family of models from Anthropic designed for helpful and thoughtful text generation.
* <img src="/files/84MYiYtHAoj9q5D0KnaE" alt="" data-size="line"> **Dola Seed**: A family of models from BytePlus that can help with text generation, reasoning, and other language-based tasks.
* And more...

***

## What is an Embedding?

An embedding turns content into numbers that AI systems can compare. It helps a machine understand meaning, not just exact words.

For example, two sentences with similar meaning can have similar embeddings, even if they use different wording. This is useful for search, recommendations, and question answering.

<figure><img src="/files/toqd2XhPl3qCPWxa4gX4" alt=""><figcaption></figcaption></figure>

***

## What is a Vector Database?

A vector database stores embeddings so they can be searched quickly. Instead of searching by exact keyword, it searches by meaning.

This makes it useful for semantic search, recommendation systems, and AI assistants that need to find the most relevant content.

<figure><img src="/files/BnzvDKb7HlwoMsiNxugm" alt=""><figcaption></figcaption></figure>

***

## What is a Multimodal Model?

A multimodal model can understand or generate more than one type of content. That can include text, images, audio, or video.

This helps the model understand context more fully. For example, it can answer questions about an image, generate captions for a video, or create an image from a text prompt.

Common examples include:

* A chatbot that reads text and understands images.
* A model that turns text into images or video.
* A tool that analyzes both sound and visuals in a video.

***

## What is the memory of an LLM?

A model's memory usually means how much earlier context it can still use in the current conversation. This is often called the context window.

For example, if you ask a follow-up question, the model can use the previous messages to understand what you mean. The more context it can keep, the better it can handle long chats, detailed documents, or multi-step tasks.

This is different from training data. Training teaches the model general knowledge. Memory helps it stay aware of the current conversation.


# What can you build with Diaflow?

After creating your account, you can access our pre-built Flow Templates that cover the majority of use cases. Flow Templates can be easily found on the left sidebar of the main dashboard (Community)

<figure><img src="/files/glweZ6XhkdjvQ6p5NwZI" alt=""><figcaption></figcaption></figure>

The only limitation is your imagination. With Diaflow, we strive to unleash your imagination with unlimited use cases. Here are some examples.

<figure><img src="/files/N6QBXrI4jvfzu7j9vKYN" alt=""><figcaption><p>Example of use-cases</p></figcaption></figure>

If you have any specific feedback or perhaps a use case that you need a customized solution for, don't hesitate to get in touch with us at:

[support@diaflow.io](/welcome-to-diaflow-1)


# WELCOME TO DIAFLOW

[**Diaflow**](https://diaflow.io/) is an autonomous AI agent platform that makes sophisticated workflow automation accessible to everyone, regardless of technical expertise. Founded in 2024, Diaflow was built on a bold thesis: the next generation of workflow automation wouldn't just connect apps, it would *think*.

<figure><img src="/files/9vlKaAQM5qfeSH1c9n06" alt=""><figcaption></figcaption></figure>

### The Problem with Traditional Automation

Legacy workflow tools were designed for a simpler era, static triggers, rigid rules, and brittle connections that break at scale. As businesses grow more complex, these tools become bottlenecks instead of accelerators. Diaflow believes automation should think, adapt, and act, not just follow instructions.

### The Diaflow Way

Where traditional tools require manual configuration for every edge case, Diaflow's **autonomous AI agents** understand context, make intelligent decisions, and handle complexity that would otherwise require entire teams to manage manually.

### What Diaflow Offers

* **AI Chat:** Interact with your workflows, data, and agents in natural language
* **Flow Builder:** Design and deploy automation workflows visually, no coding required
* **Productivity Suite:** A complete toolkit to supercharge your team's output
* **1,000+ Integrations:** Connect to the apps your business already runs on

<figure><img src="/files/sfgewb1OfRqpsLFWEuVF" alt=""><figcaption></figcaption></figure>

### Trusted & Backed by the Best

Diaflow is backed by **Insignia Ventures Partners** and supported by industry giants including **AWS, Microsoft, Google, and NVIDIA**. With over **10,000+ active users** and a global presence across Saigon, Singapore, New York, and Zurich, Diaflow is scaling fast across continents, serving enterprise customers in financial services, digital retail, and entertainment.

<figure><img src="/files/Iz62uMYV4TsZNPtVi5py" alt=""><figcaption></figcaption></figure>

### 📣 Connect with Diaflow

<table><thead><tr><th width="182.78515625">Platform</th><th>Link</th></tr></thead><tbody><tr><td>Facebook</td><td><a href="https://facebook.com/diaflow.io">facebook.com/diaflow.io</a></td></tr><tr><td>Discord</td><td><a href="https://discord.gg/AU5aYGrc">discord.gg/AU5aYGrc</a></td></tr><tr><td>Instagram</td><td><a href="https://instagram.com/diaflow.io">instagram.com/diaflow.io</a></td></tr><tr><td>LinkedIn</td><td><a href="https://linkedin.com/company/diaflow">linkedin.com/company/diaflow</a></td></tr><tr><td>Twitter / X</td><td><a href="https://twitter.com/diaflow_io">twitter.com/diaflow_io</a></td></tr><tr><td>YouTube</td><td><a href="https://youtube.com/@diaflow_io">youtube.com/@diaflow_io</a></td></tr></tbody></table>

*Born and engineered with love from Saigon, Singapore, NYC, and Austin.*&#x20;

[**Get started free →**](https://platform.diaflow.app/register)&#x20;

[**Book a demo →**](https://www.diaflow.io/book-a-demo)


# Introduction to Generative AI

Generative AI (GenAI) has gained a lot of attention thanks to ChatGPT, but it is still a complex topic that many people find confusing. We will help you learn the basics of GenAI.

## What is Generative AI?

Generative AI, or GenAI, is a type of AI that creates new content. It can write text, generate images, produce audio, and even make videos.

It learns patterns from large amounts of data. Then it uses those patterns to create something new that feels natural and useful.

Tools like chat assistants, image generators, and AI copilots are all examples of GenAI.

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXfK-mFF5sfT2WsrLEXZYwBPcvPXLh_VZLz2fJROPgMebpwpm97zGec9pQxpDC-zyeC9SWIk31_pI8qLoBDXLbsurkVagWdsNgjRwofYiz_Ua7JgFK9rknARP2ty9UMf-B4ZnH0emHFB2qvvnJQ1qzTytAoN?key=iDh3cSWwhM_kLgCn2Yz8zw" alt="" width="375"><figcaption></figcaption></figure>

***

## What are the use cases of GenAI?

GenAI is useful in many everyday tasks and business workflows. Some common use cases are:

* **Writing and communication**: Draft emails, summarize documents, translate text, and create reports or marketing content.
* **Chat and support**: Power chatbots, virtual assistants, and copilots that answer questions in natural language.
* **Creative work**: Generate or edit images, audio, video, and design ideas from a simple prompt.

It can also support research, learning, product design, and data analysis.

***

## What is an LLM?

Large Language Models, or LLMs, are AI models built to understand and generate human language. They can answer questions, write content, summarize information, and help with many text-based tasks.

They learn from very large amounts of text. When you give them a prompt, they predict what should come next. That is how they generate useful and natural responses.

They are called "large" because they are trained with a huge number of internal settings, often called parameters. These settings help the model understand patterns, meaning, and context.

Some examples of LLMs are:

* <img src="/files/BfW5JHHhWNaNxd8N6cn3" alt="" data-size="line"> **GPT**: A family of models from OpenAI that can write, explain, summarize, and answer questions.
* <img src="/files/MhYPTRGU1ALZhlaU0z9T" alt="" data-size="line"> **Gemini**: A family of models from Google that can work with text and, in some versions, images and other media.
* <img src="/files/N9UdhwAs3g5VMbLULyuc" alt="" data-size="line"> **Claude**: A family of models from Anthropic designed for helpful and thoughtful text generation.
* <img src="/files/84MYiYtHAoj9q5D0KnaE" alt="" data-size="line"> **Dola Seed**: A family of models from BytePlus that can help with text generation, reasoning, and other language-based tasks.
* And more...

***

## What is an Embedding?

An embedding turns content into numbers that AI systems can compare. It helps a machine understand meaning, not just exact words.

For example, two sentences with similar meaning can have similar embeddings, even if they use different wording. This is useful for search, recommendations, and question answering.

<figure><img src="/files/toqd2XhPl3qCPWxa4gX4" alt=""><figcaption></figcaption></figure>

***

## What is a Vector Database?

A vector database stores embeddings so they can be searched quickly. Instead of searching by exact keyword, it searches by meaning.

This makes it useful for semantic search, recommendation systems, and AI assistants that need to find the most relevant content.

<figure><img src="/files/BnzvDKb7HlwoMsiNxugm" alt=""><figcaption></figcaption></figure>

***

## What is a Multimodal Model?

A multimodal model can understand or generate more than one type of content. That can include text, images, audio, or video.

This helps the model understand context more fully. For example, it can answer questions about an image, generate captions for a video, or create an image from a text prompt.

Common examples include:

* A chatbot that reads text and understands images.
* A model that turns text into images or video.
* A tool that analyzes both sound and visuals in a video.

***

## What is the memory of an LLM?

A model's memory usually means how much earlier context it can still use in the current conversation. This is often called the context window.

For example, if you ask a follow-up question, the model can use the previous messages to understand what you mean. The more context it can keep, the better it can handle long chats, detailed documents, or multi-step tasks.

This is different from training data. Training teaches the model general knowledge. Memory helps it stay aware of the current conversation.


# Log in and log out

Use this page to sign in to Diaflow and sign out safely.

## Log in

1. Open the login page at <https://platform.diaflow.app/login>.
2. Enter your email and password.
3. Click **Continue with Email**.

<figure><img src="/files/KN8OPvPRCcX0ubmeGoqx" alt=""><figcaption></figcaption></figure>

*If you cannot sign in, reset your password from* [*Reset user account password*](/user-account/reset-user-account-password)*.*

## Log out

1. Click your user account icon in the lower-left corner of the sidebar.
2. In the account menu, click **Log out**.
3. Diaflow returns you to the **Login** page.

<figure><img src="/files/9tApOqBGm67Q1JmuIJWE" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Diaflow signs you out automatically after 7 days of inactivity. Sign in again to continue.
{% endhint %}

### Need help?

* Create an account at [Create your user account](/user-account/create-your-user-account).
* Reset your password at [Reset user account password](/user-account/reset-user-account-password).


# Create your user account

Create your Diaflow account from the registration page at <https://platform.diaflow.app/register>.

<figure><img src="/files/2eNqG0L6W2yp88ApghUh" alt=""><figcaption></figcaption></figure>

You can create an account with:

* Google
* Email

## Create your account

1. Open the registration page.
2. Choose **Google** or **Email**.
3. Complete the sign-up flow.

If you sign up with **Email**, Diaflow sends a verification code to your inbox. Enter that code to verify your email address.

{% hint style="info" %}
If you do not receive the verification email, refresh the page and submit the registration again.
{% endhint %}

***

## Complete your profile

Before you enter the platform, Diaflow asks a few short onboarding questions to set up your account. Diaflow also assigns a random username by default.

You may be asked:

* How did you hear about Diaflow?
* What describes you best?
* What's your industry?

<figure><img src="/files/lFLbUrO67xHab3TRwObO" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/W7GlPg7rnDsAamJXTxI2" alt=""><figcaption></figcaption></figure>

## What happens next

After your account is created, Diaflow creates a workspace for you automatically. You are then redirected to the Dashboard.

From the Dashboard, you can start creating your first flow.

<figure><img src="/files/7Pa0hzmouG0p2UsZbfVF" alt=""><figcaption></figcaption></figure>

### Need help?

* *Already have an account? Go to* [*Log in and log out*](/user-account/log-in-and-log-out)*.*
* *Cannot access your account? See* [*Reset user account password*](/user-account/reset-user-account-password)*.*


# Reset user account password

Use this page to reset your password from the login page or change it from your account settings.

## Reset your password from the login page

Use this flow if you cannot sign in.

1. Open the login page.
2. Click **Reset your password** below the password field.
3. Enter your email address.

<figure><img src="/files/EQXKuvfSC3W3UKUHZE3R" alt=""><figcaption></figcaption></figure>

4. If the email is registered, Diaflow sends you a reset code.

<figure><img src="/files/fgGM1dsMkgDUMfvOvF5n" alt=""><figcaption></figcaption></figure>

5. Enter the reset code.
6. Set your new password.

<figure><img src="/files/qRbUr3GGSPlJu2pCrYrV" alt=""><figcaption></figcaption></figure>

## Change your password from account settings

Use this flow if you are already signed in.

1. Click your user account icon in the lower-left corner of the sidebar.
2. Open **Account Settings**.
3. Enter your current password.
4. Enter your new password.
5. Save the change.

<figure><img src="/files/5xqkAYiT5Gpj2hqH3WN0" alt=""><figcaption></figcaption></figure>

### Need help?

* *Go to* [*Log in and log out*](/user-account/log-in-and-log-out) *if you need to sign in first.*
* *Go to* [*Create your user account*](/user-account/create-your-user-account) *if you do not have an account yet.*


# Manage your account settings

Use this page to find and update your account settings.

## Account settings

Use **Account settings** to manage your personal profile and account security.

1. Click your user account icon in the lower-left corner of the sidebar.
2. Click **Account Settings**.
3. Review or update your account details.

<figure><img src="/files/nAcf2DgpM4lHJCHk7IxS" alt=""><figcaption></figcaption></figure>

In **Account settings**, you can:

* Update your General information

<figure><img src="/files/8FIBuJT5tRpiBKfPF6Yc" alt=""><figcaption></figcaption></figure>

* Update your Community profile

<figure><img src="/files/xbITFERnuDXNMIi9OGj1" alt=""><figcaption></figcaption></figure>

* Change your password

<figure><img src="/files/SgOJhukl95DNVIj7MB1f" alt=""><figcaption></figcaption></figure>

* Delete your account

<figure><img src="/files/MeiySFOGWTDhV99AaNE8" alt=""><figcaption></figcaption></figure>

### Need help?

* *Change your password in* [*Reset user account password*](/user-account/reset-user-account-password)*.*
* *Remove your account in* [*Delete your user account*](/user-account/delete-your-user-account)*.*


# Delete your user account

User Accounts can be deleted by clicking on the sidebar menu.

1. Click your user account icon in the lower-left corner of the sidebar.
2. Click **Account Settings** <i class="fa-arrow-right" style="color:$primary;">:arrow-right:</i> Go to the "**Delete this account**" section.
3. Enter your email account <i class="fa-arrow-right" style="color:$primary;">:arrow-right:</i> Click the "**Delete account**" button.
4. A confirmation popup will appear <i class="fa-arrow-right" style="color:$primary;">:arrow-right:</i> Click "**Confirm**" to delete the account.

<figure><img src="/files/Lfn9131hfdbfqf9zcdfi" alt=""><figcaption></figcaption></figure>

Once the deletion is successful, the system redirects you to the **Log-in** page.

### Need help?

* *Manage your account details in* [*Manage your account settings*](/user-account/manage-your-account-settings)*.*
* *Reset your password in* [*Reset user account password*](/user-account/reset-user-account-password)*.*


# Let's start with the basics

Get a quick, simple introduction before building your first Workflow.

**How it works**

Think of Diaflow like building with blocks:

* **Drag & Drop:** Place components onto the canvas.
* **Connect:** Link items together to define a task.
* **Execute:** Each part handles one job; connected, they complete a full workflow.

**Example Workflow**

1. **Input:** Receive a question or file.
2. **Process:** Analyze data with AI.
3. **Output:** Display the final result.

{% hint style="info" %}
If you are new to AI tools, start small. Build one simple flow first, then improve it.
{% endhint %}

### Next step

* Learn the basic building block in [How a Component works](/getting-started/lets-start-with-the-basics/how-a-node-works).
* Learn the full structure in [How a Workflow works](/getting-started/lets-start-with-the-basics/how-a-workflow-works).
* When you are ready, continue to [Creating your first Workflow](/getting-started/lets-start-with-the-basics/creating-your-first-workflow).


# How a workflow works

A **workflow** is a process divided into **three parts**.&#x20;

You can refer to the [**Workflow Builder**](/workflow-builder/overview) section for more information.

A **Workflow** is a set of connected steps.

It takes an input, processes it, and returns a result.

## How a Workflow works

A Workflow usually has 3 parts:

* **Trigger:** starts the flow with an input
* **Nodes:** process the data step by step
* **Output:** shows the final result

For example, a Workflow can receive a file, analyze it with AI, and return an answer.

<figure><img src="/files/7tm5LaWOyz4hS8sZGzrG" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Tip: Use **@** to refer to the previous node's output.
{% endhint %}

### Next steps

* Learn the basic building block in [How a Component works](/getting-started/lets-start-with-the-basics/how-a-node-works).
* Build an example in [Creating your first Workflow](/getting-started/lets-start-with-the-basics/creating-your-first-workflow).
* Explore more in [Flows](/workflow-builder/overview).


# How a node works

For example, a component can convert a **YouTube video into text**. In this case, a video is provided as input, and the component takes over the transcription to generate text output.&#x20;

A component contains inputs as mentioned above, but also advanced configurations that provide different functionality, such as adjusting the flow cache or the precision of the answer.

Use a component to perform one task in a workflow. Each component receives data, processes it, and returns a result.

## **How a node works**

Each component usually has:

* **Input:** the data it receives
* **Nodes:** the advanced configurations you choose
* **Output:** the result it produces

Connect the output of one node to the input of the next one to build your flow.

For example, a node can turn a **YouTube video into text**.

<figure><img src="/files/M5uTfKfrvgFNqdGdg4zA" alt=""><figcaption></figcaption></figure>

### Next steps

* Learn the full structure in [How a Workflow works](/getting-started/lets-start-with-the-basics/how-a-workflow-works).
* Build an example in [Creating your first Workflow](/getting-started/lets-start-with-the-basics/creating-your-first-workflow).
* See all nodes in [Node Reference](/workflow-builder/nodes).


# Creating your first workflow

The goal of this example is to create a flow with a PDF file and a question as inputs, and to generate the answer to the question as the output. In our case, we are going to use a document that discusses COVID-19 and ask the AI to answer questions related to the document.

Use this guide to create a simple Workflow that summarizes a YouTube video.

In this example, the user pastes a YouTube link, and Diaflow returns a summary.

## Create the Workflow

1. Click **New.**
2. Choose **New flow.**
3. Choose **Continue**.
4. Select how the Workflow should start.

<figure><img src="/files/F7hBt3sKeY4hdXHSkg6O" alt=""><figcaption></figcaption></figure>

Choose the start type that matches your use case:

* The **3 options on top** (On app event, Schedule, Webhook) create an **Automation** Workflow.
* The **2 options on the bottom left** (Click a button, Submit a form) create an **App** Workflow.
* Select **Chat** to create a **Chatbot** Workflow (**Simple** or **Expert**).

<figure><img src="/files/ulxGPnHeKWp8VpRafyck" alt=""><figcaption></figcaption></figure>

For this example, choose **Submit a form**.

## Build the Workflow

1. In **Trigger**, click **Add**.
2. Choose `Short Text`.
3. Name the field `YouTube URL`.

<figure><img src="/files/c1PgKJ2SxOpULhiugoDC" alt=""><figcaption></figcaption></figure>

4. Click or drag from the green dot on the right side of **Trigger**.
5. Search for **YouTube**.
6. Select it as the next step.
7. In the URL field, type **@** to show the node list and select `trigger.youtube_url`.
8. Set **Detect Language** to `Auto Generate`.

<figure><img src="/files/bwjSOJVOQASDVZdmUK0l" alt=""><figcaption></figcaption></figure>

The Pop-up will display the search keyword "YouTube."

9. Add an AI node such as **OpenAI**.
10. Choose the connection and model you want to use.
11. In the prompt, ask the AI to summarize the video.
12. Insert the result from the **YouTube** node.

Use a simple prompt like this:

```
Summarize this YouTube video in 3 to 5 bullet points.
Include the main idea and key takeaways.
```

<figure><img src="/files/mKBFHtFBumKSjOBmTExa" alt=""><figcaption></figcaption></figure>

13. Finally, add an **Output** node at the **end** of the flow.
14. In **Output**, click **Add**.
15. Select the result from the AI node.
16. If needed, also add the result from the **YouTube** node.

<figure><img src="/files/yxjNW9KOOGeSjR4emYJy" alt=""><figcaption></figcaption></figure>

## Run the Workflow

1. Paste a YouTube URL into the **Trigger** Field.
2. Click **Execute**.
3. Review the summary.

<figure><img src="/files/UdYNlR5yu2b3x4elEb2b" alt=""><figcaption></figcaption></figure>

## Publish the Workflow

1. Click **Publish**.
2. Choose how you want to share the Workflow.

You can publish it as:

* **Internal Apps**
* **Public Apps**
* **Run via API**

<figure><img src="/files/3yoUZ6PuBxlLV9SnWYLR" alt=""><figcaption></figcaption></figure>

### Need help?

* Learn the basics in [How a Component works](/getting-started/lets-start-with-the-basics/how-a-node-works).
* See the full structure in [How a Workflow works](/getting-started/lets-start-with-the-basics/how-a-workflow-works).


# Terminology

This page is dedicated to define all the key words you can see during your use of the application.

A

<details>

<summary>API</summary>

Application Programming Interface. It is a set of rules and protocols that allows different software applications to communicate and interact with each other.

</details>

<details>

<summary>API Key</summary>

A unique identifier or code that is used to authenticate and authorize access to an API. It is typically provided by the API provider to the user.

</details>

## B

<details>

<summary>Branch</summary>

Algorithmic component designed to split the output into distinct ways based on specified conditions. This component takes an input and evaluates it against a set of predefined criteria using "if" and "or" logical operators.&#x20;

</details>

## C

<details>

<summary>Component</summary>

An element of the applications that performs a specific function or task on the flow. Components can be combined with others to increase the possibilities.

</details>

<details>

<summary>Config</summary>

It refers to the settings of the component where you can enter the parameters that will determine the function of your flow.

</details>

## D

<details>

<summary>Diaflow</summary>

The name of the application.

</details>

<details>

<summary>Drive</summary>

Refers to a storage system or service that allows users to store, access, and manage files and data. It can be a local hard drive, cloud storage, or network storage.

</details>

## F

<details>

<summary>Flow</summary>

A flow is a set of components that perform a task.

</details>

## G

<details>

<summary>GenAI</summary>

Generative AI refers to a category of artificial intelligence systems designed to generate new, original content based on the patterns and data they have been trained on. These systems use advanced machine learning models, particularly neural networks, to create data that mimics human-created content. Generative AI can produce a wide variety of outputs, including text, images, music, and even videos.

</details>

## I

<details>

<summary>Input</summary>

Data or information that is provided to a software application or system for processing.

</details>

<details>

<summary>Integrations</summary>

The process or capability of combining or connecting different software applications or systems to work together and share data or functionality.

</details>

## L

<details>

<summary>LLM</summary>

"LLM" stands for "Large Language Model." LLMs are a type of neural network model specifically designed to understand, generate, and manipulate human language. These models are trained on vast amounts of text data and can perform a wide range of natural language processing (NLP) tasks, including text generation, translation, summarization, and question answering.

</details>

## M

<details>

<summary>Model</summary>

A "model" refers to a sophisticated machine learning system designed to understand and generate human-like text, images, or other forms of content based on input data like DALL-E for OpenAI.

</details>

## N

<details>

<summary>Node</summary>

A fundamental unit or element in a software system or network. It can represent a device, a point of connection, or a processing unit.

</details>

## O

<details>

<summary>Output</summary>

The result or outcome produced by a software application or system after processing input data or performing operations.

</details>

## P

<details>

<summary>Preview</summary>

A feature or functionality that allows users to see a preview or preview version of a document, design, or output before finalizing or publishing it.

</details>

## S

<details>

<summary>SMTP</summary>

Simple Mail Transfer Protocol. It is a standard protocol used for sending and receiving email messages over the internet.

</details>

<details>

<summary>Spreadsheet</summary>

A software application or tool that allows users to organize, analyze, and manipulate data in a tabular format, typically using rows and columns.

</details>

## T

<details>

<summary>Tables</summary>

It refers to a structured arrangement of data in rows and columns, similar to a spreadsheet or database table.

</details>

<details>

<summary>Templates</summary>

The software provides a variety of powerful templates designed to streamline your workflow and enhance productivity across different tasks. Each template is crafted to meet specific needs, making complex processes simple and efficient.&#x20;

</details>

<details>

<summary>Trigger</summary>

An event, condition, or action that initiates or starts a specific process or function in a software application or system.

</details>

## V

<details>

<summary>Vectors</summary>

In generative AI, a "vector" typically refers to a numerical representation of data in a multi-dimensional space. Vectors are fundamental in the field of machine learning and AI, as they allow complex data to be processed and manipulated mathematically.

</details>

## W

<details>

<summary>Web scraper</summary>

A software tool or program that automatically extracts data from websites by simulating human browsing behavior and parsing the HTML or XML content.

</details>

<details>

<summary>Workspace</summary>

A virtual environment or area within a software application or system where users can organize, manage, and collaborate on their files, projects, or tasks.

</details>


# AGENT BUILDER

Welcome to the User Accounts section of the product documentation!


# Overview

Diaflow Agentic AI  lets you create, understand, and manage content using advanced AI tools for chat, images — all from one interface. You can connect internal and external data sources, control AI model scope, and personalize your workspace to match your workflow.

<br>

Key Features:

\- AI Chat with Knowledge Base & Web Search

\- AI Image Generation (text prompts, enhanced settings)

\- AI Image Understanding (analyze, summarize, or describe uploaded images)

\- Config Tools to manage AI models, personalization, and data access

\- File uploads to enhance AI understanding

\- Mentions & Styling for richer, contextual conversations

...

<figure><img src="/files/1Xcy46KbMR6EHwpzlGhT" alt=""><figcaption></figcaption></figure>

<br>


# Image Generation

## Quick Start

What you can do:

\- Generate 1 – 10 images from text prompts

\- Upload reference images to guide generation

\- Use the Enhance Prompt to improve AI understanding

<br>

Quick Start Steps:

1\. Navigate to Dashboard: Go to the Diaflow Homepage

<figure><img src="/files/yLJDFs9ko0J0E7dzfuMm" alt=""><figcaption></figcaption></figure>

2\. Select Image Mode: Choose the "**Image**" tag or type \`@\` and select "**Image generation.**"

<figure><img src="/files/5zdiePE6c4V9MEwlH8Ij" alt=""><figcaption></figcaption></figure>

3\. Choose a Sample Prompt (Optional): Click a template prompt to get started quickly

<figure><img src="/files/U6Q7vDvEL48LNUwbb7Lw" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/JSlsDAcLXi2sFrWscPdU" alt=""><figcaption></figcaption></figure>

4\. Configure Settings (Optional):

&#x20;  \- Enable Enhance Prompt: Toggle ON to automatically improve your prompt (default: ON)

<figure><img src="/files/6WquLRVda4UzD4eyJqXj" alt=""><figcaption></figcaption></figure>

&#x20;  \- Upload Reference Image via 3 ways:&#x20;

a. Click the \`+\` icon to upload from “your device” or “Diaflow Drive”

b. Drag and drop the image into the chat frame

c. Copy and paste a screenshot.

5\. Type Your Prompt: Enter your image description (e.g., "create a 3D-style image of a city at night")

6\. Send: Click the Send button or press Enter

7\. View Results: Generated images appear in the conversation panel with download options

<figure><img src="/files/mQKOCVs4o9Yv5pVsPKcn" alt=""><figcaption></figcaption></figure>

<br>

## Common Uses

### 1. Text to Image

Create images from text descriptions. Perfect for:

\- Concept art and mockups

\- Marketing banners and social media graphics

\- Product visualization

\- Creative illustrations

<br>

**How to use:**

\- Type \`@\` in the chatbox and choose "Image generation"

\- Enter your prompt describing the image you want

\- Click Send

<figure><img src="/files/PFFa3KBJwBs73eQjdwhY" alt=""><figcaption></figcaption></figure>

<br>

### 2. Text to Multiple Images (Up to 10)

Generate multiple variations from one prompt. Ideal for:

\- Exploring different creative directions

\- A/B testing visual concepts

\- Creating image sets for campaigns

<br>

**How to use:**

\- Mention \`@Image generation\`

\- Enter your prompt with the number of images (e.g., "Create 4 images of a futuristic office space")

\- Click Send

<figure><img src="/files/okoJglfxuBF08bwNBAyJ" alt=""><figcaption></figcaption></figure>

<br>

### 3. Image to Image

Transform existing images while preserving core elements. Use for:

\- Style transfers (e.g., photo to watercolor)

\- Restyling and variations

\- Enhancing or modifying specific elements

<br>

**How to use:**

\- Choose "Image" tag

\- Click the \`+\` icon and upload an image from your device

\- Type additional instructions describing desired changes

\- Click Send

<figure><img src="/files/OPsIobOb9W8D2cDr6ub9" alt=""><figcaption></figcaption></figure>

<br>

### 4. Image to Multiple Images

Generate multiple variations from a single reference image. Great for:

\- Creating style variations

\- Exploring different compositions

\- Generating options for client review

<br>

**How to use:**

\- Upload a reference image using the \`+\` icon

\- Enter instructions with the desired number of images

\- Click Send

<figure><img src="/files/2SJvj9te9jKYJ8azfpIN" alt=""><figcaption></figcaption></figure>

<br>

### 5. Enhanced Prompt Generation

Improve your prompts automatically before generation. Benefits:

\- Better image quality and accuracy

\- More detailed and expressive results

\- Less need for manual prompt refinement

<br>

**How to use:**

\- Enable "Enhance prompt" toggle (default: ON)

\- Enter your basic idea

\- Review the enhanced version (read-only) before sending

\- Click Send

<figure><img src="/files/iTpwi4WqatwUgiGz86Th" alt=""><figcaption></figcaption></figure>

<br>

## Tips for Better Images

### 1. Writing Effective Prompts

\- Be specific: Include subject, style, composition, lighting, mood, and technical details

* Good: "A serene mountain landscape at sunset, cinematic lighting, 4K quality, photorealistic style"
* Vague: "A nice picture"

\- Specify composition: Include camera angles, framing, and perspective details

\- Add technical details: Mention resolution preferences, color schemes, and visual effects

<br>

### 2. Using Enhance Prompt

\- When to use: Enable for simple ideas that need expansion or when you want richer descriptions

\- When to disable: Turn OFF if you need exact wording or have already crafted a detailed prompt

\- Review before sending: Always check the enhanced version to ensure it matches your intent

<br>

### 3. Uploading Reference Images

\- Supported formats: JPG, JPEG, PNG, WEBP

\- File size limit: Maximum 50 MB

\- Best practices:

* Use high-quality reference images for better results
* Upload images that match your desired composition or style
* Combine reference images with detailed text instructions

<br>

### 4. Using Mention Tools for Image Generation

\- Quick Access: Type \`@\` in the chatbox or click the \`@\` icon

\- Select "Image generation": The tool is inserted as a highlighted chip/tag

\- Sample Prompts: On the Home screen, selecting Image generation shows up to sample prompts

\- Direct Routing: AI skips intent prediction and routes directly to the image generation agent

<br>

### 5. Managing Generated Images

\- Download: Click the download button on individual images

\- Feedback: Click Like/Dislike to provide feedback and improve future results

\- Copy: Click on the image, right-click, and select "Copy image”

<figure><img src="/files/xgIJRlVQGbFWlDhrD0UL" alt=""><figcaption></figcaption></figure>

### 6. Troubleshooting Common Issues

\- "Not enough credit": Go to the Account tab on the sidebar -> Usage & Billing -> Buy Credits → Select package → Continue purchase

\- No image returned: Check internet connection, ensure prompt doesn't violate content policies, verify model supports selected resolution

\- Upload failed: Verify image type (JPG, JPEG, PNG, WEBP), check file size (max 50 MB), ensure permissions are granted

\- Enhanced prompt not visible: Make sure Enhance Prompt toggle is ON


# Document understanding

## Quick Start

What you can do:

\- Analyze uploaded documents with AI

\- Extract text, labels, and data from documents

\- Get descriptions and summaries of visual content

\- Compare documents and identify differences

\- Answer questions about document content

<br>

**Quick Start Steps:**

1\. Navigate to Chat: Go to the AI Chat interface

2\. Upload an Image:

&#x20;  \- Click the \`+\` icon

&#x20;  \- Select "Upload from device" or "Diaflow Drive” or you can simply drag and drop your files or copy and paste your images onto the chat frame.

Supported File Formats (Format support may vary by model):

* Images: .jpg, .jpeg, .png, .webp
* Documents: .docx, .txt, .pdf

3\. Ask Your Question: Type a prompt asking about the image (e.g., "Describe this image" or "Extract the text from this receipt")

4\. Send: Click Send and wait for AI analysis

5\. Review Results: AI provides structured analysis, descriptions, or extracted data

<figure><img src="/files/0pDJEObIOOQk3eZwUyLK" alt=""><figcaption></figcaption></figure>

**Expected Result**: AI analyzes the documents and provides detailed insights, descriptions, or extracted information based on your prompt.

<figure><img src="/files/NFwAvfRoaWfWbAXRp5wj" alt=""><figcaption></figcaption></figure>

## Common Uses

### 1. Image Description and Analysis

Get detailed descriptions of images for:

\- Accessibility (alt-text generation)

\- Content moderation

\- Visual content understanding

<br>

**Example Prompts:**

\- "Describe this image in detail"

\- "What objects are visible in this image?"

\- "Analyze the composition and color scheme"

<figure><img src="/files/RkcWPl3FztTLKZkYJePf" alt=""><figcaption></figcaption></figure>

**Output:**

<figure><img src="/files/dc0YNeOX4tP4GH8oSVOy" alt=""><figcaption></figcaption></figure>

### 2. Data Extraction and Structuring

Extract structured data from files:

\- Tables and charts

\- Forms and surveys

\- Product information

\- Contact details

<br>

**Example Prompts:**

\- "Extract the table data from this image and format as CSV"

\- "Identify all products and their prices in this catalog file"

\- "Convert this form into structured JSON data"<br>

<figure><img src="/files/nse5ZQzUVcAePOm85nRP" alt=""><figcaption></figcaption></figure>

\ <br>

### 3. Content Analysis

Analyze visual content for:

\- Brand compliance

\- Design feedback

\- Accessibility issues

\- Quality assessment

<br>

**Example Prompts:**

\- "Check this UI design for accessibility issues."

\- "Analyze the color contrast in this image."

\- "Provide design feedback on this mockup."

<figure><img src="/files/KjbWzan4yfGDDRsE91V8" alt=""><figcaption></figcaption></figure>

\
\ <br>

### 4. Object Detection and Classification

Identify and classify objects in images:

\- Product identification

\- Scene understanding

\- Object counting

\- Category classification

<br>

**Example Prompts:**

\- "Count the number of people in this image"

\- "Identify all products in this store shelf image"

\- "What type of vehicle is shown in this image?"


# Knowledge base (Support AI Chat)

## Quick Start

What is Knowledge Base?

Knowledge Base allows AI to reference your internal documents, policies, and data stored in Vector DB. When enabled, AI analyzes your prompts, retrieves relevant content from selected vector folders, and uses that information to generate accurate, context-aware answers.

<br>

What you can do:

\- Upload documents to Vector DB

\- Enable Knowledge Base in AI Chat

\- Ask questions that reference your internal data

\- Get answers grounded in your documents

\- Combine Knowledge Base with Web Search for comprehensive research

<br>

**Quick Start Steps:**<br>

**Step 1:** Access Vector Management

1\. Log into your Diaflow workspace

2\. Navigate to the Vectors page on the sidebar

3\. You'll see the main tab: Group (default landing view showing organized collections)

<figure><img src="/files/hXYj410o1TWW1R88uLmQ" alt=""><figcaption></figcaption></figure>

<br>

**Step 2**: Add Your First Document

1\. Click "**Create a vector group**" button

2\. Create your group with Name and Description (optional)

<figure><img src="/files/rIITvPvrgLQMIJgrfD2M" alt=""><figcaption></figcaption></figure>

3\. In your newly created group, click the "Add file" button

4\. Choose file type: Documents, URLs, or Articles

<figure><img src="/files/57VEkaLiIt9Y47vubEhX" alt=""><figcaption></figcaption></figure>

5\. Upload a file:

&#x20;  \- Documents: PDF, DOCX, TXT, MD, CSV, XLSX, XLS, or JSON (under 50MB)

&#x20;  \- URLs: Crawl an individual URL or website sitemap

&#x20;  \- Articles: Write an article directly

6\. Click "**Create**"

<figure><img src="/files/FMfwIOvUoODZC4y4iJuy" alt=""><figcaption></figcaption></figure>

<br>

**Expected Result**: Your document appears in the selected location with "Processing" status, then "Completed" when ready, or "Rejected" if over limitations.

<br>

**Step 3**: Integrate with AI Chat

1\. Return to the Dashboard page

2\. Click the Config icon (gear/settings icon)

<figure><img src="/files/Ybyd3wMZmDd2TjkYG3X9" alt=""><figcaption></figcaption></figure>

3\. Click "Knowledge base" to open the vector folder selection window

<figure><img src="/files/FVTYuG2wR7r0MuKXsCkx" alt=""><figcaption></figcaption></figure>

4\. Select one folder to use as your Knowledge Base

5\. Click the "Confirm" button to apply your selection

6\. Enter your prompt in the input field to start asking questions

<figure><img src="/files/QinILU8rPn2NnfLmy4D7" alt=""><figcaption></figcaption></figure>

<br>

**Expected Result:** Your AI Chat now responds using knowledge from your uploaded documents. Answers will cite sources from your Knowledge Base when relevant.


# Cross features control


# Select AI Models

**What it does:** Allows you to choose which AI model processes your requests. Different models have different strengths in intelligence, speed, thinking, and cost.

<figure><img src="/files/RrzGprxPpJ9969zAScTT" alt=""><figcaption></figcaption></figure>

<br>

#### How to use

1\. On Home Page: Click the Model dropdown in the input bar

2\. In Conversation: Click the model dropdown (changes apply to next prompt)

3\. Search Models: Type to filter the model list

4\. Select Model: Click to choose; model info and capabilities are displayed

<br>

#### When to switch models

\- For speed: Choose faster models (e.g., GPT-5-mini) for quick responses

\- For quality: Choose advanced models (e.g., GPT-5, Claude 4.5) for complex tasks

\- For specific tasks: Some models are optimized for images, videos, or document analysis

\- For cost: Balance between model cost and your credit balance

<br>


# Mention tool (@)

**What it does**: Allows you to explicitly route requests to specific agents/tools by typing \`@\` or clicking the \`@\` icon. AI skips intent prediction and goes directly to the selected tool.

<br>

#### Available Tools

\- Image generation: Routes to image generation agent

<figure><img src="/files/ecYlFEAKf2RYPqthQdr4" alt=""><figcaption></figcaption></figure>

#### How to use

1\. Open Tools List:

&#x20;  \- Type \`@\` in the chatbox, OR

&#x20;  \- Click the \`@\` icon&#x20;

2\. Select Tool: Click the tool/agent you want

3\. Tool Appears: Tool is inserted as a highlighted chip/tag in the chatbox

4\. Enter Prompt: Type your request normally

5\. Send: Press Send; AI routes directly to the selected agent

<br>


# Use Style

**What it does**: Controls how AI formats and structures its responses. You can use preset styles, clone system styles, or create custom styles.

**How to access**: Click Config icon → Style & Personalization

<figure><img src="/files/DtdFpm83ul9XF050Rp3V" alt=""><figcaption></figcaption></figure>

<br>

## Using Preset Styles

1\. Open Style & Personalization menu

2\. Select a preset style (e.g., Normal, Technical, Creative, Executive Summary)

3\. The style will be applied to all responses in the conversation from the moment the preset setting is updated

<figure><img src="/files/SmTAXAfFABn5iT7XDeSK" alt=""><figcaption></figcaption></figure>

<br>

## Cloning System Styles

1\. Click button "Add a style"

<figure><img src="/files/Givx50MeObsvCCdc08hu" alt=""><figcaption></figcaption></figure>

2\. Click "icon eye"

<figure><img src="/files/xrB0p8lUM3M2Hl46NxGT" alt=""><figcaption></figcaption></figure>

3\. Show the detail of that style

<figure><img src="/files/HMfgdBeNyzVwks64CsBn" alt=""><figcaption></figcaption></figure>

4\. Click "**Clone this style**" to save and apply

<figure><img src="/files/L5rHBPADKXJJOIeFcvMO" alt=""><figcaption></figcaption></figure>

<br>

## Creating Custom Styles

<figure><img src="/files/eUtgnlpnQ72EuI7dTNXd" alt=""><figcaption></figcaption></figure>

<br>

### Method 1: From File

<figure><img src="/files/3mkSw4FQGfAMFZxPOraA" alt=""><figcaption></figcaption></figure>

1\. Click "Add a style" → "Upload a file"

2\. Upload TXT, DOCX, or PDF file with style examples

3\. AI analyzes and generates style prompt

4\. Review and edit if needed

5\. Click "Use this style"

<br>

### Method 2: From Sample

<figure><img src="/files/6W9hC18aBEaCnSjpHVMO" alt=""><figcaption></figcaption></figure>

1\. Click "Add a style" → "Enter sample content"

2\. Enter sample content demonstrating desired style

<figure><img src="/files/eONHV2DCLUVEIuhybFJq" alt=""><figcaption></figcaption></figure>

3\. Click "Continue"

4\. AI generates style prompt from sample

5\. Review, edit, and save

<br>

### Method 3: Manually

<figure><img src="/files/ZIIkXNK3HFyZaOiilXYN" alt=""><figcaption></figcaption></figure>

1\. Click "Add a style" → "Manually add style"

2\. Enter style name and write your own style prompt

<figure><img src="/files/auEUAfnawGR5jv43uDJK" alt=""><figcaption></figcaption></figure>

3\. Click "Use this style"

<br>

## Editing Styles

<figure><img src="/files/daBAMrDclUmKXGMGsvgd" alt=""><figcaption></figcaption></figure>

\- Only user-created styles can be edited (preset styles are read-only)

\- Click Edit icon on your custom style

\- Modify name and prompt

\- Click Save

<br>

## Deleting Styles

<figure><img src="/files/CEVpAG0IgdcmDHC8SE4E" alt=""><figcaption></figcaption></figure>

\- Only user-created styles can be deleted

\- Click Delete icon on your custom style

\- Confirm deletion

<br>


# Personalization

**What it does**: Set your name, role, and preferences once. AI automatically applies these to all conversations, personalizing responses to match your expertise level and communication style.

<figure><img src="/files/gW5Cf0cponYqFkqnNhF7" alt=""><figcaption></figcaption></figure>

**How to access**: Click Config icon → Style & Personalization -> Personalization

<figure><img src="/files/NuqqwiVDehCA50vE1426" alt=""><figcaption></figcaption></figure>

<br>

## Setting Up Personalization

1\. **What should Diaflow call you?**: Enter how you want AI to address you

&#x20;  \- Example: "Minh" or "Dr. Smith"

&#x20;  \- AI will use this name in responses (e.g., "Hi Minh, here's your analysis...")

2\. **What best describes your work?**: Select or enter your job function

&#x20;  \- Examples: Developer, Business Analyst, CEO, Student, Designer

&#x20;  \- AI adjusts technical depth and vocabulary based on your role

3\. **What's your industry?**: Tell us what industry you're in

&#x20;  \- Examples: "Healthcare," "Retail & E-commerce," "Financial Services"

<figure><img src="/files/cG6wkX2eERjcYXwXWW77" alt=""><figcaption></figcaption></figure>

<br>


# Upload File

**What it does:** Attach documents, images, or other files to enhance AI understanding. Files can be uploaded from your device, Diaflow Drive, or captured via camera/webcam.

<figure><img src="/files/2jejYhoWC12ZVhTAjamE" alt=""><figcaption></figcaption></figure>

<br>

<figure><img src="/files/9tZwUDjWl49NYo16Tc33" alt=""><figcaption></figcaption></figure>

**Supported Formats:**

\- Documents: PDF, DOCX, TXT

\- Images: JPG, JPEG, PNG, WEBP

\- File size limits: Vary by model (typically 50 MB max for documents, check model-specific limits)

<br>

## How to Upload:

### Method 1: From Device

<figure><img src="/files/XsrYcMBOFEnU5VNs3sSZ" alt=""><figcaption></figcaption></figure>

1\. Click the \`+\` icon (Upload File button)

2\. Select "**Upload from device**"

3\. Choose file(s) from your computer

4\. File appears in chatbox as a tag/chip

5\. Click \`X\` on file tag to remove before sending

6\. Type your prompt and click Send

<br>

### Method 2: From Diaflow Drive

<figure><img src="/files/peFPrgABuTIGzioymmJt" alt=""><figcaption></figcaption></figure>

1\. Click the \`+\` icon

2\. Select "**Use from drive**"

3\. Browse and select file(s) from Drive

4\. Note: Can select multiple files, but only from the same folder

5\. Click "Confirm" to attach

6\. Type your prompt and click Send

<br>

### Method 3: Use Camera/Webcam

<figure><img src="/files/uYs9MEqzoDlLlXFAC8Ed" alt=""><figcaption></figcaption></figure>

1\. Click the \`+\` icon

2\. Select "**Use Camera or Webcam**"

3\. Browser requests camera access → Select "Allow"

4\. Take a photo directly

5\. Confirm to attach photo to chatbox

6\. Click Send for AI to analyze or create variations

<br>

**Best Practices**

\- For Image Generation: Upload reference images to guide style and composition

\- For Image Understanding: Upload images to analyze, extract text, or get descriptions

\- For Video Generation: Upload images to animate or use as first/last frames

\- For Knowledge Base: Upload documents to analyze alongside your Vector DB content

\- File Organization: Use Diaflow Drive for frequently accessed files

\- Multiple Files: Can upload multiple files in one conversation (same folder for Drive)

<br>

<mark style="color:$danger;">**Troubleshooting**</mark>

\- Upload failed: Check file type is supported, verify file size is within limits, ensure permissions are granted

\- File too large: Compress file or switch to a model with higher file size limits

\- Format not supported: Check model-specific supported formats

\- Camera not working: Enable camera permission in browser settings and reload

<br>


# Web search

**What it does**: Central dashboard to enable/disable AI capabilities and configure how AI accesses data and processes requests.

<figure><img src="/files/uoJUJRwsftT5ZjLML23s" alt=""><figcaption></figcaption></figure>

<br>

**How to access**: Click Config icon (gear/settings icon) in the chat interface -> Web search

* ON: Enable real-time web search
* OFF: Disable real-time web search<br>

**How it works:** AI searches the web for current information and cites sources

**Use cases:** Current events, market research, real-time data lookup

<figure><img src="/files/72Q1fexJTZzQ5MoovvVT" alt=""><figcaption></figcaption></figure>

<br>


# Overview

Learn what a workflow is, how nodes connect, and how to test your flow before publishing.

Workflows help you automate a task from start to finish. You build a workflow by adding nodes to a canvas and connecting them.

## What a workflow includes

Most workflows have 3 parts:

* **Trigger:** starts the workflow.
* **Nodes:** process data step by step.
* **Output:** shows or sends the final result.

Each node does one job. Together, they complete the full process.

{% hint style="info" %}
If you are new to workflows, start with one input, one processing step, and one output.
{% endhint %}

## How data moves

Lines between nodes show how data moves through the workflow. When the workflow runs, each node uses the result from the previous step. Some nodes only accept specific input types.&#x20;

**For example**, a text-based AI step expects text input.

<figure><img src="/files/UdYNlR5yu2b3x4elEb2b" alt=""><figcaption></figcaption></figure>

## Add, rename, and test nodes

Use **+ Add** to insert a new node.

Use the three-dot menu on a node to rename it or add a description.

Use ▶ to test the node before executing. You can enter sample inputs and confirm the result looks right.

<figure><img src="/files/3d7IAXMH4SXdrMeAyZYY" alt=""><figcaption></figcaption></figure>

## Reuse data from earlier steps

Each node creates an output you can use later in the workflow.

Type `@` to insert available values from previous steps.

**For example**, if your trigger collects text, you can reuse that text in another node.

<figure><img src="/files/wELmYRYAMGYucEyImqPJ" alt=""><figcaption></figcaption></figure>

## Configure each node

Most nodes include basic settings directly on the node card.

**For example**, you can choose the AI model, output format, or action type.

<figure><img src="/files/ZZAf07cKW4sKHsybUXEE" alt=""><figcaption></figcaption></figure>

## Use advanced settings when needed

Select **Show Advanced Configurations** to open more options.

Use these settings when you need extra control over behavior, inputs, or outputs.

<figure><img src="/files/czQpqmQXh6LuFjTT2DMe" alt=""><figcaption></figcaption></figure>

## Tips for first-time users

* Start with one trigger, one node, and one output.
* Rename important nodes so the flow stays easy to read.
* Check **Result** after each change instead of testing everything at the end.

### Next steps

* Learn how to [create a workflow](/workflow-builder/create-a-workflow).
* Learn how to [manage a workflow](/workflow-builder/manage-a-workflow).
* Browse the [Node Reference](/workflow-builder/nodes).


# Create a workflow

Create a workflow from scratch, with AI, or from a template.

You can create a workflow in 3 ways:

* Start from scratch
* Start with AI
* Start from a template

Choose the option that gives you the right amount of guidance.

## Create a workflow from scratch

Use this option when you already know the process you want to build:

1. Click **New**
2. Select **New flow**
3. Click **Continue**

<figure><img src="/files/0j4dOWCNq9RqYkHe5Izh" alt=""><figcaption></figcaption></figure>

## Create a workflow from a template

Use a template when you want to move faster.

Templates give you a ready-made structure that you can customize.

{% stepper %}
{% step %}

### Open the template library

Click **Community**.

<figure><img src="/files/RfRs9HiHFJFZJ1jpwOgW" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Browse templates

Select a template by workflow type or business use case.

Browse categories such as **Marketing**, **Administration**, and **HR/Hiring**.
{% endstep %}

{% step %}

### Review the template

Click the template card to open its details.

<figure><img src="/files/BZTuRvxqaSDEuEasQZ5j" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Clone it to your workspace

On the template page, you can:

* review the description
* copy the link
* clone it to your workspace

Click **Clone to workspace**.

The workflow is copied into your workspace. You can edit it before using it.

<figure><img src="/files/2iCpa6tqkfBy5k4Ks7jG" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

## Create a workflow by importing a JSON file

Use this option when you already have a workflow file exported from an earlier workflow.

{% stepper %}
{% step %}

### Click Create

Click **New**.
{% endstep %}

{% step %}

### Select Import from JSON

Select the option to import a workflow from a JSON file.

<figure><img src="/files/rS4T5fWq0jCC2cXlFHds" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Upload your file

Choose the exported JSON file from your computer.
{% endstep %}

{% step %}

### Review and continue

After the file is uploaded, the workflow opens in the builder.

You can review it, update it, and use it as a new starting point.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
Use import when you want to reuse an existing workflow without rebuilding it from scratch.
{% endhint %}

### Tips

* Start with a template if you want results quickly.
* Start from scratch if your process is unique.
* Use import when you want to reuse an existing workflow structure.
* Keep the workflow as **Draft** until you finish testing.

### Next steps

* Learn how workflows work in [Overview](/workflow-builder/overview).
* Learn how to [manage a workflow](/workflow-builder/manage-a-workflow).


# Delete a workflow

Move a workflow to Trash, then delete it permanently from Trash when needed.

Deleting a workflow now happens in 2 steps:

* Move the workflow to **Trash**
* Delete it permanently from **Trash**

{% hint style="warning" %}
Once you delete a workflow from **Trash**, you cannot restore it.
{% endhint %}

### Move a workflow to Trash

Use this option when you are viewing the workflow list.

{% stepper %}
{% step %}

### Open the Flows menu

Click the three-dot menu on the workflow card.
{% endstep %}

{% step %}

### Move the workflow to Trash

You can use either path:

* click **Move to trash**
* click **Settings** → **Move to trash**

<figure><img src="/files/E5W0fcgHVe1kIKRitJKw" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Confirm

Confirm that you want to move the workflow to **Trash**.
{% endstep %}
{% endstepper %}

### Move a workflow to Trash from within the editor

Use this option when the workflow is already open in the builder.

{% stepper %}
{% step %}

### Open the workflow menu

Click the three-dot menu in the builder.
{% endstep %}

{% step %}

### Open settings

Click **Settings**.
{% endstep %}

{% step %}

### Move the workflow to Trash

Click **Move to trash**.

<figure><img src="/files/MZJ75AO0GwM9vcNzPAra" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Confirm

Confirm that you want to move the workflow to **Trash**.
{% endstep %}
{% endstepper %}

### Delete a workflow permanently from Trash

Use this step only when you are sure you no longer need the workflow.

{% stepper %}
{% step %}

### Open Trash

Go to **Trash**.
{% endstep %}

{% step %}

### Select the workflow

Find the workflow you want to remove permanently.

<figure><img src="/files/diIBPhPaS8IYBPH7OMxd" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Delete permanently

Click **Delete**.
{% endstep %}

{% step %}

### Confirm

Confirm the permanent deletion.
{% endstep %}
{% endstepper %}

### Tips

* Use **Move to trash** if you may need the workflow again.
* Export the workflow first if you may need it again.
* Empty **Trash** only when you are sure the workflow is no longer needed.

### Next steps

* Learn how to [manage a workflow](/workflow-builder/manage-a-workflow).
* Learn how to [create a workflow](/workflow-builder/create-a-workflow).


# Manage a workflow

Filter, sort, and manage your Tools, Chats, and Automation workflows from one place.

Use the **Flows** page to find and manage your workflows in one place.

<figure><img src="/files/CSbTgOtQXowfVS8pQ1k1" alt=""><figcaption></figcaption></figure>

## Filter your workflows

Use filters to find the right workflow faster.

You can filter by:

* **Type**
  * Tools
  * Chats
  * Automation
* **Status**
  * Published
  * Draft

<figure><img src="/files/2kj912S6dtkCa0jJEb8o" alt=""><figcaption></figcaption></figure>

## Sort your workflows

Use sorting when you want to review recent work or find a workflow by name.

You can sort by:

* Newest
* Oldest
* Name A-Z
* Name Z-A

<figure><img src="/files/MwZS2xzFWSUD5eyU3um5" alt=""><figcaption></figcaption></figure>

## Manage each workflow

Most workflows use the same actions.

### Draft workflows

For **Tools**, **Chats**, and **Automation**, you can:

* Edit
* Settings
* Duplicate
* Move to trash

<figure><img src="/files/hekhkC3MIRrJY9lNwmdS" alt=""><figcaption></figcaption></figure>

### Published workflows

For all published workflows, you can:

* Edit
* Duplicate
* Unpublish
* Settings
* Move to trash

### Extra actions by workflow type

**Tools** and **Chats** also include:

* Internal link
* Public link
* Access Management
* Run via API

<figure><img src="/files/95xeMZ3HQITgAgYrtRga" alt=""><figcaption></figcaption></figure>

**Automation** does not include public sharing links or access management.

## Tips

* Filter by **Type** first when your workspace has many workflows.
* Use **Draft** to review unfinished work before publishing.
* Move workflows to **Trash** instead of deleting them right away.

### Next steps

* Learn how to [create a workflow](/workflow-builder/create-a-workflow).
* Learn how to [delete a workflow](/workflow-builder/delete-a-workflow).


# Publish a workflow

Publish your workflow to make it live for use or sharing.

Publish a workflow when it is ready for real use.

Click **Publish** in the top-right corner.

{% hint style="warning" %}
Before you publish, make sure the workflow runs without errors.
{% endhint %}

After publishing, the workflow becomes active.

What happens next depends on the workflow type.

<figure><img src="/files/OvvyLXh7Znv2XQOOlFIL" alt=""><figcaption></figcaption></figure>

## Publish Tools and Chats

After publishing a **Tool** or **Chat**, you can usually use it in 3 ways:

* share an **internal link**
* share a **public link**
* run it via **API**

<figure><img src="/files/btAJ6ZE0oMTlicdR99mw" alt=""><figcaption></figcaption></figure>

### Share with an internal link

Use an internal link when access should stay inside your workspace.

Signed-in users can open the workflow from that link.

<figure><img src="/files/lGpJSEmdQD4EgNuc39aK" alt=""><figcaption></figcaption></figure>

### Share with a public link

Use a public link when people outside your workspace need access.

You can copy the link and share it directly.

<figure><img src="/files/rG8Kw4gxqXScyLUultwf" alt=""><figcaption></figcaption></figure>

### Customize the public experience

For public Tools or Chats, you can update the shared page settings.

You can adjust:

* general details such as title, subtitle, logo, cover, color, and style
* input and output settings
* security, including public access or password protection

<figure><img src="/files/CYZ0Ssvgw0mnm0ejxnv7" alt=""><figcaption></figcaption></figure>

### Run via API

Use **API Docs** when you want to connect the workflow to another system.

Available examples include:

* Python
* JavaScript
* cURL

<figure><img src="/files/QDSCKONgKuJTSFCdNF4l" alt=""><figcaption></figcaption></figure>

### Publish Automation

Publishing also makes an **Automation** workflow active.

Automation does not use public sharing links like Tools and Chats.

### Tips

* Publish only after testing with real inputs.
* Use an internal link before switching to a public link.
* Use API access when the workflow needs to run from another app.

### Next steps

* Learn how to [manage a workflow](/workflow-builder/manage-a-workflow).
* Learn how to [unpublish a workflow](/workflow-builder/unpublish-a-workflow).


# Unpublish a workflow

Unpublish a workflow to stop access and move it back to Draft.

Use **Unpublish** when you want to stop a published workflow.

This applies to:

* **Tools**
* **Chats**
* **Automation**

{% hint style="warning" %}
Unpublishing deactivates the workflow and reverts it to **Draft** status.
{% endhint %}

### How to unpublish

1. Go to the **Flows** page.
2. Find the published workflow you want to stop.
3. Click the three-dot menu.
4. Click **Unpublish**.
5. Click **Confirm**.

<figure><img src="/files/dQMlj5HUX79UskaS7AvT" alt=""><figcaption></figcaption></figure>

After that, the workflow returns to **Draft**.

You can edit it, test it, and publish it again later.

### What changes after unpublishing

* the workflow is no longer active
* shared access stops
* the workflow moves back to **Draft**

### Tips

* Unpublish your workflow before making major changes.
* Use **Draft** to test safely before publishing again.
* Double-check shared links after republishing.

### Next steps

* Learn how to [publish a workflow](/workflow-builder/publish-a-workflow).
* Learn how to [manage a workflow](/workflow-builder/manage-a-workflow).


# Deployment

*<mark style="color:red;">Caution:</mark>*&#x20;

* *<mark style="color:red;">Just apply with "</mark><mark style="color:red;">**AI Agents & Chatbots.**</mark><mark style="color:red;">"</mark>*

After publishing "AI Chatbot & Agent,"

You can embed the "AI Chatbot & Agent" into your website.

Follow these steps:

**Step 1:** Click the button "**Edit Flow**"

<figure><img src="/files/ueP8bjzEory2517wzJ9m" alt=""><figcaption></figcaption></figure>

**Step 2:** At the sidebar, click icon "**Deployment**"

<figure><img src="/files/23DiuYweONnL6x5THWHY" alt=""><figcaption></figcaption></figure>

**Step 3:** At the "**Deployment Page**", you can view the information of:

* Access link
* Web gadget
* iFrame (Copy and paste the following code snippet into where you want to add to your website.)

<figure><img src="/files/uZeoICLgjfYc2UNrAQ7a" alt=""><figcaption></figcaption></figure>


# Nodes

This section goes into depth for each Diaflow component and describes typical use cases for each component.

This will display each category of component available to use in your flows.

<figure><img src="/files/1q9Bq0DuO3lpR67JSHNJ" alt=""><figcaption></figcaption></figure>

Please refer to the following sections for more information on each available component.


# Trigger

Input components enable you to gather data from the user of your flow and integrate various types of media, including text, images, videos, and audio.

## 1. Automation

With automation, you can choose one of types:

* At scheduled time
* Webhook
* On App Event
* Microsoft Outlook

<figure><img src="/files/jojnrD9PhleFYRffsfiY" alt=""><figcaption></figcaption></figure>

\------------------------------------

## 2. Apps&#x20;

With the app, you can choose multiple types:

* Short Text
* Long Text
* Checkbox
* Number
* File Upload
* Audio Record
* Dropdown List
* Time

For each type, you will need to input the corresponding information.

<figure><img src="/files/eOxoTTuLQWcmQT4xhpZH" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/c8f3UrxA9PfaLxC84F9V" alt=""><figcaption></figcaption></figure>

\------------------------------------

## 3. AI Chat & Agent

With "AI chat & Agent" , you can view and update the Trigger&#x20;

Follow these steps:

**Step 1**: At "setting AI chat & Agent page", switch mode from "**Simple**" to "**Advanced**"

<figure><img src="/files/Y7syyB823NrymLLt0EaB" alt=""><figcaption></figcaption></figure>

**Step 2**: Will display the Popup confirm. Click the button "**Switch**"

<figure><img src="/files/CcmV2Qs4yBF1ZpLN46bO" alt=""><figcaption></figcaption></figure>

**Step 3**: At "Flow setting", you can view the trigger

<figure><img src="/files/GQCxnVvmx8gnXKpaWZiX" alt=""><figcaption></figcaption></figure>

You can switch the toggle for attachments to allow users to attach files in the chat.

<figure><img src="/files/t3uqEwMAFpd178owGPch" alt=""><figcaption></figcaption></figure>

\------------------------------------

The following sections detail the available Input components.


# When inputs are submitted (Apps)

Add medias input like text, image, video and others into your flows (Just apply with Apps)

<figure><img src="/files/oOFlYzBDrkqzT1jQtAWD" alt=""><figcaption></figcaption></figure>

## Description

Here are the eight types of input components available:

* **Short text**: The Short text Input component lets you enter a brief text such as a single word, a short description or a question.
* **Long text**: The Long Text Input component is designed for entering extended text, like articles, book chapters or scripts.
* **Checkbox**: The Checkbox Input component lets you enable or disable your flow using a switch.
* **Number**: The Number Input component accepts numerical values, either integers or floats.
* **File Upload**: The File Input component lets you upload various types of files, including images, videos, and audio files, for use in your flows.
* **Audio**: The Audio Input component allows you to record audio from a microphone and provide it to components in your Flow. Click the "Start Recording" button to change the Audio Input UI to show the current recording status. To stop recording, click the red square Stop button, which updates the UI to allow audio playback.
* **Dropdown List**: The List Input component allows you to create a list of items from which you can select one or multiple options within your workflow.
* **Time**: The Time Input component lets you choose a specific date and time from a calendar.

<figure><img src="/files/mg1mvHvZU9eo5C2auHlO" alt=""><figcaption></figcaption></figure>

## Component settings

**Short text / Long text / Number:**

| Parameter Name | Description                                                                                                                                                                                                            |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Input Label    | Specify the title for your Input. For example, you can name your audio input "My Voice".                                                                                                                               |
| Variable Name  | Define the variable for the input. Choose a relevant name as it will be used to identify the input in the components.                                                                                                  |
| Description    | Write the description of your Input.                                                                                                                                                                                   |
| Placeholder    | Temporary value assigned to the variable to indicate that it will be replaced or modified later in the program. They can also serve as a reminder that a specific value or data needs to be inserted at a later point. |
| Default Value  | It's the initial value assigned to it when it is declared or created.                                                                                                                                                  |
| Required       | Decide if the Input variable must be declared before it is used.                                                                                                                                                       |

**Checkbox :**&#x20;

| Parameter Name | Description                                                                                                           |
| -------------- | --------------------------------------------------------------------------------------------------------------------- |
| Input Label    | Specify the title for your Input. For example, you can name your audio input "My Voice".                              |
| Variable Name  | Define the variable for the input. Choose a relevant name as it will be used to identify the input in the components. |
| Description    | Write the description of your Input.                                                                                  |
| Default Value  | It's the initial value assigned to it when it is declared or created.                                                 |

**File Upload :**&#x20;

| Parameter Name | Description                                                                                                           |
| -------------- | --------------------------------------------------------------------------------------------------------------------- |
| Input Label    | Specify the title for your Input. For example, you can name your audio input "My Voice".                              |
| Variable Name  | Define the variable for the input. Choose a relevant name as it will be used to identify the input in the components. |
| Description    | Write the description of your Input.                                                                                  |
| Required       | Decide if the Input variable must be declared before it is used.                                                      |

**Audio Record :**&#x20;

| Parameter Name | Description                                                                                                           |
| -------------- | --------------------------------------------------------------------------------------------------------------------- |
| Input Label    | Specify the title for your Input. For example, you can name your audio input "My Voice".                              |
| Variable Name  | Define the variable for the input. Choose a relevant name as it will be used to identify the input in the components. |
| Description    | Write the description of your Input.                                                                                  |
| Required       | Decide if the Input variable must be declared before it is used.                                                      |

**Dropdown List :**&#x20;

| Parameter Name         | Description                                                                                                           |
| ---------------------- | --------------------------------------------------------------------------------------------------------------------- |
| Input Label            | Specify the title for your Input. For example, you can name your audio input "My Voice".                              |
| Variable Name          | Define the variable for the input. Choose a relevant name as it will be used to identify the input in the components. |
| Description            | Write the description of your Input.                                                                                  |
| Style                  | There is two different styles available :  a dropdown or a list.                                                      |
| Accept multiple select | Decide if you can select multiple items in the dropdown list.                                                         |
| Required               | Decide if the Input variable must be declared before it is used.                                                      |
| Options                | Set the value of the item in the dropdown list. You can add an option by clicking the + button.                       |

**Time :**&#x20;

| Parameter Name | Description                                                                                                                                                                                                                              |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Input Label    | Specify the title for your Input. For example, you can name your audio input "My Voice".                                                                                                                                                 |
| Variable Name  | Define the variable for the input. Choose a relevant name as it will be used to identify the input in the components.                                                                                                                    |
| Description    | Write the description of your Input.                                                                                                                                                                                                     |
| Date format    | <p>Decide the date format between five formats.</p><ul><li> DD/MM/YYYY</li><li>MM/DD/YYYY</li><li>DD/MM/YY</li><li>MM/DD/YY</li><li>YYYY/MM/DD</li></ul>                                                                                 |
| Include time   | Decide if you add the time to the date.                                                                                                                                                                                                  |
| Time format    | This option appears only if "Include Time" is turned on. You can choose whether the format is based on 24-hour or 12-hour time.                                                                                                          |
| Timezone       | Appears only if "include Time" is turned on. Timezone refer to a region of the Earth that has the same standard time. Timezones are defined by their offset from Greenwich Mean Time (GMT).  The values vary between GMT -12 to GMT +12. |
| Required       | Decide if the Input variable must be declared before it is used.                                                                                                                                                                         |

## Use case

You can view all the various use cases with different inputs in the[ ](broken://pages/yiGqHpiPyWiE0j7gAmnZ)[Examples](broken://pages/yiGqHpiPyWiE0j7gAmnZ) section.


# Scheduled time (Automation)

Schedule your flow to execute automatically. (Just apply with Automation)

<figure><img src="/files/VjmMRCj8HqspwunI9DYo" alt=""><figcaption></figcaption></figure>

## Description

With the Cronjob component, you can schedule timed execution of the flow. Simply place the component, on its own, anywhere on the flow page to activate scheduled runs.

{% hint style="info" %}
The Cronjob component will execute the flow at the timed period irrespective of whether the flow is loaded in the Diaflow editor.
{% endhint %}

<figure><img src="/files/9LxKRoK1Bc1Wr4pOcb0c" alt="" width="401"><figcaption></figcaption></figure>

## Component settings

| Parameter Name | Description                                                                                                                                                                                                                                          |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Timezone       | Timezone refer to a region of the Earth that has the same standard time. Timezones are defined by their offset from Greenwich Mean Time (GMT).  The values vary between GMT -12 to GMT +12.                                                          |
| Interval type  | <p>Delay value in units specified by the Timing option. </p><p>Available options:</p><ul><li><em>Minute</em></li><li><em>Hours</em></li><li><em>Day</em></li><li><em>Week</em></li><li><em>Month</em></li></ul>                                      |
| Every          | Refer to the regularity of the intervals. It depends on the type of interval. For example, if the interval type is "Hours," you can set the schedule anywhere from every 1 hour to every 24 hours                                                    |
| On             | This option appears only if you select Month or Week. If you choose Month, you will need to select a day to schedule your flow, ranging from 1 to 31. If you choose Week, you must select a day of the week to run your flow, from Monday to Friday. |
| At             | This option appears only if you select Month, Week, or Day. It specifies the time of day you want to run the flow, using the HH:mm format. You can choose hours between 0 and 23, and minutes between 00, 15, 30, and 45.                            |
| Starting       | Specify the start date for the schedule using the MM/DD/YYYY format.                                                                                                                                                                                 |

## Use case

Here is a simple use case for the Cronjob component: it enables you to schedule a daily meeting every day at 9 AM.

<figure><img src="/files/tcbJIZxjQQOAmdRzzqNg" alt="" width="268"><figcaption></figcaption></figure>


# Webhook (Automation)

Receive real-time data from another application. (Just apply with Automation)

Description

The Webhook component facilitates real-time data transmission between applications whenever a specific event occurs. In our algorithm, the webhook acts as an input, enabling our system to receive and process data instantly upon the triggering event.

<figure><img src="/files/SFzke9SLefZz2uDdKXZQ" alt=""><figcaption></figcaption></figure>

## Component settings&#x20;

| Parameter Name                               | Description                                                                                                                                                          |
| -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Webhook endpoint (Test URL / Production URL) | <p>You can copy the webhook endpoint<br><br>- Test URL: Use for the flow with status "Draft."<br><br>- Production URL: Use for the flow with status "Published."</p> |
| API Key                                      | <p>You can choose API Key from the list of API Keys in your Workspace<br><br>Default value: <em>API Key created by Diaflow</em></p>                                  |
| Body                                         | You can add a key and specify whether it is required or optional.                                                                                                    |

## Use case

Here's a use case for the Webhook component: it is used to analyze a PDF document by asking, "*How to scale the B2B engine?*"

<figure><img src="/files/ljHsWOu9p91MGEp4qb2S" alt=""><figcaption></figcaption></figure>

## How to Set up a Node Trigger Webhook

### **Step 1: Set Up the Node Trigger Webhook**

Setting up the node trigger webhook.\
In the **"Config"** tab, select **Type = "Webhook"**

<figure><img src="/files/LpYHyrrrGPgCtJwsE0bq" alt=""><figcaption></figcaption></figure>

### **Step 2: Choose API Key**

Choose API Key from your API Keys List.

Make sure that your API Key is included in the header when calling the webhook. This security

measure helps protect your data and environment.&#x20;

<figure><img src="/files/9WDqp2tVQBh6Hg0NxvDb" alt=""><figcaption></figcaption></figure>

### **Step 3: Configure the Body Fields**

Enter the values in the **Body** section. These are the data fields the system will receive from the Webhook. You can mark them as **"Optional"** or **"Required"**.

**Note:** If the system receives a Webhook request that does not contain the required fields, an error will be returned.

<figure><img src="/files/N5Ho1ObwI4biNgi1D1mJ" alt=""><figcaption></figcaption></figure>

### **Step 4: Preview the Webhook**

You can test the Webhook using one of the following methods:

**Recommendation**: Use **Postman** to preview the Webhook.

<https://www.postman.com/>

**Steps to Test with Postman**

* Copy the Webhook URL on Diaflow

<figure><img src="/files/u4nS2M2HM0wqMEbyMC6z" alt=""><figcaption></figcaption></figure>

* Open **Postman**.
* Use the **"POST"** method.
* Paste the Webhook URL.
* Go to the **"Body"** tab:
  * Select **"Raw"** format.
  * Enter the data fields (e.g., Name, Age, Gender).

<figure><img src="/files/ae2xS0z16FObPgPYiHps" alt=""><figcaption></figcaption></figure>

* Click **"Send"**.
* If the response contains `"success": true`, the connection is successful. You can now use this Webhook configuration to transmit data.

<figure><img src="/files/KApkOuvTMWKsyQUyWghU" alt=""><figcaption></figcaption></figure>


# Microsoft Outlook (Automation)

Automatically control your Microsoft Outlook application (Just apply with Automation)

<figure><img src="/files/0MymVvweotb8jTh9g0yt" alt=""><figcaption></figcaption></figure>

## Description

The Microsoft Outlook component supports a variety of tasks and can handle four different events with the trigger type "Microsoft Outlook."

* When a new email is received in a mailbox
* When there is a new attachment
* When a new email is received matching a search criteria
* When a new message in folder is received

## Component settings&#x20;

| Parameter Name | Description                                                                                                                                                           |
| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Event          | <p>The event of Outlook mail. </p><p>Options: </p><ul><li>New Email </li><li>New Attachment </li><li>New Email Matching Search </li><li>New Email in Folder</li></ul> |
| Account        | Select the email to activate the trigger Click "Connect an account" button to open an Outlook authorization window.                                                   |

## Use case

Here is a simple use case of the Microsoft Outlook component, where the Microsoft Outlook component is being used with the Slack component to program a message in the general channel when you receive a email.

<figure><img src="/files/NOFi83Lrg7sF2JKdAHbw" alt=""><figcaption></figcaption></figure>


# Automatic trigger


# On app event

**On app event** is an **Automatic trigger**.

It starts your workflow when something happens in another app.

For example, a workflow can start when a new row is added, a file is uploaded, or a calendar event is created.

<figure><img src="/files/QfH5aaqquPwLNauxZVMl" alt=""><figcaption></figcaption></figure>

## When to use it

Use **On app event** when you want your workflow to run automatically from business activity.

This is useful when your team works in tools like tables, email, storage, calendars, or other connected apps.

## How it works

1. Add a **Trigger** node.
2. Choose **On app event** as the type.
3. Select the app you want to monitor.
4. Choose the event that should start the workflow.
5. Complete the fields shown for that app.

Once the event happens, Diaflow starts the workflow automatically.

## Choose an app

After you select **On app event**, you can choose the app you want to receive the trigger from.

There are multiple apps available to choose from.

You can search for an app, browse built-in apps, or pick from the available trigger apps list.

The selected app becomes the source that tells Diaflow when to start the workflow.

## Choose the trigger event

After you choose an app, you select the event that should trigger the workflow.

This is the action you want Diaflow to watch for.

Common examples include:

* A new record is created.
* An existing record is updated.
* A file is added.

The available events depend on the app you selected.

## Fill in the fields below

After you choose the app, more fields appear below.

These fields help Diaflow understand exactly what to watch.

For example, you may need to choose:

* A table
* A sheet
* A folder
* A calendar
* A specific trigger event

The field names change based on the selected app.

You only need to choose the options that match your use case.

## Example

If you choose **Diaflow Tables**, you can decide:

* which table to use
* which sheet to use
* which event should trigger the workflow

For example, you can start a workflow every time a **New Row** is created.

## Why teams use it

* It removes manual work.
* It helps teams react faster.
* It keeps processes consistent across apps.

## Good to know

* **On app event** belongs to **Automatic trigger**.
* The available fields depend on the selected app.
* The available events also depend on the selected app.
* You can change the app later if needed.

### Next steps

* Learn how **Trigger** works in [Trigger](/workflow-builder/nodes/trigger).
* Compare it with [Schedule](/workflow-builder/nodes/trigger/automatic-trigger/schedule).
* Compare it with [Webhook](/workflow-builder/nodes/trigger/automatic-trigger/webhook).


# Schedule

**Schedule** is an **Automatic trigger**.

It starts your workflow automatically at the time you choose.

You can set it to run by **month**, **week**, **day**, **hour**, or **minute**.

<figure><img src="/files/2S0IhuEMWPO29WloiltK" alt=""><figcaption></figcaption></figure>

## When to use it

Use **Schedule** when you want a workflow to run on a fixed timing.

This works well for reminders, recurring reports, regular checks, and routine business tasks.

## How it works

1. Add a **Trigger** node.
2. Choose **At scheduled time** as the type.
3. Click **Add** in the **Schedules** section.
4. Choose when the workflow should run.
5. Save the schedule.

After that, Diaflow runs the workflow automatically based on your selected timing.

## Choose how often it should run

When you add a schedule, you choose the **Interval type**.

This decides the repeat pattern for the workflow.

You can choose:

* **Months**
* **Weeks**
* **Days**
* **Hours**
* **Minutes**

This gives you flexibility to match the schedule to your business process.

## Set the schedule details

After choosing the interval type, more fields appear below.

These fields help you define the exact timing.

For example, you can choose:

* the **Timezone**
* how often the workflow repeats
* the day or time it should run
* the date when the schedule should start

Diaflow then shows a summary so you can confirm the timing before saving.

## Example

You can schedule a workflow to run:

* every month
* on the 1st day
* at `00:00`
* starting from a chosen date

This is useful for monthly reporting, billing reminders, or recurring operations.

## Why teams use it

* It reduces repetitive manual work.
* It keeps recurring processes on time.
* It helps teams stay consistent.

## Good to know

* **Schedule** belongs to **Automatic trigger**.
* You can choose different repeat patterns such as monthly or daily.
* The visible fields change depending on the interval type you select.
* The timezone affects when the workflow runs.

### Next steps

* Learn how **Trigger** works in [Trigger](/workflow-builder/nodes/trigger).
* Compare it with [On app event](/workflow-builder/nodes/trigger/automatic-trigger/on-app-event).
* Compare it with [Webhook](/workflow-builder/nodes/trigger/automatic-trigger/webhook).


# Webhook

**Webhook** is an **Automatic trigger**.

It starts your workflow when another system sends data to a webhook URL.

This is useful when you want Diaflow to receive information from forms, apps, or external platforms.

<figure><img src="/files/EhTUrJHiUPlZVn8m5H5a" alt=""><figcaption></figcaption></figure>

## When to use it

Use **Webhook** when another tool needs to send data into your workflow automatically.

This works well for lead capture, status updates, form submissions, and system-to-system notifications.

## How it works

1. Add a **Trigger** node.
2. Choose **Webhook** as the type.
3. Select the webhook URL you want to use.
4. Choose or create an **API Key**.
5. Add the fields you want to receive in the **Body** section.

Once an external system sends data to that webhook, Diaflow starts the workflow.

## Test URL and Production URL

Webhook provides 2 URL modes:

* **Test URL**
* **Production URL**

Use **Test URL** while you are setting up and checking your workflow.

Use **Production URL** when the workflow is ready for live use.

{% hint style="info" %}
The **Production URL** becomes available after you publish the workflow.
{% endhint %}

## API Key

Use an **API Key** to control who can send data to the webhook.

You can select an existing key or manage your keys from the same section.

This helps keep the webhook secure.

## Add the fields you want to receive

In the **Body** section, you define the fields that the webhook should accept.

Each field represents a piece of incoming data.

For example, you can add fields like:

* `name`
* `email`
* `message`

You can mark a field as optional when it does not need to be sent every time.

This helps you structure the incoming data before it moves to the next steps in the workflow.

## Example

A website form can send the following data to your webhook:

* customer name
* email address
* request details

When the data arrives, the workflow can continue automatically with the next actions.

## Why teams use it

* It connects Diaflow to external systems.
* It reduces manual data entry.
* It helps teams respond faster to incoming requests.

## Good to know

* **Webhook** belongs to **Automatic trigger**.
* **Test URL** is best for setup and checking.
* **Production URL** is for live use after publishing.
* The fields in **Body** define the data structure you expect to receive.

### Next steps

* Learn how **Trigger** works in [Trigger](/workflow-builder/nodes/trigger).
* Compare it with [On app event](/workflow-builder/nodes/trigger/automatic-trigger/on-app-event).
* Compare it with [Schedule](/workflow-builder/nodes/trigger/automatic-trigger/schedule).


# Manual trigger


# Click a button

**Click a button** is a **Manual trigger**.

It starts the workflow only when someone clicks **Run**.

This trigger does **not** collect or send any input.

<figure><img src="/files/qMv01oQ4kljur250vybK" alt=""><figcaption></figcaption></figure>

## When to use it

* When you want to run a workflow on demand.
* When the workflow does not need form fields, chat input, or external data.
* When you want a simple trigger for internal tools or quick manual tasks.

## How it works

1. Add a **Trigger** node.
2. Choose **Click a button** as the type.
3. Click **Run** to start the workflow.

That’s it. The workflow starts immediately, with no input payload.

## Good to know

Diaflow groups triggers into **Automatic trigger** and **Manual trigger**.

**Click a button** belongs to **Manual trigger** and is the simplest way to start a workflow by hand.

### Next steps

* Learn how **Trigger** works in [Trigger](/workflow-builder/nodes/trigger).
* Compare it with [Submit a form](/workflow-builder/nodes/trigger/manual-trigger/submit-a-form).
* Compare it with [Chat](/workflow-builder/nodes/trigger/manual-trigger/chat).


# Submit a form

**Submit a form** is a **Manual trigger**.

It starts the workflow when someone fills out a form and clicks **OK**.

<figure><img src="/files/lheh71no5RgT8pidzjb2" alt=""><figcaption></figcaption></figure>

This trigger supports 8 input types:

* **Short Text**
* **Long Text**
* **Checkbox**
* **Number**
* **File Upload**
* **Audio Record**
* **Dropdown List**
* **Time**

Each input creates a value you can reuse in later nodes.

<figure><img src="/files/2CzohwAHDU7DFT9O41XG" alt=""><figcaption></figcaption></figure>

## When to use it

Use **Submit a form** when your workflow needs structured user input before it runs.

It works well for internal tools, approval forms, upload flows, and guided data collection.

## How it works

1. Add a **Trigger** node.
2. Choose **Submit a form** as the type.
3. Add one or more form inputs.
4. Configure each input field.
5. Connect the trigger to downstream nodes.

When the form is submitted, Diaflow sends the entered values to the workflow.

## Input types

* **Short Text:** Use this for short answers, names, titles, or IDs.
* **Long Text:** Use this for detailed answers, notes, prompts, or descriptions.
* **Checkbox:** Use this for a yes or no value.
* **Number:** Use this for integers or decimal values.
* **File Upload:** Use this when the workflow needs a file from the user.
* **Audio Record:** Use this when the workflow needs a recorded voice input.
* **Dropdown List:** Use this when the user should choose from predefined options.
* **Time:** Use this when the workflow needs a date or date-time value.

## Field settings

### Settings available on most inputs

* **Input Label** — the field name shown to the user.
* **Variable Name** — the variable name that other nodes use to reference this input.
* **Description** — helper text that explains the field.

## Variable Name

**Variable Name** is where you define the value name for later nodes. Other nodes use this name when they need to reference the submitted form data.

Use clear names like `customer_name`, `meeting_time`, or `source_file`. In downstream nodes, type `@` and choose the variable you want to insert.

## Good to know

* **Submit a form** belongs to **Manual trigger**.
* Required fields must be completed before the workflow starts.
* Dropdown lists help keep user input consistent.

### Next steps

* Learn how **Trigger** works in [Trigger](/workflow-builder/nodes/trigger).
* Compare it with [Click a button](/workflow-builder/nodes/trigger/manual-trigger/click-a-button).
* See the related app trigger in [When inputs are submitted (Apps)](/workflow-builder/nodes/trigger/when-inputs-are-submitted-apps).


# Chat

**Chat** is a **Manual trigger**.

It starts the workflow when a user sends a message in the chat interface.

When you choose **Chat**, you can build it in 2 modes:

* **Simple mode**
* **Expert mode**

<figure><img src="/files/6mfjgytuPsRceFA2ghhr" alt=""><figcaption></figcaption></figure>

## When to use it

Use **Chat** when you want people to ask questions and get answers in a conversational UI.

It works well for AI assistants, support bots, internal copilots, and knowledge assistants.

## Simple mode

**Simple mode** is the fastest way to build a chatbot.

You do not need to design the full flow manually.

Instead, you configure the chatbot from built-in settings such as:

* **Response settings**
* **Suggested Questions**
* **Opening text & questions**
* **AI Engine**
* **Attachment**
* **Suggest follow-up questions**
* **Knowledge Sources**

This mode is best when you want to launch a chatbot quickly with standard behavior and fewer setup steps.

<figure><img src="/files/cmzV51NC4lIBmHdfqwIF" alt=""><figcaption></figcaption></figure>

## Expert mode

**Expert mode** gives you full workflow control.

When you switch to **Expert mode**, the chat is built as a normal workflow.

You can add and connect nodes just like any other workflow.

This mode is more flexible. It lets you control the logic inside the chatbot in more detail.

For example, you can decide how messages are processed, which nodes run, and how outputs are generated.

<figure><img src="/files/zHfKGZPZzGEP9XQNC4Bp" alt=""><figcaption></figcaption></figure>

## Simple mode vs Expert mode

* Use **Simple mode** for faster setup and basic chatbot configuration.
* Use **Expert mode** when you need custom logic and more control.
* You can use **Expert mode** to build more advanced chat behavior with multiple nodes.

## How it works

1. Add a **Trigger** node.
2. Choose **Chat** as the type.
3. Select **Simple mode** or **Expert mode**.
4. Configure the chatbot.
5. Test the chat before publishing.

## Good to know

* **Chat** belongs to **Manual trigger**.
* **Simple mode** is easier to set up.
* **Expert mode** is more flexible and supports more advanced flows.
* You can allow file attachments in chat when that option is enabled.

### Next steps

* Learn how **Trigger** works in [Trigger](/workflow-builder/nodes/trigger).
* Compare it with [Click a button](/workflow-builder/nodes/trigger/manual-trigger/click-a-button).
* Compare it with [Submit a form](/workflow-builder/nodes/trigger/manual-trigger/submit-a-form).


# Outputs (Apps)

Show the final result of your app as text, charts, files, images, audio, or video.

Output components show the final result of your app to end users.

Use them when your workflow should return something people can read, view, play, or download.

<figure><img src="/files/2vgcMqeahe7wLmooMC7K" alt=""><figcaption></figcaption></figure>

### How outputs work

1. Connect an output to a step that returns data.
2. Give the output a clear title.
3. Test the workflow and review the result.

### Available output types

* [Text output](/workflow-builder/nodes/outputs-apps/text-output): show answers, summaries, or recommendations.
* [Chart output](/workflow-builder/nodes/outputs-apps/chart-output): show business data as a chart.
* [Image output](/workflow-builder/nodes/outputs-apps/image-output): show an image returned by the workflow.
* [Video output](/workflow-builder/nodes/outputs-apps/video-output): show a video result in the app.
* [Audio output](/workflow-builder/nodes/outputs-apps/audio-output): play audio returned by the workflow.
* [File output](/workflow-builder/nodes/outputs-apps/file-output): return a file for download.

### Standard output types and Custom Field

The Output node includes 6 standard output types and a **Custom Field** option.

The 6 standard output types are **Text**, **Chart**, **Image**, **Video**, **Audio**, and **File**.

When you choose one of these standard types, the output value comes from the list of outputs created by earlier nodes.

Use **Custom Field** when you want to define extra output fields yourself.

For each custom field, you can choose one of the same 6 output types.

You can then enter the value manually for that field.

<figure><img src="/files/EPErOR8aPMQHEPNCY8B0" alt=""><figcaption></figcaption></figure>

### Choose the right output

* Use **Text output** for messages, reports, and explanations.
* Use **Chart output** for trends, comparisons, and KPI summaries.
* Use **Image**, **Video**, **Audio**, or **File output** for media results.

Open the page for each output type to see setup details and examples.


# Text output

Show text results in your app, such as summaries, answers, or recommendations.

Text output shows text from an earlier node in your published app.

Use it for AI answers, summaries, recommendations, or any final message users need to read.

<figure><img src="/files/j8Tdm3SWoH7bYH87r69C" alt=""><figcaption></figcaption></figure>

### Before you start

Choose a field from an earlier node that returns text.

For example, you can use the output from a **Language Models** node.

<figure><img src="/files/whbfGP9RRIN1KHyixQmO" alt=""><figcaption></figcaption></figure>

### How to set it up

1. In the **Output** node, click **+ Add**.
2. Select a text field from the list of earlier nodes.
3. Click **Ok**.
4. Choose **Text** as the output type.
5. Enter a clear **Title**.
6. Turn on **Use Markdown format** if needed.
7. Click **Ok** and test the flow.

### Settings

| Setting             | What it does                                                                    |
| ------------------- | ------------------------------------------------------------------------------- |
| Output type         | Sets how the selected field is shown in the app. Choose **Text** for text data. |
| Title               | The label shown above the result, such as `Summary` or `Recommended action`.    |
| Use Markdown format | Turn this on if you want headings, lists, or links to display with formatting.  |

### Good business uses

* Show a meeting summary.
* Return a recommended next action.
* Display a customer reply drafted by AI.

### Next steps

* Go back to [Outputs (Apps)](/workflow-builder/nodes/outputs-apps).
* Learn when to use [Chart output](/workflow-builder/nodes/outputs-apps/chart-output).
* Continue with [Create a workflow](/workflow-builder/create-a-workflow).


# Chart output

Show chart-ready business data as a visual in your app.

Chart output shows chart-ready data from an earlier node as a visual in your app.

Use it when people need a quick visual view of business results.

<figure><img src="/files/Z4UNUgKIJViq7Qzy1RVt" alt=""><figcaption></figcaption></figure>

### Before you start

Choose a field from an earlier node that returns chart-ready data.

If your data is not ready yet, use [Convert JSON to Chart Data](/workflow-builder/nodes/built-in-tools/convert-json-to-chart-data) first.

<figure><img src="/files/whbfGP9RRIN1KHyixQmO" alt=""><figcaption></figcaption></figure>

### How to set it up

1. In the **Output** node, click **+ Add**.
2. Select a field with chart-ready data from the list of earlier nodes.
3. Click **Ok**.
4. Choose **Chart** as the output type.
5. Enter a clear **Title**.
6. Click **Ok** and test the flow.

### Settings

| Setting     | What it does                                                                            |
| ----------- | --------------------------------------------------------------------------------------- |
| Output type | Sets how the selected field is shown in the app. Choose **Chart** for chart-ready data. |
| Title       | The label shown above the chart, such as `Sales by month`.                              |

### Good business uses

* Show sales trends over time.
* Compare team or region performance.
* Summarize survey results visually.

### Next steps

* Go back to [Outputs (Apps)](/workflow-builder/nodes/outputs-apps).
* Prepare chart-ready data with [Convert JSON to Chart Data](/workflow-builder/nodes/built-in-tools/convert-json-to-chart-data).
* Compare it with [Text output](/workflow-builder/nodes/outputs-apps/text-output).


# Video output

Show a video returned by your workflow in your app.

Video output displays a video from an earlier node inside your app.

Use it when your workflow returns a finished video for people to watch.

<figure><img src="/files/GbP3Anl3FeagyU69tAOf" alt=""><figcaption></figcaption></figure>

### Before you start

Choose a field from an earlier node that returns a video file.

<figure><img src="/files/PHZGaa9zbwiihFF0y8sY" alt="" width="375"><figcaption></figcaption></figure>

### How to set it up

1. In the **Output** node, click **+ Add**.
2. Select a video field from the list of earlier nodes.
3. Click **Ok**.
4. Choose **Video** as the output type.
5. Enter a clear **Title**.
6. Click **Ok** and test the flow.

<figure><img src="/files/KrLmpGOtahFFLIXqq9Nt" alt="" width="367"><figcaption></figcaption></figure>

### Settings

| Setting     | What it does                                                                      |
| ----------- | --------------------------------------------------------------------------------- |
| Output type | Sets how the selected field is shown in the app. Choose **Video** for video data. |
| Title       | The label shown above the video, such as `Final video`.                           |

### Good business uses

* Return a generated promo clip.
* Show a processed training video.
* Deliver a personalized video result.

### Next steps

* Go back to [Outputs (Apps)](/workflow-builder/nodes/outputs-apps).
* Learn how to generate videos with [Video Generation](/workflow-builder/nodes/built-in-tools/video-generation).
* Compare it with [Image output](/workflow-builder/nodes/outputs-apps/image-output).


# Audio output

Play audio returned by your workflow in your app.

Audio output lets users listen to audio from an earlier node.

Use it for voice replies, spoken summaries, or other audio results.

<figure><img src="/files/OEczo9wdJd3yhvHtnfCM" alt=""><figcaption></figcaption></figure>

### What users can do

* Play the audio result.
* Change playback speed.
* Download the audio file.

### Before you start

Choose a field from an earlier node that returns audio.

### How to set it up

1. In the **Output** node, click **+ Add**.
2. Select an audio field from the list of earlier nodes.
3. Click **Ok**.
4. Choose **Audio** as the output type.
5. Enter a clear **Title**.
6. Click **Ok** and test the flow.

<figure><img src="/files/5ZC0UgnpQ4aEzq0AMKUg" alt="" width="375"><figcaption></figcaption></figure>

### Settings

| Setting     | What it does                                                                      |
| ----------- | --------------------------------------------------------------------------------- |
| Output type | Sets how the selected field is shown in the app. Choose **Audio** for audio data. |
| Title       | The label shown above the audio player, such as `Voice reply`.                    |

### Good business uses

* Return a spoken answer.
* Share a voice version of a report.
* Deliver an audio response for mobile users.

### Next steps

* Go back to [Outputs (Apps)](/workflow-builder/nodes/outputs-apps).
* Learn about speech models in [TTS Variants](/workflow-builder/nodes/private-ai-llm-models/openai/tts-model).
* Compare it with [Video output](/workflow-builder/nodes/outputs-apps/video-output).


# Image output

Show images returned by your workflow in your app.

Image output displays an image from an earlier node inside your app.

Use it when your workflow creates or returns an image that users should view.

<figure><img src="/files/oUZWKu5EsS7tPA9aHJmU" alt=""><figcaption></figcaption></figure>

### Before you start

Choose a field from an earlier node that returns an image.

<figure><img src="/files/GKLu66HizkgmrhltwSIu" alt="" width="375"><figcaption></figcaption></figure>

### How to set it up

1. In the **Output** node, click **+ Add**.
2. Select an image field from the list of earlier nodes.
3. Click **Ok**.
4. Choose **Image** as the output type.
5. Enter a clear **Title**.
6. Click **Ok** and test the flow.

<figure><img src="/files/bZhTWktunYcxmW0yXkEr" alt="" width="351"><figcaption></figcaption></figure>

### Settings

| Setting     | What it does                                                                      |
| ----------- | --------------------------------------------------------------------------------- |
| Output type | Sets how the selected field is shown in the app. Choose **Image** for image data. |
| Title       | The label shown above the image, such as `Generated image`.                       |

### Good business uses

* Show a generated product visual.
* Return a processed image for review.
* Share a final design preview.

### Next steps

* Go back to [Outputs (Apps)](/workflow-builder/nodes/outputs-apps).
* Learn how to create images with [Image Generation](/workflow-builder/nodes/built-in-tools/image-generation).
* Compare it with [File output](/workflow-builder/nodes/outputs-apps/file-output).


# File output

Return files such as PDFs, spreadsheets, or reports for download.

File output lets your app return a file from an earlier node for users to download.

Use it when the final result should be a document, spreadsheet, PDF, or other file.

<figure><img src="/files/M2WkPO5bMPWHAeFqlHjj" alt=""><figcaption></figcaption></figure>

### Before you start

Choose a field from an earlier node that returns a file.

<figure><img src="/files/PbY0N6gJVQG2NzPNaQln" alt="" width="375"><figcaption></figcaption></figure>

### How to set it up

1. In the **Output** node, click **+ Add**.
2. Select a file field from the list of earlier nodes.
3. Click **Ok**.
4. Choose **File** as the output type.
5. Enter a clear **Title**.
6. Click **Ok** and test the flow.

<figure><img src="/files/QTugGRTjtZZXv3rzQvH6" alt="" width="375"><figcaption></figcaption></figure>

### Settings

| Setting     | What it does                                                                    |
| ----------- | ------------------------------------------------------------------------------- |
| Output type | Sets how the selected field is shown in the app. Choose **File** for file data. |
| Title       | The label shown above the file, such as `Monthly report` or `Exported file`.    |

### Good business uses

* Deliver a generated report.
* Return an exported spreadsheet.
* Share a finished document for download.

### Next steps

* Go back to [Outputs (Apps)](/workflow-builder/nodes/outputs-apps).
* Create downloadable files with [File creator](/workflow-builder/nodes/built-in-tools/file-creator).
* Export spreadsheet results with [Spreadsheet Creator](/workflow-builder/nodes/built-in-tools/spreadsheet-creator).


# Built in tools

This section delves into Diaflow's components, explaining their functions and providing typical use cases for each.&#x20;

The components are:

* Branch
* Multiple data source to JSON
* Video to audio
* Get current date and time
* Web scrapper
* Document to plain text
* Spreadsheet analyzer
* Convert JSON to chart data
* PDF to image
* Get weather information
* HTTP Request
* Get GEO Location
* JSON Formatter
* SMTP
* Loop


# Branch

This component enables you to divide the flow into multiple segments, producing several distinct outputs.

<figure><img src="/files/Tmwy6ROCyW5Q9UWOnaPn" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/zyTfwm2hqHKTm0l1zxYj" alt="" width="419"><figcaption></figcaption></figure>

## Description

**What it does**: The Branch node allows you to create decision points in your workflow, making it adaptable and efficient. It's like saying, "If this condition is true, do this; otherwise, do that.

**When to use it?** Imagine you are processing customer orders. You can use a Branch node to check if the order total exceeds a certain amount. If it does, you might send the order for manager approval; if not, you can automatically process the order.

<figure><img src="/files/4aSCtQOfc4q1XTa7iD3v" alt=""><figcaption></figcaption></figure>

## Component settings

| Parameter Name   | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Only continue if | The condition to continue on this branch. On the first dropdown list you have to enter your input data. The second is all the 21 different conditions. The third is to complete the condition with a text or a date                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| Condition        | <p>Refers to all the 21 different conditions: </p><ul><li>(Text) Contains</li><li>(Text) Does not contain</li><li>(Text) Exactly matches</li><li>(Text) Does not exactly match</li><li>(Text) Is in</li><li>(Text) Is not in</li><li>(Text) Starts with</li><li>(Text) Does not start with</li><li>(Text) Ends with</li><li>(Text) Does not end with</li><li>(File format) Are</li><li>(Number) Equals</li><li>(Number) Greater than</li><li>(Number) Less than</li><li>(Date/time) Equal</li><li>(Date/time) After</li><li>(Date/time) Before</li><li>(Boolean) Is true</li><li>(Boolean) Is false</li><li>Exists</li><li>Does not exists</li><li>Is Null</li><li>Is Not Null</li></ul> |
| Form             | <p>Only available for Text, File format, Number and Date/time. </p><p>This allows you to enter a text, a number or a date/time.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |

## Advanced configurations

This Branch component has no advanced configurations.

## Use case

Here is a simple use case of the Branch component, where the Branch component is being used with the condition "Text Starts with".

<figure><img src="/files/TUUqiyFojHpqJ6VdwF4x" alt=""><figcaption></figcaption></figure>


# Split JSON (JSON Formatter)

Turn messy text, CSV files, or previous step output into clean structured data for the rest of your workflow.

## Split JSON (JSON Formatter)

### Overview & The "Smart" Mechanism

The **JSON Formatter** turns messy text into clean, structured data that other nodes can understand. Think of it like an operations assistant who takes scattered notes, spreadsheets, and copied responses, then reorganizes everything into one consistent format.

It is especially useful when previous steps return content mixed with extra words, broken formatting, or CSV data. This node helps you turn that content into something you can filter, merge, loop through, or display.

#### Smart features

* **Instant pass-through for clean data** : if the input is already structured, the node keeps it as is.
* **Automatic cleanup** : if the input includes extra text before or after the useful content, the node removes that noise first.
* **Flexible format fixing** : if the content is close to valid structured data, the node tries to repair it automatically.
* **AI-assisted recovery** : if standard cleanup does not work, the node makes one more attempt using AI to rebuild the content into a usable format.
* **CSV support** : if you provide a CSV file link, the node converts each row into a separate record.

<figure><img src="/files/XEMV36dfIGBqCEFRXaRt" alt=""><figcaption></figcaption></figure>

### Common Use Cases

* Clean an AI response before sending customer details into a table, chart, or follow-up action.
* Turn a sales or inventory CSV file into structured records for reports, alerts, or bulk updates.
* Standardize copied website content or external system responses before filtering, merging, or looping through them.

### How to Configure

* **Input** : Select the content you want to clean.
  * Use **@** to pull output from a previous node.
  * Paste messy text if it contains customer details, product data, or other structured information inside it.
  * Paste a `.csv` file link if you want the node to turn each row into a record.
* **Cache** : Turn this on if you expect the same input to be used often.
* **Cache time** : Enter how long Diaflow should keep the saved result before refreshing it.
* Run the workflow and review the output. The result should be clean structured data that later nodes can use.

<figure><img src="/files/rWXb0IMkDANvaPq2Vow6" alt=""><figcaption></figcaption></figure>

### Before & After Example

**Before**

```
Here is the customer record: {"name":"Acme","status":"Active"}
```

**After**

```json
{
  "name": "Acme",
  "status": "Active"
}
```

### Important Warnings & Best Practices

* Use a valid and accessible CSV file link. If the file cannot be reached, the workflow may fail.
* Avoid very large inputs, such as full web pages or oversized files. Large content can slow the workflow significantly.
* If your text contains several separate structured blocks, the node may keep only the main outer block. Split complex content first when possible.
* Cache is most helpful when the input is already clean and structured. Messy text may still need to be processed again on each run.
* Do not send secrets, passwords, or highly sensitive personal data unless necessary for the workflow.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow)
* Browse related nodes in [Component List](/workflow-builder/component-list)


# Merge JSON (Multiple Data Source to JSON)

Combine values from different steps into one structured record you can reuse anywhere in your workflow.

## Merge JSON (Multiple Data Source to JSON)

### Overview & The "Smart" Mechanism

The Merge JSON node gathers values from different steps and combines them into one clean record. Think of it like a project coordinator collecting updates from sales, support, and finance, then packing them into one ready-to-use briefing.

This is useful when your workflow has data scattered across several nodes and you need one structured output for the next step. It saves you from manually rebuilding that combined record every time.

#### Smart features

* **Pulls from multiple places at once** : select values from triggers and earlier nodes in one step.
* **Builds a ready-to-use record automatically** : the node combines everything into one structured output.
* **Cleans field names for you** : long or nested field paths are converted into safer, simpler field names.
* **Supports deep values** : you can pull details from nested fields, not just top-level outputs.
* **Works well for handoffs** : the output is packaged in a format that can be passed to later steps like requests, loops, prompts, or outputs.

<figure><img src="/files/AMoJY1cxCY1XU1Zl3bpJ" alt=""><figcaption></figcaption></figure>

### Common Use Cases

* Combine form details, AI-generated text, and account data into one record before sending it to another system.
* Gather customer information from several workflow steps before creating a report, email, or approval summary.
* Prepare one clean payload for a loop, table update, or outbound request without rebuilding the fields by hand.

### How to Configure

* **Input field** : Add each value you want to collect into the final record.
  * Pick fields from the trigger or previous nodes.
  * Enter one field reference per item, such as a customer email, order ID, summary, or status.
  * Use the field path only. Do not add extra brackets or wrapping text.
* Add all required fields in the order you want to manage them.
* Run the workflow and review the result. The node returns one combined record that contains all selected values.
* If you plan to use the result in a later step, select the first item from this node’s output when needed.

<figure><img src="/files/86CvjjtSBmZZcXEhpX0L" alt=""><figcaption></figcaption></figure>

### Before & After Example

**Before**

```
trigger.name = Alice Wong
trigger.email = alice@company.com
summary_node.data = Interested in enterprise plan
status_node.data.account_status = active
```

**After**

```json
[
  {
    "name": "Alice Wong",
    "email": "alice@company.com",
    "summary_node_data": "Interested in enterprise plan",
    "status_node_data_account_status": "active"
  }
]
```

### Important Warnings & Best Practices

* This node returns a **one-item record list**, not a single standalone record. If a later step expects one record, make sure you use the first item.
* If two selected fields turn into the same final field name, the later value replaces the earlier one. Review similar field names carefully before saving.
* Field names are created automatically from the source path. If you need shorter or more business-friendly names, add a follow-up transformation step.
* Some numbers or yes/no values may arrive as text depending on the source node. Double-check important values before using them in conditions or calculations.
* If a selected field cannot be found, the output may contain an empty value or unresolved text. Test the flow once to confirm every field is available.
* If you leave the field list empty, the node still returns an empty record. Make sure you add at least the fields you need.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow)
* Browse related nodes in [Component List](/workflow-builder/component-list)


# Video to audio

Convert your video file to audio.

<figure><img src="/files/LryJHqnpVeIArPmIqzNA" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/bAyFPWjZxaVYkOt10JxR" alt=""><figcaption></figcaption></figure>

## Description

**What it does** This component provides a powerful and easy-to-use functionality that enables you to convert various video file formats, including MP4, WMV, MKV, VOB, MOV and AVI into audio files in MP3 format. This ensures that you can extract the audio from your videos efficiently and with high quality making it ideal for creating podcasts, music tracks or audio clips from your existing video content.

The Video to Audio component has the identifier of vta-**X**, where **X** represents the instance number of the Video to Audio component.

**When to use it?** For example, if you record customer service calls as videos, you can use this node to extract the audio for transcription and analysis of customer interactions.

## Component settings

| Parameter Name | Description                                   |
| -------------- | --------------------------------------------- |
| Data           | Select the Video data to be convert to Audio. |

## Advanced configurations

| Options        | Description                                                                                                                                                                                                               |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Enable caching | This option determines whether the results of the component are cached. This means that on the next run of the Flow, Diaflow will utilize the previous computed component output, as long as the inputs have not changed. |
| Caching time   | <p>Only applicable if the "Enable Caching" option has been enabled.<br>This parameter controls how long Diaflow will wait before automatically clearing the cache.</p>                                                    |

## Use case

Here is a simple use case of the Video to Audio component, where the Video to Audio component is being used to generate an audio from an input MP4 file.

<figure><img src="/files/oRwDxC43ZvIN7EJi7Zrj" alt=""><figcaption></figcaption></figure>


# Get Current Date & Time

Get the current day, date, or time in your chosen timezone and format it for the next step in your workflow.

## Get Current Date & Time

### Overview & The "Smart" Mechanism

The **Get Current Date & Time** node gives you the current day, date, or time in the format your workflow needs. Think of it like a digital office clock that can instantly switch between regional formats before handing the result to the next step.

It is useful when you need consistent timestamps for messages, approvals, reports, filenames, or schedule-based workflows. You choose what to return, how it should look, and which timezone it should follow.

#### Smart features

* **Timezone conversion built in** : enter your timezone offset and the node adjusts the current time for that region.
* **Pick only what you need** : return just the day, just the date, just the time, or any combination.
* **Keeps your chosen order** : if you ask for day, then date, then time, the output follows that exact sequence.
* **Flexible display formats** : choose whether the day appears as a name or number, and set date and time formats to match your business needs.
* **Supports half-hour offsets** : useful for regions that do not follow whole-hour timezone differences.

<figure><img src="/files/hk46Ke3IzGVoD0dyT6yR" alt=""><figcaption></figcaption></figure>

### Common Use Cases

* Add the current local date and time to approval emails, reports, or exported files.
* Stamp support tickets, internal notes, or workflow logs with the right regional time.
* Generate today’s date in a fixed format for naming files, filtering records, or scheduling follow-up tasks.

### How to Configure

* **Timezone** : Enter the timezone offset in hours.
  * Use `0` for UTC.
  * Use `7` for UTC+7.
  * Use `-5` for UTC-5.
  * Use `5.5` for regions with half-hour offsets.
* **Retrieval data** : Select what you want the node to return: **Day**, **Date**, **Time**, or a combination of these.
* **Day format** : If you selected **Day**, choose whether you want the full weekday name or the numeric day value.
* **Date format** : If you selected **Date**, enter the format you want, such as `MM/DD/YYYY`, `DD/MM/YYYY`, or `YYYY-MM-DD`.
* **Time format** : If you selected **Time**, choose either 24-hour time or 12-hour time with AM/PM.
* Run the workflow and use the output in your next node as a ready-to-use timestamp string.

<figure><img src="/files/z3JldTLSRDtOgxa72tLD" alt=""><figcaption></figcaption></figure>

### Before & After Example

**Before**

```
Need today's date and time for a customer update in Vietnam.
Retrieval data = Day + Date + Time
Date format = DD/MM/YYYY
Time format = 24-hour
Timezone = 7
```

**After**

```
Tuesday, 14/04/2026, 15:05
```

### Important Warnings & Best Practices

* This node uses a fixed timezone offset. If your region changes time during part of the year, review the offset manually when seasons change.
* Fill in every required format field for the items you select. If you choose **Date** or **Time** without setting the matching format, the workflow may fail.
* Only use **Day**, **Date**, and **Time** in the retrieval list. Other values are ignored.
* The output is always one text string. If a later step needs separate day, date, and time values, you may need an extra formatting step.
* If you use the numeric day option, Sunday is `0`. Keep that in mind if your team expects a different numbering system.
* Stick to the built-in date patterns like `MM/DD/YYYY` or `YYYY-MM-DD`. Unusual custom patterns can produce unexpected results.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow)
* Browse related nodes in [Component List](/workflow-builder/component-list)


# Web Scraper

Extract text, HTML, Markdown, audio, or PDF content from a webpage and pass it into the rest of your workflow.

## Web Scraper

### Overview & The "Smart" Mechanism

The **Web Scraper** pulls content from one or more web pages and turns it into a format your workflow can use. Think of it like a research assistant that visits a page, copies what matters, and hands it back as clean text, HTML, Markdown, audio, or a PDF link.

It is especially useful when you want fresh website content inside Diaflow without copying and pasting by hand. You can feed the result into AI, reports, alerts, summaries, or downstream actions.

#### Smart features

* **Multiple output formats** : extract content as plain text, HTML, Markdown, audio, or PDF depending on what the next step needs.
* **Automatic fallback when a page is hard to read** : the node first tries a fast page-reading method, then switches to browser-style rendering if needed.
* **Better handling for dynamic websites** : if a page relies on scripts or special rendering, the node can still try to capture the visible page content.
* **Custom headers support** : add login or access headers when a page needs them.
* **Multi-page scraping for text modes** : collect content from several URLs in one step when working with text-based output.

<figure><img src="/files/o8Az5U8rLv8SsJuT4Ljm" alt=""><figcaption></figcaption></figure>

### Common Use Cases

* Pull article content from industry websites and send it to an AI node for summarization.
* Capture product pages, help center articles, or policy pages and save the content into reports or knowledge workflows.
* Extract audio from a public video or download a public PDF for transcription, review, or document processing.

### How to Configure

* **URL(s)** : Enter one website address or several.
  * Use one URL when you need a single page.
  * Use multiple URLs when you want to combine text content from several pages.
  * You can also pull the URL from an earlier step using **@**.
* **Content output format** : Select the result type you want:
  * **Plaintext** for summaries, search, AI prompts, and simple analysis.
  * **HTML** if you need the page structure.
  * **Markdown** if you want cleaner formatting for notes, docs, or AI inputs.
  * **Audio** if you want an audio file link from a supported media page.
  * **PDF** if you want a downloadable PDF link.
* **Custom Headers** : Add headers only if the website requires access details, such as authorization or cookies.
* **Enable Cache** : Leave this on if the same page is used often and does not change frequently.
* **Caching time** : Set how long Diaflow should reuse the saved result before checking the page again.
* Run the workflow and inspect the returned content or file link before sending it to the next node.

<figure><img src="/files/ubmi4SyAqrj2QxwUmGZe" alt=""><figcaption></figcaption></figure>

### Before & After Example

**Before**

```
URL: https://example.com/blog/quarterly-market-update
Output format: Plaintext
```

**After**

```
Quarterly Market Update

Demand increased across enterprise software categories in Q2...
Key regions included North America, Europe, and Southeast Asia...
```

### Important Warnings & Best Practices

* **Audio** and **PDF** modes only use the first URL you provide. Extra URLs in the list are ignored.
* When you scrape multiple URLs in text mode, the node combines everything into one long result. If you need page-by-page separation, scrape them one at a time.
* Very large pages can slow down the workflow or return more content than you need. Start with focused pages instead of full sites.
* Some slow or unresponsive websites can delay the workflow for longer than expected.
* If you try to extract plain text from a PDF link, the result may come back empty. Use **PDF** mode for PDF files.
* Use custom headers carefully. Only add them when the site requires access details.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow)
* Browse related nodes in [Component List](/workflow-builder/component-list)


# Document to Plain Text

Turn document files into clean text for the next step in your workflow.

## Document to Plain Text

### Overview & The "Smart" Mechanism

The **Document to Plain Text** node turns document files into readable text. Think of it like an assistant who opens every attachment, reads it, and gives you the important words in one clean note.

Use it when the next step needs document content, not the file itself. It works well for PDFs, Word files, spreadsheets, CSVs, JSON files, text files, web pages saved as HTML, and subtitle files.

#### Smart features

* **Works with one file or many**: send a single file or a batch from an earlier step.
* **Finds the file link automatically**: it can read common file outputs without extra cleanup.
* **Handles scanned PDFs**: if a PDF is image-based, it still tries to read the visible text.
* **Keeps multi-file output organized**: each file is labeled and separated in the final result.
* **Can reuse recent results**: turn on cache when the same files run often.

<figure><img src="/files/FWVAiSfmx50S5vECqALp" alt=""><figcaption></figcaption></figure>

### Common Use Cases

* Turn customer contracts into text before sending them to an AI summary step.
* Extract policy, invoice, or report content from mixed document uploads.
* Read spreadsheet or CSV files as text before routing, checking, or comparing data.

### How to Configure

* **Input**: Select the file field from an earlier step with **@**. You can pass one file or a list of files.
* Use supported file types such as `.pdf`, `.docx`, `.xlsx`, `.xls`, `.csv`, `.json`, `.txt`, `.html`, `.htm`, and `.srt`.
* **Enable caching**: Turn this on when the same document is used often and does not change.
* **Caching time**: Enter how long Diaflow should reuse the saved result. Start with `60` seconds.
* Run the workflow and review the extracted text before sending it to the next node.

<figure><img src="/files/caHK2wUHKTy7uTO84fVj" alt=""><figcaption></figcaption></figure>

### Before & After Example

**Before**

```
Input files:
- signed_contract.pdf
- pricing_sheet.xlsx
```

**After**

```
filename:
signed_contract.pdf
content:
This agreement starts on 1 May 2026 and renews annually.

---

filename:
pricing_sheet.xlsx
content:
Plan | Monthly fee | Seats
Pro  | 299         | 25
```

### Important Warnings & Best Practices

* Very large files can slow the workflow or fail during processing. Split large PDFs or spreadsheets first.
* If one file in a batch is not supported, the whole batch stops. Test mixed file lists early.
* Older `.xls` files may lose some layout or unusual spreadsheet features. Use `.xlsx` when possible.
* `.srt` subtitle files keep their timestamps. Add a cleanup step if you only need spoken text.
* Rare text encodings in CSV or JSON files can drop special characters. Check accents, symbols, and non-English text after import.
* If a filename contains `__`, the displayed filename may appear shortened.
* When cache is on for multiple files, any file change refreshes the whole batch result.
* Usage reporting for scanned PDFs may look simplified right now.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow)
* Browse related nodes in [Component List](/workflow-builder/component-list)


# Retrieve Data from Spreadsheet

Ask questions about a CSV or Excel file and get back the rows, totals, or answers you need.

## Retrieve Data from Spreadsheet

### What does it do?

The **Retrieve Data from Spreadsheet** node lets you ask questions about a spreadsheet and get back the matching data. Think of it like handing a spreadsheet to an analyst and saying, “Show me the top products,” without sorting or filtering the file yourself.

#### Smart Features

* **Reads common spreadsheet files**: Works with `.csv`, `.xls`, and `.xlsx` files.
* **Understands plain-English questions**: In **Use AI** mode, you can ask for totals, top items, or filtered results in everyday language.
* **Prepares the sheet for you**: If you do not define the column structure yourself, Diaflow figures it out automatically.
* **Cleans extra spaces**: It removes accidental spaces in text cells before running your question.
* **Avoids re-importing the same file**: If the same file is already prepared, the node reuses it instead of loading it again.

<figure><img src="/files/0zLT7f9d6zGY6g1k0G2f" alt=""><figcaption></figcaption></figure>

### Real-World Business Value

* Check which products, regions, or teams generated the highest revenue in a sales file.
* Pull only overdue invoices or pending orders from an uploaded report.
* Let operations teams ask spreadsheet questions in plain English instead of editing filters by hand.

### Step-by-Step Setup

* In the **Data** field, select the spreadsheet file from an earlier step using **@**.
* Make sure the file is a `.csv`, `.xls`, or `.xlsx` file.
* In **Action**, keep **Query data from table** selected.
* In **SQL Generate Method**, choose **Use AI** for the easiest setup.
* In **Provider**, leave the default option unless your team has told you to use a different one.
* In the **Input** field, type a plain-English question such as `Show the top 5 products by total revenue`.
* In **Schema**, leave it empty unless your team already prepared a custom table structure for this file.
* Only use **Manually enter SQL** if you already know exactly which custom query you want to run.
* Run the workflow, then open the output to review the returned rows and totals.

<figure><img src="/files/zkwZqsXuJYgewnEWr4zv" alt=""><figcaption></figcaption></figure>

### The Transformation: Before & After

**Before**

```
Spreadsheet file: sales_q1_2026.xlsx

Rows inside the file:
Date       | Region | Product   | Revenue
2026-01-04 | APAC   | Widget A  | 12000
2026-01-09 | EMEA   | Widget B  | 8700
2026-01-12 | APAC   | Widget A  | 14300

Question:
Show total revenue by product
```

**After**

```json
[
  {
    "Product": "Widget A",
    "total_revenue": 26300
  },
  {
    "Product": "Widget B",
    "total_revenue": 8700
  }
]
```

<figure><img src="/files/Cq5xSBTdCyLqfnyrTifg" alt=""><figcaption></figcaption></figure>

### Tips &  Warnings for First-Timers

* Use a real spreadsheet file, not a web link pasted into the question field.
* If you send multiple files, only the first file is used. Split them into separate steps if needed.
* Keep filenames clear and word-based, such as `regional-sales-europe.xlsx`. Avoid filenames that only differ by numbers or symbols.
* Very large spreadsheets can load slowly or fail. Start with a smaller file when testing.
* If your spreadsheet changes, re-upload it with a new file name or path before running again. This helps avoid older results.
* Date columns may behave like plain text. Ask simple date questions first, then confirm the output.
* In **Use AI** mode, the result size is kept short. If you need a longer list, narrow your question or use a more specific filter.
* If a column name in your file is unusual or misspelled, the result may fail. Check the spreadsheet headers first.
* Use **Manually enter SQL** only for advanced use. Most teams should stay with **Use AI**.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow)
* Browse related nodes in [Component List](/workflow-builder/component-list)


# Spreadsheet Creator

Turn structured data into a downloadable CSV or Excel file.

## Spreadsheet Creator

### What does it do?

The **Spreadsheet Creator** node turns structured data into a spreadsheet file you can download, share, or send to someone else. Think of it like an export assistant that takes workflow results and packages them into a ready-to-use report.

#### Smart Features

* **Accepts flexible input**: You can send a list of records, one record, or column-based data.
* **Cleans extra text around the data**: If the input contains unwanted text before or after the data, the node tries to isolate the usable part.
* **Converts one record automatically**: If you send just one item, the node still turns it into a spreadsheet correctly.
* **Creates the file and stores it for you**: The node uploads the finished spreadsheet automatically and returns a secure file link.
* **Adds the file to Diaflow Drive**: The exported file is also registered in your workspace storage so your team can find it later.

<figure><img src="/files/DJNyHVruhx0vWwfEMLqe" alt=""><figcaption></figcaption></figure>

### Real-World Business Value

* Export filtered sales results into Excel and send them to finance or leadership.
* Turn AI-generated tables into CSV files for upload into another business system.
* Convert workflow results into spreadsheet attachments for scheduled reports or customer updates.

### Step-by-Step Setup

* In the **Input Data** field, select the structured output from an earlier node using **@**.
* Make sure the input is structured like records and fields, not plain text.
* In the **Format** field, choose **CSV** if the file will be imported elsewhere.
* Choose **XLSX** if the file will be opened in modern Excel.
* Choose **XLS** only if someone still needs the older Excel format.
* Run the workflow and copy the returned file link, or open the file from your workspace storage.

<figure><img src="/files/45TNpAa8hofF4zP4UCse" alt=""><figcaption></figcaption></figure>

### The Transformation: Before & After

**Before**

```json
[
  {
    "Customer": "Acme Corp",
    "Region": "APAC",
    "Status": "Active",
    "Revenue": 12500
  },
  {
    "Customer": "Blue Peak",
    "Region": "EMEA",
    "Status": "Pending",
    "Revenue": 8300
  }
]
```

**After**

```
Output file: customer-report.xlsx

Customer   | Region | Status  | Revenue
Acme Corp  | APAC   | Active  | 12500
Blue Peak  | EMEA   | Pending | 8300
```

<figure><img src="/files/AvJPU7NvvbRF3C6mNC0O" alt=""><figcaption></figcaption></figure>

### &#x20;Tips &  Warnings for First-Timers

* Do not paste plain sentences into **Input Data**. This node needs structured data, not free text.
* Keep all rows consistent. If one row uses different field names, the exported sheet may contain unexpected blank cells.
* Avoid adding notes like `Results:` before the data. Paste only the structured data itself when possible.
* Use **XLSX** for most cases. Choose **XLS** only for older systems, and remember it has a row limit.
* If your file may grow large, avoid **XLS**. Older Excel files can fail once they pass about 65,000 rows.
* The exported file name is generated automatically. If you email or store many exports, rename the file afterward so it is easier to recognize.
* The file is meant for download and sharing, not advanced formatting. It does not add colors, custom sheet names, multiple tabs, or styled headers.
* Open generated links soon after creation if they are used in later steps. Some temporary files may not stay available forever.
* If the file link works but the file does not appear in Drive right away, refresh and check again.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow)
* Browse related nodes in [Component List](/workflow-builder/component-list)


# Convert JSON to Chart Data

Turn structured data into chart-ready output for dashboards and visual reports.

## Convert JSON to Chart Data

### What does it do?

The **Convert JSON to Chart Data** node turns structured data into chart-ready output. Think of it like a business analyst who looks at your numbers and suggests the best chart before your dashboard displays it.

#### Smart Features

* **Accepts input in different forms**: You can use data from an earlier node, paste structured data directly, or pass ready-made records.
* **Can pick the chart for you**: Choose **Auto detect** and Diaflow selects a chart style based on your data.
* **Can follow your chart choice**: If you already know the chart you want, Diaflow uses that type instead.
* **Uses a preview to map fields quickly**: It checks sample rows to match the right labels and values.
* **Returns the full dataset with the chart settings**: The result includes both the chart setup and all of your original records.

<figure><img src="/files/ZQiQGkk5Tv9DNyKgJlP9" alt=""><figcaption></figcaption></figure>

### Real-World Business Value

* Turn monthly sales records into a chart for a management dashboard.
* Visualize survey results by region, product, or customer segment without building charts by hand.
* Convert workflow results into chart-ready data before sending them to an app, report, or presentation step.

### Step-by-Step Setup

* In the **Input** field, select structured data from an earlier step using **@**.
* Make sure the input is a list of records, not a plain sentence or document.
* In **Chart type**, choose **Auto detect** if you want Diaflow to decide.
* Choose a specific option like **Bar chart**, **Line chart**, **Pie chart**, or **Donut chart** if you already know the best format.
* Run the workflow and review the output fields to confirm the selected chart type and mapped data fields.

<figure><img src="/files/rFdtMKqdNpEz0MjiYCtA" alt=""><figcaption></figcaption></figure>

### &#x20;The Transformation: Before & After

**Before**

```json
[
  { "month": "Jan", "revenue": 1200 },
  { "month": "Feb", "revenue": 1500 },
  { "month": "Mar", "revenue": 1700 }
]
```

**After**

```json
{
  "type_chart": "line-chart",
  "params": {
    "xField": "month",
    "yField": "revenue",
    "smooth": true
  },
  "data": [
    { "month": "Jan", "revenue": 1200 },
    { "month": "Feb", "revenue": 1500 },
    { "month": "Mar", "revenue": 1700 }
  ]
}
```

<figure><img src="/files/Yo5IpBgGRiPByLtc5Dq2" alt=""><figcaption></figcaption></figure>

### Tips &  Warnings for First-Timers

* Use a list of records as the input. A single plain object or empty data will fail.
* Keep your field names consistent across all rows. If later rows use different names, the chart choice may be wrong.
* Put the most representative rows first. Diaflow looks at the first few rows when choosing the chart.
* Flatten nested data before using this node. Deeply nested fields are not chart-friendly here.
* Avoid mixing text and numbers in the same field. Clean data gives better chart choices.
* If the output looks odd in **Auto detect**, pick the chart type manually.
* Large interactive chart experiences are better handled after this step. This node prepares chart data, but it is not meant for live chart editing.
* If your pasted input includes extra explanation text around the data, remove it first to avoid invalid input errors.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow)
* Browse related nodes in [Component List](/workflow-builder/component-list)


# PDF to Image

Turn a PDF into one or more image files for review, sharing, or AI image analysis.

## PDF to Image

### What does it do?

The **PDF to Image** node turns a PDF into image files you can pass to later steps. Think of it like taking clean snapshots of each page so your workflow can read, review, or analyze them visually.

#### Smart Features

* **Can split one PDF into many images**: You can export one page per image, or combine pages into grouped images.
* **Can merge pages automatically**: Choose to group pages as `1`, `2`, or `4` pages per output image.
* **Works with file links from earlier steps**: Use a file from Diaflow or a supported web link.
* **Skips extra work when the input is already an image**: If the incoming file is already an image, the node returns it directly.
* **Can reuse recent results**: Turn on **Enable Cache** when the same PDF is converted often.

<figure><img src="/files/CGiVlVzxm0g3vPJXJy0n" alt=""><figcaption></figcaption></figure>

### Real-World Business Value

* Convert invoices or receipts into images before sending them to a vision AI step.
* Turn sales brochures or reports into page images for review in apps or dashboards.
* Break a long PDF into smaller image groups so teams can inspect pages faster.

### Step-by-Step Setup

* In the **Input** field, select the PDF file from an earlier step using **@**.
* Make sure the file is a PDF link from Diaflow or a reachable web link.
* In **Pages per image**, enter `1` if you want one page per image.
* Enter `2` if you want two pages combined side by side. This is a good default for faster review.
* Enter `4` if you want four pages combined into one grid image.
* Turn on **Enable Cache** only if you plan to reuse the same PDF again soon.
* Run the workflow and review the returned image links in the output.

<figure><img src="/files/vTvK07Q6B2ShBqSsIjLl" alt=""><figcaption></figcaption></figure>

### The Transformation: Before & After

**Before**

```
Input file:
quarterly-report.pdf

Pages per image:
2
```

**After**

```json
[
  "https://.../pdf_page_01.jpeg",
  "https://.../pdf_page_02.jpeg",
  "https://.../pdf_page_03.jpeg"
]
```

```
Result:
- Image 1 contains pages 1 and 2
- Image 2 contains pages 3 and 4
- Image 3 contains pages 5 and 6
```

<figure><img src="/files/x6ZG89WXgCyWzHbRSIsm" alt=""><figcaption></figcaption></figure>

### Tips &  Warnings for First-Timers

* Only use `1`, `2`, or `4` in **Pages per image**. Other values will fail.
* Use `1` when page detail matters, such as invoices, forms, or dense reports.
* Large PDFs can take longer and may fail if they contain many pages or very large page sizes.
* Password-protected PDFs are not supported. Unlock the file first.
* If you enable cache, older image links can expire later. Turn cache off when you need fresh links every time.
* Use a proper Diaflow file link or a normal web link. Incomplete file paths can fail.
* Slow external file links can delay the workflow. Upload the PDF into Diaflow first when possible.
* If your input may already be an image, this node returns that image as-is. Check the result before assuming a PDF was converted.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow)
* Browse related nodes in [Component List](/workflow-builder/component-list)


# Get Weather Information

Retrieve current, forecast, or historical weather data for a location.

## Get Weather Information

### What does it do?

The **Get Weather Information** node pulls live or past weather details for a location. Think of it like a weather desk assistant that checks the conditions for you before your workflow sends alerts, plans field work, or builds reports.

#### Smart Features

* **Supports three weather modes**: Get **Current weather**, a future **Forecast**, or **History** for past dates.
* **Works with dynamic values**: You can fill the location and dates from earlier workflow steps using **@**.
* **Accepts several location formats**: Use a city, city and country, coordinates, postal code, IP address, or airport code.
* **Returns detailed weather data**: The output includes location details, conditions, temperatures, and more.
* **Shows service errors clearly**: If the weather service cannot match the location or date, the node returns that message.

<figure><img src="/files/Df1Hy9WR6BOpQtG0uZR7" alt=""><figcaption></figcaption></figure>

### Real-World Business Value

* Add tomorrow’s forecast to logistics updates before dispatching drivers or field teams.
* Check historical weather during incident reviews, delivery analysis, or insurance reporting.
* Personalize customer messages based on local weather in each contact’s city.

### Step-by-Step Setup

* In the **Type** field, choose **Current weather**, **Forecast**, or **History**.
* In the **Value** field, enter the location you want to check.
* Use a simple format in **Value**, such as `London`, `Paris, France`, `48.8566,2.3522`, or `CDG`.
* If you choose **Forecast**, enter **Day** with a number from `1` to `14`.
* If you want one specific forecast date, enter that date in `YYYY-MM-DD` format.
* If you choose **History**, fill **Start date** and **End date** in `YYYY-MM-DD` format.
* Make sure **End date** is later than **Start date**.
* If your location comes from an earlier step, insert it with **@** instead of typing it manually.
* Run the workflow and review the returned weather details in the output.

### The Transformation: Before & After

**Before**

<figure><img src="/files/bltgCXkMJOsvpZ7T7xaE" alt=""><figcaption></figcaption></figure>

**After**

<figure><img src="/files/Evd2y0QHi7KSd9N7BOV3" alt=""><figcaption></figcaption></figure>

### Tips &  Warnings for First-Timers

* Use a clear location in **Value**. If the place name is vague, add the country.
* Always enter dates in `YYYY-MM-DD` format. Other date formats can fail.
* For **Forecast**, keep **Day** between `1` and `14`.
* For **History**, fill both **Start date** and **End date**. Leaving one blank can cause errors.
* Do not use an unsupported **Type** value. Stick to **Current weather**, **Forecast**, or **History**.
* Large forecast or history responses can contain a lot of detail. If a later AI step only needs a few fields, filter the result first.
* This node makes a fresh lookup every time. If you run the same workflow often, expect the weather data to refresh each run.
* Slow network responses can delay the workflow. Retry if the weather service is temporarily unavailable.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow)
* Browse related nodes in [Component List](/workflow-builder/component-list)


# HTTP Request (API)

Connect your workflow to external apps and services by sending requests and receiving structured results.

## HTTP Request (API)

### What does it do?

The **HTTP Request (API)** node sends data to another app or service. It then brings the reply back into your workflow.

Think of it like a courier. You prepare the message, send it out, and receive the response.

#### Smart features

* **Fills in dynamic values automatically**. Variables like `{{trigger.email}}` are resolved before the request runs.
* **Cleans up blank rows**. Empty header, parameter, and body rows are ignored.
* **Understands structured body values**. If a body value looks structured, Diaflow converts it for you.
* **Returns the cleanest possible response**. Structured replies stay structured. Other replies return as plain text.
* **Can try again after a failure**. You can add extra attempts and a delay between them.

<figure><img src="/files/wyHzQxXe9v4HrvfMugq3" alt=""><figcaption></figcaption></figure>

### Import cURL

Paste a cURL command to fill the request faster and avoid manual setup mistakes.

<figure><img src="/files/wzK4pggANTLEgbsa4Zy0" alt=""><figcaption></figcaption></figure>

### Real-World Business Value

* Send new leads from a form into your CRM automatically.
* Push approved orders into finance or fulfillment tools.
* Pull live account or ticket data before the next step runs.

### Step-by-Step Setup

* In **Method**, choose the action you need, such as **GET** or **POST**.
* In **URL**, paste the full address of the app or service.
* In **Headers**, add each required item as one **Key** and one **Value**.
* In **Parameters**, add any filters you want attached to the address.
* In **Payload (Body)**, add the fields you want to send.
* If you send a body, add **Content-Type** = `application/json` in **Headers**.
* In **Failure handling strategy**, choose whether to continue, stop, or retry.
* If you use retries, set **Max retry attempts** and **Delay**.

### The Transformation: Before & After

**Before**

<figure><img src="/files/HU0jZ4r7bzKySWe0FGHP" alt=""><figcaption></figcaption></figure>

**After**

<figure><img src="/files/hA1IY5ZLU29rhqAE5eko" alt=""><figcaption></figcaption></figure>

The actual reply from the other service is inside the inner **data** value. Use that value in later nodes.

### Tips & Warnings for First-Timers

#### Best practices

* Add **Content-Type** = `application/json` whenever you send a body.
* Keep requests focused. Smaller replies are faster and easier to reuse.
* Insert tokens and keys with variables instead of typing them into every flow.

#### Warnings

* Do not expect retries when **Failure handling** is set to **Skip** or **Stop flow**. Those modes return after the first failure.
* Do not use this node for file uploads or very large downloads. It is built for standard request and response data.
* Do not rely on this node for very slow services, self-signed certificates, or response-header based logic.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow)
* Browse related nodes in [Component List](/workflow-builder/component-list)


# Get GEO Location

Convert an address into coordinates or coordinates into a city name.

## Get GEO Location

### What does it do?

The **Get GEO Location** node converts a place into coordinates, or coordinates into a place name. Think of it like a delivery desk that can read an address and give you the map pin, or read the map pin and tell you the city.

It helps when your workflow needs a location in a simple format that later steps can reuse.

#### Smart features

* **Two simple modes**: use **Manual** when Diaflow should look up the location for you. Use **Local** when you already know the answer and just want to pass it through.
* **Works with earlier step data**: in **Manual** mode, you can insert values from previous nodes into **Value**.
* **City-first matching**: when you ask for a place name from coordinates, Diaflow looks for the city first. If no city is available, it may return the region or state instead.
* **Clean single result**: the node always returns one ready-to-use text value, so the next node can use it easily.

<figure><img src="/files/6Yw0ULdWGiRHolyKaj8D" alt=""><figcaption></figcaption></figure>

### Real-World Business Value

* Convert customer addresses into coordinates before sending them to a map, routing, or weather step.
* Turn mobile check-in coordinates into readable city names for reports, approvals, or support logs.
* Reuse known office or warehouse locations without doing the same lookup again.

### Step-by-Step Setup

* In **Method**, choose **Manual** if Diaflow should look up the location for you. Choose **Local** if you already have the final location value.
* In **Data to retrieve**, choose **City name** if you want a place name. Choose **Latitude and Longitude** if you want coordinates.
* If you chose **Manual**, fill **Value** with the right kind of input:
  * For **City name**, enter coordinates in `lat,lng` format, like `10.8231,106.6297`.
  * For **Latitude and Longitude**, enter a clear address, like `Ho Chi Minh City, Vietnam`.
  * You can insert data from a previous node into **Value**.
* If you chose **Local** and selected **City name**, enter the final value in **Local city**.
* If you chose **Local** and selected **Latitude and Longitude**, enter both numbers in **Local geo**.
* Run the workflow and check the **Output** tab.

<figure><img src="/files/agtK8fFEDLBUeDLZRJhR" alt=""><figcaption></figcaption></figure>

### The Transformation: Before & After

**Before — messy input from a form**

```json
{
  "Value": "Ho Chi Minh City, Vietnam"
}
```

**After — clean output from the node**

```json
{
    "output": "10.8230989,106.6296638"
}
```

The output is always one text value. It does not split latitude and longitude into separate fields.

<figure><img src="/files/ZsU5dXbkkpd6pbylOsar" alt=""><figcaption></figcaption></figure>

### Tips &  Warnings for First-Timers

#### Best practices

* Use full place names in **Value**, such as `Hanoi, Vietnam`, instead of short names like `Springfield`.
* Match the input to your selection in **Data to retrieve**.
  * Use coordinates when asking for **City name**.
  * Use an address when asking for **Latitude and Longitude**.
* Use **Local** mode when the city or coordinates are already known. This keeps the setup simple.
* Test with real sample data if the exact place label matters. Some locations may return a city, while others may return a province or state.

#### Warnings

* Do not leave **Value** empty in **Manual** mode. An empty value will fail the lookup.
* Do not enter unclear addresses. The node uses the closest match it finds, which can be wrong for broad names.
* Do not use variables inside **Local city** or **Local geo**. Enter final values there.
* Do not leave out either latitude or longitude in **Local geo**.
* Do not expect separate latitude and longitude fields in the output. The result comes back as one text string like `10.8231,106.6297`.
* Do not use anything other than **City name** or **Latitude and Longitude** in **Data to retrieve**.
* Avoid repeating the same live lookup when you already know the location. Use **Local** mode for fixed values.
* Very slow location lookups can delay the workflow. If the result is important, test the node before publishing.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow)
* Browse related nodes in [Component List](/workflow-builder/component-list)


# SMTP

Send emails from your own mail server or email provider inside a workflow.

## SMTP

### What does it do?

The **SMTP** node sends emails from your own mail account inside a workflow. Think of it like an automated office mail desk that takes your message, adds recipients and files, then sends everything for you.

It works well for alerts, invoices, approvals, and customer follow-ups.

#### Smart features

* **Uses your saved email connection**: select one SMTP resource and Diaflow sends from that mailbox.
* **Supports dynamic fields**: you can pull the **To**, **Cc**, **Subject**, **Message**, and **Attachments** from earlier steps.
* **Handles multiple recipients**: send to one person or several people in **To** and **Cc**.
* **Adds file attachments automatically**: attach files created or stored earlier in the workflow.
* **Chooses the secure connection for you**: Diaflow uses the right mail security method based on the port in your SMTP resource.
* **Prevents accidental mail loops**: if a workflow starts from an incoming email, Diaflow blocks sending back to that same triggering address.
* **Avoids duplicate sends for one hour**: if the same node runs again with the same content, Diaflow can return the earlier success instead of sending a duplicate email.

<figure><img src="/files/RTM9WBecGni2SNQn5fx6" alt=""><figcaption></figcaption></figure>

### Real-World Business Value

* Send invoices with PDF attachments to customers as soon as a deal is marked closed.
* Notify a manager and support team when a high-priority request enters the workflow.
* Deliver automated status updates, summaries, or approval emails without manual copy and paste.

### Add Gmail SMTP credentials

Use these steps if you want to send email with a Google account.

{% hint style="warning" %}
Google SMTP usually requires an **App password**. Turn on **2-Step Verification** in your Google Account before you create one.
{% endhint %}

{% stepper %}
{% step %}

### Open Add Credentials

* In the SMTP node, open **Credentials**.
* Click **Add Credentials**.
* Keep the credentials form open.
* You will paste the Google app password here later.

<figure><img src="/files/vY7iDTTYwbFFtTLIKl4z" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Enter the SMTP details

* In **Host**, enter `smtp.gmail.com`.
* In **Port**, enter `465`.
* In **Username**, enter your full Google email address.
* If the form includes a sender field, enter the same email address in **From email**.
* Leave **Password** empty for now.

<figure><img src="/files/9SYa9pzkce2p4HPA7Gli" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Open Manage your Google Account

* Open Gmail or another Google page.
* Click your profile picture.
* Click **Manage your Google Account**.

<figure><img src="/files/oHfbQHnfWK6cXWSFDRy9" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Search for App Password

* Use the Google Account search bar.
* Search for `App Passwords`.
* Open the **App passwords** result.
* Verify your identity if Google asks.

<figure><img src="/files/ehX2bhVDP3TMV323bP3t" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/mLvkWH6aZpZZsVpwaJQI" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Create Password

* In **App passwords**, enter the app name you want to use.
* Click **Create**.
* Copy the generated password before you close the window.

<figure><img src="/files/eGjcVyR64uBCaRGFnbDT" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Paste the password into Add Credentials

* Return to the **Add Credentials** page in Diaflow.
* Paste the generated app password into **Password**.
* Save the credential.
* Select that saved credential in the SMTP node.

<figure><img src="/files/WcNLNLI7Ij5UD6zzmCYu" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

### Use the credential in the SMTP node

* In **Credentials**, select the Gmail SMTP credential you just saved.
* In **To**, enter one email address or insert one or more addresses from a previous node.
* In **Cc**, add any extra recipients who should receive a copy.
* In **Object**, enter the email subject line.
* In **Message**, write the email content you want recipients to receive.
* In **Attachments**, select any files you want to include, such as a generated invoice or exported report.
* Run the workflow and confirm the send result in the **Output** tab.

### The Transformation: Before & After

**Before workflow data ready to send**

<figure><img src="/files/3iczldLXKCeuZESZ0JbO" alt=""><figcaption></figcaption></figure>

**After email sent**

<figure><img src="/files/FrfjBrhe5n1x64WZM1oe" alt=""><figcaption></figcaption></figure>

### Tips & Warnings for First-Timers

#### Best practices

* Use a tested SMTP resource before building the rest of the workflow.
* Enter full email addresses in **To** and **Cc**.
* Use standard list formatting if you pass multiple recipients from another step.
* Keep attachment filenames clear before sending. Recipients may see the exact file name.
* Use this node for final send steps, after you confirm the message content is correct.

#### Warnings

* Do not select an old, inactive, or wrong SMTP resource. The node will try to use the resource you choose.
* Do not expect the same email to send again within one hour if all settings and content are unchanged. Diaflow may treat it as a duplicate.
* Do not paste recipient lists in unusual text formats. If you pass multiple addresses, keep them in a clean standard list format.
* Do not include the triggering sender in **To** or **Cc** when the workflow starts from an incoming email. The send will be blocked.
* Do not leave the SMTP host, port, username, or password incorrect in the selected resource. The email will fail to send.
* Do not attach files that no longer exist or cannot be reached by the workflow.
* Do not rely on this node for instant failure feedback when the mail server is slow or unreachable. Sending can take longer than expected.
* Do not use vague attachment names if the recipient needs to recognize the file quickly.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow)
* Browse related nodes in [Component List](/workflow-builder/component-list)


# Loop

Repeat the same workflow steps for each record in a list, then collect the results into one final output.

## Loop

### What does it do?

The **Loop** node repeats the same workflow steps for each record in a list. Think of it like giving the same checklist to every row in a spreadsheet, then collecting the finished results in one place.

Use **Loop Output** at the end of the repeated steps. It gathers the values you want to keep from each pass.

#### Smart features

* **Accepts one record or many**: if you pass one record, Diaflow turns it into a one-item list and runs it once.
* **Checks the list before it starts**: Diaflow confirms the input is a valid list of records.
* **Starts with the first record automatically**: the workflow repeats the same path for each record in the list.
* **Collects one result per pass**: **Loop Output** saves the values you choose from each repeated run.
* **Cleans output field names for you**: selected paths like `{{loop.current.email}}` become output names such as `loop_current_email`.
* **Builds one final list at the end**: all saved results are combined into one structured output.

<figure><img src="/files/QBFQHktmoMtQtAEMzvt2" alt=""><figcaption></figcaption></figure>

### Real-World Business Value

* Send personalized follow-up emails to every lead in a contact list and save each send result.
* Review every support ticket in a daily batch, summarize it, and store the summary with the ticket ID.
* Process new product records one by one, enrich them with AI or app data, and return one clean list for export.

### Step-by-Step Setup

* Drag **Loop** onto the canvas.
* In **Input**, select the list you want to repeat over. Use a field from an earlier step with **@**.
* In **Batch size**, use it as a reference only. This value is currently fixed by Diaflow and cannot be changed in the node.
* In **On Error when running loop**, choose **Skip and record error** if you want the loop to continue, or **Stop workflow** if one failed item should stop everything.
* Place the nodes you want to repeat between **Loop Over Items** and **Loop Output**.
* In those repeated nodes, use values from the current record, such as `{{loop.current.email}}` or `{{loop.current.name}}`.
* In **Loop Output**, add each value you want to save from every pass.
* Run the workflow once and review the **Output** tab to confirm the saved fields look right.

### Loop Output details

**Loop Output** is the save point at the end of your repeated steps. It decides which values from each pass should be kept in the final result.

Think of it like a results sheet. Each time the loop runs, **Loop Output** adds one new row with the values you selected.

#### What it stores

Add one or more values in **Loop Output**.

You can store:

* a value from the current record, such as `{{loop.current.email}}`
* a result from a node inside the loop, such as `{{email_sender.data.message_id}}`
* several values together, so each pass returns one complete record

#### How field names are created

Diaflow creates output names automatically from the values you select.

For example:

* `{{loop.current.email}}` becomes `loop_current_email`
* `{{loop.current.id}}` becomes `loop_current_id`
* `{{email_sender.data.message_id}}` becomes `email_sender_data_message_id`

This helps keep the final output structured and reusable in later steps.

#### What one saved result looks like

If one pass through the loop sends an email and stores the contact email plus the send ID, the saved result looks like this:

```json
[
  {
    "loop_current_email": "alice@acme.com",
    "email_sender_data_message_id": "msg_001"
  }
]
```

After the loop finishes all passes, Diaflow combines those saved results into one final list.

#### Best way to configure it

* In **Loop Output**, add only the fields you truly need later.
* Start with 2 or 3 fields for your first test.
* Use values from inside the loop, not from unrelated nodes outside it.
* Run the workflow once and confirm each saved field has a real value.

{% hint style="info" %}
If a selected value cannot be found, the final result may contain an empty value. Test once before publishing.
{% endhint %}

### The Transformation: Before & After

**Before list entering the Loop node**

<figure><img src="/files/Qv6JXcVrBLtCQG052hps" alt=""><figcaption></figcaption></figure>

**After final result collected by Loop Output**

<figure><img src="/files/LOh1AE9CDVGYPQMCGMBz" alt=""><figcaption></figcaption></figure>

### Tips & Warnings for First-Timers

#### Best practices

* Keep the input list to **100 records or fewer**.
* Pass a list of records with named fields, not a list of plain values.
* If you only have one record, you can still use **Loop**. Diaflow will run it once.
* Test **Loop Output** once before publishing. Confirm every saved field contains a real value.
* Keep your saved field references consistent. Clear node names make the final output easier to read.

#### Warnings

* Do not pass an empty list. The loop will fail instead of skipping cleanly.
* Do not pass plain values like `["a", "b"]` or `[1, 2, 3]`. Wrap each value in a record first.
* Do not expect more than the first **100** records to run. Extra records are ignored.
* Do not use broken or incomplete field references in **Loop Output**. You may get empty results without a warning.
* Do not assume the final output is a single record. The result is a list of saved results, with one item per pass.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow)
* Browse related nodes in [Component List](/workflow-builder/component-list)


# Delay

Pause a workflow for a set amount of time or until a specific date and time.

## Delay

### What does it do?

The **Delay** node holds the next step for a chosen amount of time. Think of it like telling an assistant, "Do this task later, not now."

Use it when timing matters, such as sending a follow-up later or spacing out repeated actions.

#### Smart features

* **Supports two timing modes**: choose **Delay for** to wait a set amount of time, or **Delay until** to resume at an exact date and time.
* **Converts time for you**: if you enter minutes, hours, or days, Diaflow turns that into one clear wait value automatically.
* **Calculates the remaining wait automatically**: when you choose **Delay until**, Diaflow works out how long it is from now until that date and time.
* **Keeps the output simple**: the node returns one delay value that Diaflow uses to decide when the next step should run.

<figure><img src="/files/RYQmmLjxHgkvSUFzU3CB" alt=""><figcaption></figcaption></figure>

### Real-World Business Value

* Wait 2 hours before sending a second outreach email, so contacts do not receive messages too quickly.
* Pause a workflow until the next morning before creating a reminder task for a sales rep.
* Space out status checks between systems to reduce repeated requests and avoid unnecessary failures.

### Step-by-Step Setup

* Drag **Delay** onto the canvas where you want the pause to happen.
* In **Type**, choose **Delay for** if you want to wait a fixed amount of time.
* If you choose **Delay for**, in **Delayed for**, select **Seconds**, **Minutes**, **Hours**, or **Days**.
* If you choose **Delay for**, in **Value**, enter the number of seconds, minutes, hours, or days to wait.
* In **Type**, choose **Delay until** if you want the workflow to continue at an exact date and time.
* If you choose **Delay until**, in **Value**, select the date and time you want.
* Save the node and run the workflow once to confirm the next step resumes when expected.

### The Transformation: Before & After

**Before  settings entered in the Delay node**

<figure><img src="/files/N8PXPpYUWqk3pNvxGh99" alt=""><figcaption></figcaption></figure>

**After  delay value prepared for the next step**

<figure><img src="/files/ZkTS8N90VtbRhhxDb6iV" alt=""><figcaption></figcaption></figure>

### Tips & Warnings for First-Timers

#### Best practices

* Use **Delay for** when you want a simple fixed pause.
* Use **Delay until** when the workflow must resume at a specific calendar time.
* For date-based scheduling, choose the date and time from the picker instead of typing custom formats by hand.
* Test one run first if the timing is important for a customer message, reminder, or deadline.
* For long waits tied to a real date, prefer **Delay until** over estimating with a large number of days.

#### Warnings

* Do not leave **Type**, time unit, or **Value** empty. The workflow can fail.
* Do not use unsupported time units. Use only **Seconds**, **Minutes**, **Hours**, or **Days**.
* Do not choose a date or time in the past. The workflow may continue immediately or behave unexpectedly.
* Do not paste unusual date text into **Delay until**. Use the standard picker format whenever possible.
* Do not assume timezone-sensitive schedules will always match your local clock without testing once first.
* Do not rely on this node to change your business data. It only controls when the next step runs.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow)
* Browse related nodes in [Component List](/workflow-builder/component-list)


# File converter

Convert one file from one format to another inside your workflow.

## File converter

### What does it do?

The **File converter** node changes one file into another format inside your workflow. Think of it like an office assistant who takes a document in one format, saves it in a new format, and hands back a fresh download link.

It works well for common business conversions like **PDF to PNG**, **XLSX to CSV**, **CSV to JSON**, or **HTML to PDF**.

#### Smart features

* **Accepts direct files or earlier workflow outputs**: use a file link directly or select a file from a previous step.
* **Checks the source format before converting**: Diaflow confirms the file matches the format you selected in **Original file format**.
* **Returns ready-to-use file links**: each converted file comes back as a downloadable link for the next step.
* **Can return more than one output file**: some conversions, such as **PDF to PNG**, can create one file per page.
* **Can reuse recent conversion results**: if caching is turned on, Diaflow can return a recent result instead of converting the same file again.

<figure><img src="/files/gHJM6LtS6DX8z2SECiA5" alt=""><figcaption></figcaption></figure>

### Real-World Business Value

* Turn supplier spreadsheets into **CSV** before loading them into another system.
* Convert signed **PDF** contracts into **PNG** pages for review, approval, or visual processing.
* Change exported **CSV** or **XLSX** reports into **JSON** for downstream automation steps.

### Step-by-Step Setup

* Drag **File converter** onto the canvas.
* In **Original file**, select the file you want to convert from a previous step or file input.
* In **Original file format**, choose the current format of that file, such as `pdf`, `xlsx`, `csv`, `docx`, `png`, or `json`.
* In **Target file format**, choose the format you want to create.
* If your workflow uses repeated conversions of the same file, turn on **Cache** only if you want Diaflow to reuse recent results.
* If **Cache** is on, set **Caching time** to a short period such as `60` seconds.
* Run the workflow and use the returned file link in the next step or in an **Output** node.

### The Transformation: Before & After

**Before  file and conversion settings entering the node**

<figure><img src="/files/iwYXEkJbthZuVh9ejxw3" alt=""><figcaption></figcaption></figure>

**After  converted file links returned by the node**

<figure><img src="/files/BuClaMvSs4rklJvy5uki" alt=""><figcaption></figcaption></figure>

In this example, one **PDF** becomes one **PNG** file per page.

### Tips & Warnings for First-Timers

#### Best practices

* Convert **one file at a time**.
* Match **Original file format** to the real file extension exactly.
* Start with a small test file before converting a very large document.
* Use **Loop** if you need to convert many files in one workflow.
* Keep **Caching time** short if you enable **Cache**.

#### Warnings

* Do not pass more than one file into this node. It supports only one file per run.
* Do not choose the wrong source format in **Original file format**. The conversion will fail.
* Do not use incomplete or broken file links. The file must be reachable by the workflow.
* Do not assume every source format can convert into every target format. Some format pairs are not supported.
* Do not use very large files for your first test. Large files can take longer or fail during conversion.
* Do not expect **Base64** output to behave like a normal binary file download. It is returned as text content.
* Do not rely on old cached file links for too long. Reused links can stop working after they expire.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow)
* Browse related nodes in [Component List](/workflow-builder/component-list)


# File creator

Create a new file from text or structured content inside your workflow.

## File creator

### What does it do?

The **File creator** node builds a brand-new file from the content in your workflow. Think of it like an assistant who takes your notes, report data, or AI output and turns it into a finished document you can download or send.

It works well for reports, exports, transcripts, summaries, and formatted handoff files.

#### Smart features

* **Builds a file from workflow content**: use typed text or insert values from earlier steps with **@**.
* **Fills in dynamic values automatically**: file names and file content can use values from earlier nodes.
* **Recognizes common file type names**: choices like **word**, **document**, **excel**, **text**, **markdown**, and **subtitle** are matched to the right output format.
* **Detects rich content automatically**: if your content already looks like a web page, Diaflow uses a richer path for **PDF** output.
* **Prepares spreadsheets from structured content**: for **XLSX** and **CSV**, Diaflow can turn table-style content into a usable spreadsheet file.
* **Cleans subtitle files for you**: for **SRT**, Diaflow fixes timing formatting before creating the file.
* **Returns a ready-to-use download link**: the output is a file link you can pass to later steps or an **Output** node.

<figure><img src="/files/hCc8rGR0LITEbJuYvmJy" alt=""><figcaption></figcaption></figure>

### Real-World Business Value

* Turn an AI-generated meeting summary into a **DOCX** file for managers and clients.
* Create a **CSV** or **XLSX** export from structured workflow results before sending it to finance or operations.
* Generate a branded **PDF** report from workflow content and share it as a downloadable file.

### Step-by-Step Setup

* Drag **File creator** onto the canvas.
* In **File type**, choose the format you want to create, such as `pdf`, `docx`, `xlsx`, `txt`, `md`, `html`, `json`, `csv`, or `srt`.
* In **File name**, enter a clear file name, such as `weekly-sales-report`.
* In **Content**, type the content you want in the file or insert values from earlier nodes with **@**.
* If you are creating **XLSX** or **CSV**, paste clean table-style content or structured data.
* If you are creating **JSON**, enter valid JSON if you want the file to keep an exact JSON structure.
* Save the node and run the workflow once to confirm the file opens as expected.

### The Transformation: Before & After

**Before  raw content entered in the node**

<figure><img src="/files/rYEqBkMNdxhbh6VTjND8" alt=""><figcaption></figcaption></figure>

**After  downloadable file returned by the node**

<figure><img src="/files/eBkasiOvUodNvwHiqlQj" alt=""><figcaption></figcaption></figure>

In this example, plain workflow text becomes a shareable **DOCX** file.

### Tips & Warnings for First-Timers

#### Best practices

* Choose the output format based on how people will use the file.
* Keep **File name** short and clear.
* Test one small file first before generating a large PDF or spreadsheet.
* For **XLSX**, use clean structured content with consistent columns.
* For **JSON**, paste valid JSON when you need exact field structure.
* For **PDF**, use well-formatted content if layout matters.

#### Warnings

* Do not leave **Content** empty. The file will fail to generate.
* Do not choose a file type that the node does not support yet.
* Do not expect **XLSX** to work from free-form text. Use table-style or structured content.
* Do not expect **XLSX** to create multiple sheets. It creates one sheet only.
* Do not expect mixed text and JSON notes to become a clean **JSON** file automatically. Use valid JSON only when exact structure matters.
* Do not paste broken web page content into **HTML** if you need a clean browser-ready file.
* Do not rely on repeated runs producing a reused file automatically. This node creates the file again each time.
* Do not use very long untested content for your first **PDF** run. Review the output once before sharing it widely.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow)
* Browse related nodes in [Component List](/workflow-builder/component-list)


# QR Code Generator

Turn a web link into a QR code you can embed or share.

## QR Code Generator

### What does it do?

The **QR Code Generator** node turns a web link into a scannable QR code. Think of it like printing a shortcut button that someone can scan with their phone.

Use it when you want to share landing pages, checkout links, event pages, or product pages faster.

#### Smart features

* **Checks the link before creating the QR code**: Diaflow only generates a QR code for valid web links.
* **Works with dynamic values**: insert a link from an earlier step with **@**.
* **Lets you choose how the result is returned**: use **Image** to embed the QR code directly, or **Link** to get a shareable file link.
* **Supports PNG and SVG**: choose **PNG** for simple image use, or **SVG** for sharper scaling.
* **Includes ready-to-use size options**: pick **128px**, **256px**, **512px**, or **1024px**.
* **Lets you control the look**: set the background color, foreground color, border, and scan durability level.
* **Supports transparent SVG backgrounds**: useful when the QR code needs to sit cleanly on branded designs.

<figure><img src="/files/FGKU15rwFQPK5MCanp03" alt=""><figcaption></figcaption></figure>

### Real-World Business Value

* Add a QR code to event emails so attendees can open the registration page instantly.
* Generate product or payment QR codes from live links created earlier in the workflow.
* Create branded QR codes for flyers, packaging, or printed handouts without manual design work.

### Step-by-Step Setup

* Drag **QR Code Generator** onto the canvas.
* In **Input**, enter the full web link or select one from an earlier step with **@**.
* In **Output Size**, select **128px**, **256px**, **512px**, or **1024px**.
* In **Background Color**, enter a color like `#FFFFFF` or choose **transparent** if you use **SVG**.
* In **Foreground Color**, enter the QR code color, such as `#000000`.
* In **Output Format**, choose **PNG** or **SVG**.
* In **Output Type**, choose **Image** if another step should use the QR code directly, or choose **Link** if you want a downloadable file link.
* In **Border Width**, keep the default unless you have a specific design need.
* In **Error Correction**, choose a higher level if the QR code may be printed, handled often, or partially covered.

### The Transformation: Before & After

**Before link and display settings entering the node**

<figure><img src="/files/5zaUEIVLhVqnPuN0YgLO" alt=""><figcaption></figcaption></figure>

**After ready-to-use QR code result**

<figure><img src="/files/PbB3ROEQ13eEr2Zlb11C" alt=""><figcaption></figcaption></figure>

If you choose **Image** instead of **Link**, the result is returned as an inline image value you can place directly into emails or pages.

### Tips & Warnings for First-Timers

#### Best practices

* Paste the full web link, including `http://` or `https://`.
* Use **SVG** for print designs or large displays.
* Use a higher **Error Correction** level when the QR code may be scratched, folded, or partly covered.
* Use **Image** when the next step should embed the QR code directly.
* Use **Link** when you need a file you can share, store, or reuse elsewhere.

#### Warnings

* Do not enter plain text, email addresses, phone numbers, or non-web formats. This node only accepts web links.
* Do not leave out `http://` or `https://`. A link without the protocol will fail.
* Do not use **transparent** as the background for **PNG**. Use it only with **SVG**.
* Do not expect the same settings to reuse an older file automatically. A new QR code is created each time.
* Do not rely on **Link** mode for permanent storage without checking your file retention setup. Temporary files may be cleaned up later.
* Do not expect a built-in logo in the center of the QR code. Add branding in a later design step if needed.
* Do not assume every protocol works. `mailto:`, `tel:`, and `ftp://` are not supported here.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow)
* Browse related nodes in [Component List](/workflow-builder/component-list)


# Run another flow

Invoke a sub-flow from your current flow. Inputs from the parent are passed to the sub-flow; once the sub-flow finishes, its outputs are returned to this node and can be used by downstream steps.

<figure><img src="/files/aabtuTUlT6Wql72BqWgq" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/GiroFVP87CHJl6C9ffWP" alt=""><figcaption></figcaption></figure>

## I. Description <a href="#description" id="description"></a>

*<mark style="color:red;">\*\*Just apply with flow, have type = App</mark>*

#### What it does

* Calls a **sub-flow** synchronously during the parent flow’s execution.
* Passes selected inputs (files, text, objects) from the **parent** to the **sub-flow**.
* Waits for the sub-flow to complete, then **exposes the sub-flow’s outputs** on the **Run another flow** node.

#### When to use

* You want to **reuse** a standardized mini-workflow (e.g., “Extract text from PDF”, “Normalize entities”, “Post to CRM”).
* You want to **decompose** a large flow into smaller maintainable units.
* Multiple teams/flows should **share** the same logic with one change point.

#### Concepts

* **Parent flow (Main flow):** the flow you’re currently building; it contains the **Run another flow** node.
* **Sub-flow:** a separate, reusable flow referenced by the parent. Its outputs are returned to the parent.

## II. How to use <a href="#description" id="description"></a>

### Step 1: Create Sub-flow

*<mark style="color:red;">\*\*Just apply with flow, have type = App</mark>*

Please follow step - by - step

Create a flow with type = **App**

(1) At "Trigger node":

* Switch toggle "Use this as a sub-flow" to Enable

<figure><img src="/files/FzUvhMXys2HXe2ITCYD6" alt=""><figcaption></figcaption></figure>

(2) Add another node to the flow\
\
(3) Publish the Sub-fllow

**Rule**

<table><thead><tr><th width="151.0390625">Case</th><th>Rule</th></tr></thead><tbody><tr><td>(1) Sub-flow compatibility with restricted nodes</td><td><p>A flow that is marked as a <strong>sub-flow</strong> must not use the following nodes:</p><ul><li><strong>“Branch”</strong></li><li><strong>“Loop”</strong></li><li><strong>“Delay”</strong></li><li><strong>“Run another flow”</strong>.</li></ul></td></tr><tr><td>(2) Flow is already marked as sub-flow, user adds a restricted node</td><td><p></p><ul><li><strong>Trigger:</strong> User tries to add any of the restricted nodes to a flow that has <strong>Sub-flow</strong> enabled.</li><li><strong>Behavior:</strong> Block the action and show an inline error toast/banner on the canvas.</li><li><strong>Error message (exact):</strong><br><strong><code>This node is not available in sub-flow</code></strong></li></ul></td></tr><tr><td>(3) Flow already contains a restricted node, user turns on Sub-flow</td><td><p></p><ul><li><strong>Trigger:</strong> User toggles <strong>Sub-flow</strong> on in a flow that currently contains at least one restricted node.</li><li><strong>Behavior:</strong> Do not allow enabling. Keep the toggle <strong>off/disabled</strong>.</li><li><strong>Hover tooltip over the disabled toggle (exact text):</strong><br><strong><code>This flow cannot be marked as a sub-flow if nodes "Run another flow", "Branch", "Delay", "Loop" are being used</code></strong></li></ul></td></tr><tr><td>(4) Unmarking a published sub-flow</td><td><p><strong>Rule:</strong> If a flow is <strong>already marked as sub-flow</strong> and has been <strong>published</strong>, unmarking it must require explicit confirmation.</p><p><br></p><h4>Behavior</h4><ul><li><strong>Trigger:</strong> User turns <strong>off</strong> the <strong>Sub-flow</strong> toggle on a <strong>published</strong> sub-flow.</li><li><strong>Action:</strong> Show a <strong>Confirm</strong> modal.</li><li><strong>Modal copy (exact):</strong><br><strong><code>Do you want to disable this sub-flow. It might be used as a sub-flow in another flow</code></strong></li><li><p><strong>Options:</strong></p><ul><li><strong>Confirm</strong> → proceed to unmark; downstream flows that reference this sub-flow should surface a warning on next open/run.</li><li><strong>Cancel</strong> → keep Sub-flow enabled; no changes applied.</li></ul></li></ul></td></tr></tbody></table>

### Step 2: Create Parent flow (Main flow) and refer to the sub-flow

*<mark style="color:red;">\*\*Just apply with flow, have type = App</mark>*

Please follow step - by - step

Create a flow with type = **App**

(1) Build new flow

(2) Add "Run another flow" node

<figure><img src="/files/HJGa4ul3SJCrfUgCnwk5" alt=""><figcaption></figcaption></figure>

\ <br>

<figure><img src="/files/KOoONTOrX0T0AcS2zQto" alt=""><figcaption></figcaption></figure>

Component settings

<table><thead><tr><th width="236.3203125">Parameter Name</th><th>Description</th></tr></thead><tbody><tr><td>Select a flow</td><td><p>Select a sub-flow<br><br>Rule:<br></p><ul><li>Must be in the same workspace<br><strong>AND</strong></li><li>The sub-flow must be set to <strong>public</strong></li></ul></td></tr><tr><td>Field Input</td><td>Show the fields input of the Sub - Flow</td></tr><tr><td><strong>Advance configurations</strong></td><td></td></tr><tr><td>On Error when running Run another flow</td><td>Single - select:<br>- Stop workflow (default value)<br>- Skip and record error</td></tr></tbody></table>

### Step 3: Run Parent flow (Main flow)

When finish setup the Parent flow (main flow) -> Click button **"Execute"** to run the flow

<figure><img src="/files/RixDAsZ7wp985iFRSu9O" alt=""><figcaption></figcaption></figure>

After run the flow, at the output of "Run another flow" node will response the data of Sub-flow

<figure><img src="/files/IQXDSnCgCgL8cyrkxWGb" alt=""><figcaption></figcaption></figure>

## III. History <a href="#description" id="description"></a>

### View from the Parent flow (Main-flow)

When run success the parent flow, user can view the history

<figure><img src="/files/WayZZ9UjeiUgMuVFJvoD" alt=""><figcaption></figcaption></figure>

The history list, the user can click to view the details

<figure><img src="/files/TOQUoU15n0l489nxefgS" alt=""><figcaption></figcaption></figure>

At Tab "Workflow", the user clicks details of the  "Run another flow" node

<figure><img src="/files/aMcbDHCmwIiJbtBsuQMQ" alt=""><figcaption></figcaption></figure>

Will display the **"Sub-flow name"** and **"Sub-flow ID"**

User can click on the "Sub-flow name" -> The system will open a new tab and redirect to the workflow builder of the Sub-flow

<figure><img src="/files/wIC7hyffdpVq0F6u8uEZ" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/89cO1J2iRCAsI8NvJ5zQ" alt=""><figcaption></figcaption></figure>

### View from the Subflow

When run success the parent flow, user can view the history of the subflow

<figure><img src="/files/aS0DB3jl4wlIGJNEl2Je" alt=""><figcaption></figcaption></figure>

At the History list, with the record run via Parent-flow, at the column **VIA** will show the value **"Parent flow"**

<figure><img src="/files/rrPrinRCcfEm1WqM6O4X" alt=""><figcaption></figcaption></figure>

User can click to view the details

<figure><img src="/files/2voduv9sraQmBYNZtivw" alt=""><figcaption></figcaption></figure>

At detail page

Will display the **"Parent-flow name"** and **"Parent-flow ID"**

User can click on the "Parent-flow name" -> The system will open a new tab and redirect to the workflow builder of the Parent flow

<figure><img src="/files/QNKLmw4KZpEUwS0MKwGh" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/sKTORNWuBSwAfoycQOq9" alt=""><figcaption></figcaption></figure>


# Filter

Let the workflow continue only when your conditions pass.

## Filter

### What does it do?

The **Filter** node is a yes/no checkpoint for your workflow. Think of it like a security gate that only opens when the right conditions are met.

Use it when the workflow should continue only for the right records, files, dates, or values.

#### Smart features

* **Checks conditions every time**: **Filter** always evaluates the rules you set. It never acts as an automatic pass-through.
* **Supports grouped logic**: use **+ And** when every rule must pass, or **+ Or Group** when any matching group should allow the workflow to continue.
* **Stops early when the answer is clear**: if one **And** rule fails, Diaflow stops checking that group. If one **Or Group** passes, Diaflow stops checking the rest.
* **Uses values from earlier steps automatically**: fields you insert with **@** are filled in before the filter runs.
* **Supports common rule types**: check text, numbers, dates, booleans, file formats, and empty or missing values.

<figure><img src="/files/33VUnY0G99l02OZxgGZz" alt=""><figcaption></figcaption></figure>

### Real-World Business Value

* Continue only when a lead score is high enough, so sales reps see the best prospects first.
* Allow a document step to run only when the uploaded file is a **PDF**.
* Stop a customer workflow unless approval status is exactly **approved** and the account is active.

### Step-by-Step Setup

* Drag **Filter** onto the canvas where you want the checkpoint.
* In **Only continue if**, select the first field you want to check with **@**.
* In **Choose condition**, select the rule type, such as **Contains**, **Exactly matches**, **Greater than**, **Is true**, or **Is Not Null**.
* In **Value**, enter the value to compare when that condition needs one.
* Click **+ And** if more rules in the same group must all pass.
* Click **+ Or Group** if you want a separate fallback group that can also allow the workflow to continue.
* Open **Preview** and confirm the result is **True** or **False** before publishing.

### The Transformation: Before & After

**Before rule setup entering the node**

<figure><img src="/files/QQDbZiSc1RJoglsPpqjT" alt=""><figcaption></figcaption></figure>

**After filter result returned by the node**

<figure><img src="/files/ChazOJAqXFmFLh7fIM33" alt=""><figcaption></figcaption></figure>

In this example, the workflow continues only when **score > 80**.

### Tips & Warnings for First-Timers

#### Best practices

* Start with one simple rule, then add more only when needed.
* Use **Preview** to test each rule group before publishing.
* Use **Exactly matches** when the value must be identical.
* Use **Is Not Null** for stronger empty-value checks.
* Keep date values in one consistent format across your workflow.

#### Warnings

* Do not use **Filter** when you want an unconditional pass. This node always checks its rules.
* Do not leave a rule without a condition. The node will fail.
* Do not use the wrong rule type for the data. For example, do not use number rules on text values.
* Do not mix date formats in one comparison. Inconsistent date formats can produce the wrong result.
* Do not assume **Exists** and **Is Not Null** mean the same thing. **Is Not Null** is safer when you want a stronger empty-value check.
* Do not invent custom operator names. Unknown operators act like a failed match.
* Do not assume **Is in** works the same way for every field type. Test it once if the source value can vary.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow)
* Browse related nodes in [Component List](/workflow-builder/component-list)


# Image Generation

Create images from text prompts or edit existing images inside your workflow.

## Image Generation

### What does it do?

The **Image Generation** node creates a new image from a text prompt, or edits an existing image. Think of it like a creative studio assistant that turns your brief into ready-to-use visual content.

It is useful for marketing banners, product mockups, campaign visuals, and branded concepts.

#### Smart features

* **Automatic model routing**: Diaflow chooses the right image engine based on the model you select.
* **Text-to-image and image editing in one node**: start from a written prompt, or add one or more reference images.
* **Safe fallbacks for image shape**: if the selected image ratio is not supported, Diaflow falls back to a default ratio.
* **Automatic image count guardrails**: if you request too few or too many images, Diaflow adjusts the number to a supported range.
* **Built-in storage after generation**: generated images are saved in your workspace so later steps can reuse them.
* **Prompt and input mapping from earlier nodes**: you can pull text and image inputs directly from previous workflow steps.

<figure><img src="/files/Tb8i6OtaxLEpQdiTHPD9" alt=""><figcaption></figcaption></figure>

### Real-World Business Value

* Create product marketing visuals from a campaign brief without waiting for manual design drafts.
* Generate multiple ad concepts from one product description for faster approval cycles.
* Edit an existing image to match a new season, offer, or brand direction without starting over.

### Step-by-Step Setup

* In **Model**, choose the image model you want to use.
* In **Prompt**, describe the image clearly, including subject, style, colors, setting, and composition.
* In **Image source**, add an image from an earlier step only if you want to edit or blend existing visuals.
* In **Aspect ratio**, select the format that matches where the image will be used, such as **1:1** for square posts or **16:9** for banners.
* If your selected model supports it, choose the **Image size** or **Resolution** you want.
* If your selected model supports it, set **Number of images** to the number of variations you want.
* Run the workflow and review the generated file in the **Output** tab.

### The Transformation: Before & After

**Before simple campaign brief**

<figure><img src="/files/7eUDs4F3Z7jicCcs6P4g" alt=""><figcaption></figcaption></figure>

**After generated image result**

<figure><img src="/files/YCJnGL4ndB6R8gZJYFv5" alt=""><figcaption></figcaption></figure>

The output is a stored file reference from your workspace. Use that result in later nodes when you need the generated image.

### Tips & Warnings for First-Timers

#### Best practices

* Write specific prompts. Mention the subject, style, lighting, color palette, and layout.
* Choose **Aspect ratio** based on the final destination, such as social, email, ads, or web banners.
* Use **Image source** when you want edits, restyling, or blended visuals.
* Start with one image first. Increase the number only after you confirm the style is right.
* If you need larger output options, choose a model that supports them.

#### Warnings

* Do not expect every model to support the same settings. Some models only create one image per run.
* Do not assume a larger size setting will always apply. Some models ignore higher size choices.
* Do not request too many images in one step unless you really need them. Large batches can take much longer.
* Do not assume the node will always return the exact number of images requested. Some models may return fewer variations.
* Do not use unsupported or broken image files in **Image source**. If Diaflow cannot read the file, the run will fail.
* Do not leave **Prompt** vague or empty. Weak prompts usually lead to weak results or failed runs.
* Do not assume the output is a ready-to-share public image link. The result is a stored file reference for use inside your workflow.
* Do not rely on accidental uploaded files being used as image input. If you want to edit an image, set **Image source** explicitly.
* Do not use prompts that break model content rules. The image may be blocked.
* Do not expect repeated runs with the same prompt to behave the same across all models. Some models may reuse earlier results, while others generate again every time.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow)
* Browse related nodes in [Component List](/workflow-builder/component-list)


# Video Generation

Create videos from text prompts or reference images inside your workflow.

## Video Generation

### What does it do?

The **Video Generation** node turns a written idea, or a starting image, into a generated video. Think of it like a video production assistant that takes your brief and returns a ready-to-use clip for campaigns, demos, or social content.

It works for both text-to-video and image-to-video workflows.

#### Smart features

* **One node for two creation styles**: start from a prompt alone, or use one or two images to guide the result.
* **Automatic image role handling**: if you add two images, Diaflow treats them as the start frame and end frame for a smoother transition.
* **Built-in video finishing options**: you can turn on **Enhancement** and **Compression** to improve quality and reduce file size.
* **Optional last-frame output**: you can return the final frame as an image and use it to continue the next video segment.
* **Flexible input mapping**: pull prompts and images from earlier nodes without manual re-uploading.
* **Automatic cleanup of unsupported values**: if frame rate or duration settings are outside the supported range, Diaflow adjusts them to a valid value.

<figure><img src="/files/klH9GYKcdDPOQ23E93FR" alt=""><figcaption></figcaption></figure>

### Real-World Business Value

* Turn a campaign brief into a short promo video for ads, landing pages, or social posts.
* Animate a product image into a motion teaser without sending work out to a video team.
* Create connected video scenes by using the last frame from one clip as the starting point for the next clip.

### Step-by-Step Setup

* In **Model**, choose the video model you want to use.
* In **Prompt**, describe the scene, motion, style, lighting, and camera feel you want.
* In **Image source**, add one image if you want the video to begin from a specific visual, or add two images if you want Diaflow to guide both the first and last frame.
* In **Resolution**, select the output quality that matches your chosen model.
* In **Aspect ratio**, choose the shape that fits your channel, such as **16:9** for landscape or **9:16** for vertical.
* In **Duration**, enter the clip length in seconds.
* In **FPS**, choose **24**, **30**, or **60** depending on how smooth you want the motion to feel.
* Turn on **Camera Fixed** if you want the camera position to stay locked.
* If your selected model supports it, turn on **Audio** to generate sound with the video.
* Turn **Enhancement** on if you want Diaflow to improve video quality after generation.
* Turn **Compression** on if you want a smaller final file size.
* Turn on **Return Last Frame** if you want to reuse the ending image in a later video step.
* Run the workflow and review the result in the **Output** tab.

### The Transformation: Before & After

**Before basic campaign request**

<figure><img src="/files/Ir2sjjXJYebNxX0JW4Id" alt=""><figcaption></figcaption></figure>

**After generated video result**

<figure><img src="/files/RmWLPtAOgOFECLZPEim1" alt=""><figcaption></figcaption></figure>

If **Return Last Frame** is on, the result can include both the video and the final frame image.

### Tips & Warnings for First-Timers

#### Best practices

* Write prompts that describe both the scene and the motion.
* Match **Aspect ratio** to the final channel before you generate.
* Use one image for a guided starting frame.
* Use two images only when you want Diaflow to connect a beginning and an ending scene.
* Turn on **Return Last Frame** when building multi-part video sequences.

#### Warnings

* Do not add more than two images in **Image source**. Extra images are ignored.
* Do not choose **1080p** with models that only support lower resolutions.
* Do not expect very short durations to stay unchanged on every model. Some models raise short values to their minimum supported length.
* Do not assume video generation is fast. Longer clips, finishing options, and uploads can take several minutes.
* Do not assume **Enhancement** and **Compression** always run. If that finishing service is unavailable, Diaflow may return the original video instead.
* Do not assume every public workflow output stays available forever. Some public video links may expire.
* Do not hide image links inside the **Prompt** unless you want them treated as image input.
* Do not use unsupported image files as video input. Convert files like PDFs into images first.
* Do not expect the output to be a permanent public video link. The result is typically a stored workflow file reference.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow)
* Browse related nodes in [Component List](/workflow-builder/component-list)


# SFTP (password-based auth)

### 1. The "B2B Digital Mailman" (Overview)

Stop waking up at midnight to manually upload reconciliation files. Connect to your partners' legacy servers instantly.

Use this node to both **push** files out and **pull** new files in automatically. It helps warehouses, banks, suppliers, and older business systems work smoothly with modern Diaflow workflows.

### 2. How to Add the Node

Click the **+** button on your canvas, search for **SFTP (password-based auth)**, and add it to your workflow.

> 🖼️ **\[PLACEHOLDER: SCREENSHOT - The 'Add Connection' form with a red box highlighting the Username & Password fields]**

### 3. What can you automate? (The "Wow" Use Cases)

1. **The Nightly Recon:** Auto-generate a CSV and push it to a partner folder every day at `11:59 PM`.
2. **The Order Ingester:** Watch a supplier folder and trigger an email the moment a new tracking file appears.
3. **The ERP Bridge:** Connect older on-premise systems with modern cloud workflows without manual file handling.

### 4. Step-by-Step: Configuration & Smart Data Injection

#### **Set up the connection**

Add your partner server details in the connection settings:

* **Host**
* **Port** : use `22`
* **Username**
* **Password**

#### **Choose how the node works**

Use **Upload File** when you want to send a file or text to your partner. Use **Watch Remote Directory** when you want Diaflow to monitor a folder and react to new changes.

#### **Build dynamic file names**

Type `@` inside the **Remote Path** field to open the visual data picker. This is the easiest way to insert dates, order IDs, customer codes, or other values from earlier steps.

This helps you create unique file names automatically, instead of reusing the same name every time.

> 🛑 **\[PLACEHOLDER: SCREENSHOT - The 'Remote Path' input field showing `/uploads/report_@Date.csv` to demonstrate dynamic naming]**

### 5. The Output: Seeing Your Results

For uploads, the node returns a success result so you know the handoff completed.

For directory watching, the node returns details about the new or changed file so the next step can keep processing automatically.

> 🛑 **\[PLACEHOLDER: GIF - Split screen: FileZilla uploading a file on the left, Diaflow workflow triggering on the right]**

### 6. Golden Rules & Guardrails (CRITICAL PRO-TIPS)

* **The Overwrite Trap:** If you name your file `report.csv`, it will overwrite yesterday's file. Always use `@` to inject the current date, order ID, or another unique value into the file name.
* **The Directory Rule:** We do not automatically create folders. Make sure `/uploads` or your target folder already exists on your partner server before you run the workflow.
* **The Polling Cost Trap:** Watcher triggers cost **2 Credits per event**. Do not watch a root folder with thousands of files. Point the watcher to a specific, clean sub-folder instead.
* **Choose one upload source:** Send either a file or text content in a single run. Keeping it to one source avoids confusion.
* **Broken connections stop the run:** Wrong login details, missing folders, permission issues, or unreachable files can stop the step. Add a fallback email or Slack alert for important partner handoffs.
* **Keep folder depth tight:** When using the watcher, monitor only the folders you need. Smaller folder trees are faster and easier to manage.

### Need help?

* Read [What is Diaflow?](/workflow-builder/overview)
* Browse the [Component List](/workflow-builder/component-list)


# SFTP (key-based auth)

### 1. The "Enterprise Compliance Pass" (Overview)

Bank-grade file transfers. Connect to heavily regulated partners without ever using a password.

Use this node when your partner requires stronger access controls for finance, healthcare, or government data exchange. It is a strong fit for environments reviewed against **PCI-DSS**, **HIPAA**, and **SOC 2** standards, where password-only access is often not allowed.

### 2. How to Add the Node

Click on your canvas, search for **SFTP (key-based auth)**, and add it to your workflow.

<figure><img src="/files/jIP2erF8zc1HuHUdt70s" alt=""><figcaption></figcaption></figure>

### 3. What can you automate? (The "Wow" Use Cases)

1. **The Bank Recon:** Push sensitive settlement files to a partner bank using strict key-based access.
2. **The Healthcare Bridge:** Exchange HIPAA-aligned patient files with healthcare partners more securely.
3. **The Regulator Portal:** Auto-submit compliance reports to government servers that do not allow password logins.

### 4. Step-by-Step: Configuration & Smart Data Injection

#### **Set up the connection**

Add your partner server details in the connection settings:

* **Host**
* **Port** : use `22`
* **Username**
* **Private Key**
* **Passphrase** — only if your key is protected

The **Private Key** is the physical key you paste into Diaflow. The **Public Key** is the lock you send to your partner so they can authorize your access.

<figure><img src="/files/dpxMJVEpfob8XmbQMMPd" alt=""><figcaption></figcaption></figure>

#### **Build dynamic file paths**

Type `@` inside the path field to open the visual data picker. Use it to insert dates, customer IDs, partner codes, or report numbers into the file name automatically.

This helps you keep every upload unique and traceable.

### 5. The Output: Seeing Your Results

For uploads, the node returns a success result so you know the file handoff completed.

For directory watching, the node returns the details of the new or changed file so the next step can react automatically.

### 6. Golden Rules & Guardrails (CRITICAL PRO-TIPS)

* **The Key Rotation Rule (Crucial):** Enterprise partners often require key changes every `90 days`. Put it on your calendar. When they rotate the key, you must update your Diaflow connection or your workflow will fail.
* **The Public Key Reminder:** Pasting your **Private Key** here is not enough. You must email the matching **Public Key** to your partner's IT team so they can authorize you.
* **The Overwrite Trap & Folder Rule:** If you reuse the same file name, you may replace yesterday's file. Use `@Date` or another dynamic value in the file name, and make sure the destination folder already exists before you run the workflow.

### Need help?

* Read [What is Diaflow?](/workflow-builder/overview)
* Browse the [Component List](/workflow-builder/component-list)


# Formatting

Clean, format, and standardize text, dates, numbers, and currencies in your workflow without formulas or code.

### 1. The "Data Swiss Army Knife" (Overview)

No Excel formulas, no code. Instantly clean, format, and standardize your data with a simple dropdown menu.

The **Formatting** node is the Swiss Army Knife for workflow data. It gives you 22+ ready-to-use actions for text cleanup, number formatting, date conversion, data cleanup, and content preparation between steps.

### 2. How to Add the Node

Click on your canvas, search for **Formatting**, and click to add it to your workflow.

<figure><img src="/files/0Yj6KIBcdLEmyDxCy61Q" alt=""><figcaption></figcaption></figure>

### 3. What can you automate? (The "Wow" Use Cases)

#### 1. **The Currency Cleaner:**

Turn raw CRM values like invoice totals, quotes, or order amounts into polished currency output that is ready for customer emails, invoices, or reports.

#### 2. **The Date Standardizer:**

Convert mixed date formats from forms, spreadsheets, or different countries into one clean standard for dashboards, payroll, or reporting.

#### 3. **The Text Beautifier:**

Fix messy names, extra spaces, and inconsistent capitalization from Typeform, Google Forms, or copied text before sending the data to your CRM or spreadsheet.

### 4. Step-by-Step: Configuration & Smart Data Injection

#### **Choose your Action:**

Open the action dropdown and select what you want the node to do. You can clean text, format currencies, convert dates, extract values, or reshape data in just a few clicks.

#### **Inject Data:**

The easiest way to map data is to type `@` in the input box. Diaflow opens a visual dropdown so you can select the raw value from a previous step.

Typing `{{` also works perfectly if you prefer the classic bracket syntax.

### 5. The Output: Seeing Your Results

The node returns a clean, formatted value that is ready for the next step in your workflow. You can pass it into tools like Google Sheets, email steps, documents, or any node that needs standardized data.

> 🛑 **\[PLACEHOLDER: SCREENSHOT - Before/After Execution Result showing raw input vs formatted output]**

### 6. Golden Rules & Guardrails (CRITICAL PRO-TIPS)

#### **Billing Note:**

This node consumes **2 Credits** per successful run.

That cost is fixed per action. If you are processing large volumes of records, combine steps efficiently when possible to avoid unnecessary credit usage.

{% hint style="info" %}
If you need many formatting steps on the same record, review the full workflow cost first. Several back-to-back formatting actions can add up quickly at scale.
{% endhint %}

#### **Empty Data Trap:**

If the input field is empty, or if the mapped value from a previous step does not exist, the action may return an empty result or fail depending on the action you selected.

To avoid this:

* confirm the mapped variable exists before you run the workflow
* use **Set Default Value** when blank input is possible
* check the next step so it can handle empty results safely

#### More pro-tips

* Most extraction actions return only the **first** match, not every match in the text.
* Date values can be interpreted differently if the input format is unclear. Set the expected date format when accuracy matters.
* Invalid data can stop the workflow. Test critical formatting steps before publishing.
* The **Formatting** node is an action node only. It cannot start a workflow by itself.

### Need help?

* Learn the basics in [How a node works](/getting-started/lets-start-with-the-basics/how-a-node-works)
* Build the full flow in [Create a workflow](/workflow-builder/create-a-workflow)
* Browse related nodes in [Component List](/workflow-builder/component-list)


# File

### 1. The "Universal Transit Station" (Overview)

Drag, drop, or paste links. We handle the rest—absolutely free of charge.

Use this node to bring files and links into one clean handoff point. It standardizes them into ready-to-use file links for AI, email, parser, and document steps.

### 2. How to Add the Node

Click the **+** button on your canvas, search for **File**, and add it to your workflow.

### 3. What can you automate? (The "Wow" Use Cases)

1. **The Campaign Asset Hub:** Gather images from Drive, Dropbox, and local uploads into one workflow for AI processing.
2. **The Document Preparer:** Turn local PDFs into workflow-ready file links before sending them to AI or email steps.
3. **The Forgiving Downloader:** Process long lists of links while keeping valid items moving, even when a few entries fail.

### 4. Step-by-Step: Configuration & Smart Data Injection

#### **Add files or paste links**

Drag and drop files into the node, or paste public links into the list. You can mix both in the same step.

#### **Map links from earlier steps**

Type `@` in the input field to open the visual data picker. Then select links or file values from earlier steps, like a webhook, Airtable, or form submission.

If you prefer the classic format, typing `{{` works too.

#### **Send everything forward in one step**

The node keeps your accepted items together and in order. That makes the next step easier to configure.

> 🛑 **\[PLACEHOLDER: SCREENSHOT - UI showing a mix of uploaded files and mapped `@` URL variables]**

### 5. The Output: Seeing Your Results

This node returns clean, ready-to-use file links for the next step in your workflow.

Use the output in AI, email, parser, or document steps to keep your workflow moving without manual cleanup.

> 🛑 **\[PLACEHOLDER: SCREENSHOT - Execution result showing the output URLs]**

### 6. Golden Rules & Guardrails (CRITICAL PRO-TIPS)

* **The Forgiving Array (Error Tolerance):** This node is built to keep going. If 1 out of 5 links is broken or unsupported, Diaflow flags the bad item and still passes the 4 working links forward. Your workflow does not crash over one bad entry.
* **Free to Use:** This built-in node costs **0 Credits**. It also does not consume AI tokens.
* **Uploads come first:** If you mix uploads and pasted links, uploaded files appear first in the output list.
* **Only standard web links are accepted:** Unsupported link types are rejected automatically for safety.
* **Empty inputs are fine:** If nothing is added yet, the node still completes successfully. It simply returns an empty result.

### Need help?

* Read [What is Diaflow?](/workflow-builder/overview)
* Browse the [Component List](/workflow-builder/component-list)


# Python Code


# HTML Parser


# Built in resources

The Built-in resources refer to components created by Diaflow that can be used in your flows.

This section delves into Diaflow's components, explaining their functions and providing typical use cases for each.&#x20;

The four components are:

* Diaflow Vision
* Diaflow Vectors
* Diaflow Drive
* Diaflow Tables

<figure><img src="/files/mhV5x8O3U3OqgLRCVIOf" alt=""><figcaption></figcaption></figure>

Please refer to the following sections for more information on each available component.


# Diaflow Vision

Diaflow Vision allows you to analyse image at your leisure.

<figure><img src="/files/HslTUeKTxxAb74NSx8ca" alt=""><figcaption></figcaption></figure>

## Description

**What it does:** The Diaflow Vision component analyzes images based on a prompt. This prompt guides the model to describe the image according to your specifications.

The Diaflow Vision component has the identifier of diaflow-vision-**X**, where **X** represents the instance number of the Diaflow Vision component.

**When to use it?**  Use Diaflow Vision when you need to process images or documents that contain important data. For instance, if you have a scanned document (like a receipt or contract) and you want to extract the text or numbers from it, this node will help you do that quickly and efficiently.

<figure><img src="/files/j9bma27qfL1QkPAXHzQG" alt=""><figcaption></figcaption></figure>

## Component settings

| Parameter Name | Description                                                                                                                                                                                                                                                                                             |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Prompt         | <p>Describes how you want the model to respond. For example, you can specify the role, manner and rules that the model should adhere to. Also mention the component ID to connect the components.<br><br>You can use one of the methods to gen Prompt:<br>- Use AI<br>- Manual<br>- Prompt Template</p> |
| Image source   | <p>Add an image to your prompt by identifying a trigger file in this configuration.<br><br>Only support image formats such as .jpg, .png<br><br>\*\*If your file is PDF, please convert it to an image using the "PDF to image tool"</p>                                                                |

## Advanced configurations

| Options        | Description                                                                                                                                                                                                               |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Max token      | Refers to the maximum number of tokens (which can be words or pieces of words, depending on the tokenization method) that the model can process in a single input sequence.                                               |
| Enable caching | This option determines whether the results of the component are cached. This means that on the next run of the Flow, Diaflow will utilize the previous computed component output, as long as the inputs have not changed. |
| Caching time   | <p>Only applicable if the "Enable Caching" option has been enabled.<br>This parameter controls how long Diaflow will wait before automatically clearing the cache.</p>                                                    |

## Use case

Here is a simple use case of the Diaflow Vision component, where the Diaflow Vision component is being used to generate a description of an image.

<figure><img src="/files/hg87ZiJE8Gl0GWUZ7TVg" alt=""><figcaption></figcaption></figure>


# Diaflow Vectors

Retrieve relevant/ Add data from Diaflow vector database

<figure><img src="/files/e5hXIoCeV5fvJWemJMCU" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/yJIxG69SMLZ2nsNvDeKJ" alt=""><figcaption></figcaption></figure>

## Description

**What it does:** The Diaflow Vector component is used to vectorize data and transforming raw input data into a numerical format that the model can understand and process.

The Diaflow Vector component has the identifier of vec-**X**, where **X** represents the instance number of the Diaflow Vector component.\
\
**When to use it?** Imagine you're building an AI-powered chatbot that needs to answer user questions based on a massive knowledge base of documents. Diaflow Vectors lets you efficiently search through this knowledge base to find the most relevant information. It's not just about keyword matching – it's about understanding the meaning of the query and finding semantically similar content.&#x20;

*<mark style="color:red;">Caution with action "</mark><mark style="color:red;">**Add data to Vectors**</mark><mark style="color:red;">"</mark>*

After you run the node

* The system is processing the data, and it may take a few minutes to successfully save it to the **Vector**. You can check the data processing status on the **Vector** **page**
* When the name of the added data matches the name of existing data, the system will automatically **overwrite** the old data &#x20;

## Component settings

| Parameter Name | Description                                                                                                                                                                                                                                                                                                                                                                                                           |
| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Action         | <p>Options:<br><br><strong>(1)</strong> <strong>Search data from Vectors:</strong></p><ul><li>All data from vectors: Uses all available vector data. </li><li>From vector groups: Uses data from specific groups of vectors. </li><li>From vector files: Uses data from specific vector files.</li></ul><p><br><strong>(2)</strong> <strong>To add data to Vectors:</strong></p><ul><li>Add data to vectors</li></ul> |
| Input          | <p><strong>(1)</strong> <strong>Search data from Vectors:</strong><br>The content will be used as a keyword for searching data.<br><br><strong>(2)</strong> <strong>To add data to Vectors</strong><br>Include:<br>- File (.docx, .pdf, .txt)<br>- URL</p>                                                                                                                                                            |
| Destination    | <p>Applied this field witch <strong>action = Add data to vectors</strong><br><br>Option:</p><ul><li>Root </li><li>Group</li></ul>                                                                                                                                                                                                                                                                                     |
| Select data    | Allows the user to manage his vector files. Refer to [Vectors](/productivity-tools/diaflow-vectors) section to have more information.                                                                                                                                                                                                                                                                                 |

## Advanced configurations

This Diaflow Vectors component has no advanced configurations.

## Use case

### A - Search data from Vector

Here is a simple use case of the Diaflow Vector component, where the Diaflow Vector component is being used to get data from vector.

**Input:**&#x20;

* Action = "**Search data from Vectors"**
* Select data from Vector Group
* Input prompt to search: Tell me the story about Kaka's footballer

<figure><img src="/files/crtnTystjhMqEc09ZtQF" alt=""><figcaption></figcaption></figure>

**Output:**&#x20;

<figure><img src="/files/PPl4cAS7Fc3oKV03J4GP" alt=""><figcaption></figcaption></figure>

### B - Add data to Vector

Here is a simple use case of the Diaflow Vector component, where the Diaflow Vector component is being used to add data to vector.

**Input**:

* Action = "**Add data to vectors**"
* Destination = "Root"
* Input = Refer link from the node before (With this use case is Trigger node)&#x20;

<figure><img src="/files/MIpXRrqlzXkbBntTjcxq" alt=""><figcaption></figcaption></figure>

**Output**:

<figure><img src="/files/Zl7vzfgHmw5c181AONCg" alt=""><figcaption></figcaption></figure>

At the vector page, when the user reloads the page, it will show the File

<figure><img src="/files/Pv3idGBbCWYleWiqnld8" alt=""><figcaption></figcaption></figure>


# Diaflow Drive

Diaflow Drive allows users to save or get files and metadata from the Diaflow Drive.

<figure><img src="/files/UkK72t4GuH4otm7zQbxG" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ZJEfc2g73B8Z0stUAwrQ" alt=""><figcaption></figcaption></figure>

## Description

**What it does:** Diaflow Drive is a robust storage solution that enables users to save and retrieve files and metadata. By leveraging Diaflow Drive, users can securely store a wide variety of file types, ensuring their data is always accessible when needed. This platform not only supports file storage but also allows for comprehensive metadata management, providing a structured and efficient way to handle information.&#x20;

The Diaflow Drive component has the identifier of drive-**X**, where **X** represents the instance number of the Diaflow Drive component.

**When to use it?**

* **Saving outputs**: Imagine your workflow generates a report. You can use the Diaflow Drive node to automatically save that report file to your Diaflow Drive, keeping everything organized.
* **Using files as inputs**: Let's say you have a CSV file in Diaflow Drive with a list of products. You can use the Diaflow Drive node to load that file into your workflow and then process the product data.
* **Managing files within your automation:** If your workflow needs to keep track of files, update them, or use them in different steps, Diaflow Drive node is essential for managing those files directly within your automation flow.

## Component settings

<figure><img src="/files/3YpFEJ39483kcBt8Em5L" alt=""><figcaption></figcaption></figure>

| Parameter Name | Description                                                                                                                                                                                                   |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Action         | <p>Refers to the action to be performed on the drive. </p><p>There are 4 possibilities.</p><ul><li>Save file </li><li>Get file URL</li><li>Retrieve file metadata</li><li>Retrieve folder metadata </li></ul> |
| Folder         | Select the exact location to perform an action.                                                                                                                                                               |
| File data      | <p>Only available if you select "Save file".<br></p><p>The file will be pushed into the drive.</p>                                                                                                            |
| From           | <p>Only available if you select "Get file" or "Get file metadata". </p><p>The target file/folder to get files.</p>                                                                                            |
| Select file    | <p>Only available if you select "Get file URL" or "Retrieve file metadata". <br></p><p>Clicking to view or select a file</p>                                                                                  |

## Advanced configurations

This Diaflow Drive component has no advanced configurations.

## Use case

Here is a simple use case of the Diaflow Drive component, where the Diaflow Drive component is used to save an input file, which is a PDF, into Diaflow's drive.

**Input**:

* Action = "Save File"
* Folder = "/root"
* File data = Refer to the URL Link of the node before

<figure><img src="/files/4AAXcSDXByPqZuRkFssr" alt=""><figcaption></figcaption></figure>

**Output**:

<figure><img src="/files/KmKJOZ9R44OrTlEYNXsl" alt=""><figcaption></figcaption></figure>

At the Diaflow Drive page, when the user reloads the page, they will view the file&#x20;

<figure><img src="/files/0ra1w87gewOvBBjrZSqb" alt=""><figcaption></figcaption></figure>


# Diaflow Tables

Diaflow Tables help you store, find, update, and automate structured data inside your workspace.

Diaflow Tables help you store, find, and update structured data inside your workspace, so your workflows can use that data at each node.

Use them when your automation needs a reliable place to read from, write to, and keep business data up to date.

<figure><img src="/files/jFNOr7qe4P9VV0hf5qVu" alt=""><figcaption></figcaption></figure>

## When to use Diaflow Tables

* When you want to store customers, orders, tickets, leads, tasks, or internal operations data.
* When a workflow needs to look up information before making a decision.
* When a workflow needs to save new data after a form, approval, or AI node.
* When a workflow needs to update status, results, or existing records.
* When you want table data to become part of your automation logic.

## What you can do with Diaflow Tables

### Find and read records

Use Diaflow Tables to:

* View one specific record.
* Find records that match a condition.
* List many records at once.
* Count how many records are in a table.

### Add new records

Add one new row or many rows in a single workflow node.

This is useful when a workflow collects new information and needs to save it right away.

### Update existing records

Change values that already exist in a table.

For example, you can update a status, assign an owner, or save a processing result.

### Delete records

Remove records when they are no longer needed.

This helps keep operational data clean and current.

### Create or adjust table structure

Diaflow Tables can also help you manage the table itself.

At a high level, you can:

* Create a new table.
* Review the current table structure.
* Add, edit, or remove columns.
* Clear all data from a table when needed.

### Use table changes in automation

Table updates can drive the next node in a workflow.

For example, when a record is added or updated, your workflow can continue with follow-up actions such as notifications, approvals, or enrichment.

## Simple mental model

You can think of Diaflow Tables as a spreadsheet that connects directly to your workflow.

Your workflow can read data from the table, send that data into logic or AI nodes, and then write the result back into the same table.

<figure><img src="/files/TBu27nBGTfAr4FyEYxny" alt=""><figcaption></figcaption></figure>

## Common examples

* Count how many leads are in a table.
* Find a customer by email before sending a message.
* Add a new support ticket after a form submission.
* Update order status after an approval node.
* Create a new row when AI extracts information from a document.

## Basic configuration overview

<figure><img src="/files/ZIynhFwiMLhbSKk4rxkf" alt=""><figcaption></figcaption></figure>

* **Action**: Choose what you want Diaflow Tables to do, such as find, add, update, delete, list, or count.
* **Table**: Choose the table your workflow should use.
* **Input / Mapping**: Provide the data, conditions, or field mapping needed for that action.
* **Optional settings**: Some actions support extra options, such as caching or filtering.

For detailed setup of each action, see the action-specific pages.

## More than the legacy version

Older flows may still use the earlier action set.

Diaflow Tables now support much more than the original query, add, and update pattern. They now cover read, search, list, count, add, update, delete, upsert and basic table structure management in one place.


# Diaflow Pages

Diaflow Page provides users with essential capabilities to manage and manipulate document-based content within their workflows.

<figure><img src="/files/ElnLZ22rdmxayZJWXD0A" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ebDCggfNQXdS7DOJBcRj" alt=""><figcaption></figcaption></figure>

## Description

**What it does**:&#x20;

* Diaflow Page provides users with essential capabilities to manage and manipulate document-based content within their workflows. Users can automate the creation of new documents, seamlessly append content to existing pages, or extract information for further processing.
* This component serves as a dynamic bridge between your automation logic and your knowledge base, ensuring that reports, articles, and logs are generated and stored efficiently. The Diaflow Page component has the identifier of diaflow-page-X, where X represents the instance number of the Diaflow Page component.

**When to use it?**

* **Add to existing document**: Append new text or data to a document that is already created. Use this when you want to maintain a running log, update a status report, or add a chapter to a long-form text.
* **Add to new document**: Create a completely fresh document from scratch. Use this when your workflow generates a standalone report, a new blog post, or a unique summary that needs its own dedicated file.
* **Retrieve data from a document**: Read and extract the full content of a specific document. Use this when you need to feed existing page content into an AI model for summarization, translation, or analysis.

## Component settings

| Parameter Name | Description                                                                                                                                                                                                                                                                 |
| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Action         | <p>The action to be performed on the Pages</p><p> </p><p>There are 3 possibilities. </p><ul><li>Add to existing document</li><li>Add to new document</li><li>Retrieve data from a document</li></ul>                                                                        |
| Page           | <ul><li><em>Visible only when "Add to existing document" or "Retrieve data from a document" is selected</em> </li><li>The target document. Select the specific page from your Diaflow Pages library that you wish to interact with.</li></ul>                               |
| Title          | <ul><li><em>Visible only when "Add to new document" is selected</em></li><li>The name of the new document to be created. You can type a static title or use variables to generate dynamic titles (e.g., "Daily Report - {{date}}").</li></ul>                               |
| Content        | <ul><li><em>Visible only when "Add to existing document" or "Add to new document" is selected</em></li><li>The data or text content that will be written into the document. This is usually mapped from the output of previous nodes (such as AI generated text).</li></ul> |

## Use case

Here is a simple use case of the Diaflow Page component, where the component is used to save an AI-generated article into a brand-new document.

**Input**:

* Action = "Add to new document"
* Input = Refer to the output of the node before (OpenAI node)
* Document name = Refer to the output of the node before (Diaflow Pages)

<figure><img src="/files/JxpYj8dEHb38rvunC5aV" alt=""><figcaption></figcaption></figure>

**Output:**

* The data has been added to the page

<figure><img src="/files/P9JAeul4JKO2UVaxV4nD" alt=""><figcaption></figcaption></figure>

At the Diaflow Page, the user reloads the page, views the new document

<figure><img src="/files/lfhOO5UQZAM58sekfHCD" alt=""><figcaption></figcaption></figure>


# Apps

This documentation page provides a comprehensive list of all applications (Apps) currently supported by Diaflow.&#x20;

Through these integrations, users can easily automate workflows, connect data across multiple platforms, and extend Diaflow’s capabilities in various domains such as email management, CRM, social media, document storage, data analytics, finance, and more.

\
For easier search and updates, all applications are organized by functional categories within a single page. This approach allows you to quickly find the integrations that match your needs while saving time when looking up or adding new apps to the system.

## **1. Automation & Integration Tools**

### Python code <img src="/files/ejsxL3yy8Dg1aAszQ1iY" alt="" data-size="line">

### Hunter.io <img src="/files/RfsnMgrDDuG1azdcl6u2" alt="" data-size="line">

### SerpAPI <img src="/files/838LJq9Y4cYN3fTqpMzo" alt="" data-size="line">

### AWS <img src="/files/MuQ8WuoNXvjLK4nJ7xXB" alt="" data-size="line">

### Exa (Formerly Metaphor) <img src="/files/q6cO3DXu9tRES4OhLSx9" alt="" data-size="line">

## **2.** Social Media & Communication

### Telegram <img src="/files/ynoCVtMw93EleBbLfDCe" alt="" data-size="line">

### YouTube <img src="/files/IJuGUa2XqAgZ927asD0V" alt="" data-size="line">

### Facebook Pages <img src="/files/YpsSaEvFUBlXwtyN2I01" alt="" data-size="line">

### WhatsApp Business <img src="/files/9qLEDDvWdkJMWOEqQ62S" alt="" data-size="line">

### Slack <img src="/files/05N6wbm4RDojLZvHQiGE" alt="" data-size="line">

### Microsoft Teams <img src="/files/yfjqZhtFxcCXgO3dmmhR" alt="" data-size="line">

### Discord Bot <img src="/files/IZIW8f4QvyF2IlRoZey2" alt="" data-size="line">

### Discord <img src="/files/IZIW8f4QvyF2IlRoZey2" alt="" data-size="line">

### LinkedIn <img src="/files/lOAXzVocyLXAGXOEMwXm" alt="" data-size="line">

## 3. Email Marketing & CRM

### Gmail <img src="/files/EYvYQ0woXOEvFyDRjZyx" alt="" data-size="line">

### Mailchimp <img src="/files/syyx6w9f8CJey7IAJGmE" alt="" data-size="line">

### Twilio SendGrid <img src="/files/6j1HrAfKc6J7Zn36C99g" alt="" data-size="line">

### Klaviyo <img src="/files/Qd6GXE60iRPjtqHGHI5R" alt="" data-size="line">

### HubSpot <img src="/files/UxM3dvHOO10ku5aIEyGV" alt="" data-size="line">

### Salesforce <img src="/files/nJFwnbU6FrPcULbsU9in" alt="" data-size="line">

### Intercom <img src="/files/Smq0k7xT6yDsApUK4pB2" alt="" data-size="line">

### Zendesk <img src="/files/W2NpmhZsiMsxZPyZ4Xot" alt="" data-size="line">

### Freshdesk <img src="/files/gCi6tzC9D7H2bll3itP9" alt="" data-size="line">

## 4. Storage & Document Management

### Google Drive <img src="/files/3Hg1s5CBuGzIIOcBDDbY" alt="" data-size="line">

### Microsoft OneDrive <img src="/files/RHjKyWHH7ixh9jctRt9p" alt="" data-size="line">

### Google Docs <img src="/files/kILIO4HwlRaNNaDkBkeR" alt="" data-size="line">

### Dropbox <img src="/files/5O889nV972EZHmWtAOYv" alt="" data-size="line">

### Notion <img src="/files/jNIl2ke0AsPotaAwkCru" alt="" data-size="line">

## 5. Spreadsheet & Database

### Google Sheets <img src="/files/tsVmEx4Thm2VUSLaHAuE" alt="" data-size="line">

### Airtable <img src="/files/jTxHaVtmUleNaff9URQo" alt="" data-size="line">

### Asana <img src="/files/3TiTF2FopGLv9MuqdzO8" alt="" data-size="line">

### Monday <img src="/files/yfVp5Rjn6f8T5mPBgkOe" alt="" data-size="line">

## 6. Calendar & Scheduling

### Google Calendar <img src="/files/Xm54fMRcpMYJnupImTbE" alt="" data-size="line">

### Microsoft Outlook Calendar <img src="/files/GtdBwLuLKCa7QVE5ZQSM" alt="" data-size="line">

### Google Meet <img src="/files/fDbshsCbX2ijSJtRLhMe" alt="" data-size="line">

### Zoom <img src="/files/K9Ip216vwroyMZxxTt8o" alt="" data-size="line">

## 7. Accounting & Finance

### Quickbook <img src="/files/Pwmb2RpHN4TaS0tftt7P" alt="" data-size="line">

### Xero Accounting <img src="/files/7cNOptKqQ4S6bTCStwg9" alt="" data-size="line">

## 8. CMS & Website

### Wordpress.org <img src="/files/C5OCB0ILaLGR8iCpew86" alt="" data-size="line">

### SuiteDash <img src="/files/0655CvamnFDHK32AfPp1" alt="" data-size="line">

## 9. Analytics & Business Intelligence

### Microsoft Power BI <img src="/files/FMPlAlgMIoUX9sgtudNV" alt="" data-size="line">

### YouTube Analytics <img src="/files/IJuGUa2XqAgZ927asD0V" alt="" data-size="line">

### YouTube Data <img src="/files/IJuGUa2XqAgZ927asD0V" alt="" data-size="line">

### LinkedIn Ads <img src="/files/lOAXzVocyLXAGXOEMwXm" alt="" data-size="line">

### Google Ads <img src="/files/jF0Ci1LHz3W6vYrAMcWW" alt="" data-size="line">

## 10. Email & Productivity Apps

### Microsoft Outlook <img src="/files/B6ssWSZS8U6TH67bJSOw" alt="" data-size="line">

### Jira Service Desk <img src="/files/PUC9eawUh3qe3C4746SM" alt="" data-size="line">


# Hunter.io

Search company information from domain, find and verify email address (BYOK - Bring your own keys)

<figure><img src="/files/Yy0XliNALR2xEUmrbmOr" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/birwQuo3l63C2WhVhmvQ" alt=""><figcaption></figcaption></figure>

## Description

**What it does:** Imagine you're building a flow to reach out to potential clients. How do you find their contact information? That's where Hunter.io comes in! It will help you to finds and verifies email addresses from company domains.

**When to use it?**&#x20;

* **Lead Generation for Sales & Marketing**: Automatically find contact information for potential customers from company websites and add them to your outreach campaigns.
* **Enrich Customer Data**: Add company details to your existing customer database to get a fuller picture.

## Component settings

| Parameter Name | Description                                                                                               |
| -------------- | --------------------------------------------------------------------------------------------------------- |
| Credentials    | You can specify to use your own Hunter.io credentials                                                     |
| Action         | <p>Choose one of three options:<br>- Search Domain<br>- Email Finder<br>- Email Verifier</p>              |
| Domain         | <p>Input the Domain <br><br>This field appears when choose action = "Search Domain" or "Email Finder"</p> |
| First name     | <p>Input first name<br><br>This field appears when choose action = "Email Finder"</p>                     |
| Last name      | <p>Input last name<br><br>This field appears when choose action = "Email Finder"</p>                      |
| Email Verifier | <p>Input Email need to verifier<br><br>This field appears when choose action = "Email Verifier"</p>       |

## Example

**Input**

<figure><img src="/files/4SKHpSg2RgFx58t0fmGD" alt=""><figcaption></figcaption></figure>

**Output**

<figure><img src="/files/n1jDHbmaFchSfCYaATnm" alt=""><figcaption></figcaption></figure>


# Outlook Email

Deliver your mail message via Outlook email

<figure><img src="/files/cSUBD3DmrjoDceTRSs0Z" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/TWxYrIRpt6btCGWJsiat" alt=""><figcaption></figcaption></figure>

## Description

**What it does**: Email is still a vital communication tool. The Outlook Email node lets you send emails directly from your Diaflow workflows using your Outlook account.

**When to use it?**&#x20;

* **Automated Welcome Emails**: Send personalized welcome emails to new customers or users automatically.
* **Order & Shipping Notifications**: Keep customers informed about their order status and shipping updates via email.
* **Scheduled Newsletters & Updates**: Send out regular newsletters or updates to your email list.
* **Internal Team Notifications**: Alert your team members about important events, task assignments, or workflow completions via email.

## Component settings

| Parameter Name | Description                                                                                                 |
| -------------- | ----------------------------------------------------------------------------------------------------------- |
| Credentials    | You can specify to use your own Outlook email address                                                       |
| Action         | <p>Options:<br>- Send Email<br>- Create Draft email</p>                                                     |
| To             | <p>Input email address needed to send or refer data input from before node<br><br>Can input many emails</p> |
| CC             | <p>Input email address needed to CC or refer data input from before node<br><br>Can input many emails</p>   |
| Subject        | Input Email Subject                                                                                         |
| Message        | <p>Input email message<br><br>Or refer to data input from before the node</p>                               |
| Attachment     | Attachment Files                                                                                            |

## Example

**Input**

<figure><img src="/files/J3maL02cNbip7Aq9sZyI" alt=""><figcaption></figcaption></figure>

**Output**

<figure><img src="/files/n8UhG3H0jDsGc1ejwTCk" alt=""><figcaption></figcaption></figure>


# Telegram

Send data to a specific group on Telegram

<figure><img src="/files/r5LvKNEAG0m5NoHh4Alo" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/DV18BHgy32icQHFUfT0l" alt=""><figcaption></figcaption></figure>

## Description

**What it does**: Sends automated updates or alerts to your team’s group chat.

**When to use it?**&#x20;

* **Real-Time Alerts**: Send immediate notifications to a group chat when important events occur in your workflow (e.g., system alerts, sales notifications).
* **Community Updates**: Keep your community informed about news, updates, or workflow progress.
* **Daily/Weekly Summary Reports**: Automatically post summary reports of workflow activity to a dedicated Slack channel.
* **Task Assignment Notifications**: Notify team members when tasks are assigned to them via your workflow.

## Component settings

| Parameter Name | Description                                                                   |
| -------------- | ----------------------------------------------------------------------------- |
| Credentials    | You can specify to use your own API Key                                       |
| Action         | <p>Options:<br>- Send Message</p>                                             |
| Chat ID        | Select your chat ID you want to send the message                              |
| Message        | <p>Input email message<br><br>Or refer to data input from before the node</p> |

## Example

**Input**

<figure><img src="/files/yV6IkFI8p7IcAthnBk95" alt=""><figcaption></figcaption></figure>


# Slack

Send data to Slack Channel

<figure><img src="/files/4qesOZslWcdISOQCH7ng" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/FozR9nDEs125KHRyEU3J" alt=""><figcaption></figcaption></figure>

## Description

**What it does**: Sends automated updates or alerts to your team’s group chat.

**When to use it?**&#x20;

* **Real-Time Alerts**: Send immediate notifications to a group chat when important events occur in your workflow (e.g., system alerts, sales notifications).
* **Community Updates**: Keep your community informed about news, updates, or workflow progress.
* **Daily/Weekly Summary Reports**: Automatically post summary reports of workflow activity to a dedicated Slack channel.
* **Task Assignment Notifications**: Notify team members when tasks are assigned to them via your workflow.

## Component settings

| Parameter Name      | Description                                                                             |
| ------------------- | --------------------------------------------------------------------------------------- |
| Credentials         | You can specify to use your own API Key                                                 |
| Action              | <p>Options:<br>- Send Message</p>                                                       |
| Message             | <p>Input email message<br><br>Or refer to data input from before the node</p>           |
| Channel             | Select channel want to send the message                                                 |
| Bot name            | Input bot name                                                                          |
| Bot icon (Optional) | Input bot icon                                                                          |
| Unfurl links        | If enabled, Slack will try to automatically expand a preview for links in messages sent |

## Example

**Input**

<figure><img src="/files/rl8CE4qJKXoiCY0Yj3MV" alt=""><figcaption></figcaption></figure>


# Python

Custom your flow with Python script

<figure><img src="/files/URJCRvld8PtrXRtQf4Ai" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/2mIWioZJkDvvl2ZGYb8s" alt=""><figcaption></figcaption></figure>

## Description

**What it does**: This allows you to run Python scripts inside your workflow, giving your chatbot the ability to process data, perform calculations, and even customize responses.

**When to use it?**&#x20;

* **Complex Data Transformations**: Perform custom data manipulations or calculations that aren't directly available in other nodes.
* **Integrate with Custom APIs & Services**: Connect to APIs or services that don't have dedicated Diaflow nodes yet using Python's vast library ecosystem.
* **Advanced Logic & Decision Making**: Implement intricate decision-making processes or custom algorithms within your workflows using Python code.
* **Extend Diaflow Functionality**: Effectively create your own mini-nodes by encapsulating custom Python scripts within a reusable Diaflow node.

## Component settings

| Parameter Name | Description                                               |
| -------------- | --------------------------------------------------------- |
| Method         | <p>Options:<br>- Manual Script<br>- Python File</p>       |
| Code editor    | Input your code editor when choose method = Manual Script |
| Upload File    | Upload File Python when choose method = Python File       |

## Referencing Data from Previous Nodes

To access the output of a previous node inside your Python script, use the **template syntax**:

{{nodeName.output}}

* `nodeName`: The system name (ID) of the node you want to reference (e.g. `weather-0`, `http-1`, etc.).
* `.output`: Refers to the full output object from that node.

**Example usage:**

def run():\
return {{weather-0.output}}

return run()

<figure><img src="/files/waPK6Gbwp9CnpVG3LrXp" alt=""><figcaption></figcaption></figure>

This script will pass the entire output from the node named `weather-0` directly into the Python logic.

**Note:**

* The `{{ }}` Syntax is evaluated **before** the Python code runs. It injects real JSON data at runtime.
* Make sure the referenced node has already executed successfully and produced output.


# YouTube

Get the transcript from YouTube videos with AI

<figure><img src="/files/KIoRBlhwEeX0juY3Letd" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/s6qv38LiOEFYDnCM06Dn" alt=""><figcaption></figcaption></figure>

## Description

The YouTube component allows you to analyze and extract meaning from YouTube videos.&#x20;

{% hint style="info" %}
Note that the YouTube video must have a subtitle for it to be able to be analyzed.
{% endhint %}

The YouTube component value has the identifier of ytb-**X**, where **X** represents the instance number of the YouTube component.

## Inputs

The YouTube component does not have any input connections.

## Component settings

| Parameter Name    | Description                                                                 |
| ----------------- | --------------------------------------------------------------------------- |
| URL               | This parameter specifies the URL or collection of URLs to source data from. |
| Detected language | Set the language for your video.                                            |

## Advanced configurations

| Options        | Description                                                                                                                                                                                                               |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Enable caching | This option determines whether the results of the component are cached. This means that on the next run of the Flow, Diaflow will utilize the previous computed component output, as long as the inputs have not changed. |
| Caching time   | <p>Only applicable if the "Enable Caching" option has been enabled.<br>This parameter controls how long Diaflow will wait before automatically clearing the cache.</p>                                                    |

## Outputs

The YouTube component has the following output connections.

| Output Name            | Description                                                                        | Constraints                                                            |
| ---------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| To VectorDB/LLM/Python | This output connection represents the YouTube video at the specified URL location. | This must be connected to either an LLM, Python or VectorDB component. |

## Use case

Here is a simple use case of the YouTube component, where the YouTube component is being used to provide input context to an OpenAI GPT AI component, which generates an answer to a user supplied question regarding the YouTube video.

<figure><img src="/files/AsoJ05eg9wHAHIGTJTL5" alt=""><figcaption></figcaption></figure>


# SerpAPI

Search Google with keyword, etc.

<figure><img src="/files/c0kziUILfzFHMVMmomkb" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ZFs7P3etbVDT19xUhqOr" alt=""><figcaption></figcaption></figure>

## Description

**What it does**: When running the node, Diaflow will connect to the SerpAPI application to search for the requested information.

## Component settings

| Parameter Name | Description                             |
| -------------- | --------------------------------------- |
| Credentials    | You can specify to use your own API Key |
| Engine         | <p>Option:<br>- Google Search</p>       |
| Input          | Input your content need to search       |
| Search result  | The number of result                    |




---

[Next Page](/llms-full.txt/1)

