> 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 core of orchestrating your customer interactions in Fullwhere.

They allow you to define automation logic, such as:

* defining automatic alerts
* automatically assigning interactions to users
* generating AI responses
* managing the sending of automatic replies.
  {% endhint %}

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

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

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

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

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

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

The Workflows in your Fullwhere workspace are displayed in the Workflows table.\
You can easily find a workflow using the text search bar or the 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>Creation date of your workflow</td></tr><tr><td>Modification date</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 row in the workflows table 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, and therefore those for which the different actions in your workflow can be executed.

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

In the side panel that opens on the right, you can add a Note to your trigger; it will be visible on your workflow diagram. 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 configuring Nodes.\
Click the ⊕ button at the output of your trigger to define the next step, which can be:

* 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 specific fields and values, for example using the Note, Text, or even the keywords of your customer interaction.

[Go to 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's conditions.

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

Thanks to the condition-add buttons, you can configure the conditions and condition groups defining your Node.

When a customer interaction goes through a condition 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 customer interactions for which your conditions are true/validated.\
On your logical condition Node, click the "**⊕ False**" button to define the next steps of your workflow for 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 side panel that opens on the right, you can add a Note to your AI condition node; it will be visible on your workflow diagram, allowing you to easily recognize your condition node.

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

When a customer interaction goes through an AI condition Node, it will be compared to 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" %}
In the case of 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 customer interactions for which your AI condition is true/validated.\
On your AI condition Node, click the "**⊕ False**" button to define the next steps of your workflow for customer interactions for which your AI condition is false/invalidated.

## Actions

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

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

These Nodes define actions that will automatically be 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 side panel that opens on the right, you can add a Note to your AI condition node; it will be visible on your workflow diagram, allowing you to easily recognize your action node.

Then select the type of action you want to configure:

### 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) Fullwhere to users of your choice.

{% stepper %}
{% step %}

#### Recipients panel

The recipients panel lets you configure the users who should be notified by your action Node.

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

You can also notify users based on 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**

* the 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 have registered their phone number on their [Fullwhere account](/documentation/documentation-en/get-started/set-up-your-account.md#h_383effe7cc).

{% hint style="info" %}
WhatsApp sends are subject to additional billing. Please 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 based on 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**". 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) previously configured on 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 previously configured.
{% endstep %}

{% step %}

### Associate knowledge bases (optional)

Select the [knowledge bases](/documentation/documentation-en/automations/knowledge-bases.md) to use for response generation. You can add up to 5 knowledge bases to a response generation action.
{% 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 help 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 provide context to your AI agent.

**Provide your AI agent with the interaction history**\
By enabling 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:**

* Sending email address: lets you define the email address from 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 depending 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:**

* 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 settings

The **Language** tab of the Generate an AI response action lets you control which language the response will be generated in. 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 reply first in the language of the received message, and if it is not detected, use the customer's language.

You can also set 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 reply with the same response for a specific scenario.

{% stepper %}
{% step %}

#### Text of your response

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

Indicate 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 an interaction's mode to *<mark style="color:orange;">`Human`</mark>*, which means automatic reply sending will not be allowed for this customer interaction.

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

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

Setting up this action can be useful to delegate the handling of certain customer interactions to your teams.

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

### Define attributes

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

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

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

{% stepper %}
{% step %}

#### Select the attributes

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

{% step %}

#### Configure the values

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

For multiple selection type 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:

* 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 the interaction status

This action lets you set your interaction's status once it has been processed by your workflow.

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

**Use cases:**

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

{% hint style="info" %}
If your workflow includes a response generation or response creation action with automatic sending, the interaction status automatically switches to Processed when the response is sent. To keep it in Pending, you must add an action that explicitly sets this status.
{% endhint %}

### Send a webhook

The **Webhooks** are automated messages sent by Fullwhere when the "Send a webhook" action is triggered in one of your workflows. They contain a payload with the information about the interaction that triggered the action and are sent to a unique URL that you define. You can add custom Headers and Metadata if needed.

Webhooks are an excellent way to integrate your ecosystem with Fullwhere, because they let you set up more advanced integrations depending on your needs, without requiring much development work from your side.

If needed, for security reasons, webhooks received in your systems can be identified and verified using a unique signature.

Once your webhook sending action has been added to your Workflow, you can configure the following fields:

* **Destination URL** : this is the URL to which Fullwhere will send the event
* **Custom Headers** : you can add custom headers if needed that will be sent to the destination URL.\
  Headers must be added as a list of key-value pairs.
* **Custom Metadata** : you can add custom metadata if needed that will be sent to the destination URL.\
  Metadata must be added as a list of key-value pairs.

To learn more about webhook signatures or the payload received, refer to our [dedicated documentation](/developer/webhooks/utiliser-les-webhooks.md).

### Add a delay to an action

Adding a delay to your action lets you postpone its execution to 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 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 displays 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 delete a delay, click Delete delay in the delay configuration panel.

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

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

To do this, add a response generation and 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 related to 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>Note</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>Topics</code></td><td>Topics 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>Length of the text 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 of the interaction's location</td></tr><tr><td><code>Location</code></td><td>Customer interaction location (if any)</td></tr><tr><td><code>Location group</code></td><td>Location groups of the interaction's location (if any)</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. The language of the text can be compared with a fixed value (for example English) to the language of the brand or location.</td></tr><tr><td>Status</td><td>The interaction status (To process, Processed, Ignored)</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 the use of specific sub-fields from this provider</td></tr><tr><td><code>Zenchef</code></td><td>Allows the use of specific sub-fields from this provider</td></tr><tr><td><code>Sunday</code></td><td>Allows the use of specific sub-fields from this provider</td></tr><tr><td><code>Booking</code></td><td>Allows the use of specific sub-fields from this provider</td></tr><tr><td><code>Message attributes</code></td><td>Lets you trigger conditions 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> of the contact form that received the interaction</td></tr><tr><td><code>Answer</code></td><td>Lets you filter based on the answers given to the different questions in the form*.</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 for 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 sharing the same name, your condition can be validated regardless of which form the client submits, 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 offered for the condition come from all fields with the same name across all your Fullwhere forms. Thus, for example, if several forms contain a "Order type" field, the list displays the possible values 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> of the contact form that received the interaction</td></tr><tr><td><code>Answer</code></td><td>Allows filtering on the answers given to the various survey questions*.</td></tr><tr><td><code>Enabled</code></td><td>Survey Online / Offline status</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 via Email, SMS or WhatsApp</td></tr></tbody></table>

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

If, within your Fullwhere workspace, you have several surveys with fields sharing the same name, your condition can be validated regardless of which survey the client completes, 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 offered for the condition come from all fields with the same name across all your Fullwhere surveys. Thus, for example, if several surveys contain a "Order type" field, the list displays the possible values from all surveys combined.
{% endhint %}

### Conditions relating to 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 the use of specific sub-fields from this provider</td></tr><tr><td><code>Zelty</code></td><td>Allows the use of specific sub-fields from this provider</td></tr><tr><td><code>Customer attributes</code></td><td>Lets you trigger conditions on <a href="/pages/36d517810ab0c74ddc63eca5d7b568af99278d79">custom attributes</a>.</td></tr></tbody></table>

### Conditions relating to 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 the use of specific sub-fields from this provider</td></tr><tr><td><code>Zenchef - Order</code></td><td>Allows the use of specific sub-fields from this provider</td></tr><tr><td><code>Zelty - Order</code></td><td>Allows the use of specific sub-fields from this provider</td></tr><tr><td><code>Juxta - Order</code></td><td>Allows the use of specific sub-fields from this provider</td></tr><tr><td><code>Transaction attributes</code></td><td>Lets you trigger conditions 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.
