> For the complete documentation index, see [llms.txt](https://docs.fullwhere.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fullwhere.com/documentation/documentation-en/automations/workflows.md).

# Workflows

{% hint style="success" icon="list-check" %}
**IN BRIEF**

Workflows are the heart of orchestrating your customer interactions in Fullwhere.

They allow you to define automation logic, such as:

* define automatic alerts
* automatically assign interactions to users
* generate AI responses
* manage the sending of automatic responses.
  {% endhint %}

{% hint style="info" icon="lightbulb" %}
Fullwhere workflows are based on a visual engine that lets you freely arrange Condition-type and Action-type nodes.

This great flexibility lets you reproduce your internal logic in Fullwhere workflows to best customize the management of your customer interactions.
{% endhint %}

{% hint style="info" icon="shield-check" %}
**ACCESS RIGHTS**

To modify the Workflows in your Fullwhere space, you must be a supervising member with Administrator rights.
{% endhint %}

Go to Automations > [Workflows](https://app.fullwhere.com/automation/workflows) from the main navigation bar on the left of your screen.

## Your Workflows <a href="#h_9997e105e2" id="h_9997e105e2"></a>

The Workflows in your Fullwhere space are displayed in the Workflows table.\
You can easily find a workflow using the text search bar or filters *Status* and *Created by*.

The Workflows table displays the following information in columns:

<table><thead><tr><th width="264.765625">Name</th><th>Description</th></tr></thead><tbody><tr><td>Name</td><td>Name assigned to your workflow</td></tr><tr><td>Status</td><td>Active / Inactive</td></tr><tr><td>Created by</td><td>User from your account who created the workflow</td></tr><tr><td>Creation date</td><td>Workflow creation date</td></tr><tr><td>Date of modification</td><td>Date of the last modification made to your Workflow</td></tr></tbody></table>

To create a Workflow, click the "Create a workflow" button at the top right of your screen.\
To edit an existing Workflow, click the row corresponding to your Workflow in the table.\
To delete a workflow, click the three small dots at the end of the workflows table row and click Delete.

## The trigger

When you create a Workflow, the first step is to configure its trigger.\
The trigger lets you set up conditions that define the interactions that will trigger this workflow, i.e. those for which the different actions in your workflow can be executed.

To define your trigger, click the blue "Trigger - Incoming interaction" card.

In the panel that opens on the right, you can add a Note to your trigger; it will be visible on your workflow graph. Adding a Note can be useful to indicate to your teams the conditions defined in your trigger.

Once your trigger is defined, you can configure the next steps of your Workflow by setting up Nodes.\
Click the ⊕ button at the output of your trigger to define the next step, which can be:&#x20;

* a logical condition
* an AI condition
* an action.

## Logical conditions

Logical conditions are Condition-type Nodes that let you route your customer interactions based on precise fields and values, for example using the Note, Text or even the keywords in your customer interaction.

[Access the list of available logical conditions.](#liste-des-conditions-logiques)

Once you have added a logical condition Node to your Workflow, click it to configure the Node conditions.

In the panel that opens on the right, you can add a Note to your condition node; it will be visible on your workflow graph, allowing you to easily recognize your condition node.

Using the condition add buttons, you can configure the conditions and condition groups that define your Node.

When a customer interaction passes through a Conditions Node, the conditions are checked and the output value is either "<mark style="color:$warning;">`True`</mark>" or "<mark style="color:$warning;">`False`</mark>".

On your logical condition Node, click the "**⊕ True**" button to define the next steps (condition or action) of your workflow for the customer interactions for which your conditions are true/verified.\
On your logical condition Node, click the "**⊕ False**" button to define the next steps of your workflow for the customer interactions for which your conditions are false/invalidated.

## AI conditions

AI conditions are condition nodes that let you route your customer interactions based on scenarios expressed in natural language.

Once you have added an AI condition Node to your Workflow, click it to configure it.

In the panel that opens on the right, you can add a Note to your AI condition node; it will be visible on your workflow graph, allowing you to easily recognize your condition node.

In the "Prompt" section, define the scenario the AI should check in natural language.

When a customer interaction passes through an AI condition Node, it will be compared against your Prompt using an LLM. If the LLM determines that your customer interaction matches your Prompt, it will return the value "<mark style="color:$warning;">`True`</mark>", otherwise the value "<mark style="color:$warning;">`False`</mark>".

{% hint style="info" %}
For conversation-type interactions (WhatsApp, Email, etc.), the last received message as well as the conversation history will be sent to the LLM.
{% endhint %}

On your AI condition Node, click the "**⊕ True**" button to define the next steps (condition or action) of your workflow for the customer interactions for which your AI condition is true/verified.\
On your AI condition Node, click the "**⊕ False**" button to define the next steps of your workflow for the customer interactions for which your AI condition is false/invalidated.

## The actions

Following your trigger, a logical conditions Node or an AI conditions Node, you can add one or more Action Nodes.

From the output of your Trigger, click the "⊕" button then "Action".\
From the output of a Conditions Node, click the "⊕ True" or "⊕ False" button then "Action".

These Nodes define actions that will be automatically applied to the customer interactions for which they are executed.\
Actions can be of different types and can each be configured according to your needs.

Once you have added an action Node to your Workflow, click it to configure it.

In the panel that opens on the right, you can add a Note to your AI condition node; it will be visible on your workflow graph, allowing you to easily recognize your action node.

Select then the type of action you want to configure:&#x20;

### Notify users

The "Notify users" action lets you send a notification by email or in the [notification center](/documentation/documentation-en/notifications/the-notification-center.md) of Fullwhere to users of your choice.

{% stepper %}
{% step %}

#### Recipients panel

The recipients panel lets you configure the users to be notified by your action node.

Click "Add recipients", then search for and select the users to add.

You can also notify users according to the Zone (Brand, Location, Location Group) concerned by the customer interaction.

To define specific users for your brands, click "**Brands +**".

You can "**Choose brands**" to add brands to your action node and define the recipients to notify for this brand.\
You can also use the "**Pre-fill from settings**" option. In this case, we will create the notification logic for you based on your brands and the users who have rights on your brands.

You can perform this operation for the **Locations** and the **Location Groups.**
{% endstep %}

{% step %}

#### Notifications panel

In the Notifications panel, you can select the channels to use for sending notifications: Email, Fullwhere App and WhatsApp.

**Email**

* email subject
* a potential custom message (optional) for recipients, which will be displayed in the header of the received email.

**Fullwhere App**\
Notifications sent on the Fullwhere App channel will be sent to users directly on the platform, in the [notification center](/documentation/documentation-en/notifications/the-notification-center.md).&#x20;

**WhatsApp**\
WhatsApp notifications can be sent to selected users who have WhatsApp and who have registered their phone number on their [Fullwhere account](/documentation/documentation-en/getting-started/set-up-your-account.md#h_383effe7cc).

{% hint style="info" %}
WhatsApp deliveries incur an additional charge. Contact your account manager for more information.
{% endhint %}
{% endstep %}
{% endstepper %}

### Assign users

The "Assign users" action lets you assign a customer interaction to users of your choice.

{% hint style="info" %}
Assignment determines the users for whom a customer interaction will appear in the main view "[My Inbox](/documentation/documentation-en/inbox/navigate-in-the-inbox.md#mon-inbox)".
{% endhint %}

Click "Add users", then search for and select the users to add.

You can also assign users according to the Zone (Brand, Location, Location Group) concerned by the customer interaction.

To define specific users for your brands, click "**Brands +**".

You can "**Choose brands**" to add brands to your action node and define the users to assign for this brand.\
You can also use the "**Pre-fill from settings**" option. In this case, we will create the assignment logic for you based on your brands and the users who have rights on your brands.

You can perform this operation for the **Locations** and the **Location Groups.**

### Generate an AI response

This action lets you generate a response using an [AI agent](/documentation/documentation-en/automations/ai-agents.md) preconfigured in your account.

#### General settings

{% stepper %}
{% step %}

#### Associate an AI agent

Select the '[AI agent](/documentation/documentation-en/automations/ai-agents.md) that your action will use to generate a response. Your agent must have been configured beforehand.
{% endstep %}

{% step %}

#### Response channel

This setting lets you select the [channel](/documentation/documentation-en/inbox/handle-a-customer-interaction.md#h_817c292fa7) on which you want to reply to your customer.

**Customer channel:** the response channel will correspond to the [default response channel](/documentation/documentation-en/inbox/handle-a-customer-interaction.md#le-canal-de-reponse) of the interaction\
**Email:** your response draft will be generated to be sent by email. You can then specify advanced settings specific to the Email channel.\
**SMS:** your response draft will be generated to be sent by SMS. You can then specify advanced settings specific to the SMS channel.
{% endstep %}

{% step %}

#### Automatic sending of the response

**Yes** : your response draft will be sent automatically.\
You can then define the sending settings:\
\- the sending delay\
\- the days of the week on which responses should be sent\
\- the time window during which responses can be sent.

**No** : your response draft will simply be generated but will not be sent automatically.
{% endstep %}

{% step %}

#### Advanced settings

**Additional instructions for your AI agent**\
This field lets you specify additional instructions for your AI agent, which will only be taken into account by this response generation action. This setting can let you specialize your AI agent depending on your different scenarios. You can use [variables](/documentation/documentation-en/automations/ai-agents.md#h_3198d4840a) to dynamically specify the context to your AI agent.

**Provide your AI agent with the interaction history**\
By activating this setting, your AI agent will be able to use the entire conversation to generate the response, not just the last received message. This setting is enabled by default.\
It is recommended to enable this setting for conversation-type interactions (email, private messages...).

**If you have set the response channel to Email, you can configure specific advanced settings:**&#x20;

* Sending email address: lets you define the email address of your account that will be used to send the response
* Email sender: lets you configure the sender name of your email, which will appear in the recipient's mailbox. You can use variables to use a dynamic sender based on your brands or locations.
* Additional recipients: you can specify recipients (To or CC) who will be added to the email thread

**If you have set the response channel to SMS, you can configure specific advanced settings:**&#x20;

* SMS sender: the name displayed when the SMS is received by the recipient
* Additional recipients: you can specify recipients who will also receive the SMS.
  {% endstep %}
  {% endstepper %}

#### Language configuration

The tab **Language** of the Generate an AI response action lets you control the language in which the response will be generated. You can define a priority order among several language sources so that Fullwhere automatically determines the most appropriate language.

Four sources can be used:

* **Customer language** : the language associated with the customer's profile.
* **Interaction language** : the language detected in the received message.
* **Location language** : the default language of the location linked to the interaction
* **Brand language** : the default language of the brand linked to the interaction

These options can be prioritized. For example, you can choose to respond first in the language of the received message, and if it is not detected, use the customer's language.

You can also define a default language. This language will serve as a fallback if none of the configured languages (customer language, interaction language, location language or brand language) is available or detected.

If only a default language is defined in the action, then all generated responses will automatically be produced in this language.

### Create a manual response

The response creation action lets you create a response draft using a fixed response template.

This action can be used if you always want to respond with the same reply for a specific scenario.

{% stepper %}
{% step %}

#### Your response text

Enter the text that will be used to create your response draft.\
You can use **variables** to make your response template dynamic.
{% endstep %}

{% step %}

### Response language

Specify the language in which your response is written.
{% endstep %}

{% step %}

#### Response channel

This setting lets you select the channel on which you want to reply to your customer.

**Customer channel:** the response channel will correspond to the [default response channel](/documentation/documentation-en/inbox/handle-a-customer-interaction.md#le-canal-de-reponse) of the interaction\
**Email:** your response draft will be generated to be sent by email. You can then specify advanced settings specific to the Email channel.\
**SMS:** your response draft will be generated to be sent by SMS. You can then specify advanced settings specific to the SMS channel.
{% endstep %}

{% step %}

#### Automatic sending of the response

**Yes** : your response draft will be sent automatically.\
You can then define the sending settings:\
\- the sending delay\
\- the days of the week on which responses should be sent\
\- the time window during which responses can be sent.

**No** : your response draft will simply be generated but will not be sent automatically.
{% endstep %}
{% endstepper %}

### Switch to manual mode

This action lets you switch the mode of an interaction to *<mark style="color:orange;">`Human`</mark>*, which means that automatic response sending will not be allowed for this customer interaction.

From the moment this action is executed for a customer interaction, no further response can be sent automatically for this customer interaction.

To reactivate automatic response sending for a customer interaction, see Inbox.

Putting this action in place can be useful to delegate the handling of certain customer interactions to your teams.

For more information about how an interaction Mode works, see this [dedicated section](/documentation/documentation-en/inbox/handle-a-customer-interaction.md#modifier-le-mode-dune-interaction).

### Set attributes

The [attributes](/documentation/documentation-en/automations/attributes.md) are custom fields that you can add to your Fullwhere workspace.

The Set attributes action lets you automatically define the value of some of your attributes directly from a workflow.

{% hint style="warning" %}
If you configure the value of an attribute for which AI detection is enabled via a workflow, the values assigned by your workflow will overwrite any values found by AI
{% endhint %}

{% stepper %}
{% step %}

#### Select attributes

In the Define attributes dropdown menu, select the attributes for which your action should assign values.
{% endstep %}

{% step %}

#### Configure values

For each selected attribute, you must select or enter the value(s) to assign to your interaction.

For Multiple selection attributes, indicate whether or not you want to Overwrite the values already present.\
If, at the time of analysis, a customer interaction already has values for a given attribute, two behaviors are possible:&#x20;

* Overwrite the values already present: the values already assigned by a workflow or a user will be replaced by those defined in your action
* Do not overwrite the values already present: the values defined in your action will be added to those already assigned by a workflow or a user.
  {% endstep %}
  {% endstepper %}

### Archive the interaction

This action lets you automatically archive a customer interaction.\
Once archived, a customer interaction will no longer be visible in your Fullwhere Inbox.\
Archived interactions can be viewed in the "Archived" view.

### Set interaction status

This action lets you define the status of your interaction once it has been handled by your workflow.

The status of your interaction can be set to <mark style="color:orange;">Pending</mark>, <mark style="color:$success;">Handled</mark>, or <mark style="color:$info;">Ignored</mark>.

**Use cases:**

* <mark style="color:$success;">Handled</mark> : this can for example be useful when, despite a customer reply, you consider the interaction to be over
* <mark style="color:orange;">Pending</mark> : can allow you to keep your customer interaction in Pending status even if a reply is sent automatically.
* <mark style="color:$info;">Ignored</mark> : allows you not to reply to a customer interaction. Unlike the Handled status, this status does not affect your processing statistics.

{% hint style="info" %}
If your workflow includes a response generation or response creation action with automatic sending, the interaction status automatically changes to Handled when the response is sent. For it to remain Pending, you must add an action explicitly setting this status.
{% endhint %}

### Add a delay to an action

Adding a delay to your action lets you postpone its execution into the future.

To configure a delay, click the action to modify, then at the top right click the 3 small dots and in the dropdown menu click **Add a delay**.

* **Action delay:** determines the delay after which an action must be executed
* **Days:** the action will only execute on the selected days. If the workflow is triggered on an unselected day, execution of the action will be postponed until the next valid day.
* **Trigger time window:** the action will only execute within the defined time window. If the workflow is triggered outside this time, execution of the action will be postponed until the next valid time window.

When an action has a delay, it is marked with the indicator <i class="fa-bolt-lightning" style="color:$info;">:bolt-lightning:</i>.

To modify an action's delay, click the indicator <i class="fa-bolt-lightning" style="color:$info;">:bolt-lightning:</i> at the top right of the action configuration panel.

To remove a delay, click Remove delay in the delay configuration panel.

{% hint style="info" icon="lightbulb" %}
Use cases

An action delay may for example be necessary if you want to keep your customer interaction in the "Pending" status after sending an automatic response.

To do this, add a response generation action and a status-setting action to your Workflow.

Then set a delay of a few minutes on your status-setting action.
{% endhint %}

## List of logical conditions

### Conditions concerning the interaction

<table><thead><tr><th width="232.09375">Name</th><th>Description</th></tr></thead><tbody><tr><td><code>Source</code></td><td>Initial source of the customer interaction</td></tr><tr><td><code>Message channel</code></td><td>Source of the new incoming message within a conversation</td></tr><tr><td><code>Rating</code></td><td>Rating out of 5 (for reviews and satisfaction surveys)</td></tr><tr><td><code>Text content</code></td><td>Text content</td></tr><tr><td><code>Sentiment</code></td><td>Sentiment detected in the text</td></tr><tr><td><code>Themes</code></td><td>Themes detected in the text</td></tr><tr><td><code>Emotions</code></td><td>Emotions detected in the text</td></tr><tr><td><code>Text length</code></td><td>Text length in number of characters</td></tr><tr><td><code>Categories</code></td><td>Categories detected based on your <a href="/pages/cd69655c45fe82f6a2c5fc748c4944e1d73c687d">keywords</a></td></tr><tr><td><code>Brand</code></td><td>Brand of the customer interaction or the interaction location</td></tr><tr><td><code>Location</code></td><td>Customer interaction location (if present)</td></tr><tr><td><code>Location group</code></td><td>Location groups of the interaction location (if present)</td></tr><tr><td><code>Contact address</code></td><td>Email address that received the incoming email</td></tr><tr><td><code>Language</code></td><td>Language detected in the text</td></tr><tr><td><code>Form</code></td><td><a href="#formulaire-de-contact-conditions-avancees">Advanced conditions</a> on contact forms.</td></tr><tr><td><code>Survey</code></td><td><a href="#enquete-conditions-avancees">Advanced conditions</a> on satisfaction surveys</td></tr><tr><td><code>Sevenrooms</code></td><td>Allows use of specific sub-fields of this provider</td></tr><tr><td><code>Zenchef</code></td><td>Allows use of specific sub-fields of this provider</td></tr><tr><td><code>Sunday</code></td><td>Allows use of specific sub-fields of this provider</td></tr><tr><td><code>Booking</code></td><td>Allows use of specific sub-fields of this provider</td></tr><tr><td><code>Message attributes</code></td><td>Allows conditions to be triggered on <a href="/pages/36d517810ab0c74ddc63eca5d7b568af99278d79">custom attributes</a>.</td></tr></tbody></table>

#### Contact form - Advanced conditions

<table><thead><tr><th width="228.8671875">Name</th><th>Description</th></tr></thead><tbody><tr><td><code>Form name</code></td><td><a href="/pages/e473ad083b47e34ada322016a7c7c480b1a03082">Form</a> that received the interaction</td></tr><tr><td><code>Reply</code></td><td>Allows filtering on the answers given to the different form questions*.</td></tr><tr><td><code>Enabled</code></td><td>Online / Offline status of the form</td></tr></tbody></table>

{% hint style="info" icon="circle-info" %}
\*When you use the advanced "Answer" condition of Contact Forms, you are prompted to select the form field and the possible values for which you want your condition to be evaluated.

If within your Fullwhere workspace you have several forms with fields that share the same name, your condition can be validated regardless of the form submitted by the customer, as long as it contains a field with that name. If you want to target a specific form, add a "Form name" condition.

Also, the values proposed for the condition come from all fields with the same name across all of your Fullwhere forms. So, for example, if several forms contain an "Order type" field, the list displays the possible values coming from all forms combined.
{% endhint %}

#### Survey - Advanced conditions

<table><thead><tr><th width="228.8671875">Name</th><th>Description</th></tr></thead><tbody><tr><td><code>Survey name</code></td><td><a href="/pages/6462d3dee8be832e32b8eb8a5b32489a1c096403">Survey</a> that received the interaction</td></tr><tr><td><code>Reply</code></td><td>Allows filtering on the answers given to the different survey questions*.</td></tr><tr><td><code>Enabled</code></td><td>Online / Offline status of the survey</td></tr><tr><td><code>Public access</code></td><td>Public or private survey</td></tr><tr><td><code>Solicitation channel</code></td><td>Survey collected by Email, SMS or WhatsApp</td></tr></tbody></table>

{% hint style="info" %}
\*When you use the advanced "Answer" condition of Surveys, you are prompted to select the survey field and the possible values for which you want your condition to be evaluated.

If within your Fullwhere workspace you have several surveys with fields that share the same name, your condition can be validated regardless of the survey completed by the customer, as long as it contains a field with that name. If you want to target a specific survey, add a "Survey name" condition.

Also, the values proposed for the condition come from all fields with the same name across all of your Fullwhere surveys. So, for example, if several surveys contain an "Order type" field, the list displays the possible values coming from all surveys combined.
{% endhint %}

### Conditions concerning the customer linked to the interaction

<table><thead><tr><th width="232.09375">Name</th><th>Description</th></tr></thead><tbody><tr><td><code>Phone</code></td><td>Customer phone number</td></tr><tr><td><code>Email</code></td><td>Customer email</td></tr><tr><td><code>Customer tag</code></td><td>Tags assigned to the customer</td></tr><tr><td><code>Description</code></td><td>Customer description</td></tr><tr><td><code>Zenchef</code></td><td>Allows use of specific sub-fields of this provider</td></tr><tr><td><code>Zelty</code></td><td>Allows use of specific sub-fields of this provider</td></tr><tr><td><code>Customer attributes</code></td><td>Allows conditions to be triggered on <a href="/pages/36d517810ab0c74ddc63eca5d7b568af99278d79">custom attributes</a>.</td></tr></tbody></table>

### Conditions concerning the transaction linked to the interaction

<table><thead><tr><th width="266.0703125">Name</th><th>Description</th></tr></thead><tbody><tr><td><code>Origin</code></td><td>Transaction source</td></tr><tr><td><code>Amount</code></td><td>Transaction amount</td></tr><tr><td><code>Sevenrooms - Order</code></td><td>Allows use of specific sub-fields of this provider</td></tr><tr><td><code>Zenchef - Order</code></td><td>Allows use of specific sub-fields of this provider</td></tr><tr><td><code>Zelty - Order</code></td><td>Allows use of specific sub-fields of this provider</td></tr><tr><td><code>Juxta - Order</code></td><td>Allows use of specific sub-fields of this provider</td></tr><tr><td><code>Transaction attributes</code></td><td>Allows conditions to be triggered on <a href="/pages/36d517810ab0c74ddc63eca5d7b568af99278d79">custom attributes</a>.</td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.fullwhere.com/documentation/documentation-en/automations/workflows.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
