
[title] Custom variables
[path] Explore more/Scenarios/Variables/

::embed[]{url="https://youtu.be/YF4qYcMfLQc"}

Custom variables are similar to [scenario variables](docId\:xheAxlxyiFE-v0oSUxxpE), but they are defined at the organization or team level.

## Use custom variables when you need:

- Data shared across multiple &#x20;
- Settings that control how  behave (for example, TestMode = true/false)
- Values that persist between  runs
- Team or organization-wide configuration values

:::hint{type="info"}
Custom variables are available only on Pro, Teams, and Enterprise pricing plans. See [Make pricing](https://www.make.com/en/pricing) for more information.
:::



For each variable, you need to identify the:

- **Name** (permanent variable name)
- **Data type** (text, number, Boolean, or date)
- **Value** (the actual value of the variable)

Here are some situations for which you might use custom variables:

- Keep track of a value between multiple  executions
- Share a value between different &#x20;
- Set a global variable that various  leverage. For example `TestMode = true/false` so the  routes differently according to the value.
- Change the behavior of a  without modifying the  blueprint. For example, `myLimit=20` set as a custom variable in the Limit field of a module.

:::hint{type="warning"}
Variables are not meant to store secrets. Don’t use them for anything sensitive!

Variable values are not encrypted as they are stored in plain text. Don’t use variables to store passwords or any other sensitive data. Be aware that other team members and organization admins can access all custom variables.
:::

:::::ExpandableHeading
## Create a custom variable

You can create custom variables at the organization level and at the team level.

::::WorkflowBlock
:::WorkflowBlockItem
Decide if you want to create an organization variable or a team variable. 

- For organization variables, go to the organization dashboard and click **Org Variables > Add organization variable**.
- For team variables, go to the team dashboard and click **Team Variables > Add team variable**.
:::

:::WorkflowBlockItem
Fill in the following information:

| **Field**     | **Description**                                                                                                                                                                                                                                                                       |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Name**      | - This field is mandatory and you cannot change it after you save it.
- The name is the identifier of the variable.
- The name must contain only letters, digits, or the symbols $ and \_.
- The name cannot start with a digit.
- The name must contain a maximum of 128 characters. |
| **Data type** | Choose the variable data type from the dropdown menu<br />- Number
- Text
- Boolean
- Date                                                                                                                                                                                            |
| **Value**     | * Enter the value for your variable.
* You can use letters, digits, spaces, and special characters.
* Value cannot be empty.                                                                                                                                                          |
:::

:::WorkflowBlockItem
Click **Save** to save your custom variable.
:::
::::

Your new variable will appear in the list of variables. Click the  icon to see a list of  using the custom variable.

![Usage of a custom variable in a scenario](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/XFzTBc-zqZfSAgR6OdyqW-20260316-113448.png)

To preview the variable value, hover over the individual value field.

![Preview variable value](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/sSplZad7fcVAGvcJwJlGt_uuid-be2168f3-43b9-8e67-f571-98acc55cb92d.png)
:::::

:::::ExpandableHeading
## Edit a custom variable

:::hint{type="warning"}
If your other team members or organization admins use the same variable in their , the changes will affect them too.
:::

::::WorkflowBlock
:::WorkflowBlockItem
Go to the variable you want to edit.

- For organization variables, go to the organization dashboard and click **Variables**.
- For team variables, go to the team dashboard and click **Variables**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Sw7hlnJFiOAmA_SNthxsF_uuid-9aa620f5-93e1-2e75-f40f-d40d8d3f367c.png" size="80" width="2792" height="866" position="flex-start" alt="Organization variables" showCaption="false"}
:::

:::WorkflowBlockItem
In the list of your custom variables, find the one you want to edit and click **Edit** next to it.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/_LxOWDd6e0-n0leVNvRZF_uuid-649fa07f-5cc6-a3ca-2965-1a037be80585.png" size="80" width="2248" height="754" position="flex-start" alt="Edit a custom variable" showCaption="false"}
:::

:::WorkflowBlockItem
Edit the variable as needed. You can edit the variable data type and value. You can't edit the name.
:::

:::WorkflowBlockItem
Click **Save** to save your changes.
:::
::::

Your changes are saved and your updated variable will appear on the list of variables. Hover over the individual value field to preview the variable value.

The changes automatically update in the  that already use the variable.

:::hint{type="info"}
The value of a custom variable can be changed within a as well. The value changes only **after** the  finishes running. The new value is available for the next run of the  for everyone in the organization or team.
:::
:::::

::::::ExpandableHeading
## Delete a custom variable

:::hint{type="warning"}
Deleting a variable that you already use in one or more  can affect other users who use the same variable in their . After you delete a variable, the variable becomes inactive in all  where it is used and it stops returning expected values.
:::

:::::WorkflowBlock
:::WorkflowBlockItem
Decide if you want to delete an organization variable or a team variable.

- For organization variables, go to the organization dashboard and click **Variables**.
- For team variables, go to the team dashboard and click **Variables**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Sw7hlnJFiOAmA_SNthxsF_uuid-9aa620f5-93e1-2e75-f40f-d40d8d3f367c.png" size="80" width="2792" height="866" position="flex-start" alt="Organization variables" showCaption="false"}
:::

:::WorkflowBlockItem
In the list of your custom variables find the one you want to delete and click **Delete&#x20;**&#x6E;ext to it.

![Delete a custom variable](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/a9rv3DYO_7AZZ9KyBcQf2_uuid-937365c7-46ad-aaa5-a44d-bf6e8f36eb13.png "Delete_a_custom_variable_.png")
:::

::::WorkflowBlockItem
Clic&#x6B;**&#x20;OK** to confirm that you want to delete the variable.&#x20;

:::hint{type="warning"}
If the custom variable you are deleting is already used, you will see a pop-up that lists all scenarios that will be impacted. If you still want to delete it, click **OK**.
:::
::::
:::::

The variable is deleted and disappears from your list of custom variables.
::::::

:::::ExpandableHeading
## Check custom variable history

You can see who changed the custom variable, when, and what the changes are.

::::WorkflowBlock
:::WorkflowBlockItem
Go to the custom variable whose history you want to check.

- For organization variables, go to the organization dashboard and click **Variables**.
- For team variables, go to the team dashboard and click **Variables**.
:::

:::WorkflowBlockItem
Click the dropdown menu next to **Edit**. Select **Show history**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/QqjNTbNk_9BJuuBmhxDwy_uuid-3a08debe-c15d-3c76-aace-5baa64271b62.png" size="80" width="1262" height="625" position="flex-start" alt="Variable history" showCaption="false"}
:::
::::

A new window opens where you can see the variable history. The last change appears on the top.
:::::

:::ExpandableHeading
## User permissions for custom variables

**Organization variables**

|                                                    | **Owner** | **Admin** | **Member** | **Accountant** | **App Developer** |
| -------------------------------------------------- | --------- | --------- | ---------- | -------------- | ----------------- |
| **Can access organization variables**              | X         | X         | X          |                | X                 |
| **Can edit&#x20;**<br />**organization variables** | X         | X         |            |                |                   |
| **Can add&#x20;**<br />**organization variables**  | X         | X         |            |                |                   |
| **Can delete organization variables**              | X         | X         |            |                |                   |

**Team variables**

|                               | **Team Admin** | **Team Member** | **Team Monitoring** | **Team Operator** | **Team Restricted Member** |
| ----------------------------- | -------------- | --------------- | ------------------- | ----------------- | -------------------------- |
| **Can access team variables** | X              | X               |                     | X                 | X                          |
| **Can add team variables**    | X              | X               |                     |                   | X                          |
| **Can edit team variables**   | X              | X               |                     |                   | X                          |
| **Can delete team variables** | X              | X               |                     |                   | X                          |
:::

:::::ExpandableHeading
## Example: Use a custom variable to control a 

You can use a custom variable at the organization or team level to easily switch the value and control how a works. Here, a custom variable called `debugMode` is boolean, and if the value is `true` an email will be sent to a team member. If you change the value to `false` at the team level, the scenario will end after adding a row to the Google Sheets document.&#x20;

![Custom variable scenario example](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-0RMLHlJimsf2Wky8UYh1r-20250617-084713.png)

::::WorkflowBlock
:::WorkflowBlockItem
Decide if you want to create an organization variable or a team variable.

- For organization variables, go to the organization dashboard and click **Variables > Add organization variable**.
- For team variables, go to the team dashboard and click **Variables > Add team variable**.

In this example, we are using a team variable.
:::

:::WorkflowBlockItem
Enter your variable **Name**, **Data type**, and **Value**.

**Name:** debugMode

**Data type:** boolean

**Value:** Yes

Click **Save** to save your custom variable.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-HazvNPMejaof-Z8-BnLJw-20250617-084350.png" size="64" width="497" height="481" position="flex-start" alt="custom variable" showCaption="false"}
:::

:::WorkflowBlockItem
In your , add a **Tools > Set variable** module.&#x20;

Set the **Variable name** to `city` and the **Variable value** to `Madrid`.

Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-DqxgjWG2V5IGQMKHJiVET-20250617-085014.png" size="72" width="698" height="364" position="flex-start" alt="Set city variable" showCaption="false"}
:::

:::WorkflowBlockItem
Add a **Weather > Get current weather&#x20;**&#x6D;odule.

In the **I want to enter a location by** field, select `cities`.

In the **City** field, map the value to the `city` variable that you set in step 3.

Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-IX7qNS0yDENePw7GKuSCS-20250617-085651.png" size="80" width="807" height="337" position="flex-start" alt="Weather, set location" showCaption="false"}
:::

:::WorkflowBlockItem
Add a **Google Sheets > Add a row** module and create a connection.

In this example, we have a Google Sheets document called **Weather report** saved in **My Drive**. This file has headers for the **date**, **city**, **average temp**, **status**, and **description**.

Connect to this file and map values as shown:

| **Field**    | **Mapped value**                |
| ------------ | ------------------------------- |
| date         | formatDate(now; "DD-MM-YYYY")   |
| city         |  variable `city`                |
| average temp | Weather app value `Temperature` |
| status       | Weather app value `Status`      |
| description  | Weather app value `Description` |

Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-VoQ6hXm33LbPO9xO0-njy-20250617-085949.png" size="78" width="716" height="1115" position="flex-start" alt="Map values to the Google Sheet document" showCaption="false"}
:::

:::WorkflowBlockItem
Add an **Email > Send an Email to a Team Member** module and create a connection.

In the **To** field, select the member of your team you want to send the email to.

In the **Subject** field, enter a relevant subject.

In the **Content&#x20;**&#x66;ield, enter the text of your email, mapping the information you want to share with your team member. You can use HTML tags.

Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-kl0TKIbuE8qBAC6U93HFV-20250617-090231.png" size="70" width="448" height="844" position="flex-start" alt="Send email if filter is true" showCaption="false"}
:::

:::WorkflowBlockItem
In your , between the **Google Sheets** and **Email** modules, click the **wrench icon** to set up a filter.

**Label:** Debug mode?

**Condition:&#x20;**&#x4D;ap the condition to the `debugMode` custom variable.

Change the operator to **Boolean operators: Equal to** and enter `true` in the field.

Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-1vdyNQYWQEYxTHdO1uqtt-20250617-090525.png" size="68" width="450" height="405" position="flex-start" alt="Debug filter" showCaption="false"}
:::

:::WorkflowBlockItem
Click the save icon to save your  and click **Run once** to test.
:::
::::

If your custom variable value is `yes`, an email is sent to your team member.

![Custom variable email example](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-j_yvnMTfJp1abCZoZs2_u-20250617-094226.png)

If the custom variable value is `no`, the email is not sent after the weather information is stored in the Google Sheets document.
:::::


[title] Step 6. Test the module
[path] Get started/Create your first scenario/

Testing makes sure your module is working correctly before you continue building your scenario.&#x20;

To test the **Google Sheets > Watch New Rows** module:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Right-click the **Google Sheets > Watch New Rows** module.
:::

:::WorkflowBlockItem
Select **Run this module only.&#x20;**

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/HQBmTqLdhFw4tnWL-dNgN-20251103-195155.png)

When the run completes, an output bubble will appear above the module.
:::

:::WorkflowBlockItem
Click this bubble to view the results. Since this module reads rows from your **Prospects** spreadsheet according to the limit you set in [Step 5](docId\:Y5ROoUIJfFicCHBX1-QQ_), you'll see all your spreadsheet data when you click the output bubble.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/bnImgZ1C4qIf8WjR0vEKx-20251103-195219.png)
:::

:::WorkflowBlockItem
Compare the data in the operation output with your original spreadsheet to verify that all information appears correctly.

![](https://archbee-image-uploads.s3.amazonaws.com/yjwhINLS3fc-NXg38fV_d-VXMppkIArP5-JCPsbStlC-20250321-171344.png)

When creating a scenario, regularly test each step to identify potential issues early.
:::
::::

:::hint{type="warning"}
Every test run for this specific module consumes one [credit](https://help.make.com/credits#CHMs2) from your account.
:::


[title] Options related to incomplete executions
[path] Explore more/Scenarios/Incomplete executions/

The following options in   settings determine if and how the incomplete executions are stored:&#x20;

- **&#x20;Store incomplete executions**
  This option enables incomplete executions for the . If this option is disabled,  doesn't store incomplete executions of the .
- **Process data in order**
  Process data in order ensures that the  runs in a sequence. If there is an incomplete execution of the ,  pauses further scheduling of the  to keep the processing in the chronological sequence.  activates the  again after the  has no incomplete executions.

  If the  has instant scheduling,  stores the arriving bundles in the webhook queue.
- **Enable data loss**
  Data loss setting controls what should happen when  cannot create an incomplete execution of a failed  run. This happens in most cases because the incomplete execution storage is full. Incomplete execution storage is limited based on the usage allowance.

  If you keep data loss disabled,  pauses scheduling of the  to avoid losing any more  runs, until you clear the incomplete execution storage and enable the  again.

  If you enable data loss,  will continue scheduling the  even if it couldn't store the incomplete execution.


[title] Aggregator
[path] Key concepts/Tools/

An **aggregator** is a [type of module](docId\:PDoPIBceCKCboMPpKplmY) designed to merge several bundles of data into a single bundle.

When you run an aggregator, it:

1. accumulates all the bundles it receives (during a single source module's operation)
2. outputs a single bundle with an array containing one item per each accumulated bundle. The content of the array's items depends on particular aggregator module and its setup.

A typical example of an aggregator module is the [Array aggregator](docId\:NcSZYP3n_O5A3R4CUQceL) module. Aggregators usually feature the following fields:

| **Source Module**                              | The module from which the bundle aggregation will start. The source module is usually an [iterator](docId\:NcSZYP3n_O5A3R4CUQceL) or a search module that outputs a series of bundles. Once you setup the aggregator's Source Module (and close the aggregator's setup), the route between the source module and the aggregator will be wrapped in a grey area to visualize the start and the end of the aggregation.                                            |
| ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Group by**                                   | The aggregator's output can be split into several groups with the help of the *Group by* field. The *Group by* field can contain a formula that is evaluated for each aggregator's input bundle. The aggregator then outputs one bundle per each distinct formula's value. Each bundle contains two items:<br />* `Key` contains the distinct value.
* `Array` contains the aggregated data from the bundles for which the formula evaluated to the `Key` value. |
| **Stop processing after an empty aggregation** | By default, the aggregator outputs the result of the aggregation even in case no bundles reached the aggregator (e.g. because they have been all filtered out on their way). If the *Stop processing after an empty aggregation* option is enabled, the aggregator will not produce any output bundle in this case and the flow will stop.                                                                                                                       |



:::hint{type="success"}
Bundles outputted from the source module and any other modules between the source module and the aggregator module are not outputted by the aggregator and thus items in these bundles are not accessible by the modules in the flow after the aggregator.
:::

If you need to access items from bundles outputted from the source module and any other modules between the source module and the aggregator module, make sure to include them in the aggregator's setup, e.g. in the *Aggregated fields* field in the setup of the **Array aggregator** module.

## Example

### Use case: Zipping all email attachments and uploading the ZIP file to Dropbox

The  below shows how to:

1. Watch a mailbox for incoming emails: [Email > Watch emails](docId\:H5qycYdCFM29tfYMovn0N) trigger will output a bundle with item `Attachments[]` , which is an array containing all the email's attachments.
2. Iterate the email's attachments: [Email > Iterate attachments](docId\:H5qycYdCFM29tfYMovn0N) iterator takes the items from the `Attachments[]` array one by one and sends them further as separate bundles.
3. Aggregate the bundles outputted by the [Email > Iterate attachments](docId\:H5qycYdCFM29tfYMovn0N) module: [Archive > Create an archive](docId\:c133rb5j6ddFP4_4QkA4w) aggregator accumulates all the bundles it receives and outputs a single bundle containing the ZIP file
4. Upload the resulting ZIP file to Dropbox: Dropbox > Upload a file obtains the ZIP file from the [Archive > Create an archive](docId\:c133rb5j6ddFP4_4QkA4w) module and uploads it to Dropbox.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/IS13UQrHtf7UZZqNPvsrG_uuid-8d3f464a-4279-1031-c635-9d9d638aed2f.png)

Below is a sample setup of the **Archive > Create an archive** aggregator:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-wnWEGa01PipW0Sh_qAOGB-20250213-140036.png" size="50" width="1095" height="1367" position="center" showCaption="false"}


[title] Related APIs
[path] Explore more/Scenarios/Scenario inputs and outputs/

The Make API allows you to define  inputs and outputs programmatically, as well as use the API to pass input values to a  and run it.

In the API, the definition of  inputs and outputs is called **scenario interface**.

You can also use the **Run a scenario** module of the Make app.&#x20;

The following endpoints are available:

- [Get scenario interface](https://developers.make.com/api-documentation/api-reference/scenarios#scenarios-scenarioid-interface)
- [Update scenario interface](https://developers.make.com/api-documentation/api-reference/scenarios#scenarios-scenarioid-interface-1)
- [Run a scenario](https://developers.make.com/api-documentation/api-reference/scenarios#scenarios-scenarioid-run)

[title] Filtering
[path] Key concepts/Data & mapping/

In some , you may need to only work with bundles that fit specific criteria. Filters will help you to select those bundles.

You can add a filter between two modules and check whether bundles received from the preceding modules fulfill specific filter conditions or not. If yes, the bundles will be passed on to the next module in the . If not, their processing will be terminated.

For example, if you want to create a  with the [Facebook](docId\:xrAgCGHcpYJ0o9GcXgYu8) trigger *Watch posts* and you want to work only with posts containing a specific word or posts written by a specific author, a filter would make sure you receive only these posts and nothing else.

## Adding a filter

To add a filter between two modules, click on the connecting line between them.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/vfcJ7M8gpBi-dE4rqZWQs_uuid-1c880eae-ed8e-cb8c-b69a-33b4996368f8.png)

This brings up a panel where you can enter the name for the filter that is to be created and define one or more filter conditions.

![screen-shot-2021-12-10-at-16\_16\_11.png](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/TbSIURX6BoQ0WpVdiMM9K_uuid-3d5735ef-a72c-04e2-86fc-50e9b0529622.png)

For each condition, you can enter one or two operands and an operator that will determine the relation between them. In the operand field, you can enter values in the same way as you would [map](docId\:upfwoZsCC5SoIXR2954z2) them.

In the example above, you can see how to connect the [Gmail](docId\:v6l8KMmwflB2wxhoi3TRp) trigger *Watch emails* and the [Google Drive](docId\:CT1o6eSjM1F0Xm3Wk5nBx) action *Upload a file*. The filter automatically applies the condition to incoming bundles from the first module and only bundles containing attachments are allowed to pass on to the next module.

## Operators

For each condition, you can use one of several different operators.

### Basic operators

- **Exists** - checks whether a specific bundle item is filled in. Using this operator, you can create a filter that permits, for example, only Facebook posts that contain a photo to go through to the next module in a .
- **Not exists** - the opposite of *exists*. It permits only those bundles where a specific item is not filled in.

### Other operators

There are a number of other operators you can use: text comparison operators, numerical operators, time and date operators, and operators for working with [arrays](docId\:K8NyMRgqbg3l_8LnPX7Wm).

## Copying a filter

Copying filters is currently not natively supported by the [Scenario editor](docId:7euvHnup3GLX7SO-Jdcng), though if you use the Google Chrome web browser, the following workaround can be employed:

::::WorkflowBlock
:::WorkflowBlockItem
Install [Make DevTool](docId\:bChJZZdDEM-1PyFEx4NPC) Chrome extension.
:::

:::WorkflowBlockItem
In , open your .
:::

:::WorkflowBlockItem
In Chrome, open the **Developer tools**. You can do so either by choosing the **Developer tools** command from the the Chrome main menu or just press Ctrl+Shift+I or F12:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/5P34QWcnnARKeSEitdHww-20260115-132649.png" size="60" width="1132" height="1590" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
In the **Developer tools**, click on the  tab.
:::

:::WorkflowBlockItem
Click on the **Tools** icon in the left side bar.
:::

:::WorkflowBlockItem
.Click on the **Copy filter** tool and configure it in the right side panel.
:::

:::WorkflowBlockItem
Set the **Source Module** field - the module that's right after the filter you wish to copy.
:::

:::WorkflowBlockItem
Set the **Target Module** field - the module before which you wish to copy the filter.
:::

:::WorkflowBlockItem
Click on the **Run** button.
:::
::::


[title] Connect an application
[path] Key concepts/Scenarios & connections/

To allow your  to get and receive data from third-party services, you need to create a connection between Make and those services.&#x20;

Connections allow your scenarios to perform actions like updating records in Airtable, sending emails in Gmail, adding rows in Google Sheets, and many more, from directly within your automated workflow in Make. &#x20;

:::hint{type="warning"}
Since third-party services use different technologies and authentication methods, the steps to create a connection in Make can vary.&#x20;

For some apps, you will only need to log in to the third-party service and grant Make permission to access your profile and data. Other apps may require you to enter specific credentials such as username and password, API Key, Client ID, and Client secret, or other values.&#x20;

To prevent connection errors, always review the app's required connection details in our [Apps Documentation](https://apps.make.com/).&#x20;
:::

Make offers two types of connections:

1. **Standard** **connections** - the most common type of connection, covered in detail in this article.
2. **Dynamic** **connections** - a variable that contains multiple connections you can choose from while executing the scenario. Learn more about this Enterprise-level feature [here](https://help.make.com/dynamic-connections).

If Make doesn't offer an integration for the service you need, you can connect to it using the [HTTP app](https://apps.make.com/http).

## Create a connection

You create connections in the Scenario Builder when adding a module. All users in your team in Make can use and manage any connections you create in that team. Use your personal third-party account and credentials carefully, especially when your team has otherusers.

:::hint{type="success"}
If you're on the **Teams** plan or higher, you may consider creating a separate team in which you are the only member to connect to Make using your personal accounts and details.
:::

To see how to connect a specific app, refer to the app's page in the [Apps Documentation](https://apps.make.com/).

These are the general steps to create a connection:

:::::WorkflowBlock
:::WorkflowBlockItem
Create a new scenario or open the existing one.&#x20;
:::

:::WorkflowBlockItem
Click the giant plus and search for the app and module you need. In this example, we will choose **Dropbox** > **Create a Folder**.
:::

:::WorkflowBlockItem
Click **Create a connection**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/gDwX09TAF35Y_GJP8-fiZ-20251021-121934.png" size="60" width="1128" height="532" position="center" darkWidth="1128" darkHeight="532" showCaption="false"}
:::

::::WorkflowBlockItem
:::hint{type="info"}
Steps 4 and 5 can vary. For Dropbox, you will only see the **Connection** **name** field within the standard settings. However, for other apps, you may see additional optional and(or) mandatory fields related to authentication or module's requirements.&#x20;
:::

In the **Connection name&#x20;**&#x66;ield, you can name your connection. For example, if you have two different Dropbox accounts, you might name one "Dropbox-Company" and the second "Dropbox-Personal".

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/JWPPJqXNROeC4wKViT-pA-20251021-122607.png" size="60" width="1632" height="624" position="center" darkWidth="1632" darkHeight="624" showCaption="false"}
::::

:::WorkflowBlockItem
Click **Save**. A new window prompts you to grant Make access to your data. &#x20;
:::

:::WorkflowBlockItem
Follow the on-screen instructions to grant Make access to your Dropbox account and data.
:::
:::::

You have now created a connection between your Dropbox account and Make and can continue setting up the module. You can reuse this connection in any other Dropbox module across scenarios.&#x20;

Within your team, there can be multiple connections for the same app. If a connection already exists, follow these steps to create another one:&#x20;

- Click **Add&#x20;**&#x69;n th&#x65;**&#x20;Connection&#x20;**&#x66;ield of the required app's module.&#x20;
- Repeat the connection creation steps described above.&#x20;

You can now select the required connection from the drop-down menu in the **Connection** field.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/-eGljsZ3v0z12EcAm4m4F-20251022-163046.png" size="50" width="1124" height="686" position="center" darkWidth="1124" darkHeight="686" showCaption="false"}

## Manage connections

To view and manage connections, click **Credentials** in the left sidebar, switch to **Connections,&#x20;**&#x61;nd locate the required app. From there, you can:

- Edit the connection
- Verify the connection
- Reauthorize the connection
- Delete the connection

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/RX2oIUX3MErTExS6I9wHf-20260325-092634.png" size="100" width="2668" height="920" position="center" darkWidth="2668" darkHeight="920" showCaption="false" indent="2"}

There, you can also see the scenarios where this connection is used, permissions granted and use filter to see your connections.

### See the scenarios where this connection is used

- Click the scenarios icon to see which scenarios are using the connection, and click the expand icon to open the scenario in a new tab.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/7ureYQvsmzttgOmu40F2q-20260325-092715.png" size="100" width="2174" height="580" position="center" darkWidth="2174" darkHeight="580" showCaption="false" indent="2"}

### See the permissions granted with this connection

- Click the permissions icon to view the permissions granted for that connection.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/6wijhDIAssxe_7DPronqL-20260325-092901.png" size="100" width="2170" height="694" position="center" darkWidth="2170" darkHeight="694" showCaption="false" indent="2"}

### Filter connections

- Click the filter icon next to the search box:
  - Select **All connections&#x20;**&#x74;o see all the connections created within your team
  - Select **My connections** to only see connections created by you

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/0ZkvAorvFP0zUUntce-Th-20260325-093348.png" size="100" width="2180" height="564" position="center" darkWidth="2180" darkHeight="564" showCaption="false" indent="2"}

- You can also see an icon next to the connection created by you:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/5CDNmiK9NrFOiE653doai-20260325-093612.png" size="100" width="2182" height="480" position="center" darkWidth="2182" darkHeight="480" showCaption="false" indent="2"}

## Edit connections

You can update the credentials and other details of a connection after you created it. For example, if you need to change the API key, Client ID, Client Secret, required scopes, etc. Different apps will have different connection editing forms depending on the credentials or details they require and allow to edit.

Editing a connection replaces the original data with the new data. You have to provide all the credentials required to create the connection again, as Make doesn't keep the original connection data.

To edit a connection:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Credentials**, switch to **Connections**, and locate the required connection.﻿
:::

:::WorkflowBlockItem
Click the **three dots** **>** **Edit** for the required connection.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/2sKhzoHS5VPZlT00CYsmD-20260325-093633.png)
:::

:::WorkflowBlockItem
In the pop-up window, enter the new details.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/SxrasLYDIRy9U5oOCGe5t-20251216-150824.png" size="50" width="874" height="832" position="center" darkWidth="874" darkHeight="832" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save.**
:::
::::

:::hint{type="warning"}
After you edit a connection, it will be automatically updated in all the modules that use it. By editing a connection, you update some of its details, but don't create a new one.&#x20;

If you've switched accounts used in a connection, or the authentication method has been changed, you will need to create a new connection. Once you create it, follow the steps described [here](https://help.make.com/replace-connections-across-multiple-modules) to replace the old connection with a new one across multiple modules.
:::

### Edit connections with API keys, OAuth credentials, and scopes

:::hint{type="info"}
When updating credentials, especially for API key and OAuth connections, make sure the new credentials include all necessary scopes to allow Make modules to perform actions on your behalf. This is particularly important if your scenario uses the **Make an API call** module of the app.

Make cannot ensure that the edited connection has the scopes required for all modules that use the connection.

If a module uses a connection with insufficient scopes, the  will end with an error.
:::

To edit a connection with an API key:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Click the **three dots** > **Edit** for the required connection.
:::

:::WorkflowBlockItem
In the pop-up window, fill in the new data in the form. &#x20;

Connection editing forms may vary depending on the app and on the type of credentials you can edit. This is an example for the [OpenAI (ChatGPT, Sora, DALL-E, Whisper)](https://apps.make.com/openai-gpt-3) connection:

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/sBr-RTgpu2aFtDqeJdp0h-20251021-161622.png" size="50" width="786" height="970" position="center" darkWidth="786" darkHeight="970" showCaption="false"}
:::

:::WorkflowBlockItem
Click the **Save** button to confirm changes. If you click the **Close** button, Make closes the form and keeps your original connection.

Make applies the saved changes immediately. After confirming, Make will update the connection details in all the modules where it's used.
:::
::::

To edit a connection with OAuth credentials:

::::WorkflowBlock
:::WorkflowBlockItem
Click the **three dots** > **Edit** for the required connection.
:::

:::WorkflowBlockItem
In the pop-up window, fill in the new data in the form.

Connection editing forms may vary depending on the app and on the type of credentials you can edit. This is an example of the [Airtable connection](https://apps.make.com/airtable):

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/KObKylF1hc4ErfG2tOmXr-20251022-074609.png" size="50" width="784" height="604" position="center" darkWidth="784" darkHeight="604" showCaption="false"}
:::

:::WorkflowBlockItem
Click the **Save** button to confirm changes. If you click the **Close** button, Make closes the form and keeps your original connection.
:::

:::WorkflowBlockItem
Follow the steps to confirm that Make can access your account. Check the required fields to create the connection and review the connection scopes. If everything is correct, confirm the connection update with the **Accept** button.

Make applies the saved changes immediately. After confirming, Make will update the connection details in all the modules where it's used.
:::
::::

## Verify connections

To check whether your connection works properly, you can verify it.&#x20;

To do that:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Credentials**, switch to **Connections**, and locate the required connection.﻿
:::

:::WorkflowBlockItem
Click **Verify**. The button briefly changes to **Verifying ...** as Make checks.&#x20;
:::
::::

Once the verification is completed, a green check mark appears.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/qnWy3nHXUwJCOJzCqNJ4v-20251022-110350.png)

If the verification fails, you'll see an exclamation mark. This means that something is wrong with the connection. To fix that, click **Reauthorize** to update access to a third-party service. If it doesn't help, create a new connection. &#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/4rnw573jKjxEN7WhAnTKa-20251022-110312.png)

## Reauthorize connections

Apps that use the OAuth 2.0 protocol only grant access for a limited time. In this case, you may need to reauthorize your connection periodically.&#x20;

To reauthorize the OAuth 2.0 connection:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Credentials**, switch to **Connections**, and locate the required connection.﻿
:::

:::WorkflowBlockItem
Click **Reauthorize** and follow any on-screen prompts that appear.
:::
::::

Once the reauthorization is completed, a green check mark appears.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/8DlrYVQM1y-wti0f4Zevy-20251022-112716.png)

If the reauthorization fails, you'll see an exclamation mark. This can happen when your browser blocks the reauthorization pop-up, tokens have expired or been revoked, permissions changed, or there was a temporary outage. Try reauthorizing again. If it doesn't help, delete the old connection and create a new one.

## Delete connections

To delete a connection:

:::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Credentials**, switch to **Connections**, and locate the required connection.﻿
:::

:::WorkflowBlockItem
Click the **three dots** > **Delete** for the connection you want to delete.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/k-nKMhS7zR_8kqL4mOvx1-20260325-093715.png)
:::

:::WorkflowBlockItem
In a pop-up window, click **Delete** to confirm.
:::

::::WorkflowBlockItem
If the connection is used in any scenario, you'll see a corresponding warning and a list of scenarios where it's used. Click **OK** to confirm the deletion.&#x20;

:::hint{type="warning"}
- Deleting a connection may cause your  to stop working. Be sure that the connection is not used in any scheduled or active .
- If there's a [webhook](https://help.make.com/webhooks) using the connection, you must first delete the webhook before you can delete the connection.
:::
::::
:::::

## See also

This article covers the basics. To learn about advanced connection concepts and configurations, see the [Connections](https://help.make.com/connections) section in **Explore** **more**.

[title] Use scenario inputs
[path] Explore more/Scenarios/Scenario inputs and outputs/

You can use  inputs in the following ways:

- You can provide the inputs manually when you want to run the . This is great for processes that you need to run on demand and that need human input and verification.
- You can send the inputs from another . In this case, you need to use the **Scenarios >** **Call a scenario** module to trigger the .
- You can add the inputs to the request body when triggering the  with the [Make API](https://developers.make.com/api-documentation/api-reference/scenarios/post--scenarios--scenarioid--run).
- You can define  inputs and outputs to help Make AI Agents and MCP server tools understand what data to provide and return.

:::hint{type="info"}
For combining subscenarios and  inputs, use the **Scenarios >** **Start scenario** module as the trigger for the subscenario.
:::

With defined  inputs, every time you trigger a  manually with the **Run once&#x20;**&#x62;utton, the  inputs window pops up. The  can run only if you fill in all the required fields with the correct data types.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/LlW-YSNRoiV4a6dkDmWLg-20260121-134033.png)


[title] Active and inactive scenarios
[path] Key concepts/Scenarios & connections/

There are two ways you can work with  in Make. Depending on how you want to use your , you will either activate or inactivate it.

- **Active**  run periodically according to their defined [schedule](docId:8rWFO_KROhjLePg4qHx3_).
- **Inactive**  are executed once and whenever you wish to run them.

You may change between the two statuses whenever you like (active  can become inactive and vice versa).

## When to activate or deactivate

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/QjsN6c9iQTrygjGUBsqKB_uuid-2173a44f-7eeb-bfd4-ce6d-40c11fcfa385.png" size="66" width="725" height="353" position="center" darkWidth="725" darkHeight="353" showCaption="false"}

There are specific purposes for activating your  as well as other reasons for making your  inactive.

Using the example of connecting Instagram to Dropbox, you want to activate your  when you are wanting to consistently watch your account on a long-term basis. In this case, whenever you add a photo, it will automatically upload this photo to Dropbox. It will do so according to its [schedule](docId:8rWFO_KROhjLePg4qHx3_).

On the other hand, the inactive  is great for when you simply want to select photos from a specific time interval. Clicking the **Run once** icon in the toolbar will start a one-time execution of the .

## Activating scenarios

A newly created scenario is, by default, inactive. You can activate it by clicking the **ON/OFF** button in the scenario details page.

[title] Credits
[path] Key concepts/Credits & operations/

:::hint{type="warning"}
Credits have replaced operations as the term for Make's billing unit. Your existing plan and pricing, including the cost of credits, remain unchanged. The cost of credits[ varies by plan](https://www.make.com/en/pricing).&#x20;

How credits are used:

- **Non-AI apps**: 1 operation equals 1 credit.&#x20;
- **Third-party AI apps like OpenAI, Anthropic Claude, and Gemini**: 1 operation equals 1 credit. Credits for modules with automatic AI provider connections also include token usage.&#x20;
- **Built-in AI apps:** Varies by connection type:
  - **Make’s AI Provider (all plans)**: Credits are based on tokens and operations. Make’s AI Provider is available in [Make AI Agents](docId\:MDyjgeEIIRrXMd607V1xg) and [Make AI Toolkit](docId\:CfGqHRAekfeXyGbyOW_wC).&#x20;
  - **Custom AI provider connection (paid plans)**: With custom AI provider connections, such as OpenAI or Anthropic Claude, credits are based on operations. You pay your provider directly for tokens.
  - **Automatic AI provider connection (all plans)**: [Make AI Web Search](docId\:bffuREdPz8IIQcEVE9VvX) and [Make AI Content Extractor](docId\:gV6ZATMkaRnAqCTIK1MAx) use an AI provider of Make's choice. Credits are based on tokens, operations, and other usage-based factors.
:::

In this guide to credits in , learn about how credits work and the different types of credit usage.&#x20;

::embed[]{url="https://www.youtube.com/watch?v=ufYhY5WgEnw"}

## What are credits?

Credits are the currency you buy and consume to use Make. Only features triggered by scenario runs (apps, modules, and some in-app features) or the AI agent’s chat use credits.&#x20;

Your credit usage can vary based on the number of operations, tokens, and other usage-based factors.&#x20;

:::hint{type="info"}
Credits and operations are separate terms because they serve different purposes: credits help you track how much you’re spending, and [operations](docId\:ZR2rWmILMJ_19R85MlAwM) show the outcome of your activities on the platform.&#x20;
:::

In , credit usage is either fixed or dynamic:

- [Fixed credit usage](docId\:hh-nrTakEqakBmg63UUiN): Apps use a set number of credits per run.&#x20;
- [Dynamic credit usage](docId\:hh-nrTakEqakBmg63UUiN): Some AI and advanced apps use a varying number of credits per run based on actual consumption.

Whether a feature has fixed or dynamic credit usage depends on its processing complexity, whether it uses AI, and the connection type.&#x20;

## Fixed credit usage

With fixed credit usage, modules consume credits based on a set rate. By default, 1 operation equals 1 credit. ﻿That rate is constant regardless of input or data transfer size. Most apps consume credits on a fixed basis.

For example, running the **Google Drive&#x20;**> **Upload a File** module always uses 1 credit per file upload, regardless of the file size.&#x20;

**Exceptions**

Some [Make AI Content Extractor](docId\:gV6ZATMkaRnAqCTIK1MAx) modules with fixed credit usage consume more than the default 1 credit per operation due to their processing complexity.&#x20;

Features using more than the default 1 credit have a unique tag. In the example below, the modules consume 2 or 10 credits per operation.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/sB2AteiLPcczpbbHlxLbb-20250916-134543.png" size="60" width="535" height="430" position="center" darkWidth="535" darkHeight="430" showCaption="false"}

You can find detailed examples of fixed credit usage in [Credits by module type](docId\:LZASgxrjtBcJOk6vF0RKR).

## Dynamic credit usage

With dynamic credit usage, modules consume a different number of credits per run based on actual usage rather than a fixed rate.&#x20;

The most common factor affecting credit usage is token consumption. Tokens are the unit that AI providers use to measure and charge for usage. They vary depending on the amount of information processed: more interactions, longer prompts, larger files, and longer responses all increase token usage. In English, [1 token equals around 4 characters](https://help.openai.com/en/articles/4936856-what-are-tokens-and-how-to-count-them), and 100 tokens equal about a paragraph.&#x20;

Other factors that can determine credit usage include file size, page count, or processing time.

Features with dynamic credit usage have unique tags:

- **Tokens:** Credits based on tokens and/or embedding tokens consumed (and operations in some cases)
- **File size:** Credits based on file size processed
- **Per page:** Credits based on pages processed
- **Run time:** Credits based on processing time

In the example below, the modules use credits based on tokens.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/Q31995ot4OZzZRNwsMBrJ-HvnGTUzKzYLk24J1PHdF8-20250827-093443.png" size="50" width="539" height="439" position="center" darkWidth="539" darkHeight="439" showCaption="false"}

For a list of all dynamic credit usage features, see [Credits by feature](docId\:LZASgxrjtBcJOk6vF0RKR).

## Credit usage for AI features

When you use **third-party AI app modules that require you to create a connection,&#x20;**&#x73;uch as Anthropic Claude or OpenAI, you pay  for credits based on operations and your AI provider for tokens.&#x20;

Make's **built-in AI apps** and **third-party AI app modules that don't require creating a connection** can follow a different credit usage logic. They include the following apps:

- [Make AI Agents](docId\:MDyjgeEIIRrXMd607V1xg)
- [Make AI Toolkit](docId\:CfGqHRAekfeXyGbyOW_wC)
- [Make AI Web Search](docId\:bffuREdPz8IIQcEVE9VvX)
- [Make AI Content Extractor](docId\:gV6ZATMkaRnAqCTIK1MAx)
- The **Simple Text Prompt&#x20;**&#x6D;odule in [OpenAI](https://apps.make.com/openai-modules#KZlO8), [Google Gemini AI](https://apps.make.com/gemini-ai#ntuH-), [Groq](https://apps.make.com/groq#tncyO), and [Anthropic Claude](https://apps.make.com/anthropic-claude#ilAhA) apps.&#x20;

These apps consume credits differently based on their connection type:

- **Make's AI Provider**: Credits are based on operations and tokens.
- **Custom AI provider connection**: You pay  for credits based on operations, and the AI provider for tokens.&#x20;
- **Automatic AI provider connection**: In apps without an option to select an AI provider, credits are based on tokens, operations, and other usage-based factors.&#x20;

### Make's AI Provider

Make's AI Provider is available to users on all plans in **Make AI Agents** and **Make AI Toolkit**.&#x20;

With Make's AI Provider,  connects to an AI provider for you. You don't need to create an account with providers like OpenAI or Anthropic. You pay  for credits used based on tokens and operations.&#x20;

Choose between Make's tiered models (Small, Medium, and Large) or models from providers like OpenAI and Anthropic Claude.&#x20;

:::ExpandableHeading
**Token usage with Make's AI Provider**

When you use Make's AI Provider, credits vary based on two factors: the tokens consumed and the model selected. Each model uses credits based on the number of input and output tokens consumed in each  run.

After a run, you can view the tokens used in a module's output bubble.

**Small, Medium, and Large**

| **Model tier** | **Model**                              | **Tokens**              |
| -------------- | -------------------------------------- | ----------------------- |
| Small          | GPT-5 nano<br />with minimal reasoning | 5,000 tokens per credit |
| Medium         | GPT-5 nano<br />with low reasoning     | 3,500 tokens per credit |
| Large          | GPT-5 mini                             | 1,500 tokens per credit |

**All other models**

| **AI provider**  | **Model**                                | **Input tokens**         | **Output tokens**       |
| ---------------- | ---------------------------------------- | ------------------------ | ----------------------- |
| OpenAI           | GPT-5.5                                  | 180 tokens per credit    | 30 tokens per credit    |
| OpenAI           | GPT-5.5 with over 272,000-token context  | 90 tokens per credit     | 20 tokens per credit    |
| OpenAI           | GPT-5.4 nano                             | 4,520 tokens per credit  | 723 tokens per credit   |
| OpenAI           | GPT-5.4 mini                             | 1,205 tokens per credit  | 200 tokens per credit   |
| OpenAI           | GPT-5.4 with up to 272,000-token context | 361 tokens per credit    | 60 tokens per credit    |
| OpenAI           | GPT-5.4 with over 272,000-token context  | 180 tokens per credit    | 40 tokens per credit    |
| OpenAI           | GPT-5.2                                  | 516 tokens per credit    | 64 tokens per credit    |
| OpenAI           | GPT-5.1                                  | 723 tokens per credit    | 90 tokens per credit    |
| OpenAI           | GPT-5                                    | 723 tokens per credit    | 90 tokens per credit    |
| OpenAI           | GPT-5 mini                               | 3,616 tokens per credit  | 452 tokens per credit   |
| OpenAI           | GPT-5 nano                               | 18,080 tokens per credit | 2,260 tokens per credit |
| Anthropic Claude | Fable 5                                  | 90 tokens per credit     | 18 tokens per credit    |
| Anthropic Claude | Sonnet 5                                 | 301 tokens per credit    | 60 tokens per credit    |
| Anthropic Claude | Opus 4.8                                 | 180 tokens per credit    | 36 tokens per credit    |
| Anthropic Claude | Opus 4.7                                 | 180 tokens per credit    | 36 tokens per credit    |
| Anthropic Claude | Sonnet 4.6                               | 301 tokens per credit    | 60 tokens per credit    |
| Anthropic Claude | Opus 4.6                                 | 181 tokens per credit    | 36 tokens per credit    |
| Anthropic Claude | Opus 4.5                                 | 181 tokens per credit    | 36 tokens per credit    |
| Anthropic Claude | Haiku 4.5                                | 904 tokens per credit    | 181 tokens per credit   |
| Anthropic Claude | Sonnet 4.5                               | 301 tokens per credit    | 60 tokens per credit    |
:::

:::hint{type="warning"}
According to Anthropic's Terms and Conditions for its Fable model, data may be stored for a 30-day period, during which time logs can be accessed. [Learn more](https://platform.claude.com/docs/en/about-claude/models/introducing-claude-fable-5-and-claude-mythos-5#availability)
:::

:::hint{type="info"}
The models used for Make's AI Provider and their token-to-credit conversion rates are subject to change as newer models become available.&#x20;
:::

### Custom AI provider connection

Custom AI provider connections are available to users on paid plans. &#x20;

You can select from AI provider connections like OpenAI, Anthropic, and Gemini and link to your accounts with these providers using API keys and other methods. You pay Make for credit usage based on operations, and pay your AI provider for token usage.

### Automatic AI provider connection

Some AI features don't provide an option to select and create a connection to an AI provider. They connect automatically to one, so you don't need to set up an account with a provider. You pay  for credits based on tokens, operations, and other usage-based factors.

These features include:

- [Make AI Web Search](docId\:bffuREdPz8IIQcEVE9VvX)
- [Make AI Content Extractor](docId\:gV6ZATMkaRnAqCTIK1MAx)
- &#x20;The **Simple Text Prompt&#x20;**&#x6D;odule in [OpenAI](https://apps.make.com/openai-modules#KZlO8), [Google Gemini AI](https://apps.make.com/gemini-ai#ntuH-), [Groq](https://apps.make.com/groq#tncyO), and [Anthropic Claude](https://apps.make.com/anthropic-claude#ilAhA) apps

For more information on the credit usage of any of the features mentioned, including credit-to-tokens conversion rates, refer to their documentation.&#x20;



## Buying extra credits&#x20;

If you run out of credits before the next billing cycle starts, you can upgrade your subscription, buy extra credits, or enable extra credits auto-purchasing. To learn more about these options, refer to [Extra credits](docId:2ZcWIdBk-UaMtP2X2_7kj).

[title] Keyboard shortcuts
[path] Key concepts/Resources/

You can save time when editing  with keyboard shortcuts.

Make features these shortcuts:

| **Shortcut**                                                          | **Action**                              |
| --------------------------------------------------------------------- | --------------------------------------- |
| +                                                                     | Zoom in                                 |
| -                                                                     | Zoom out                                |
| **Windows:** Ctrl+S<br />**Mac:** ⌘+S                                 | Save scenario                           |
| **Windows:** Ctrl+C on module<br />**Mac:** ⌘+C on module             | Copy module                             |
| **Windows:** Ctrl+V<br />**Mac:** ⌘+V                                 | Paste module                            |
| Space+drag on module                                                  | Move all modules                        |
| **Windows:&#x20;**&#x43;trl+Enter<br />**Mac:&#x20;**⌘+Enter          | Run once                                |
| Shift+drag                                                            | Create a box to select multiple modules |
| **Windows:&#x20;**&#x53;hift+A <br />**Mac:&#x20;**⇧+A                | Auto-align                              |
| **Windows:&#x20;**&#x43;trl+Shift+Enter <br />**Mac:&#x20;**⌘+⇧+Enter | Run with existing data                  |
| **Windows**: Ctrl+Z<br />**Mac**: ⌘+Z                                 | Undo a change to a                      |
| **Windows**: Ctrl+Y<br />**Mac**: ⌘+Y                                 | Redo a change to a                      |


[title] Mapping arrays
[path] Key concepts/Data & mapping/

An array is a special type of item. A simple array contains one or more text values. A complex array contains one or more collections of the same type. An example of a complex array is the email attachment. The Watch emails module returns an array of attachments for every email. Every attachment represents a collection that may contain a name, content, size, etc.

::embed[]{url="https://www.youtube.com/watch?v=kfCpgbamBD0"}

## Mapping an array's first element

If you map the array's `Recipient name` item, it will appear in the field like this:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/OnXP3EqUTTvIsq1rY9OyJ_uuid-b7bff420-f9e9-808d-1556-88acb2c890fb.png" size="58" width="320" height="45" position="center" showCaption="false"}

The number between the square brackets is an index that determines which element of the array will be used. Leaving it empty defaults to the first element.

## Mapping an array's element

If you wish to access another element, enter or map a value between the square brackets. In the below example, enter 2 to select the second element.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/yXQA3bzNRm38ekr1Fy9er_uuid-1f4657b7-6712-032a-ec36-ca96dfb0c3bd.png" size="58" width="321" height="50" position="center" showCaption="false"}

## Mapping an array's element with a given key

Some arrays contain several collections with *key* and *value* items. These are typically various metadata, attributes, etc.

The following example shows the output of the *WooCommerce > Get a product* module that contains the item `Meta data`, which is an array of collections. Each collection contains the key item `Meta Data ID `and the value item `Value`:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/_jiBR3UL-9smC7q6xt6sQ_uuid-59a2b36c-22af-1820-97e3-5017f8013231.png)

The typical requirement is to lookup an element by its given *key* value and to obtain the corresponding value from the *value* item. This can be achieved with a [formula](docId\:EfN1AJre8itYVlHd3X9hB) employing a combination of the `first ()` and [`get ()`](docId\:pMt2j3NdX4B4BP51gXk6T) functions.

The following example shows how to obtain the value of the `Value` item of the element with *key* `Meta data ID` item value equal to `20642`

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/bw9OCMIpDwfXkIG3JFrei-20251021-110924.png" size="60" width="467" height="49" position="center" showCaption="false"}

The result of the formula will be "no".

The detailed breakdown of the formula follows:

:::::WorkflowBlock
:::WorkflowBlockItem
The 1st parameter of the `map()` function is the whole array item.
:::

::::WorkflowBlockItem
The 2nd parameter is the **raw name** of the value item. To obtain the raw name, hover the mouse cursor over the item in the mapping panel:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-iWp8r0ANjkYv0bxrdoFgl-20250212-120255.png" size="62" width="281" height="113" position="center" showCaption="false"}

:::hint{type="warning"}
All parameters are case sensitive. Even though in this particular example the item's label differs from its raw name only in capitalization, it is necessary to use the raw name, which is all lowercase `value` in contrast to the label `Value`
:::
::::

:::WorkflowBlockItem
The 3rd parameter is the raw name of the *key* item:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-KTAwJVxsN89LhJDD78Rir-20250212-120424.png" size="66" width="344" height="94" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
The 4th parameter is the given *key* value.
:::
:::::



Because the `map()` function returns an array (as there could be more elements with the given key value), it is necessary to apply the `first ()` function to get its first element:

::::WorkflowBlock
:::WorkflowBlockItem
The 1st parameter of the `first ()` function is the result of the `map()` function.
:::

:::WorkflowBlockItem
The 2nd parameter is the element's index - one.
:::
::::

See also our [Extract an item and/or its value from an array of collections](https://www.youtube.com/watch?v=W9CgDTeppmE) video tutorial.

::embed[See also our [Extract an item and/or its value from an array of collections](https://www.youtube.com/watch?v=W9CgDTeppmE) video tutorial.]{url="https://www.youtube.com/watch?v=W9CgDTeppmE"}

## Converting elements to a series of bundles

Arrays can be converted to a series of bundles using the [Iterator](docId\:NcSZYP3n_O5A3R4CUQceL) module:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/qzkt2nyCjMyapRamavFkF_uuid-823e9289-d77f-e413-bd0b-5156e64a7d5d.png" size="82" width="695" height="366" position="center" alt="Mapping_iterator.png" showCaption="false"}

:::hint{type="info"}
The outputs from modules wrapped between an Iterator and Aggregator are not accessible beyond the Aggregator module.
:::


[title] Manage incomplete executions
[path] Explore more/Scenarios/Incomplete executions/

When dealing with  incomplete executions, you should first decide if you want to finish the run and process the rest of the data in the . If you want to finish the  run, you should check the error that created the incomplete execution:

::::WorkflowBlock
:::WorkflowBlockItem
Go to the **Incomplete executions** tab.
:::

:::WorkflowBlockItem
Find the incomplete execution and click **Details**. The Scenario Builder opens.
:::

:::WorkflowBlockItem
Click the warning sign on the module that caused the error. You can also check the module settings or the [scenario execution history](docId:9Z2XnH-Lyy62CFAhjFHj5).

![](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-3Wp3ZlMB-SU0_giw7WVdm-20250321-131457.png)
:::
::::

If the error is a temporary error, like the `ConnectionError` or the `RateLimitError`, you can [retry the incomplete executions](docId\:sFa-8JvNu5DmVRabNRseR). Retrying an incomplete execution is like another attempt to run a . The incomplete execution runs with the same module settings as when the error happened.

:::hint{type="info"}
You can retry multiple incomplete executions at once.
:::

If the error requires changes in the module settings or in the general scenario blueprint, you need to [resolve the incomplete execution](docId\:sFa-8JvNu5DmVRabNRseR) manually.

If you find out that you don't need to run the rest of the scenario, you can [delete the incomplete execution](docId\:sFa-8JvNu5DmVRabNRseR).

## The incomplete executions tab

To open the incomplete executions tab, select the  in the list of  and switch from the **Diagram** tab to the **Incomplete executions** tab.

![](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-5bq7vpA7vq4WQy4J4ArQ6-20250321-124803.png)

In the 's **Incomplete executions** tab, you can find the following information for each incomplete execution:

- **Selection check box**: You can select incomplete executions to either retry or delete. You can select multiple incomplete executions, or you can use the check box in the table header to select or de-select all incomplete executions of a .
- **Incomplete execution ID**: A unique text generated by  to identify the incomplete execution. You can use the incomplete execution ID with the [Make app](docId\:G7Vz7fYsaoiCJDDxzCnCz) or with the [Make API](https://developers.make.com/api-documentation/api-reference/incomplete-executions).
- **Created**: The date and time when  created the incomplete execution.
- **Size**: The size of the incomplete execution blueprint and the data that the module was processing when it failed.
- **Status**: Possible incomplete execution statuses are:
  - **Unresolved**: The incomplete execution is not set to retry and hasn't been resolved. To fix this, you can [retry](docId\:sFa-8JvNu5DmVRabNRseR)  or [manually resolve](docId\:sFa-8JvNu5DmVRabNRseR) the incomplete execution.
  - **Pending**: The incomplete execution is set to retry. Check the **Scheduled in** column to see approximately when  will retry the incomplete execution.
  - **In progress**:  is currently retrying the incomplete execution.
  - **Resolved**: The incomplete execution has been resolved successfully.  will delete the resolved incomplete execution automatically after 30 days.
- **Scheduled in**: The approximate time until  will retry the incomplete execution.
- **Attempts**: The number of attempts already made to resolve the incomplete execution.
- **Detail**: The **Detail** of the incomplete execution opens the Scenario Builder with the incomplete execution. In the incomplete execution detail, you can check the cause of the incomplete execution and [resolve the incomplete execution](docId\:sFa-8JvNu5DmVRabNRseR).

## Retry incomplete executions

Retrying incomplete executions runs the incomplete execution again, starting with the module that caused the error. Retried incomplete executions run with the same configuration as when the error happened, so a retry works best for temporary errors, like the `RateLimitError` or the `ConnectionError`.

To retry incomplete executions:

::::::WorkflowBlock
:::::WorkflowBlockItem
Make sure that the  is active. You can retry incomplete executions only when the  is active.

To activate a , go back to the **Diagram** tab or the Scenario Builder and click the switch next to  scheduling on the  toolbar:

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-u5x4wuL11C4wY35CYnyU1-20250321-131217.png)
:::

:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-3etMxRwwLxrE9uyQivhc0-20250321-131235.png)
:::
::::


:::::

:::WorkflowBlockItem
Go to the **Incomplete executions** tab.
:::

:::WorkflowBlockItem
Select incomplete executions you want to retry. You can use the checkbox at the top of the incomplete executions table to either select or de-select all incomplete executions of the .
:::

:::WorkflowBlockItem
Click the **Retry selected&#x20;**&#x62;utton to retry the incomplete executions.

![](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-0IneAQCnjmBkG795NjOVx-20250321-131124.png)

The status of the selected incomplete executions turns into **Scheduled in,** and to **In Progress&#x20;**&#x77;hen  starts retrying them.

If you are retrying a lot of incomplete executions, it might happen that some of them get scheduled for later processing instead. The **Scheduled in&#x20;**&#x63;olumn contains the information of when approximately  retries the incomplete execution.
:::

:::WorkflowBlockItem
If the incomplete execution is resolved successfully, the status of the incomplete execution turns into **Resolved**. Otherwise, the status stays **Unresolved**.

![](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-08PBTNLDBwatKzTSG6uUl-20250321-131028.png)
:::
::::::

## Resolve an incomplete execution

Some errors create incomplete executions that require manual changes before the incomplete execution can be resolved. For example, the `RuntimeError` and `DataError` most of the time have to be resolved manually instead of retrying. You can resolve an incomplete execution manually either from the  run history, or from the incomplete executions tab:

You might want to check the  execution log first to investigate why the error happened:

::::WorkflowBlock
:::WorkflowBlockItem
Go to the **History** tab.
:::

:::WorkflowBlockItem
Locate the failed execution log and click **Details**.

![](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm--4uqUZEXaQhbscyO9IDCz-20250321-130534.png)
:::

:::WorkflowBlockItem
Click the module that has a warning status.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-yA2n3L6msTnRNQqKtns0F-20250321-130554.png" size="40" width="528" height="188" position="flex-start" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Resolve**. Make redirects you to the incomplete execution.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-cbI3x4HW2Om6lsCaQSNRe-20250321-130616.png" size="40" width="655" height="658" position="flex-start" showCaption="false"}
:::

:::WorkflowBlockItem
Check the module that caused the error and fix it.
:::

:::WorkflowBlockItem
Save the updated module settings with the **Save** button.
:::

:::WorkflowBlockItem
Click **Run once**.
:::
::::

The incomplete execution runs again, starting with the module that caused the incomplete execution with the original input. If the run succeeds, the incomplete execution is resolved.

Otherwise, if resolving fails on the same module, the incomplete execution is not resolved. You need to fix all errors on the module to resolve the incomplete execution.

If the incomplete execution fails on a different module,  creates a new incomplete execution, starting with the module that caused the new error.

If you want to go directly to the incomplete execution:

::::WorkflowBlock
:::WorkflowBlockItem
Go to the **Incomplete executions** tab.
:::

:::WorkflowBlockItem
Find the incomplete execution and click **Details.**
:::

:::WorkflowBlockItem
Check the module that caused the error and fix it.
:::

:::WorkflowBlockItem
Save the updated module settings with the **Save** button.
:::

:::WorkflowBlockItem
Click **Run once**.
:::
::::

The incomplete execution runs again, starting with the module that caused the incomplete execution with the original input. If the run succeeds, the incomplete execution is resolved.

Otherwise, if resolving fails on the same module, the incomplete execution is not resolved. You need to fix all errors on the module to resolve the incomplete execution.

If the incomplete execution fails on a different module,  creates a new incomplete execution, starting with the module that caused the new error.

## Delete incomplete executions

When you don't need to finish the  workflow, or you don't need the data from the incomplete execution anymore, you can delete the incomplete exectution. To delete incomplete executions:

::::WorkflowBlock
:::WorkflowBlockItem
Go to the **Incomplete executions** tab.
:::

:::WorkflowBlockItem
Select incomplete executions you want to delete. You can use the checkbox at the top of the incomplete executions table to either select or de-select all incomplete executions of the .
:::

:::WorkflowBlockItem
Click the button **Delete selected** to delete the incomplete executions.

![](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-DeTuzAilAcx88-dcbbrKo-20250321-130109.png)
:::
::::

The deleted incomplete executions are no longer in the list of incomplete executions.

:::hint{type="warning"}
Once you delete an incomplete execution, it cannot be put back.
:::


[title] Create the structure of scenario inputs or outputs
[path] Explore more/Scenarios/Scenario inputs and outputs/

Before using  inputs or  outputs, you need to define their structure. When creating the  input structure, you can set any parameter as required, which allows you to validate the structure of the input data.

You can also add a description to each input parameter to document the data the parameter contains.

You can add  inputs and outputs anytime. To do that:

:::::WorkflowBlock
:::WorkflowBlockItem
In the Scenario Builder, click the  inputs and outputs icon.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/hyWBQlny5zwsCdVR280TI-20260513-070958.png)
:::

:::WorkflowBlockItem
Select the **Scenario inputs** or **Scenario outputs** tab and click **Add item**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/CzXDATvPiBvFH4yyYJ2Qz-20260513-072442.png)
:::

::::WorkflowBlockItem
In the **Name** field, enter the name of the input or output item. This field is mandatory.

:::hint{type="warning"}
You can't use spaces or special characters in the name. You can use letters, numbers, and the underscore symbol. You can not start with a number or an underscore followed by a number.
:::
::::

:::WorkflowBlockItem
Optional: In the **Description** field, add information about the input or output item. For example, how it is used in the  or what information it contains.
:::

:::WorkflowBlockItem
In the **Type** field, select the [type of scenario input or output](https://help.make.com/scenario-inputs-and-outputs#scenario-input-and-output-types) from the dropdown menu. This field is also mandatory.

- If you use the type **Array**, set the type of the array items in the nested **Type** field.
- If you use the type **Collection**, you can set the structure of the collection in the **Specification** field.  validates the input data against the specification. If you keep the **Specification** empty,  will accept any collection for the input data.
- If you use the type **Select**, add options for the dropdown selection in the **Options** field.
- If you use the type **Dynamic collection**, you can map a collection or a JSON string to the output field. The **Return output** module parses the JSON and returns it as output bundles. You can use the **Create JSON** module to create a custom data output.
:::

:::WorkflowBlockItem
Optional: In the **Default** field, enter the default value that is used if the value is missing in the original input.
:::

:::WorkflowBlockItem
Under **Required**, select whether this input is required or not to start your .
:::

:::WorkflowBlockItem
Under **Multi-line**, select how you want your text to be displayed if you selected **Text**, **Array**, **Collection** or **JSON** as the item data typ&#x65;**.**

Selecting **Yes** shows multiple lines of text. Selecting **No** shows only one line of text.
:::

:::WorkflowBlockItem
Repeat the process if you need to add more items.
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x69;n th&#x65;**&#x20;Scenario inputs&#x20;**&#x62;ox and save your .&#x20;
:::
:::::

To work with  inputs, you should use the **Scenarios** > **Start scenario&#x20;**&#x6D;odule. To work with  outputs, you should use the **Scenarios** > **Return output** module.&#x20;

[title] Step 1. Get your app ready
[path] Get started/Expand your scenario/

In the [first part of this guide](docId\:p5DHtppuOcAGN3DnHoT86), you set up Slack and Google apps to create a basic notification system. Now, to expand your scenario and send targeted mobile notifications to the Sales Manager about any US-based prospects received, you need to set up the Make mobile app.

:::hint{type="info"}
The Make mobile app brings your automations to your smartphone, sending you push notifications about important events. This helps team members receive real-time alerts without checking Slack or email. For Sales Managers on the go, these instant notifications ensure they never miss high-priority prospects.
:::

To set up the Make mobile app:

::::::WorkflowBlock
:::WorkflowBlockItem
Go to your device's app store:&#x20;

- [iOS App Store](https://apps.apple.com/app/integromat/id1178593383)
- [Google Play Store](https://play.google.com/store/apps/details?id=com.integromat.app)
:::

:::WorkflowBlockItem
Search for **Make** or **Make (formerly Integromat)**.
:::

:::WorkflowBlockItem
Download and install the Make app.

![](https://archbee-image-uploads.s3.amazonaws.com/yjwhINLS3fc-NXg38fV_d-9aQgVBH38WUAI32e_6QdF-20250314-133521.png)
:::

:::WorkflowBlockItem
Log in to Make. In the left side sidebar, click **More > Devices**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/6gzj-G_GbyLefdk6ukoth-20250930-111841.png)
:::

:::WorkflowBlockItem
Click **+ Add device** in the top right corner.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/nm5O-TVjZ3F6Zj7TZCAr1-20250930-111912.png)
:::

:::WorkflowBlockItem
In the **Add device** window, type a name for your device (for example, "My sales phone") and click **Continue.**

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/bRnMwoM0vaBorqoG8Nngf-20250930-111948.png)

The screen with the QR code will appear.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/y0swH1efNVRCt0FcmeFB6-20250930-112021.png)
:::

:::::WorkflowBlockItem
Go back to your mobile phone and open the **Make&#x20;**&#x61;pp. In the screen that appears, tap **Scan a QR Code**. Scan the code you see in Make. If scanning doesn't work, you can manually enter the code displayed.

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/yjwhINLS3fc-NXg38fV_d-ZHw9ll4sR51JSDR-bcXu_-20250330-181039.png)
:::

:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/yjwhINLS3fc-NXg38fV_d-gXGS4U3f71cxpVIdz_UMJ-20250330-181550.png)
:::
::::
:::::

:::WorkflowBlockItem
Come back to Make and click **Save.&#x20;**

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/2KywVE4K_Xr45JyI7DsHS-20250930-112214.png)

You should see the confirmation message that the device has been added successfully, and see the device you've added on the **Devices** page.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/W6WK9hL6atkPSw77kOyw5-20250930-112316.png)
:::

:::::WorkflowBlockItem
In the Make mobile app, go to **Settings > Notifications**, and switch on the **Allow notifications&#x20;**&#x74;oggle. This will allow you to be notified whenever a new prospect is added to your spreadsheet.

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yjwhINLS3fc-NXg38fV_d-whqLkJy0eeUONt_NCn0q_-20250330-181715.png" size="62" width="1223" height="2429" position="flex-start" showCaption="false"}
:::

:::VerticalSplitItem

:::
::::
:::::
::::::

Your Make mobile app is installed and set up in Make. You are ready for the next step — adding a router to direct your scenario so that all prospects go to Slack, while only US-based prospects trigger mobile notifications.

[title] Step 3. Set up another module
[path] Get started/Expand your scenario/

Now you'll set up a module on the new route to send notifications to the Sales Manager's mobile device.&#x20;

:::::WorkflowBlock
:::WorkflowBlockItem
Click the **+&#x20;**&#x69;con on the empty module at the end of the new route. Search for **Android** or **Apple iOS** in the search field, depending on the system where you installed the mobile app. In this example, we use Apple.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/HCbzHPC0geGgWpM5pcvxV-20251104-080717.png)
:::

:::WorkflowBlockItem
Select the app and then choos&#x65;**&#x20;Send a push notification** from the available modules.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/tp3tDWPbkqVJM1SoXeoek-20251104-080831.png)

The module settings window will appear, where you'll set up your notification.
:::

:::WorkflowBlockItem
In the **Device&#x20;**&#x66;ield, select your mobile device from the dropdown list.
:::

:::WorkflowBlockItem
In the **Title&#x20;**&#x66;ield, enter "New US Prospect" or any other title you prefer.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Zq2088l-I9Lz_IHoTPX1B-20251104-080856.png)
:::

:::WorkflowBlockItem
In the **Body&#x20;**&#x66;ield, drag and drop the values (`First Name`, `Last Name`, and `Email`) from the Google Sheets module, or simply click on the values to place them into the field.

Enter spaces between mapped values to separate each value in the output.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Vxem1_R0YqCrA-Ee5DKhy-20251104-080925.gif)
:::

:::WorkflowBlockItem
Keep the default values for other fields.
:::

::::WorkflowBlockItem
Click **Save&#x20;**&#x74;o save the module settings.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ZgbeSVEkwbXqOQkpOzxIr-20251104-080950.png)

:::hint{type="info"}
Remember to click the **Save** icon in the Scenario Builder toolbar to save your entire scenario.
:::
::::
:::::

At this point, your scenario would send mobile notifications for all prospects, not just those from the USA. Next, you'll add a filter to this route to make the notifications country-specific.

[title] Scenario history
[path] Key concepts/Scenarios & connections/

**** history contains information about  runs and user changes to the . To find it, click a  in the  list, then go to the **History&#xA0;**&#x74;ab.&#x20;

::embed[]{url="https://www.youtube.com/watch?v=ZSI0mxFXv8Y"}

## &#x20;run and change log entries

In the  history,  run entries include the following information:

- Run date and time
- [Run name](https://apps.make.com/scenario-service#customize-run-name)
- Trigger or activity type&#x20;
- Status (Success, Warning, Error)
- Run duration
- [Operations](docId\:ZR2rWmILMJ_19R85MlAwM) completed
- [Credits](docId\:hh-nrTakEqakBmg63UUiN) consumed
- Size of transferred data
- Source run
- [Scenario run replay](docId\:ay1LLXGjveo3e6ShLOf6O)
- [Details](./#history-details)

Change log entries record the following user actions:

-  scheduling changes
-  edits
-  activation

:::hint{type="success"}
The number of days your  run history entries are stored depends on your pricing plan. For details, see Make's [pricing page](https://www.make.com/en/pricing).&#x20;
:::

## &#x20;history details

You can view full information about a specific  run, including the bundles processed, in the **Details** of the **History** tab. This allows you to inspect module outputs and logs and understand how a scenario behaved – for example, if a module returned an unexpected value.

To view scenario run details:

::::WorkflowBlock
:::WorkflowBlockItem
Find the scenario run entry in the **History** tab.
:::

:::WorkflowBlockItem
Click **Details** on the right-hand side of the entry.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/BqDowlWKLNs3qkVpO_VXY-20260312-164321.png" size="70" width="2518" height="1018" position="center" darkWidth="2518" darkHeight="1018" showCaption="false"}
:::
::::

In **Details**, you can:&#x20;

1. Check the output bundles of a specific module from that scenario run.
2. &#x20;See general information about the scenario run.
3. Switch between a simple log and an advanced log.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/YsunIPGQORwoIjm5NAg16-20260312-163804.png" size="70" width="2528" height="1070" position="center" darkWidth="2528" darkHeight="1070" showCaption="false"}

## Filter  history&#x20;

To customize the columns you want to see in your  history:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Click the filter icon on the right-hand side of the  history.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/BG0KZ7WYBpbhdwKceR-TJ-20260313-090837.png)
:::

:::WorkflowBlockItem
In the dropdown, unselect the columns you want to hide. &#x20;
:::
::::

The **History** tab now displays only the selected columns.

To hide change log entries or [check runs](docId\:BkdEyuBelio6YvvCosRxJ):

::::WorkflowBlock
:::WorkflowBlockItem
&#x20;Click the three dots in the upper-right corner of the **History&#x20;**&#x74;ab.
:::

:::WorkflowBlockItem
Enable or disable **Hide check runs&#x20;**&#x61;nd/or **Hide** **change log**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/casIokyUBmk0zqYsCJ6Cv-20260313-091347.png)
:::
::::

If you disable the check runs, the scenario history won't display scheduled  runs that check for new data, but don't return anything. If you disable the change log, the scenario history won't display any changes made in the scenario (e.g., edits, activation).&#x20;

## Export  history

You can export your  history as a CSV file for a deeper analysis. To do that:

::::WorkflowBlock
:::WorkflowBlockItem
&#x20;Click the three dots in the upper-right corner of the **History&#x20;**&#x74;ab.
:::

:::WorkflowBlockItem
Select **Export to CSV** from the dropdown menu.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/sDbvyjFjFEGE7m8bFcfyS-20260313-092156.png)
:::
::::

The CSV file downloads to your device. It will include key scenario execution details like execution status, timestamp, author, operations count, execution duration, and the link to examine the execution.&#x20;

## Full-text execution log search

:::hint{type="info"}
Available on **Pro** and higher plans. If you upgrade from lower tiers, Fulltext search will only display executions that were run after the upgrade.
:::

Instead of going through the details of each scenario run entry one by one, you can use the **Fulltext search&#x20;**&#x74;o quickly find a specific entry. This feature lets you search for any term appearing in module outputs within the scenario execution history.&#x20;

:::hint{type="success"}
**Example**: Suppose you ran a scenario that receives new registrations to the **Jotform > Watch for Submissions** module and adds registered participants to your database. If the scenario run was successful but a participant wasn't added, you can search for the participant’s name using the Fulltext search. This may help you quickly identify the issue and troubleshoot effectively. &#x20;
:::

To look for an entry in the **Fulltext search:**

::::WorkflowBlock
:::WorkflowBlockItem
In th&#x65;**&#x20;History** tab, click **Fulltext search.**

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/BqtgtvOF2UsQPRGcsDk38-20260313-102055.png)
:::

:::WorkflowBlockItem
In the search box, enter the word or term you want to find.
:::

:::WorkflowBlockItem
Click the relevant search result.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ZxrNLGDiVaTSZqqgNCO1w-20260313-102254.png)
:::
::::

You’ll be redirected to the execution log containing the module and the bundle that includes your search term. From there, you can inspect the details.

[title] What's a scenario and which type should you use?
[path] Get started/Learn the basics/

In , everything you build is a . A  is an automated workflow that connects apps and services. In this article, understand what  are, how to choose the right type for your workflow, and what to do next to get started.

## What's a ?

A [scenario ](https://help.make.com/scenarios-and-connections)is your automated workflow, and [modules ](https://help.make.com/types-of-modules)are its building blocks. Each module  belongs to an[ app](https://help.make.com/introduction-to-make-apps) and performs a specific task, such as watching for data, updating it, or sending it to another service. When an external event triggers the first module, the later modules run in sequence.

## Types of scenarios

Before you build a , you'll need to decide between three types: a **standard scenario**, **AI  scenario**, and **AI agent scenario**. Each is suited to different kinds of workflows and data.&#x20;

### Standard &#x20;

A **standard scenario** is a series of non-AI modules that follow fixed rules. Common uses include simple, repetitive tasks such as sending notifications, updating inventory, and synchronizing data between systems.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/op7iY9o7lmyWzkXA_3Lsl-20260605-141930.png "When a new email arrives, a Zendesk ticket is created, which triggers a new ClickUp task. Based on the ticket details, the task is routed to one of three ClickUp workspaces, or an email is sent.")

### AI &#x20;

An **AI scenario** is a standard  that includes one or more AI modules. It's ideal for predictable workflows where you need AI at specific steps to analyze data, generate content, or convert data to other formats.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/bBNpC_z_voy7UAcnmen0D_ai-agent-scenario-extract-receipts.png "When a new file is added to a Google Drive folder, it's downloaded and AI scans it for receipt details. The extracted data is logged to Google Sheets, and if the amount exceeds $100, the manager is notified via Slack.")

### AI agent &#x20;

An **AI agent scenario** uses the [Make AI Agents (New)](https://help.make.com/make-ai-agents-new) app and lets the agent decide the path, rather than following a fixed one. It's best for workflows that involve classification and delegation, mostly rely on unstructured data like PDFs and emails, and use files to personalize results.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/w-5J-tH_PcV34o6o1trEs-20260605-145530.png "When a new Slack message arrives, an AI Content Draft Agent decides what to do: search the web, save a draft to Google Sheets, create a Google Doc, or send a Slack message. The path changes based on the context of each message.")

![]()

## How they compare

 types differ based on how fixed the workflow is, how much data is unstructured, and whether and how they use AI.

|                       | **Data**                                    | **Logic**                                       | **Results**                                              | **Best for**                                                   |
| --------------------- | ------------------------------------------- | ----------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------------- |
| **Standard scenario** | Structured (forms, spreadsheets, fields)    | Fixed rules (if this, then that)                | Consistent (same input, same output)                     | Predictable processes that need controlled, auditable outcomes |
| **AI scenario**       | A mix of structured and unstructured        | Fixed rules, with AI judgment in specific steps | Mostly consistent, with some variable AI-generated parts | Workflows that need structure, with flexibility in a few steps |
| **AI agent scenario** | Mostly unstructured (text, documents, chat) | Flexible (the agent decides)                    | Variable, depending on what the agent decides            | Open-ended goals where the path isn't fixed in advance         |

## When to use each

Use this decision tree to choose the right  for your workflow.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/GJpqFk5OuW-GlanmRQtXq_example-4.png)

## Examples

Below are industry-specific examples of what each  type can do.

|                       | **Sales**                                                          | **Marketing**                                                                                                                        | **Customer support**                                                                  |
| --------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------- |
| **Standard scenario** | Send new lead form responses to a CRM.                             | Upload videos to YouTube and post them on LinkedIn.                                                                                  | Save customer reviews to a Google Sheet.                                              |
| **AI scenario**       | Evaluate a lead, determine its ICP fit, and summarize pain points. | Transcribe videos, identify viral topics, and draft platform-specific posts.                                                         | Analyze and categorize customer sentiment, then notify the relevant manager on Slack. |
| **AI agent**          | Access the CRM and calendar, research leads, and book meetings.    | Strategically execute tasks to grow a social media following, including choosing topics, scheduling posts, and replying to comments. | Read a customer query, search the company knowledge base, and reply to the customer.  |

## What's next

Once you've decided on the  type, here's what to do next:

- **If you chose a standard scenario**, build the workflow step by step. For a guided walkthrough, see [Create your first scenario](docId\:p5DHtppuOcAGN3DnHoT86).
- **If you chose an AI scenario**, add one or more AI modules at specific steps of your . Choose from built-in AI apps like [Make AI Toolkit](docId\:CfGqHRAekfeXyGbyOW_wC) , [Make AI Web Search](docId\:cHZ264Dv3dwuPyhE9Ytkj), and [Make AI Content Extractor](docId:-Jf9oHeMg72RRdb9cHwXv), or AI provider apps like [Anthropic Claude](docId\:fOxikGVklNq7Rezxz6Wwd) and [OpenAI](docId\:erxxzX7nTkonc19SOjhO8).
- **If you chose an AI agent scenario**, add the [Make AI Agents (New)](docId\:TDbUXjpvPGmQxZPwVqJ7w) app to your  and give it the tools and files it needs to work on its own. To get started quickly, explore the [Library of Agents](https://www.make.com/en/ai-agents-library) for a template to modify.

[title] Connections
[path] Explore more/

Find out more about connections in these articles:

::::LinkArray{contentSource="DOCS" sourceParentDocId="QEEtWgkpayudp_8hQVghk" childrenDocs="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]" sortOption="MANUAL" itemsPerRow="2" displayMode="CARD" customOrder="jN_q7crrGcXwoGzByClnH,TYozxFc9GUVp0XfyZBLHc,00qJ9HY-jRJaIoOFzl9pM,Q8PsAbUTPQ84XCJ6u0FPH,PH0E8yti51UK9SLmBKUNo,MYolaSapnKiRTzLT5C4dC,zZasx0UBF33svrGqewKBV,JrOWOfzIeTcy2pHbnpIjw,Nsk-uNOhlX9ZLJWH-dwFT,011ZXMfI8i1LC0BaDZzcK"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/kFtvrcFVUkI6mYWMfK6CO_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="2MZj8dpgNdiJekaDPFBrc" displayMode="CARD" docSeoDescription="Call Google APIs using HTTP requests with OAuth 2.0 authentication"}
[Call Google APIs with OAuth 2.0 HTTP request](docId:2MZj8dpgNdiJekaDPFBrc)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/vumanJqhHbT-kJ91c1xSV_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="dos_BeHkyQt6t3OF7xsTl" displayMode="CARD" docSeoDescription="Establish OAuth 2.0 connections to securely connect any web service to Make"}
[Connect to any web service using OAuth 2.0](docId\:dos_BeHkyQt6t3OF7xsTl)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/aMQbU2dKped24diCD4fNl_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="w5UPQrHUgxZCKEtiFp7la" displayMode="CARD" docSeoDescription="Create a custom OAuth client in Google Cloud Platform to connect Google services to Make"}
[Connect to Google services using a custom OAuth client](docId\:w5UPQrHUgxZCKEtiFp7la)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/f6C_dEIVz0o6InGyUGTWq_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="pL5t6Q5y880mdEMPw7Csd" displayMode="CARD" docSeoDescription="Replace connections in multiple modules of the same app across one or many scenarios"}
[Replace connections across multiple modules](docId\:pL5t6Q5y880mdEMPw7Csd)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/WjtWGkHzUKTjBsk0cacfU_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="OktCtQXDZqEVdUDaz3ifh" displayMode="CARD" docSeoDescription="Securely collect connection credentials from third parties to build automations in Make"}
[Credential requests](docId\:OktCtQXDZqEVdUDaz3ifh)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/68ah5TWdQ-QytQoG5ZqQB_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="XaRn5csZErJvoEC_OM1VP" displayMode="CARD" docSeoDescription="Create variables to dynamically define which connection to use for a particular scenario run"}
[Dynamic connections](docId\:XaRn5csZErJvoEC_OM1VP)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/B_8jIyom_s6o7J5Nc_W8u_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="2D2-HUt5EUJNKigSzp0vM" displayMode="CARD" docSeoDescription="Install and use on-premise agents to securely access local applications and databases"}
[On-premise agent](docId:2D2-HUt5EUJNKigSzp0vM)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/YFYap-NdkZYWM-iX7u-RN_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="DHjoYvN4qhk7ayrcXZBQs" displayMode="CARD" docSeoDescription="Connect a mobile Apple iOS or Android device to your Make account"}
[Devices](docId\:DHjoYvN4qhk7ayrcXZBQs)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/7cHyi9JnHEeIy6oHajXii_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="6VucriNI6V2NDEuOegdhH" displayMode="CARD" docSeoDescription="Add and manage keys and certificates for secure authentication and data protection"}
[Keys and certificates](docId:6VucriNI6V2NDEuOegdhH)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/WjtWGkHzUKTjBsk0cacfU_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="d0Fwd60KZrVCj9b0OzrIy" displayMode="CARD" docSeoDescription="Find Make's IP addresses to whitelist in your firewall for secure connections"}
[Allow connections to and from Make IP addresses](docId\:d0Fwd60KZrVCj9b0OzrIy)
:::
::::


[title] Working with files
[path] Key concepts/Data & mapping/

Some modules in  work with files, allowing you to download, upload, transform, or move files between apps. For example, you can download email attachments or transcribe audio files using AI.

To use a file in your scenario, you first need a module that retrieves the file data. Once the file is available, you can map it to subsequent modules for further processing.

## How to work with file handling modules

**Input for file handling modules**

To use the file handling modules, you will require two inputs:

1. File Name
2. Data

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/H74qf4vwTCOSQVgL2_Ffu_image.png)

**Step 1**: To get the **File name** and **Data**, use any module that can download or return the content of a file you wish to process. For example: **Google Drive** > **Download a File**, **Dropbox** > **Watch Files**, **Facebook Pages** > **Watch Posts**, or **Gmail** > **List attachments and media**, etc.

**Step 2**: Use the output from step 1 as the input for the file handling module. The file name and file content are then mapped automatically or you can map them manually as shown below.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/dsmDgCu4oZa3cvrqrrf40-20260126-123320.png)

:::hint{type="success"}
To process a file from a URL, use the **HTTP > Download a file** module to download the file. You can then map the downloaded file from the **HTTP > Download a file** module to the appropriate field in your .
:::

## Example 1: Upload images to cloud storage

The example below shows how to upload images from Gmail to Google Drive. The **Gmail&#x20;**> **List email attachments and media** module returns the image and other data based on the filters set. To upload the image to Google Drive, select the **Gmail&#x20;**>**&#x20;List email attachments and media** as the source file in the **Google Drive** >**&#x20;Upload a file** module.  automatically maps the file name and content, and uploads it to the specified Google Drive folder.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/NhU4qZuQaJ0LHLhiT3egd-20260126-085726.png)

In some cases, you may want to rename a file while keeping its content unchanged. To do this, use the **Map** option to map the file name and file content separately.

When specifying the file name, include the full name and extension (for example, invoice.xml). Both binary files (such as photos, videos, and PDFs) and text formats are supported.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/-VDXYn0YfSGPVzqDpF-Sb-20260126-090931.png)

## Example 2: Download photos to Dropbox using the HTTP module

The following example demonstrates how to map photos from Facebook Pages to Dropbox using an HTTP module. The **Facebook Pages&#x20;**>**&#x20;Watch Posts (public page)** trigger returns the image’s URL and other details. The  **HTTP&#x20;**>**&#x20;Download a file** module is added to download the file from the URL. To upload the image to Dropbox, select the **HTTP > Download a file** as the source file in the **Dropbox&#x20;**>**&#x20;Upload a file** module.  automatically maps the file name and content, and the images will be uploaded to the specified Dropbox folder.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/h2_WfQxcJk4jfgEME2gdj-20260126-093624.png)

As shown in Example 1, you may want to rename a file without changing its content. To achieve this, use the **Map** option to map the file name and file content separately.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ryMqiY08bYAH1phU_-z4b-20260126-093450.png)

## Example 3: Extract and analyze content from a PDF file

In the example below, a PDF file containg a Wikipedia page with holidays in the Czech Republic is stored in Google Drive. It is then downloaded, and its content is extracted and analyzed for further processing. The **Google Drive&#x20;**>**&#x20;Download a File** module is used to download the PDF file. The file’s contents are then extracted using the **Make AI Content Extractor&#x20;**>**&#x20;Extract text from a document** module by mapping the output from **Google Drive&#x20;**>**&#x20;Download a File**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/X2gTNH20VwL23dhDg4Tl7-20260126-103331.png)

When this module runs, an output bundle of the text from the PDF file is generated.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/JPwzHSURbzAo2AqZbbp8I-20260126-105403.png)

The output of this module can be further analyzed to achieve the desired results as shown below. In this example, **Make AI Toolkit** >**&#x20;Simple Text Prompt** is instructed to list all the holidays in chronological order with one entry per line.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/4PN2zd4TjflyTsgc3upIa-20260126-110619.png)

## Maximum file size

The maximum file size allowed depends on the plan you are subscribed to (FREE - 5 MB, CORE - 100 MB, PRO - 250 MB, TEAMS - 500 MB, ENTERPRISE - 1,000 MB). If it is exceeded,  proceeds in accordance with the settings of the [Enable data loss](https://app.archbee.com/docs/TDD_JYughqVhdcQ3sZF9_/7-HEHdTuU2XyYs8_qurub#pSdXT) option.

[title] Types of modules
[path] Key concepts/Apps & modules/

In , a module is a building block you use to create a . Think of it as bricks that you put together to automate your processes.

Each module performs a particular action, such as retrieving data from a service, creating or updating a record, downloading a file, or searching for specific data based on certain conditions. For example, your  can have three modules: one module watches for new customer data in a CRM, the second module converts the data into another format, and the last module sends that information to a different service.

You can find all available modules in the app list when selecting a specific app in the  Builder.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-rQpun1U8yxJJAZ2-xka54-20250722-102201.png" size="50" width="670" height="778" position="center" showCaption="false"}

Understanding each module type helps you navigate  more easily, build advanced , and [optimize operations](docId\:dH03uONbe4mGQlYisZrs7) while reducing costs.

In this article, you'll discover the different types of modules in  and how to use them in your . If you're an advanced user, be sure to check out [the section on tips and examples](docId\:BkdEyuBelio6YvvCosRxJ) for more in-depth insights.

## Triggers, Searches, Actions, and Universal modules

There are four types of modules in  based on what they do with data:

- [Triggers](docId\:BkdEyuBelio6YvvCosRxJ)&#x20;
- [Searches](docId\:BkdEyuBelio6YvvCosRxJ)&#x20;
- [Actions](docId\:BkdEyuBelio6YvvCosRxJ)&#x20;
- [Universal modules](docId\:BkdEyuBelio6YvvCosRxJ)&#x20;

### Triggers

A trigger tracks changes in a service and brings them to  so you can use the data in your . A trigger only shows new data from your service account. Each time a  processes trigger data, it's data that hasn't been processed before in that .

For example, a trigger might detect when a new record is created, or an old record is deleted.

You can add a trigger only once in the  as the first module. This ensures that the trigger initiates the  by detecting the relevant changes and pulling in the data for further processing.

There are two types of triggers in :

- [Polling triggers](docId\:BkdEyuBelio6YvvCosRxJ)&#x20;
- [Instant triggers](docId\:BkdEyuBelio6YvvCosRxJ)&#x20;

:::hint{type="info"}
We highly recommend starting your  with a trigger. Still, you can start your  with any possible module. See the [Advanced tips and examples section](docId\:BkdEyuBelio6YvvCosRxJ) to learn more.
:::



### Polling triggers

A polling trigger checks for new data in a service account since the last  run, based on the scenario's [schedule](docId\:SCPFttWgFaPf077uJO1jh). You can recognize this trigger type by its name, which often starts with "Watch": "Watch a record," "Watch a row," and so on.

The polling trigger sends a request to the service. If new data exists, the scenario runs, and you see the data in the module’s output as bundles. If not, you see no bundles.&#x20;

A scheduled  run that checks for new data in a service, but returns no data, is called a check run. You can view check runs in the [scenario history](docId:9Z2XnH-Lyy62CFAhjFHj5), located in the **History&#x20;**&#x74;ab of  details.&#x20;

:::hint{type="info"}
Click **Schedule settings** in the  toolbar to set how often a trigger module runs.
:::

You can choose a starting point for the module to check for new data in a service. Learn more in [Selecting the first bundle for polling triggers](docId\:BkdEyuBelio6YvvCosRxJ).

### Instant triggers

With an instant trigger, the service notifies  when new data arrives, starting the scenario immediately. In essence, an instant trigger is a [webhook](docId:6NpTI6yVZkFtbSZMdl9EY): a link that the service uses to send new data to .&#x20;

When you add an instant trigger,  asks you to create a webhook. Some services may require you to create a connection beforehand.

:::hint{type="success"}
If you add an instant trigger, you automatically set the  schedule as *Immediately as data arrives*.

You can reschedule a  if needed. In this case, a webhook receives data as soon as it arrives and stores it in a queue until the next  run according to a new schedule.
:::

You can recognize an instant trigger by a lightning icon and an **instant** tag:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-Yj3yxwo_jyvMJwKFWmTEh-20250722-102311.png" size="30" width="510" height="548" position="center" showCaption="false"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-qUXEU6saxmB8NHiY6qV4m-20250722-102415.png" size="50" width="788" height="452" position="center" showCaption="false"}

To understand how instant and polling triggers differ, think of buying plane tickets. While a polling trigger is like regularly visiting an airline's website to check for discounts, an instant trigger is like the website notifying you when discounts are available.

### Searches

A Search module helps you to get specific data from a service such as records, profiles, or other objects.

Search modules are flexible. You can add as many as you need and place them anywhere within your .

**Search types**

There are two types of search modules in :

- A Search module allows filtering and using search queries to find specific data. For example, Search records, Search rows, etc.
- A List module retrieves all data from a service without any filtering.  returns all objects that you have in your service account. For example, List records, List sheets, List customers, etc.

:::hint{type="success"}
In most cases, when using searches, you can get up to 3,200 objects per module run. Also, additional third-party API limits may exist. See the [Module limits section](docId\:BkdEyuBelio6YvvCosRxJ) below for more details.
:::

### Actions

An Action module processes the data retrieved from a service. It’s one of the most commonly used modules in .

You can include as many as you need and position them anywhere in your .

There are the following types of actions in :

- Get
- Create
- Update
- Delete

:::hint{type="warning"}
When using **Delete** modules in  (e.g., deleting records, tasks, or other items), be aware that some services may not support recovery of deleted items for actions performed through the API, or in general.&#x20;

This means that deletions may be **permanent** and **irreversible**, and you won't be able to recover items deleted using the **Delete** module in .&#x20;
:::

There are also some actions that are specific to the service, such as pin, save, or download.

:::hint{type="success"}
Unlike Search modules that provide information about all objects or objects that match module filters, a Get module helps to receive information about one specified item. You should specify an object ID to get information about it. Read more in the [Advanced Tips and Examples section](docId\:BkdEyuBelio6YvvCosRxJ).
:::

### Universal modules

A Universal module allows you to make a custom API call to a service when  doesn't provide a pre-built module for an API endpoint you need. This module, usually called the *Make an API Call* module, is available for most services. You may need to refer to the service API documentation to see a full list of available API endpoints.

You can add as many Universal modules as needed and place them anywhere in your .

:::hint{type="info"}
If  doesn't have an app for a service you need, you can use the [HTTP app](docId\:qWeEmEt5lYiFLTAjD8VFq) to make API calls.
:::

## Apps and tools

Modules can be split into two groups based on whether they need to connect to a service or use a third-party API. There are two types:

- [Apps](docId\:BkdEyuBelio6YvvCosRxJ)&#x20;
- [Tools](docId\:BkdEyuBelio6YvvCosRxJ)&#x20;

### Apps

When adding modules of an app, you need to create a connection to start working with them. Each module serves a specific action. For example, to get data, create a record, or delete a profile in your service account. You can associate a certain app module with a specific service API endpoint.

LinkedIn, Google Sheets, HubSpot CRM, Trello and [many more](https://www.make.com/en/integrations?community=1\&verified=1) are apps in . When you add a module, you see the **Create a connection** or **Create a webhook** buttons. In the [Connections section](https://www.make.com/en/help/connections), you can learn more about connections in .

:::hint{type="success"}
Some apps don't require creating a connection, but they still use a third-party API. You may face third-party API limits when working with these apps. See the [Module limits section](docId\:BkdEyuBelio6YvvCosRxJ) below for more details.
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-yUz5kg6vKac4ku_p6YFhP-20250722-102613.png" size="70" width="1210" height="552" position="center" showCaption="false"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-BY0MmQRxElkBxgojB7lfi-20250722-102647.png" size="70" width="1210" height="554" position="center" showCaption="false"}

### Tools

With tools, you don't need to set up a connection nor use a third-party API. Instead, you enter your data or customize module settings, and the module is ready to work. Examples include Iterator, Aggregator, Data store, Compose a string, Set variable, and many more.

These modules are ready to go as soon as you add them. However, some tools might require some setup before you can use them. For example, Data store might ask you to create a data store within .

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/t78b6ALuDwes-kdH8D_od_image.png" size="70" width="1081" height="421" position="center" showCaption="false"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/3wCPNEn3bR_Eo-IsYpo1r_image.png" size="70" width="1063" height="520" position="center" showCaption="false"}

## Advanced tips and examples

In this section, you can find advanced tips and practical examples for using modules in .

### Module limits

While using modules, you might run into limits that could cause errors in your .

Most Searches can only process up to 3,200 objects or 5MB of data per run. You only see the first 3,200 objects searched or as many as fit within the 5MB limit, even if there are more. Some modules only have a data size limit: each module can receive or process up to 5MB of data per run.

Keep in mind that the service's API limits may apply. For example, if the API allows only 1,000 objects, that’s all you will receive no matter which type of modules you use. You can refer to the service API documentation to learn more about its limits.

Here are two best practices to avoid errors and make sure your  runs smoothly:

- When available, use th&#x65;**&#x20;Limit&#x20;**&#x66;ield to define how many objects you want to receive during one run.
- Use a Search module if you need specific data. Search modules let you narrow down results with filters and search queries.

If you use the **Limit** field, it's essential to set the right limit for the data being returned per one run. For example, with a [polling trigger](#), you need to find a balance:

- If the limit is too low,  will only process a part of data, and the rest will have to wait until the next run. This could cause delays in data processing if a lot of new data arrives.
- If the limit is too high, you might retrieve too many objects in one run. This also increases the risk of hitting the 40-minute  run time limit if you need to perform many actions on each object.

We recommend setting the limit according to the number of new objects you plan to get for each  run.

### ACID modules

Modules tagged as ACID support rollback.  will undo all the actions an ACID module takes if an error occurred in subsequent modules.

Imagine your ACID module receives two bundles. The next module processes the first one but encounters an error with the second one. In this case,  rolls back the ACID module as if nothing was received. On the next run, the ACID module gets the same two bundles again. The next module, being non-ACID, will try to process both bundles once again.

You can recognize the ACID module by the ACID tag:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-mvhxbiA8l05193lpSgjmq-20250722-102800.png" size="70" width="788" height="452" position="center" showCaption="false"}

### Difference between Search and Get modules

Unlike Search modules that provide information about all objects or objects that match module filters, a Get module helps to receive information about one specified object. You should specify an object ID to get information about it.

For data, this means Search or List modules usually return several bundles because there are multiple objects to retrieve. Get modules, however, always return a single object, which means only one bundle.

### Using Update modules

With an Update module, you can perform three actions:

- Erase content using the **erase** keyword in a content field. You can find it in the **General functions** tab.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-Ea9zkw2PHaqq-J96IhDpI-20250722-102954.png" size="50" width="682" height="514" position="center" showCaption="false" indent="3"}

:::hint{type="info"}
Use this keyword only if you make a PUT API call. If you perform a PATCH API call, leave a space in a content field.
:::

- Leave content as it is by leaving a content field empty.
- Overwrite content by entering new data in a content field.

### Using different modules as a trigger

While we recommend starting a Make with a **Watch** module, you can also begin with a **Search** module or **Action** module, depending on your goal. For example, if you need specific data, a **Search** or **List** module can act as a polling trigger starting a Make according to the Make schedule.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-znugEPnjLVdf_GJ1psrZu-20250722-103105.png" size="70" width="1060" height="504" position="center" showCaption="false"}

:::hint{type="success"}
If you make a non-Watch module a polling trigger, you cannot add a Watch module afterward.
:::

### Selecting the first bundle for a polling trigger

You can decide where to start to track changes made in the service. To do it, right-click the module and then click **Choose where to start**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/7gWiaz5NXVDBdpp0qrZIg_image.png" size="70" width="1071" height="534" position="center" showCaption="false"}

Typically, you have the following options:

- The current moment
- A specific date
- A specific ID or a record, or an email
- The first record or email

Settings may vary depending on the app.

:::hint{type="success"}
The option that you select in the **Choose where to start** menu only applies to the first run of the module. Subsequent runs track changes that occurred in the third-party app since the previous run.
:::


[title] Schedule a scenario
[path] Key concepts/Scenarios & connections/

Schedule a scenario to define when and how often your  runs.&#x20;

::embed[]{url="https://www.youtube.com/watch?v=r9jGFNT-eYE"}

## Schedule setting panel

Use **Schedule settings** to schedule your . By default, a  runs every 15 minutes, but you can customize the run schedule and interval in this panel.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/JCe0glSHsrBFP8DTl7uR5-20260602-120827.png)

To find **Schedule settings**:

1. Go to the  Builder.
2. Click **Every 15 minutes** on the  toolbar.&#x20;
3. Configure your  schedule.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/XYxUrx718klfibTyLfrA3-20251124-111825.png" size="48" width="444" height="463" position="center" darkWidth="444" darkHeight="463" showCaption="false"}

### Run a &#x20;

You can select the following schedule options:

- At regular intervals
- Once
- Daily
- Weekdays (Mon-Fri)
- Weekly
- Monthly
- Specified dates
- On demand

When choosing any of these options, you may have to further define how often you want the run to occur. For example, if you select **At regular intervals,&#x20;**&#x79;ou must define the time interval (in minutes) between two consecutive  runs.&#x20;

You can add as many run times as you need in the **Daily** schedule, so one scenario can run at 1:00 AM, 14:40 PM, and 10:00 PM from one simple setup.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Ga-g4PMqdvHZVxZ0jvDtD-20260512-081544.png)

The minimum length of the interval depends on your [plan](https://www.make.com/en/pricing).

The **Immediately** option is available only for some triggers. For more information on triggers, please see the [types of modules](docId\:PDoPIBceCKCboMPpKplmY) help guide.

:::hint{type="info"}
You can always see how much time is left until the next scenario execution on the organization dashboard.

![](https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-kKSho7rG_I0OVVBM5cD-b-20250715-102621.png)
:::

### On-demand scheduling

With the on-demand scheduling option, your  waits for an API call or the **Run once** button to trigger it. The  does not have a schedule and it does not run unless you start it manually.

### Start and end date

To define the time range in which an activated  runs, check the **Show advanced settings** box and fill in the **Start** and **End** date.

## Set a scenario rate limit

Set a  rate limit to prevent  with instant triggers from running too often in a short period. Without it, a  that runs tens of times per minute may exceed service rate limits and return errors. The default  rate limit is 100.&#x20;

To set a specific  rate limit for an instant trigger:

::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, click **Immediately as data arrives&#x20;**&#x74;o ope&#x6E;**&#x20;Schedule settings.&#x20;**&#x20;
:::

:::WorkflowBlockItem
In **Maximum runs to start per minute**, specify a maximum number of  runs per minute or leave the field blank to have no limit. The default limit is 100.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/9fNplGYjs6X5WwoXw8PUv-20260602-112056.png)
:::
::::

You've now set a  rate limit.

Once a  hits its maximum runs per minute,  stores subsequent requests in a queue and processes them gradually as the limit allows. For example, if you set the maximum to 30 runs per minute, any additional requests queue until capacity is available.

:::hint{type="info"}
If your  includes a **Webhook response&#x20;**&#x6D;odule and exceeds the rate limit, the webhook caller receives an **HTTP 429 Too many requests&#x20;**&#x65;rror. This error means that the caller must wait and retry the request later.
:::


[title] Incomplete executions
[path] Explore more/Scenarios/

Incomplete executions are a safety feature that protects your  from stopping due to errors and from data loss that could happen. When a  encounters an error with incomplete executions enabled,  stores the unfinished scenario run in the **Incomplete executions** tab.

:::hint{type="info"}
Incomplete executions are disabled by default. To store incomplete executions, enable the **Store** **incomplete executions** option in the **Scenario** **settings**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/JITv5bFhH08k053Dq2pdC-20260204-150539.png" size="40" width="720" height="1392" position="center" showCaption="false"}
:::

You can handle incomplete executions in the following ways:

- let  retry the incomplete executions automatically for the [supported error types](docId:05poZkkKtmKaJW14PAdu-) or use the **Break** error handler
- [resolve](docId\:sFa-8JvNu5DmVRabNRseR) the incomplete executions manually
- [delete](docId\:sFa-8JvNu5DmVRabNRseR) the incomplete executions

:::hint{type="info"}
The maximum number of incomplete executions from all  in all teams in an organization depends on your usage allowance. If the limit is exceeded, you will receive an error message.&#x20;
:::


[title] Replace connections across multiple modules
[path] Explore more/Connections/

In , you may occasionally need to replace a connection that's used in multiple modules of the same app across one or many scenarios. This might be necessary when: 

- You've switched accounts.
- The authentication method has been changed.
- You need to replace the connection instead of [editing the credentials for an existing one](https://help.make.com/connect-an-application#tN2pJ).

Instead of replacing each connection manually, you can choose one of the two methods, depending on where the connection is used: &#x20;

- [Replace connections within one scenario](docId\:pL5t6Q5y880mdEMPw7Csd) 
- [Replace connections within multiple scenarios](docId\:pL5t6Q5y880mdEMPw7Csd)

## Replace the connection within one scenario

Use this method when multiple modules in the same scenario use the connection you want to replace. &#x20;

:::hint{type="info"}
You'll need the **Make DevTool&#x20;**&#x69;nstalled. See the installation instructions [here](https://help.make.com/make-devtool#_pJCx). 
:::

:::::WorkflowBlock
:::WorkflowBlockItem
Open the scenario in  where you want to change the connection. 
:::

:::WorkflowBlockItem
Click any module that will use the new connection, then click **Add&#x20;**&#x6E;ext to the **Connection** field.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/voWL0wH_SMMoMK2gVsp-j-20251009-143708.png" size="50" width="974" height="1394" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Complete the required steps to create and save your new connection.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/lK99aHBo0sO-UHu3nY7Mj-20251009-143737.png" size="40" width="696" height="678" position="center" showCaption="false"}
:::

::::WorkflowBlockItem
Open **Chrome Developer Tools**:

- **Windows**: **Control+Shift+I** or **F12**
- **Mac**: **Fn+F12**

:::hint{type="info"}
Use a horizontal dock for better visibility. Click the three dots in the toolbar's right corner to configure this.
:::
::::

:::WorkflowBlockItem
Switch to the **Make** tab in the Developer Tools. 

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/0Y_9hRD5YYolR76YcksLl-20251009-143806.png)
:::

:::WorkflowBlockItem
In the left sidebar, click **Tools**, then select **Swap Connection**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-guplp8zJYXUvpq09uctui-20250801-073631.png" size="80" width="1758" height="590" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
In the **Source** **Module** field, select the module where you’ve created the new connection. The number in brackets helps you locate it in the Scenario Builder.

In the **Target Module&#x20;**&#x66;ield, add the modules where you want to change the connection. Leave it empty to update all the modules of the same app in the scenario.

::Image[]{src="https://app.archbee.com/api/optimize/PL8X94efBsjvhfQV3wyyj-h8rrhQZAB12p_E15b4XUN-20250723-125031.png" size="40" width="728" height="592" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Run**.
:::

:::WorkflowBlockItem
Wait for the “Run completed” message, and click **Done**.

::Image[]{src="https://app.archbee.com/api/optimize/PL8X94efBsjvhfQV3wyyj-r4N8kyePCquqBYG8Vgn5o-20250723-125129.png" size="40" width="706" height="394" position="center" showCaption="false"}
:::
:::::

All modules from the app in this scenario now use the new connection.  

## Replace connections within multiple scenarios 

If you need to update the connection used in multiple scenarios, using  DevTool may be time-consuming. Instead, you can use [Make app](https://apps.make.com/make) modules to replace connections across multiple scenarios. For that, you need to:

- [Obtain the IDs of the old connection to be replaced and the new one](docId\:pL5t6Q5y880mdEMPw7Csd). 
- [Create a scenario to change the connections](docId\:pL5t6Q5y880mdEMPw7Csd). 

:::hint{type="warning"}
&#x20;The  app is only available on [paid plans](https://www.make.com/en/pricing).&#x20;
:::

### Obtain the IDs of the old and new connections

To change the connection across multiple scenarios, you'll first need to obtain the IDs of both the old and new connections. 

:::hint{type="info"}
Before you begin, make sure you’ve already created the new connection in at least one scenario. If not, follow [these steps](https://help.make.com/connect-an-application#QzWef) to create a new connection, then return here to continue.
:::

::::WorkflowBlock
:::WorkflowBlockItem
Log in to your  account and click **+ Create new scenario.**
:::

:::WorkflowBlockItem
Add the **Make app&#x20;**&#x61;nd select the **List connections in a team&#x20;**&#x6D;odule.
:::

:::WorkflowBlockItem
Configure the module settings:&#x20;

- In the **Connection** field, choose your  connection. If you use an API connection, make sure your API key has the **organizations\:read** and **connections\:read&#x20;**&#x73;copes.&#x20;
- In the **Team ID** field, click **Search** **teams**, and select the required team.&#x20;
- Optional: In the **Type&#x20;**&#x66;ield, you can enter the app name, if you know the exact one:
  - The app name is typically the name of the service (e.g., shopify, notion, facebook).
  - If the app offers more than one connection type, the name may have a number appended (e.g., slack2, airtable3).
  - For apps with compound names, dashes are used (e.g., google-forms, google-sheets).&#x20;
  - You can also check the exact app name using the Make DevTool's **Highlight App&#x20;**&#x66;eature. See the instructions [here](https://help.make.com/make-devtool#Ua4B9). &#x20;
- Optional: In th&#x65;**&#x20;Limit&#x20;**&#x66;ield, you can specify how many connections you want to get in the output.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/IdqApK1DB8L00Y0YehtgB-20251009-150840.png" size="60" width="982" height="904" position="center" showCaption="false" indent="2"}
:::

:::WorkflowBlockItem
Click **Save**. 
:::

:::WorkflowBlockItem
Click the **Run once&#x20;**&#x62;utton in the  Builder toolbar.&#x20;
:::

:::WorkflowBlockItem
Click the operation bubble above the module.
:::

:::WorkflowBlockItem
 In the **Output**, expand **Body&#x20;**> **Connections**.&#x20;

In the output, you will see:

- Your new and old connections' respective **IDs**.
- Your new and old connections' **names**. To identify the old and new connection names, compare the **Name** in the output with the name used when creating the connection.
- Unde&#x72;**&#x20;Account name**, the type of connection you searched for.&#x20;
:::

:::WorkflowBlockItem
 Copy the IDs for the next steps. 

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/hFXdZTdRRtOUlbDd-lCNh-20251009-150904.png" size="40" width="692" height="1362" position="center" showCaption="false"}
:::
::::

### Create a scenario to replace connections

You can use our [template](https://www.make.com/en/hq/template/16232-migration-of-connection-in-scenarios) with a pre-set scenario to replace the connection, or create a scenario yourself.

In the latter case, you'll need to complete the steps described below to find the relevant scenarios, get their blueprints, and update them using the Make app. &#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In your  account, click **+ Create new scenario.&#xA0;**
:::

:::WorkflowBlockItem
Add the **Tools > Set multiple variables** module, and set two variables obtained from the previous step:

- Item 1: old\_connection\_id (Variable name) and its ID (Variable value)
- Item 2: new\_connection\_id (Variable name) and its ID (Variable value)

Click **Save**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/83uv365BKqg_OrQlC5xuj-20251009-150932.png" size="60" width="1020" height="1002" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
To find all the scenarios that use the old connection you want to replace, add the **Make** > **Search scenarios** module. &#x20;
:::

:::WorkflowBlockItem
Configure the module settings:

- In the **Connection** field, choose your  connection. 
- Select your **Organization** and **Team**.&#x20;
- Select the **Folder** if the required scenarios are stored in a particular folder.&#x20;
- Use **Filters** to refine the search by default and/or custom properties. For example, if you need to search for scenarios created by you.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/dVFNG4JF-zvb5JAmxKtlr-20251009-151003.png" size="70" width="1114" height="1388" position="center" showCaption="false" indent="2"}

- Choose which scenarios to include in the search: active, inactive, or all.&#x20;
- In the **Limit** field, specify how many scenarios to return in the output.

Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Optional: Add a filter after this module to further narrow down the scenarios that need to be edited. This may be relevant if the **Search** **scenarios** module doesn’t allow filtering by the parameters you need.
:::

:::WorkflowBlockItem
To retrieve the scenario blueprint you'll work with, add the **Make** **>** **Get a scenario blueprint&#x20;**&#x6D;odule.&#x20;
:::

:::WorkflowBlockItem
Configure the module settings:

- In the **Connection** field, choose your Make connection. 
- In the **Scenario ID** field, map the `Scenario ID` from the **Search scenarios&#x20;**&#x6D;odule.&#x20;
- Click **Advanced settings**, and select **JSON string** in the **Return a blueprint&#x20;**&#x66;ield.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/9QzKgmduomkA0ev8WdU5Z-20251009-151029.png" size="70" width="1124" height="996" position="center" showCaption="false" indent="2"}

Click **Save**.
:::

:::WorkflowBlockItem
Optional: Add a filter for the connection ID to ensure that only scenarios containing the old connection are updated.

- Enter `toString`(map `Blueprint` from the **Get a scenario blueprint** module`)` to the **Condition** field.
- Choose **Text operator: Contains**.&#x20;
- Enter ("\_\_IMTCONN\_\_": map the old connection variable from the **Set a variable** module)

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/neH-L6O-qPrLkMdsGZMBO-20251009-151052.png" size="70" width="1124" height="996" position="center" showCaption="false" indent="2"}
:::

:::WorkflowBlockItem
Optional: You can temporarily add a **Tools > Text aggregator** module after the **Make >** **Get a scenario blueprint&#x20;**&#x6D;odule. This will list all scenarios that are about to be updated, helping you confirm that the connections will be replaced in the correct scenarios. Once you've verified that, you can either disconnect or delete the **Text aggregator&#x20;**&#x6D;odule.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/dFjoeDBfahER_68BlW2VN-20251009-151526.png)
:::

:::WorkflowBlockItem
To update the scenarios that use the old connection with a new connection, add the **Make** > **Update a scenario** module. 
:::

:::WorkflowBlockItem
Configure the module settings:

- In the **Connection** field, choose your  connection. 
- In the **Scenario ID** field, map the **Scenario ID** from the **Search scenarios&#x20;**&#x6D;odule.
- In th&#x65;**&#x20;Blueprint&#x20;**&#x66;ield, add a **replace** function, map the **Blueprint**, and add the old and new connection IDs in the following formats: `"__IMTCONN__": connection ID`.
- Leave the **Scenario name** and **Folder ID** fields blank.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/h2u30zTfE56iyt5UQ1RJL-20251009-151339.png" size="70" width="1254" height="1278" position="center" showCaption="false" indent="2"}

Click **Save**.
:::

:::WorkflowBlockItem
Click the **Run once&#x20;**&#x62;utton in the Scenario Builder toolbar.
:::
::::

All the old connections in the scenarios you selected will be updated to new ones.

## How to confirm the connections are replaced correctly

To verify that the right connections have been replaced in your scenarios, follow these steps.

::::WorkflowBlock
:::WorkflowBlockItem
After running the full scenario, add a **Tools > Text aggregator&#x20;**&#x6D;odule after the **Make > Update a scenario** module. Select **Make > Update a scenario** as a source module, and map `Name` and `Scenario ID` from that module.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/bMjMaQH4A1wQiNhq-rQjd-20251009-151719.png" size="70" width="1806" height="604" position="center" showCaption="false"}

Run the scenario again. If the connection was successfully replaced, this second run should return 0 results (i.e., there’s nothing to replace).
:::

:::WorkflowBlockItem
After running the full scenario, you can also set a filter to find scenarios that use the new connection.

- Enter `toString`(map `Blueprint` from the **Get a scenario blueprint** module`)` to the **Condition** field.
- Choose **Text operator: Contains**.&#x20;
- Enter ("\_\_IMTCONN\_\_": map the new connection variable from the **Set a variable** module)

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/yHJHD4bvI-XA8yOT4qihr-20251009-151803.png" size="70" width="1386" height="742" position="center" showCaption="false" indent="2"}

If you run the scenario again, it should return all scenarios that have the replaced connection.
:::
::::

## Troubleshooting

Here you can find solutions for the most common issues when replacing the connection across multiple modules in .

:::ExpandableHeading
### Don’t see any or certain scenarios from the Search scenario module

- Make sure you’ve selected the correct **Organization**, **Team,** and **Folder** (if applicable).
- Check whether the **filters** you’ve set match the properties of the scenarios you’re looking for. 
- Review the **Limit** field to ensure you’re not cutting off results. 
- Ensure you are filtering the correc&#x74;**&#x20;Connection ID**.
:::

:::ExpandableHeading
### The Update a scenario module fails or doesn’t update anything

- Confirm that the **Blueprint** field is filled in correctly, including the proper `replace ()` syntax. 
- Double-check that the blueprint actually contains the old connection ID you’re trying to replace.
- Verify that you are editing the correct app connection.
:::

:::ExpandableHeading
### What happens if you update scenarios incorrectly

An incorrect update can break the connections in your scenarios. It’s best to test your setup on one or two scenarios first before applying changes in bulk. 

Additionally, you can use the **Tools > Text aggregator&#x20;**&#x6D;odule after the **Make > Get a scenario blueprint&#x20;**&#x6D;odule, as explained above. This will display a list of all scenarios that are about to be updated, helping you confirm that the connections will be replaced in the correct scenarios.

You can also [restore a previous scenario version](https://help.make.com/restore-a-previous-scenario-version) if something goes wrong. &#x20;


:::


[title] Scenario templates
[path] Key concepts/Scenarios & connections/

Templates are ready-to-use scenarios that help you get started quickly with . Think of them as pre-set workflows that you can: 

- Use immediately as complete scenarios
- Edit and expand to fit your specific use case
- Share with others in your team or the wider  community 
- Save and reuse later

Whether you need a simple automation or a complex workflow, templates give the foundation to build exactly what you need.

:::hint{type="success"}
Templates are available on all [Make plans](https://www.make.com/en/pricing). Anyone can create and share scenario templates.
:::

## Types of scenario templates

 offers two types of scenario templates:

- **Public templates** are those created by  and its user community, and cover over 7,500 use cases. They are available to all  users.  
- **Team templates&#x20;**&#x61;re those created by you and your team members. They are available to your team and can be shared with users outside of the team via a public link.

## Where to find scenario templates&#x20;

To view all available scenario templates, click the **Templates&#x20;**&#x74;ab in the left sidebar. There, you can see both public and team templates: 

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/fIL3BtmVW26UNJj4jff81-20251001-155319.png)

## What you can do with scenario templates

In , you can:

- Create a scenario from a template
- Create new templates
- Edit existing templates
- Delete templates
- Publish templates 
- Share templates 
- Submit templates to the public templates library

Learn below how to **create a scenario from a template**, or explore further how to [create and manage your own templates](https://help.make.com/create-and-manage-scenario-templates)**.&#x20;**

## Create a scenario from a template

You can create scenarios using public or team templates. 

### Using a public template

To create a scenario using a public template: 

:::::WorkflowBlock
:::WorkflowBlockItem
Click **Templates&#x20;**&#x69;n the left sidebar.
:::

:::WorkflowBlockItem
Open the **Public templates** ta&#x62;**.**
:::

:::WorkflowBlockItem
Select the template from the gallery, or use the search box to find a specific one by app name or an action you want to perform.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/W6kmdTTeD6x0EmdO6gsuG-20251001-155413.png)
:::

::::WorkflowBlockItem
Choose one of the following options:

**Option 1: Start guided setup**

This option includes on-screen prompts to help you configure the template.

- Click **Start guided setup**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ZOPjLz1lG6QbolVzFnW3B-20251001-155535.png" size="100" width="2472" height="1410" position="center" darkWidth="2472" darkHeight="1410" showCaption="false" indent="2"}

- Configure the module settings following the prompts for each field, or click **Skip guided setup** at any time to continue without prompts.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/YJUw4-JxKO7W13cRRbqY7-20251001-155650.png" size="100" width="2564" height="1406" position="center" darkWidth="2564" darkHeight="1406" showCaption="false" indent="2"}

- While configuring modules with the guided setup, you'll see different icons showing the current status of the module:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-8xM3nFM-Soo2Hd2eeZ38L-20250625-073734.png" size="100" width="2356" height="606" position="center" darkWidth="2356" darkHeight="606" showCaption="false" indent="2"}

:::hint{type="info"}
- A **checkmark** indicates that you've filled every field correctly and saved the changes.&#x20;
- A **black star** indicates that you've opened the module and filled every field correctly, but haven't saved the changes.&#x20;
- An **exclamation point** indicates that some field has an invalid input or something is missing.
- A **grey star&#x20;**&#x69;ndicates that you haven't opened the module yet.
:::

**Option 2: Create new scenario from template&#xA0;**

With this option, you create a new scenario and configure manually all the module settings, including **Connections**, without any guided assistance.

- Click **Create new scenario from template**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/pZSkoakcLTVTllYaihLmX-20251001-155755.png" size="40" width="614" height="1406" position="center" showCaption="false" indent="3"}

- Edit your new scenario based on your workflow the same way you would edit any other scenario.
::::
:::::

After creating a new scenario from a public template, you can rename it, save, test and schedule as needed.

### Using a team template

To create a scenario using a team template: 

::::WorkflowBlock
:::WorkflowBlockItem
Click **Templates&#x20;**&#x69;n the left sidebar.
:::

:::WorkflowBlockItem
Switch to the **Team templates** ta&#x62;**.**
:::

:::WorkflowBlockItem
Select the template you want to use.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/hRGUDs7eHnCoGqO2XlEb2-20251001-160343.png)
:::

:::WorkflowBlockItem
Click **Options**, and then **+ Create scenario**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/fpu_sGGnJLGtnmr4lqDeX-20251001-160412.png" size="70" width="1882" height="1148" position="center" showCaption="false"}
:::
::::

You can now edit, schedule, and run the scenario.


[title] Key concepts
[path] /

Understand the fundamentals to start automating with :

::::LinkArray{contentSource="DOCS" sourceParentDocId="ymoJFpyuyRAHffph2AZHv" childrenDocs="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]" itemsPerRow="2" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/NMKSG_VV_7ulZcBhG8E7M_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="7MJcR2V5eiL5mOp95RGHE" displayMode="CARD" docSeoDescription="Learn what credits and operations are, how different features use credits, and how to monitor your usage"}
[Credits & operations](docId:7MJcR2V5eiL5mOp95RGHE)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/jR5w9idZ2Lafa2Y8dhpn3_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="lWu46UFxldHeAMIeHWtu-" displayMode="CARD" docSeoDescription="Learn how to connect applications, understand scenario basics, and manage scenario settings and templates"}
[Scenarios & connections](docId\:lWu46UFxldHeAMIeHWtu-)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/XOUHXawWlcC-5ephBb63l_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="MYUcyls7rozY-Z56IDYu0" displayMode="CARD" docSeoDescription="Explore different types of apps, modules, and learn the fundamentals of webhooks"}
[Apps & modules](docId\:MYUcyls7rozY-Z56IDYu0)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/XrWR_m4H7oprGsUXs9grB_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="w1uRU5JD4JyDMBf0K8RaS" displayMode="CARD" docSeoDescription="Understand how to work with data and send it between modules"}
[Data & mapping](docId\:w1uRU5JD4JyDMBf0K8RaS)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/MjMw0YqyqOnnN5oEFMT1w_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="Vk13GZJ2fjgU97TF9vVhW" displayMode="CARD" docSeoDescription="Get familiar with the essential tools for transforming data"}
[Tools](docId\:Vk13GZJ2fjgU97TF9vVhW)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/UMLROw2WvTeeBMxBuCe1S_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="vAn6bp8azzR2mj1EP1V74" displayMode="CARD" docSeoDescription="Build your knowledge with glossary terms and keyboard shortcuts "}
[Resources](docId\:vAn6bp8azzR2mj1EP1V74)
:::

:::LinkArrayItem{headerType="IMAGE" docId="ocnqxuW1RfJKa4xvtf3pI" displayMode="CARD"}
[Canvas interaction model](docId\:ocnqxuW1RfJKa4xvtf3pI)
:::
::::


[title] Step 8. Map data
[path] Get started/Create your first scenario/

Mapping is how you send data between modules. It means taking information (output) from one module and telling Make how you want to use it in the next module (input).

In this scenario, you're taking prospect information from Google Sheets (output) and using it in specific spots in your Slack message (input).

To configure your Slack message with data from Google Sheets:

::::WorkflowBlock
:::WorkflowBlockItem
In the **Enter a channel ID or name&#x20;**&#x66;ield, choose **Select from the list**.
:::

:::WorkflowBlockItem
In the **Channel type&#x20;**&#x66;ield, select **Public** **channel**.&#x20;
:::

:::WorkflowBlockItem
In the **Public channel&#x20;**&#x66;ield, select **sales-team**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/0_Ll9onFOPJI-iDRVL6Vp-20251103-195616.png)
:::

:::WorkflowBlockItem
Click the **Text** field. A mapping panel will appear showing data from your **Google Sheets > Watch New Rows** module.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/s2hJ3qaBLroe7SpA_uB0A-20251103-195650.png)
:::

:::WorkflowBlockItem
Create your notification message. You can copy and paste the following template into the **Text** field or create your own message.

`New prospect added!`
`Name: `
`Email: `
`Country:`
`Phone: `
`Details:` &#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/HBQgIXM4_oM5I2pMtp3zj-20251103-195725.png)
:::

:::WorkflowBlockItem
Drag and drop the values from the Google Sheets module to the **Text** field, or simply click on the values to place them into your message.&#x20;

If you map several values into the same field (like `First Name` and `Last Name` in this example), separate them with spaces to get two distinct values in the output.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/llZsG95dbkpJ9cJGqb8lY-20251103-195754.png)

This is mapping data: taking prospect information from Google Sheets and placing it into specific spots in your Slack message.
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x74;o save your module settings.&#x20;
:::

:::WorkflowBlockItem
Click the **Save** icon on the Scenario Builder toolbar to save your entire scenario.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/MZWOFxuGxYAlKsYEcHtGM-20251103-195829.png)
:::
::::

Your scenario now has two connected modules:

- **Google Sheets > Watch New Rows** to detect new prospects
- **Slack > Send a Message** to send notifications to your team

In the next step, you'll test your scenario to make sure both modules work together properly.

[title] Canvas interaction model
[path] Key concepts/

The  builder canvas aligns with modern industry standards. You can use a mouse, trackpad, or touchscreen to interact with .

Canvas navigation automatically adjusts based on your detected input device. However, if the system doesn't quite match your preference, you can adjust it in **Canvas options**.

![]()

**Auto-detect**: Switches based on the device you use.

**Mouse:** Select this if you use an Apple Magic Mouse or a standard mouse.&#x20;

If you select **Mouse** mode but use a trackpad, a two-finger slide will zoom instead of pan.

**Trackpad**: Ideal if you primarily use a trackpad, or if you use a hybrid setup.&#x20;

For example, a trackpad combined with a graphic tablet or a traditional wheel mouse where you prefer **Ctrl/Cmd + Wheel** to zoom.

**Canvas panning**: Choose which mouse button or trackpad interaction pans the canvas, the other one will multi-select modules.&#x20;

- Right-click: This is the default selection, you can pan around the canvas by clicking and dragging the right mouse button or secondary-click on trackpad. To multi-select modules, click and drag the left mouse button or tap and drag on canvas.
- Left-click: You can pan around the canvas by clicking and dragging left mouse button or tap and drag on canvas. To multi-select modules, click and drag the right mouse button or secondary-click on trackpad.

## Change from Right-click to Left-click navigation

You can change to your preferred way of navigating through the canvas.&#x20;

For example, pan using the left mouse button (LMB) instead of the default right mouse button (RMB).

To change the panning:

1. Click **Canvas options&#x20;**&#x6E;ext to the scenario name.
2. &#x20;In **Canvas panning,&#x20;**&#x63;lick **Left-click**.

You have now changed the panning setting. For more information about the left-click navigation, see [Left-click interaction model](docId\:ocnqxuW1RfJKa4xvtf3pI).

:::hint{type="info"}
Changes to input device settings are saved when you sign out and sign in. They will reset to default if you clear your browser's site data, open Make in an incognito window, use a new browser, or switch to a different device.
:::

## &#x20;Right-click interaction model (default)

Right-click is the default selection. Pan around the canvas by clicking and dragging the right mouse button. To multi-select modules, click and drag the left mouse button

| **Navigation**                | **With a mouse**                                                                                                                                                              | **With a trackpad**                                                                            | **With a touchscreen**           |
| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -------------------------------- |
| **Pan**                       | Click the right mouse button (RMB) and drag<br /><br />OR press the space button+ left mouse button (LMB) and drag<br /><br />OR click the middle mouse button (MMB) and drag | To pan, use two-finger swipe on the trackpad<br /><br />OR right-button / secondary-click drag | Touch and drag the canvas to pan |
| **Zoom**                      | Scroll the mouse wheel                                                                                                                                                        | Pinch the trackpad to zoom                                                                     | Pinch the screen to zoom         |
| **Select**                    | Click the left mouse button (LMB)                                                                                                                                             | Tap on the element                                                                             | -                                |
| **Context menu**              | Click the right mouse button (RMB)                                                                                                                                            | Secondary click                                                                                | -                                |
| **Multi-select (one-by-one)** | Press Ctrl/CMD + LMB click<br /><br />OR Shift + LMB click                                                                                                                    | Single finger drag                                                                             | -                                |
| **Multi-select (marquee)**    | LMB drag<br /><br />OR Shift/Ctrl + LMB drag                                                                                                                                  | Single-finger drag on empty (+ Shift + one finger)                                             | -                                |
| **Move**                      | LMB drag on the element                                                                                                                                                       | Single finger drag on a module                                                                 | -                                |

***

## Left-click interaction model (toggled)

Select **Left-click** to pan the canvas by clicking and dragging the left mouse button. To multi-select modules, click and drag the right mouse button.

| **Navigation**                | **With a mouse**                                                                                             | **With a trackpad**                                                                                                                            | **With a touchscreen**           |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- |
| **Pan**                       | Click the left mouse button (LMB) and drag       <br /><br />OR click the middle mouse button (MMB) and drag | To pan, press one-finger and drag on the trackpad<br /><br />OR two-fingers swipe to move up and down                                          | Touch and drag the canvas to pan |
| **Zoom**                      | Scroll the mouse wheel                                                                                       | Pinch the trackpad to zoom                                                                                                                     | Pinch the screen to zoom         |
| **Select**                    | Click the left mouse button (LMB)                                                                            | Tap on the element                                                                                                                             | -                                |
| **Context menu**              | Click the right mouse button (RMB)                                                                           | Secondary click                                                                                                                                | -                                |
| **Multi-select (one-by-one)** | Press Ctrl/CMD + LMB click<br /><br />OR Shift + LMB click                                                   | Shift + single-finger tap on a buttonless pad<br /><br />OR right-button drag  on a 2-button pad                                               | -                                |
| **Multi-select (marquee)**    | RMB drag <br /><br />OR press Ctrl/CMD + LMB drag<br />OR press Shift + LMB drag                             | Ctrl/CMD + LMB drag<br /><br />OR Shift + single-finger drag or on a buttonless pad<br /><br />OR right-button<br />and drag on a 2-button pad | -                                |
| **Move**                      | LMB drag on the element                                                                                      | Single finger drag on a module                                                                                                                 | -                                |








[title] Connect to any web service using OAuth 2.0
[path] Explore more/Connections/

To connect certain web services to Make, you need to establish an OAuth 2.0 connection.&#x20;

:::hint{type="info"}
**OAuth 2.0&#x20;**(Open Authorization) is an industry-standard protocol used for granting secure, limited access to a user's data. It allows one web service to access the resources from another one on behalf of the user. It also ensures that the user consents to the access and that the client service only performs specific, allowed actions.
:::

To establish the OAuth 2.0 connection, you must obtain **client credentials** from the service you want to connect to. These credentials are commonly called Client ID and Client Secret, though they may have different names. They authenticate your app to the authorization server. To obtain those credentials, you'd usually create an app within the service or app you want to connect to.&#x20;

In an OAuth 2.0 connection, you also need to specify **scopes**. They define the level of access your web service requests and control what the connected app can do. For example, you may allow the app to read files, but not delete them.&#x20;

## Example: Connect Make to Dropbox

Dropbox is a cloud storage service that uses the standardized OAuth 2.0 protocol for authorization. Thus, to connect Make to Dropbox using OAuth 2.0 authorization, you'll need to:

- [Obtain client credentials and scopes](docId\:dos_BeHkyQt6t3OF7xsTl)
- [Establish the connection in Make](docId\:dos_BeHkyQt6t3OF7xsTl)&#x20;

## Obtain client credentials and scopes

To obtain the client credentials in Dropbox, you need to create an application. There, you will get the **App key** (Client ID) and **App secret** (Client Secret), which are required to establish the OAuth 2.0 connection.&#x20;

To do that:

:::::WorkflowBlock
:::WorkflowBlockItem
Log in to your Dropbox account and go to the [Developers page](https://www.dropbox.com/developers/).
:::

:::WorkflowBlockItem
Click **Create** **apps**.&#x20;
:::

:::WorkflowBlockItem
A window to create a new app on the DBX platform will appear. There, you should:

- Select **Scoped** **access&#x20;**&#x75;nde&#x72;**&#x20;Choose an API.**
- Select **Full Dropbox** under **Choose the type of access you need.**
- Enter a **Name** for your app under **Name your app**.
- Click **Create** **app**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/rAEOAB-WvZAysoiK20hJG-20251117-131843.png)
:::

:::WorkflowBlockItem
An app configuration window will appear. In the **Settings** tab, enter `https://www.integromat.com/oauth/cb/oauth2` as a **Redirect URI&#x20;**&#x61;nd click **Add**.
:::

:::WorkflowBlockItem
Copy the **App key** (Client ID) and **App secret** (Client Secret) and store them in a safe place. You will need them later to establish the connection in Make.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/dgwayNnx14mKPE1gVlKO3-20251117-132509.png)
:::

::::WorkflowBlockItem
Switch to the **Permissions** tab. Select the scopes to let Make perform the required actions in Dropbox, and click **Submit&#x20;**&#x74;o save the changes. You will also need to add those selected scopes later when setting the connection in Make.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/f2CzmysDYO_P19eBdyO4M-20251117-135927.png)

:::hint{type="info"}
You can always check the API documentation of the service you're connecting to to see which scope is required for a particular action.
:::
::::
:::::

Once you have your client credentials and scopes, you can proceed with establishing the OAuth 2.0 connection in Make.

## Establish the connection in Make

For some websites or apps that do not have a dedicated Make integration, you will need to use an [HTTP > Make a request](https://apps.make.com/http#pKx7q) module with an [OAuth 2.0 authentication type](https://apps.make.com/oauth-20-authentication-type).&#x20;

If Make provides a relevant app module, you can just add that module to the scenario and establish the OAuth 2.0 connection. This is usually simpler, as the module handles most of the configurations automatically.&#x20;

Since Make has a Dropbox app, we can look at both cases.&#x20;

### Establish the connection in Make using the HTTP app

Suppose you need to create a folder in Dropbox via an HTTP `POST` request. Here's how to establish the OAuth connection and configure the module:

:::hint{type="success"}
Check the required API details in the [Dropbox API documentation.](https://www.dropbox.com/developers/documentation/http/documentation)
:::

:::::WorkflowBlock
:::WorkflowBlockItem
Create a new scenario, or open the existing one and add an **HTTP > Make a request** module.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/Enlxf9gxerQySvAJvFqYX-20251117-142731.png" size="50" width="942" height="766" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
In the **Authentication type** field, select&#x20;**&#x20;OAuth 2.0**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/p1wFYel-X4zdvSQJkb6fQ-20251117-142911.png" size="50" width="928" height="578" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
In the **Credentials** field, click **Create a connection** (or **Add&#x20;**&#x6E;ext t&#x6F;**&#x20;Create a connection**) to create your OAuth 2.0 connection:

- In the **Connection name&#x20;**&#x66;ield, enter a name for your connection.&#x20;
- In the **Flow** **type** field, select Authorization Code as you'll need to enter further both an **Authorize URI** and **Token URI**.&#x20;
- In th&#x65;**&#x20;Authorize URI** field, enter the **Authorize URI&#x20;**`https://www.dropbox.com/oauth2/authorize` as it's defined in the Dropbox API documentation.  &#x20;
- In th&#x65;**&#x20;Token URI** field, enter the **Token URI&#x20;**`https://api.dropboxapi.com/oauth2/token` as it's defined in the Dropbox API documentation. &#x20;
- In the **Scope** field, click **+Add item** to add the required scope(s).&#x20;
- In the **Client** **ID** field, add the **App** **key** you obtained from your Dropbox app.
- In the **Client** **Secret** field, add the **App** **secret&#x20;**&#x79;ou obtained from your Dropbox app.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/3gcfNfs95KGWeBxHOwutV-20251219-135523.png" size="40" width="592" height="1136" position="center" showCaption="false" indent="2"}
:::

::::WorkflowBlockItem
To avoid having to constantly refresh the connection, enable the **Advanced settings&#x20;**&#x74;oggle, and click **+Add item** to add the following **Authorize** **parameters**:

- **Key**: `token_access_type`**&#x20;Value**: `offline`
- **Key**: `force_reapprove` **Value**: `true`

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e22akFm4NRTR1h9hjh7O4-20251219-135609.png" size="40" width="706" height="936" position="center" showCaption="false"}

:::hint{type="warning"}
The **Authorize** **parameters** mentioned above only apply to Dropbox. Other services’ APIs may require similar parameters, but with different names.&#x20;

Check the service’s API documentation to add the required **Authorize** **parameters** and avoid constant OAuth 2.0 connection refreshes.&#x20;
:::
::::

:::WorkflowBlockItem
Click **Save**.
:::

:::WorkflowBlockItem
Allow access in the emerging window.&#x20;
:::
:::::

Your connection is now successfully established. To check that it works, you can make an HTTP request. To create a folder in Dropbox:

::::WorkflowBlock
:::WorkflowBlockItem
In the URL field, add `https://api.dropboxapi.com/2/files/create_folder_v2`.
:::

:::WorkflowBlockItem
Select the **POST** method required for this API call.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/hGTtN_bb77rXkm_d0avtO-20251111-114522.png" size="30" width="586" height="338" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Leave the **Header** and the **Query** sections empty.
:::

:::WorkflowBlockItem
For the **Body** section:

- In the **Body content type** field, select `application/json`.&#x20;
- In th&#x65;**&#x20;Body input method&#x20;**&#x66;ield, select **Data structure**.
- In the **Body** **structure** field, click **Add&#x20;**&#x74;o create a new data structure. Add a text field `path` to indicate where the folder should be created and how it should be called. You can also add the Boolean `autorename` field to specify whether Dropbox can autorename the folder if there's a conflict. Click **Save**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/RA7vFDMJMtqbdfz7nC2Du-20251111-130849.png" size="60" width="1090" height="1294" position="center" showCaption="false" indent="2"}

- In the **Body** **content** **field**, add the path (`/Make` in this example) and disable the autorename.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x61;nd run the module.
:::
::::

You can now check your Dropbox storage. A new folder called **Make** will be created. You can also see it in the output:&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/BjJyhLJmf2pft5iMJ0VZb-20251111-131416.png" size="40" width="588" height="1132" position="center" showCaption="false"}

### Establish the connection in Make through the Dropbox app

Since there's a Dropbox app in Make with a corresponding module, you can also add it to the scenario and establish the OAuth 2.0 connection. To do that:

::::WorkflowBlock
:::WorkflowBlockItem
Create a new scenario, or open an existing one, and add a **Dropbox > Create a Folder** module.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/6t918xC_tkXStCDFA_4ny-20251117-171629.png" size="50" width="902" height="724" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Create a connection** (or **Add**) to create your OAuth 2.0 connection.
:::

:::WorkflowBlockItem
In the connection configuration window:

- In the **Connection name&#x20;**&#x66;ield, enter a name to distinguish your connection.&#x20;
- In the **Client** **ID** field, add the **Client ID&#x20;**&#x79;ou obtained from your Dropbox app.
- In th&#x65;**&#x20;Client Secret** field, add the **Client** **Secret&#x20;**&#x79;ou obtained from your Dropbox app.
- In the **Scope** field, click **+Add item** to add the required scopes.&#x20;
- Click **Save**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/ReVOrDm37ydF4XHGJ09gK-20251117-172852.png" size="50" width="1538" height="956" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Allow access in the emerging window.&#x20;
:::
::::

Your connection is now successfully established. To verify that it works, you can configure the module settings and run it.&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
To replicate what we've done above with the **HTTP > Make a reques**t module, add 'Make' in the **Folder** **Name** field. Set the **Folder** to a general one.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/PpTWQPXS7iPTwGMBd__9I-20251117-174000.png" size="50" width="988" height="612" position="center" showCaption="false"}
:::
::::

You can now check your Dropbox storage. A new folder called **Make** will be created. You can also see it in the output:&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/rEnH5LkV3mZpkas3T64oB-20251117-174402.png" size="30" width="582" height="818" position="center" showCaption="false"}


[title] Step 4. Add a filter
[path] Get started/Expand your scenario/

Filters allow you to control when a module runs, or what data is passed to a module based on specific conditions. In this case, you want to send mobile notifications only for prospects from the USA.

To add a filter:&#x20;

:::::WorkflowBlock
::::WorkflowBlockItem
Click on the wrench icon on the dots between the router and the Apple iOS module, and select **Set up a filter**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ig412Y_djavMelliawKvV-20251104-082720.png)

:::hint{type="info"}
Alternatively, you can right-click on the dots between modules and select **Set up a filter&#x20;**&#x6F;r left-click directly on the dots between modules, which will open the **Set up a filter** window.
:::
::::

::::WorkflowBlockItem
In the **Label** field, enter "US prospects only" as a label for the filter.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/7mechOXLn4oBGmY01oi4D-20251104-082752.png)

:::hint{type="info"}
The label of the filter is important because it appears in the Scenario Builder, making it easier to understand the flow of data through your scenario.
:::
::::

:::WorkflowBlockItem
In the **Condition** field, drag and drop or click on the value `Country` from Google Sheets.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/rbbsCYxtGeniL7mD3bRXE-20251104-082814.png)
:::

:::WorkflowBlockItem
Keep the **Text Operators** dropdown as **Equal to** and enter "USA" in the field below.
:::

::::WorkflowBlockItem
Click **Save.&#x20;**

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/qsSD9Uhznu5D60M_qnIaj-20251104-082922.png)

:::hint{type="info"}
Remember to click the **Save** icon in the Scenario Builder toolbar to save your entire scenario.
:::
::::
:::::

Now mobile notifications will only be sent when a prospect's country is "USA". The sales team will still receive all Slack notifications through the other route.

:::hint{type="info"}
**Understanding filters**

Filters are tools that allow specific data to be passed or restricted within the flow of your scenario. Think of them as gatekeepers that only let through data that meets your criteria.

Filters are useful to:

- Send data down specific paths only when it meets your conditions.
- Check if data matches specific criteria (equals, contains, greater than, etc.).
- Build complex rules by combining multiple filters.
- Save operations because they stop the flow when your conditions aren't met.
:::

Your scenario is now set up to send targeted notifications.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/_4K8SMmx-uyU289cG3wfR-20251104-082943.png)

Next, you'll test it to make sure it works as expected with different types of prospects.

[title] Step 4. Create a connection
[path] Get started/Create your first scenario/

To use most apps in , you first need to [create a connection](https://help.make.com/connect-an-application). Connections securely link  to your external applications, allowing data to flow between them.&#x20;

To create a connection to Google Sheets:

:::::WorkflowBlock
:::WorkflowBlockItem
Click **Create a connection.**

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/c-hxgI6XngxX8gLIvEqM4-20251103-194229.png)
:::

::::WorkflowBlockItem
Name your connection and click **Sign in with Google.&#x20;**

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ASlIiAcNU2ZpUwsg-QNWN-20251103-194325.png)

:::hint{type="info"}
Instead of **My Google connection**, you can use your name or the Google account name you're connecting with to be able to recognize it later.&#x20;
:::
::::

:::WorkflowBlockItem
A Google sign-in window will open. Choose your Google account.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/VOnRqL1AY0E_YZoXYYMNb-20251103-194526.png)
:::

::::WorkflowBlockItem
Follow the steps to authorize  to access your Google account.

:::hint{type="info"}
This authorization step is required so  can access your spreadsheet data.
:::

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/N1TeoIqob1N5oonwYxt6r-20251103-194614.png)

Select what  can access and click **Continue**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/B70IZ4TqdnbjpiXAAmSK7-20251103-194656.png)
::::
:::::

Once you've completed the authorization, it means your connection is created and you're now ready to configure your Google Sheets trigger module so it can watch for changes in the spreadsheet.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/toGfhzQpG52H7vKdZuvJf-20251103-194759.png)

:::hint{type="info"}
Connections are an essential part of  scenarios. They allow your scenarios to get information from and send it to third-party applications.&#x20;

Different apps require different types of authentication — from simple username and password combinations to API keys or OAuth. When you create a connection to a new app, you can click the **Online Help&#x20;**&#x6C;ink to learn more about how to connect the selected app.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/cC5a7AEVot6oLNPbnKI45-20250929-142109.png" size="40" width="834" height="262" position="flex-start" showCaption="false"}

Once created, a connection is saved for future use. You can reuse the same connection in other scenarios that work with Google Sheets.
:::


[title] Create your first scenario
[path] Get started/

The best way to understand Make is to try it yourself! This guide will walk you through creating your first Make scenario—an automated workflow that will send notifications to a sales team. By the end, you'll understand Make's core concepts and be ready to build your own scenarios.&#x20;

:::hint{type="info"}
A scenario is a series of modules that indicate how data should be transferred and transformed between apps/services. In Make, each [team](docId\:btahAzLP8hMLnPlpMTblN) can create up to 100 scenarios per day. Each scenario has a size limit of 2 MB.
:::

### What you'll build

You'll create a notification system that bridges the gap between marketing and sales teams. Imagine this business challenge: your marketing team adds new prospects to a spreadsheet, and your sales team needs immediate notifications.

Your  scenario will:

- Monitor a Google Sheet for new prospect entries by the marketing team.
- Send Slack notifications to the sales team when new prospects are added.

![](https://archbee-image-uploads.s3.amazonaws.com/yjwhINLS3fc-NXg38fV_d-t2WqQrK2RixogyauXxCkp-20250318-173045.png)

### What you'll need

- A Make account ([Create one here](https://www.make.com/en/register))
- A Slack account and workspace ([Sign up for Slack](https://slack.com/get-started))
- A Google account ([Create an account](https://accounts.google.com/signup))

All these accounts are free to create, including a Make account. While this guide uses Slack and Google Sheets, you can adapt these steps to work with your preferred applications.

Here's a preview of what your finished scenario will look like:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/C-rvwBZHzacULYkRiQAqt-20251104-102546.png)


[title] Clone a scenario
[path] Key concepts/Scenarios & connections/

In Make, you can clone scenarios within the same organization, either within your team or to a different team. This saves you time as you don't need to rebuild the scenario and reconfigure each module manually.

Cloning allows you to:&#x20;

- Copy a scenario **within the same team** with all the module settings and connections. You will only need to set up the webhooks if there are any.
- Copy a scenario **to another team** within the same organization with all the module settings. You will only need to set up the required connections for the target team and the webhooks, if there are any.&#x20;

Cloning is the fastest way to duplicate a scenario within your organization compared to [blueprints](https://help.make.com/blueprints), [templates](https://help.make.com/scenario-templates), or [sharing through a link](https://help.make.com/scenario-sharing).&#x20;

## Clone scenario

To clone a scenario:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Scenarios**. &#x20;
:::

:::WorkflowBlockItem
Click the **three** **dots** **>** **Clone** next to the required scenario.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/jRCotYvqP9ohLJzHhy1PH-20251125-084514.png)

Alternatively, click the required scenario. In the upper-right corner of the scenario diagram, click **Options > Clone.**

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/SV2W-oE1_i006rVbJzQyc-20251125-084530.png)
:::
::::

You will see a window to configure the cloned scenario.&#x20;

### Clone scenario within your team

When cloning a scenario within your team, configure it as follows:

:::::WorkflowBlock
:::WorkflowBlockItem
In the **Name of new scenario** field, change the scenario name if needed.
:::

:::WorkflowBlockItem
In the **Target** **team** field, keep your current team that is selected by default. &#x20;
:::

:::WorkflowBlockItem
In **Webhooks&#x20;**(if your scenario includes webhooks), select an existing webhook or create a new one that will replace the original.&#x20;
:::

::::WorkflowBlockItem
In the **Keep the states of any new modules the same as those being duplicated&#x20;**&#x66;ield, choose whether polling triggers in the cloned scenario should keep their state.

- If you select **Yes**, the trigger will continue from the last processed item in the original scenario. &#x20;
- If you select **No**, the scenario will start from the initial position, as defined in the module settings.

:::hint{type="info"}
**Example**: You have a scenario with the **Google Sheets > Watch New Rows** module set to return one output per execution cycle. You ran the original scenario twice and now want to clone it.&#x20;

- If you select **Yes**, the cloned scenario will start from row 3.&#x20;
- If you select **No**, the cloned scenario will start from row 1.
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/GR4ToZd3HVWbNmSHAOGZo-20260213-125240.png" size="50" width="792" height="984" position="center" darkWidth="792" darkHeight="984" showCaption="false"}
::::

:::WorkflowBlockItem
Click **Save**.
:::
:::::

After saving the cloning configurations, you will be redirected to the cloned scenario diagram. Click **Edit** in the upper-right corner, or anywhere in the canvas, make any necessary adjustments, activate the scenario, if needed, and save your changes.

### Clone scenario to another team&#x20;

To clone a scenario to another team, configure the cloned scenario as follows:

:::::WorkflowBlock
:::WorkflowBlockItem
In the **Name of new scenario** field, change the scenario name if needed.
:::

:::WorkflowBlockItem
In the **Target** **team** field, choose the team to clone the scenario to.
:::

::::WorkflowBlockItem
In **Connections**, for each module included in the cloned scenario, select the connections from the target team or create new ones.&#x20;

:::hint{type="warning"}
Make sure to adjust and review the module settings after selecting a different connection.&#x20;

**Example**: You're cloning a scenario that includes the **Google Sheets > Watch New Rows** module and select a connection from the target team. The module settings will be prefilled with data from the original scenario. However, the new connection may not have access to certain elements, e.g., the selected spreadsheet. If you run the scenario without adjusting the module settings, it will return an error.&#x20;
:::
::::

:::WorkflowBlockItem
In **Webhooks&#x20;**(if your scenario includes webhooks), create a webhook that will replace the original one.&#x20;
:::

::::WorkflowBlockItem
In the **Keep the states of any new modules the same as those being duplicated&#x20;**&#x66;ield, select whether polling triggers in the cloned scenario should keep their state.

- If you select **Yes**, the trigger will continue from the last processed item in the original scenario. &#x20;
- If you select **No**, the scenario will start from the initial position, as defined in the module settings.

:::hint{type="warning"}
This option applies only if you use the same connection in both the original and cloned scenarios.&#x20;

If you select a different connection, the cloned scenario will start from the initial position regardless of the option selected.&#x20;
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/uxOKP06clvDOfkfZae4kv-20260213-142140.png" size="50" width="790" height="1326" position="center" darkWidth="790" darkHeight="1326" showCaption="false"}
::::

:::WorkflowBlockItem
Click **Save**.
:::
:::::

After saving the cloning configurations, the cloned scenario will appear in the **Scenarios** list of the selected target team.&#x20;

You will be redirected to the cloned scenario diagram. Click **Edit** in the upper-right corner, or anywhere in the canvas, make any necessary adjustments, activate the scenario, if needed, and save your changes.

[title] Tools
[path] Key concepts/

Learn about tools for transforming data in these articles:

::::LinkArray{contentSource="DOCS" sourceParentDocId="Vk13GZJ2fjgU97TF9vVhW" childrenDocs="[object Object],[object Object],[object Object]" itemsPerRow="2" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/LmyXyqY1kisUsugF6i_7B_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="mjfgGicaqo6HPwBLTTuxR" displayMode="CARD" docSeoDescription="Use aggregators to merge multiple data bundles into one and group the results"}
[Aggregator](docId\:mjfgGicaqo6HPwBLTTuxR)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/I0fCfGmmqhy5ewxeDPfA1_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="s3qznIBehcRK7_NqDgZLI" displayMode="CARD" docSeoDescription="Split arrays into individual bundles using iterators to process each item separately"}
[Iterator](docId\:s3qznIBehcRK7_NqDgZLI)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/RhNRn8RZpC590p7fu9VMg_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="OpqXxZcGe19tawxhIAEHn" displayMode="CARD" docSeoDescription="Branch a scenario into multiple routes to process data differently based on specific conditions"}
[Router](docId\:OpqXxZcGe19tawxhIAEHn)
:::
::::


[title] How features use credits
[path] Key concepts/Credits & operations/Credits/

This page outlines how different features in Make (apps and modules) consume credits, so you understand the credit cost of your activities.

## Credits by app

Apps consume credits differently depending on the type. Built-in AI apps consume credits differently than other app types.

### Built-in AI apps

How a built-in AI app uses credits depends on whether it uses [Make's AI Provider](docId\:hh-nrTakEqakBmg63UUiN), a custom AI provider connection (such as via an API key), or an automatic AI provider connection.

To learn more about connection types, see [Credit usage for AI features](docId\:hh-nrTakEqakBmg63UUiN).

:::hint{type="warning"}
**Make's AI Provider&#x20;**&#x69;s available on **all plans**, and **custom AI provider connections** are available on **paid plans**.&#x20;
:::

| **App**                                                                | **Make's AI Provider&#x20;**<br />**(all plans)**                                                                                                                                                                                  | **Custom AI provider connection**<br />**(paid plans)**                                        | **Automatic AI provider connection**<br />**(all plans)**                                                                                                                 |
| ---------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Make AI Toolkit ](https://apps.make.com/ai-tools)                     | Dynamic: 1 credit per operation + credits based on token usage                                                                                                                                                                     | Fixed: 1 credit per operation                                                                  |                                                                                                                                                                           |
| [Make AI Agents](https://help.make.com/make-ai-agents-app)             | Dynamic: 1 credit per operation/chat + credits based on token usage, including:<br />* AI tokens (**Run an agent&#x20;**&#x61;nd **Create Agent Context** modules)
* Embedding tokens (**Create Agent Context&#x20;**&#x6D;odules) | Fixed: 1 credit per operation (+ embedding tokens when using **Create Agent Context** modules) |                                                                                                                                                                           |
| [Make AI Content Extractor](https://apps.make.com/make-ai-extractors)  |                                                                                                                                                                                                                                    |                                                                                                | Fixed (1 credit per operation) or dynamic (credits based on token, file, or page-based usage), [depending on the module](https://apps.make.com/make-ai-extractors#J7fs5). |
| [Make AI Web Search ](https://apps.make.com/make-ai-web-search)        |                                                                                                                                                                                                                                    |                                                                                                | Dynamic: 1 credit per operation + credits based on token usage                                                                                                            |

### All other apps

All other apps consume credits based on a fixed rate of 1 credit per operation.&#x20;

**Exceptions**

- The [Make Code](docId\:mkN0za9LLNQPHyF1mXmz8) app uses 2 credits per second of execution time.
- [These modules](docId\:LZASgxrjtBcJOk6vF0RKR) are free to use.&#x20;

## Credits by module&#x20;

Most non-AI apps at Make consume credits based on operations. Their modules use credits differently based on their place in the scenario and how they process data.

### Trigger modules

**Trigger** modules use 1 credit per run, regardless of whether they return data. Even when a trigger finds no new data, it still uses 1 credit for checking.&#x20;

For example, in the **Google Sheets > Watch New Rows** module below, the scenario run retrieved no new data, but used 1 credit for the operation.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/SfGq7S3kWBUDt8ggstSYo_image.png" size="50" width="877" height="642" position="center" darkWidth="877" darkHeight="642" showCaption="false"}

### Search modules

**Search** modules use 1 credit per run, even when they return multiple bundles.&#x20;

For example, the **Google Sheets > Search Row&#x20;**&#x6D;odule below runs once to search rows according to the specified criteria. It only uses 1 credit for this operation despite returning 10 rows, or bundles.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Rl7pihMKyYWyfPu0YbUe__image.png" size="50" width="1141" height="877" position="center" darkWidth="1141" darkHeight="877" showCaption="false"}

### Action modules

**Action** modules (those with "Add," "Update," "Delete," etc) use as many credits as runs needed to process all bundles. It uses 1 credit per input bundle processed.&#x20;

For example, the **Google Sheets > Search Row** module below returned 10 rows and used 1 credit. The followin&#x67;**&#x20;Delete Rows** module must run 10 times to delete each of the 10 rows, using 10 credits. The scenario uses 11 credits total.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ehLsxpLfejWYU3fMgGVXX_image.png" size="50" width="1092" height="571" position="center" darkWidth="1092" darkHeight="571" showCaption="false"}

### Aggregator modules

**Aggregator** modules combine multiple bundles into a single bundle, called an array. Aggregators use 1 credit for each aggregation.&#x20;

For example, the array aggregator below combined 10 contacts, or bundles, from th&#x65;**&#x20;Google Sheets > Watch New Rows** module into an array. This aggregation used 1 credit.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/J1V5CrjGrOOYLkN-KjetY_image.png" size="48" width="1051" height="564" position="center" darkWidth="1051" darkHeight="564" showCaption="false"}

### Iterator modules

**Iterator** modules split an array into multiple bundles. Iterators use 1 credit to split an array into bundles, and the next modules use 1 credit for each iterated bundle.&#x20;

For example, the **Iterator&#x20;**&#x62;elow received an email with an array of 5 attachments and split the array into 5 separate attachments. It used 1 credit to split the attachment array, and the **Google Drive > Upload a File** module used 5 credits to upload each attachment.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/MVatuTWrkTTf8_hYSAXP0_image.png" size="70" width="1671" height="580" position="center" darkWidth="1671" darkHeight="580" showCaption="false"}

:::hint{type="info"}
Learn more about bundles and their relationship to operations in [Operations](docId\:ZR2rWmILMJ_19R85MlAwM).
:::

## Modules with no credit cost

The following modules don't use credits:

- [Error handler](docId:3SXXD1Q5E-Os35cbKdlWk) modules: **Rollback**, **Break**, **Resume**, **Commit**, **Ignore**
- [Router](docId\:OpqXxZcGe19tawxhIAEHn) modules and [filters](docId\:TOeIVU0dBv44bMRjCMliC) &#x20;
- [Scenarios](docId\:f8FHRvoQwCk48nX_FJRyf) modules: **Call a subscenario**, **Start a scenario**, **Return output**, and **Customize run name**
- [Make Functions](docId\:v5lrz7Uqk1z12zxR6RuKq) modules

[title] What is Make?
[path] Get started/Learn the basics/

Make is a powerful automation platform that allows you to connect various applications and services to automate workflows and tasks. With Make, you can automate processes just like a developer, all without any coding expertise.

## What can I do using Make?

The possibilities with Make are nearly endless. You can improve how your business works by automating many different tasks.

Here are a few examples of common manual tasks you can automate:

- Notify the sales team when a customer fills out a form expressing interest in your products and services.
- Automatically send a welcome email to new employees one week before they join the company.
- Add new prospects to your CRM once the marketing team has qualified them as leads.
- Generate quarterly PDF reports of won sales opportunities.

Make is also great at handling complex end-to-end processes that make your business run more smoothly:

- Set up complete employee onboarding that automatically creates IT accounts, requests laptops, orders access cards, and sends welcome emails.
- Handle customer questions by automatically creating tickets and using AI to sort them based on what they're asking about, their location, and which language they're using.
- Process invoices automatically after orders are fulfilled and products are shipped.

While you focus on growing your business, Make takes care of repetitive tasks in the background.

## How does it work?

To automate tasks or build complex processes, you need to communicate with different applications and systems. For instance, extracting information from a Google or Microsoft spreadsheet requires connecting to their services. These services offer what we call APIs.

[In the following pages](docId\:tM-D9kD1lJjGouN1ARgdK), you'll learn how Make handles these connections for you, opening up automation to everyone.

[title] Apps & modules
[path] Key concepts/

Learn the basics of apps, modules, and webhooks in these articles:

::::LinkArray{contentSource="DOCS" sourceParentDocId="MYUcyls7rozY-Z56IDYu0" childrenDocs="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]" itemsPerRow="2" displayMode="CARD" sortOption="MANUAL" customOrder="hIN3txy1Tqe-ImMboaK3U,H91xU_yG5xp_pIU7lV564,4OdrEM7pUQUTaHoUjXXSC,dOgfmMaTb0d9X4XQOpT6h,oRJhCMiYn-M2an_xvHdBT,YCHD0GvTJA4rk48XsTE6Z"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/JirxOjs9NiX2rvMSWhI69_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="x1tKtKzeo8ykgB5Nx5TYf" displayMode="CARD" docSeoDescription="Learn about verified, community, and custom apps, and see which are available on your plan"}
[Introduction to Make apps](docId\:x1tKtKzeo8ykgB5Nx5TYf)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/U-h7wqVQ4o4zRwD21upi7_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="6NpTI6yVZkFtbSZMdl9EY" displayMode="CARD" docSeoDescription="Create webhooks to trigger scenarios instantly and manage their data processing and queues"}
[Webhooks](docId:6NpTI6yVZkFtbSZMdl9EY)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/5-44JUVzXlIkVrBxxq5mQ_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="BkdEyuBelio6YvvCosRxJ" displayMode="CARD" docSeoDescription="Discover different module types and learn how to use them to build your scenarios"}
[Types of modules](docId\:BkdEyuBelio6YvvCosRxJ)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/rEzFQJmQi9JKvV9VRj5zZ_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="vNBss-BELMDIN3D4gguxL" displayMode="CARD" docSeoDescription="Learn how to configure different module fields to ensure your scenarios run correctly"}
[Module settings](docId\:vNBss-BELMDIN3D4gguxL)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/GVh1esgFUo1aE3ZGaiei1_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="AVR5eMPJ7CvNn5q4ezooc" displayMode="CARD" docSeoDescription="Select the starting bundle for your trigger module to define where data processing begins"}
[Select the first bundle to process](docId\:AVR5eMPJ7CvNn5q4ezooc)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/mFeJvKCriXwWHqI6Z4ml0_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="IXOe13Oe9FfIlKO2E5Zx2" displayMode="CARD" docSeoDescription="Update legacy modules to the latest versions to ensure compatibility and access new features"}
[Update legacy modules with new modules](docId\:IXOe13Oe9FfIlKO2E5Zx2)
:::
::::


[title] Automatic retry of incomplete executions
[path] Explore more/Scenarios/Incomplete executions/

 checks the origin of every incomplete execution when it's created.  automatically retries incomplete executions that have been created because of:

- `RateLimitError`
- `ConnectionError`
- `ModuleTimeoutError`

and incomplete executions that were created with the [Retry error handler](docId\:cPTWi8yI45ZL3M5slzjNV) with the automatic run completion enabled.

 takes the following steps when  retries incomplete executions:

1.  schedules the incomplete execution retries.
2.  retries the incomplete execution.
3. Based on the incomplete execution retry result  schedules another attempt or marks the incomplete execution resolved.

## Automatic retry scheduling

 schedules automatic retries with the [Exponential backoff](docId\:QIox8zKLNPuRKZSNOP8rC) schedule. The backoff schedule prevents the situation when you would get the same error multiple times in a row.

For example, when you get the `ConnectionError` because the app is unavailable, it might take some time until it's back.  spaces out the retry attempts to get a successful retry even at a later time after the original error.

| **Error type**                                                | **Retry schedule**                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - `RateLimitError`
- `ConnectionError`
- `ModuleTimeoutError` | 1. 1 minute (1 minute after the original  run).
2. 10 minutes (11 minutes after the original  run).
3. 10 minutes (21 minutes after the original  run).
4. 30 minutes (51 minutes after the original  run).
5. 30 minutes (1 hour 21 minutes after the original  run).
6. 30 minutes (1 hour 51 minutes after the original  run).
7. 3 hours (4 hours 51 minutes after the original  run).
8. 3 hours (7 hours 51 minutes after the original  run). |
| Error handled by the **Break** error handler                  | If you enable automatic  run completion in the error handler settings. The default is:<br />* maximum number of retry attempts: 3
* retry delay: 15 minutes<br />You can customize the defaults in the error handler settings.                                                                                                                                                                                                                      |

Other error type usually require changes in the incomplete execution and [manual resolving](docId\:sFa-8JvNu5DmVRabNRseR).  doesn't retry these error types automatically by default.

## Automatic retry processing

After  schedules the retries,  runs the  again, starting with the module that caused the error.

For each , there is a limit of 3 incomplete execution retries running in parallel. If there are more incomplete executions scheduled from the same ,  retries them in batches of 3 after the previous batch finishes.

In addition, the retry doesn't start when the original  is running already.

The 3 parallel retries limit applies to retries from the same . When  retries incomplete executions from multiple , then each of them has their own limit.

:::hint{type="info"}
This limitation is to prevent your  from getting follow-up rate limit errors if you are retrying a lot of incomplete executions at the same time.
:::

**For example:**

You have a  that runs for 10 minutes every hour. There was a disruption of a third party service for 5 hours.

- The  now has 5 incomplete executions scheduled for automatic retry.
-  first waits until the original  finishes if it's running already. This takes 10 minutes if the  started just now.
- After the  finishes,  retries the first 3 incomplete executions. This takes an additional 10 minutes (20 in total).
-  retries the remaining 2 incomplete executions after the previous batch finishes. This takes another 10 minutes (30 in total).
- After another 30 minutes (1 hour in total),  starts the  again according to the  schedule.

## Automatic retry result

If a retry attempt succeeds,  marks the incomplete execution as **Resolved** and stops retrying.

If all of the retry attempts fail,  marks the incomplete execution as **Unresolved**. You can then retry the incomplete execution when the app that caused the error is available again or you can resolve the incomplete execution manually.

[title] Step 5. Test your scenario
[path] Get started/Expand your scenario/

Now that you've set up the filter, it's time to test your scenario with different types of prospects.

To test your scenario:&#x20;

:::::WorkflowBlock
:::WorkflowBlockItem
Go to your **Prospects** spreadsheet and add two new rows:

- One with country = USA
- Another one with a different country

![](https://archbee-image-uploads.s3.amazonaws.com/yjwhINLS3fc-NXg38fV_d-aI9qEPUSP0iZhNLnvSgJA-20250331-154009.png)
:::

::::WorkflowBlockItem
In the Scenario Builder toolbar, click the **Run once&#x20;**&#x62;utton.

:::hint{type="info"}
By default, the **Google Sheets > Watch New Rows** module will only find the new rows added since you last ran your scenario.&#x20;

If you want to process all rows again for testing, you can reset it: right-click the Google Sheets module and select **Choose where to start**. Select **All** and click **Save**. The next time you run the scenario, it will include all the rows again.
:::
::::

:::WorkflowBlockItem
Check the operation bubbles above each module to see the results. The numbers shown in the bubbles indicate how many operations were used.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/WQRGPoI1NVIaxaYDx74LB-20251104-090259.png)
:::

:::WorkflowBlockItem
Click on the output bubbles to view the details.

The **Google Sheets > Watch New Rows&#x20;**&#x6D;odule should show both prospects:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/omLAlzi9FJp2LKDGpN0MA-20251104-090323.png)

The **Slack > Send a Message** module should receive and process both prospects:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/UTbik44FO9_ci3AtiwlX5-20251104-090344.png)

The **filter** should only let the USA prospect through:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/YRueP7YZkP1-wjO3-WfeO-20251104-090406.png)

The **Apple iOS > Send a push notification** module should only process the USA prospect:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/-DeMlqGdwOSO4lttdYxif-20251104-090437.png)
:::

:::WorkflowBlockItem
Check your Slack channel to confirm both notifications arrived.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/nBY4aXMCQWuOccfZvfe-H-20250930-142441.png)
:::

:::WorkflowBlockItem
Check your mobile device to confirm you only received a notification for the USA prospect.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/qQ0ojBT8OzpXLGy9jvi8h-20251104-091158.png" size="30" width="1179" height="2374" position="center" showCaption="false"}
:::
:::::

This test shows that the scenario works properly:

- All prospects are sent as Slack notifications
- Only US prospects trigger mobile notifications

This targeted approach ensures the Sales Manager gets alerts only for US market prospects, while the Slack channel receives updates about all prospects.

However, if many US prospects are added at once, the Sales Manager would receive multiple separate notifications. In the next step, you'll add an aggregator to combine multiple US prospects into a single notification.

[title] Step 1. Plan your scenario
[path] Get started/Create your first scenario/

Successful automation begins with a clear understanding of what needs to be automated. For any Make scenario, the first thing you do is identify what applications to connect and what actions to perform.&#x20;

### Define the applications you'll connect

- Check if the applications are available in Make (Gmail, Slack, Google Sheets, and thousands more are supported).
- Verify you have access to these applications (such as Slack workspace admin rights or a Google Workspace account).
- Ensure you have the necessary permissions (access to specific Google Sheets or Slack channels).

### Outline the specific actions needed

- What triggers the scenario? (a new email, form submission, or updates to a spreadsheet row)
- What information needs processing? (contact details, order information, or customer data)
- What should happen with this information? (create a new contact, send notifications, update databases)

For our sales notification scenario, here's the breakdown:

- **Applications**: Google Sheets, Slack
- **Trigger**: new row added in Google Sheets&#x20;
- **Actions**: send Slack notification to the team

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/7kbUhqrjNIqzR-m8aIrQu-20251103-192331.png)

In the next sections, you'll prepare these apps to be used in your scenario.

[title] Select the first bundle to process
[path] Key concepts/Apps & modules/

Some [triggers](#) allow you to select the first bundle where you want the retrieving of bundles to start from. You can also set whether to retrieve all bundles or just the bundles from after a specific date.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Z5xQpNbJDBfBOeTSljdQn-20260115-111416.png" size="60" width="984" height="652" position="center" showCaption="false"}

## Displaying the panel

The panel to select where the first bundle should be retrieved displays automatically after you save a trigger or when you make a substantial change in the trigger [settings](docId\:vNBss-BELMDIN3D4gguxL).

You can also display the panel at any time by right-clicking on the trigger icon in the [Scenario editor](docId:7euvHnup3GLX7SO-Jdcng).

The options available in the panel differ trigger from trigger, depending on the the possibilities of a given service. In fact, some triggers do not offer any options at all.

## Setting options

The panel for selecting the first bundle may contain 1 to 5 options:

- **From now on** (default) - retrieves all bundles added or updated (depending on settings) from now on.
- **Since specific date** - retrieves all bundles added or updated (depending on settings) after a specified date/time.
- **With ID greater than or equal to a specific value** - retrieves all bundles with an ID greater than or equal to a specified ID.
- **All bundles** - retrieves all available bundles.
- **Select the first bundle** - allows you to select the first bundle from which the retrieval of bundles is to start.


[title] Step 7. Test the final scenario
[path] Get started/Expand your scenario/

Now that you've added an aggregator to your , it's time to test the complete  to make sure everything works as expected.

:::::WorkflowBlock
:::WorkflowBlockItem
Go to your **Prospects** spreadsheet and add three or more new rows where:

- At least two prospects have the **USA** in the **Country** column
- One prospect has a different country in the **Country** column

![](https://archbee-image-uploads.s3.amazonaws.com/yjwhINLS3fc-NXg38fV_d-IPHTPMYELf3GB2h2cfNCM-20250401-120300.png)
:::

::::WorkflowBlockItem
In the  Builder toolbar, click the **Run once** button.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/At9VWVQhYuZRNhysX6UzL-20251104-094927.png)

:::hint{type="info"}
By default, the **Google Sheets > Watch New Rows** module will only find the new rows added since you last ran your scenario. To process all rows again:

- Right-click the Google Sheets module
- Select **Choose where to start**
- Choose **All** and click **Save**
:::
::::

:::WorkflowBlockItem
Check the output bubbles above each module to see the results. The numbers shown in the bubbles indicate how many operations were completed.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/rGVeDmKiHLZXUWD98mH7D-20251104-101730.png)
:::

:::WorkflowBlockItem
Click on the bubbles to view the details.&#x20;

The **Google Sheets > Watch New Rows** module should show all new prospects you added, depending on the limit you set:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/q1EUZn_ydpEsY_-qdeE2P-20251104-101751.png)

The **Slack > Send a Message** module should receive and process all prospects:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/yzIX6TeOM883JyIsqOlsL-20251104-101811.png)

The **filter** should only let the USA prospects through:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/BonXqN3PZUO3Ei0EINlPS-20251104-101832.png)

The **Text aggregator** should combine the USA prospects into a single bundle:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/lvheJzGsse7YY2r990nKs-20251104-101853.png)

The **Apple iOS > Send a push notification** module should only process this single aggregated bundle:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/TvW5k9DY5zGBxNuMcqEUk-20251104-102205.png)
:::

:::WorkflowBlockItem
Check your Slack channel to confirm all notifications arrived.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/8lTWsr8k7Bk2tPC6lmCaC-20251001-081818.png)
:::

:::WorkflowBlockItem
Check your mobile device to confirm you received only one notification that contains all the US prospects.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/QuQhsOJ9BtshSqvnoEYgD-20251104-102234.png" size="30" width="1179" height="2352" position="center" showCaption="false"}
:::
:::::

You've now created a  that:

- Monitors your Google Sheets document for new prospects
- Sends all prospects to a Slack channel
- Sends only US-based prospects to the Sales Manager's mobile device
- Combines multiple US prospects into a single mobile notification

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/qoGQ1wQbrDkSCdGaas85k-20251104-102322.png)

:::hint{type="info"}
**What's next?&#x20;**

Now that you've learned how to use routers to create multiple paths, filters to process data conditionally, and aggregators to combine related information, you can continue expanding your scenario by:

- Adding more filters for other countries or criteria
- Integrating additional apps like email or CRM systems
- Exploring other aggregator types for different data formats
- Learning about error handlers to make your scenarios more robust

To advance your Make knowledge, explore our free online courses at [Make Academy](https://academy.make.com/).&#x20;
:::


[title] Step 3. Add your first app
[path] Get started/Create your first scenario/

At this step, you'll add the first application and module that will trigger your scenario.

:::hint{type="info"}
A trigger module is what kicks off your scenario, for example, when somebody fills in a form, when a new email arrives in your inbox, or when a row is added to a spreadsheet.&#x20;

In this guide, we're using "Watch New Rows" for Google Sheets as our trigger.
:::

:::::WorkflowBlock
:::WorkflowBlockItem
[Sign in](https://www.make.com/en/register) to . You'll see the main dashboard, where you can access all platform features.
:::

::::WorkflowBlockItem
Click **+ Create a new scenario&#x20;**&#x69;n the top-right corner to open the Scenario Builder.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Ky0XPIA0SfqfHVTjY634N-20250929-130811.png)

:::hint{type="info"}
You can also find the **+ Create a new scenario** button in the **Scenarios** tab located in the left sidebar.
:::
::::

:::WorkflowBlockItem
In the top-left corner, clic&#x6B;**&#x20;New scenario** to update your scenario's name.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/3n3U11QjVZAPrObjXou6r-20251103-192455.png)
:::

:::WorkflowBlockItem
Enter **New** **prospect** **notification** (or any name you prefer). Click the **Save&#x20;**&#x69;con on the Scenario Builder toolbar to save your scenario.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/EgD7W-c0b8249wneKcRN2-20251103-192531.png)
:::

:::WorkflowBlockItem
Click the giant plus in the center of your canvas. This will open a window with the list of apps that you can add to your scenario.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/mE_upp3SXiEjXguCpY5je-20251103-192611.png)
:::

::::WorkflowBlockItem
Search for **Google** **Sheets** in the search bar or browse the available apps.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/V7dG80LF0Hk40p9o_WiRl-20251103-192639.png)

:::hint{type="info"}
If you select the wrong app, click **Back&#x20;**&#x74;o return to the list.
:::
::::

:::WorkflowBlockItem
Select **Google** **Sheets** and then choose **Watch** **New** **Rows** from the available modules.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ea04i_Xb_eCuBLYBLEH8x-20251103-192710.png)
:::
:::::

Now you've added your trigger module that will start your scenario whenever new prospects are added to your spreadsheet. Before you can configure it, you need to create a connection to Google Sheets.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/1AI8_KKUbFa6D7jHOyZW3-20251103-192844.png)


[title] Create and manage scenario templates
[path] Explore more/Scenarios/

In , you can create  templates and share them with your teammates or general  users. There are two types of Make templates:

- **Team templates&#x20;**&#x69;nclude **private** and **published** templates. By default, all team templates created by you or your team are private and only accessible within your team. Once they are published, you can share them with any user via a link.
- **Public templates&#x20;**&#x61;re available in the public templates library and accessible to all Make users. Any team template can be submitted for review to  to become a public template. Once approved, it will be included in the public templates library for general use.

:::hint{type="success"}
Templates are available on all [Make plans](https://www.make.com/en/pricing). Anyone can create and share scenario templates.
:::

## Create scenario templates

You can create a new  template using the  Builder. 

:::::WorkflowBlock
:::WorkflowBlockItem
Click **Templates** in the left sidebar.
:::

:::WorkflowBlockItem
Click **+ New template** in the upper-right corner.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/SWyVO4mq9a_kL8ZI0736M-20251006-082459.png)
:::

:::WorkflowBlockItem
The  Builder opens.&#x20;
:::

:::WorkflowBlockItem
By default,  names the template as “New template”. 

To rename it, click the title at the top of the canvas and enter a new one.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/Yol7FTrULwjmhA76Hhnep-20251006-082528.png" size="40" width="396" height="114" position="center" showCaption="false"}
:::

::::WorkflowBlockItem
Building a template works the same way as creating a scenario, with one key difference. Here, you can define how certain fields will appear when someone uses the template to create a : 

- Check **Use in Wizard** box to include the field in the guided setup. If you don't check this box, the field will be hidden from users. When selected, a **Help box** appears where you can add a short description to guide users in configuring the field.&#x20;
- Check **Use as a default value** box to additionally suggest a predefined value for a field. Users will see this suggestion during setup, but can still change it if needed.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/rsHprn1Rr8W1RPFFrFwDQ-20251006-091149.png" size="70" width="962" height="1398" position="center" showCaption="false" indent="2"}

- Here's what users will see when they set up the template to create a  with these options enabled:&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/S9mgQiZSJ1bmubGLA_qUp-20251006-091210.png" size="60" width="906" height="970" position="center" showCaption="false" indent="2"}

:::hint{type="success"}
**Keep in mind:&#x20;**

- If you don't check either box, the field and its values will be hidden from users during the guided setup, but will still appear when they start editing the scenario from that template.
- All values added to the fields in the template will be visible during   editing, regardless of the guided setup options you choose.
- Wizard prompts are displayed only if the user chooses a guided setup when creating a  from a template.&#x20;
:::

:::hint{type="info"}
It's particularly important to check both **Use in Wizard&#x20;**&#x61;nd **Use as a default value&#x20;**&#x62;oxes when adding a module with dynamic, customizable fields (e.g., Set multiple variables).

This ensures that users see the fields when they create a  from your template.
:::

:::hint{type="danger"}
If the **Use in Wizard** and **Use as a default value** checkboxes do not appear:

- In the **Module settings** window, click **Save** and close the window.
- Right-click the module and select **Settings**. The **Use in Wizard** and **Use as a default value&#x20;**&#x63;heckboxes now appear.
:::
::::

:::WorkflowBlockItem
You can also include a short description of the  and of the template to explain what they do:

- Click **Set up a template&#x20;**(gear icon) in the toolbar at the bottom of the  Builder.
- Add a template description (max. 1500 characters) and/or a  description (max. 240 characters).
- Click **Save.**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Itqa86LX-j3YpcOibQOUi-20251006-110312.png" size="100" width="2244" height="1426" position="center" showCaption="false" indent="2"}

- The **template description** appears in the information panel when you share the template. The **scenario description** will be included in the scenario created from that template.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/XNVWppaPfNG7ZTOk36CZm-20251006-110329.png" size="30" width="680" height="1406" position="center" showCaption="false" indent="2"}
:::

:::WorkflowBlockItem
Once you are done, click the **Save** icon to save your template.

::Image[]{src="https://app.archbee.com/api/optimize/PL8X94efBsjvhfQV3wyyj-lpqr_q6e3ORYBzC7vj8nd-20250619-123038.png" size="50" width="1064" height="240" position="center" showCaption="false"}
:::
:::::

You can find this and all other  templates you've created in the **Team templates&#x20;**&#x74;ab. If the list is too long, use the search box to find templates quickly.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/s71T1LIM1Kjk76pKX7pVE-20251006-110405.png)

## Rename scenario templates

:::hint{type="warning"}
You can only rename your team templates. If you rename a published template, you need to publish it again after changing the name. Users who have the link to the previously published version will see the updates once you republish the template.
:::

To rename an existing team template:

::::WorkflowBlock
:::WorkflowBlockItem
Open it from the **Team templates** tab.
:::

:::WorkflowBlockItem
Click **Options&#x20;**> **Rename.**

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/eJSfHQF3qdWznib9XH9Jy-20251006-110430.png)
:::
::::

Your template will be renamed. If it's a published  template, you can click **Publish** so the update is reflected in the published version.

## Edit scenario templates

:::hint{type="warning"}
You can only edit your team templates. If you edit a published template, you need to publish it again after editing. Users who have the link to the previously published version will see the updates once you republish the template.
:::

To edit a template:

::::WorkflowBlock
:::WorkflowBlockItem
Open it from the **Team templates** tab.
:::

:::WorkflowBlockItem
Click **Edit**.  

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/6rGRbuNPP0SfdcHwdzGoy-20251006-110453.png)
:::

:::WorkflowBlockItem
Editing a template works like editing a . In addition, you can adjust the  **Use in Wizard&#x20;**&#x61;nd **Use as default value&#x20;**&#x6F;ptions you set when creating the template.&#x20;
:::

:::WorkflowBlockItem
Once you are done editing, click the **Save** icon.
:::
::::

The changes you’ve made will be applied to your template. If it's a published template, you can now click **Publish** again so the update is reflected in the published version.

## Delete scenario templates

:::hint{type="warning"}
You can delete any of your private or published templates.&#x20;

Published templates must be unpublished first.  
:::

You can delete a scenario template from the **Team** **templates** tab or directly within the template.&#x20;

To delete a template from the **Team templates** tab:

::::WorkflowBlock
:::WorkflowBlockItem
Click **Delete&#x20;**&#x6E;ext to the template. 

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Gk4Kt3gFAsKd2chIFzQZn-20251006-110516.png)
:::

:::WorkflowBlockItem
Click **Delete** to confirm.&#x20;
:::
::::

To delete a template **within the** **template itself**:

::::WorkflowBlock
:::WorkflowBlockItem
Open the template.
:::

:::WorkflowBlockItem
Click **Options** in the upper-right corner. 
:::

:::WorkflowBlockItem
Click **Delete**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/7fWIUwxvFVJIgvUpjEldP-20251006-110959.png)
:::

:::WorkflowBlockItem
Click **Delete** to confirm.
:::
::::

The template will be permanently deleted. Any public links to a deleted template will no longer work.

## Publish scenario templates

To share your scenario template with others, you must first publish it.

To publish a template:

::::WorkflowBlock
:::WorkflowBlockItem
Go to the **Team templates** tab.
:::

:::WorkflowBlockItem
Select the template you want to share.
:::

:::WorkflowBlockItem
Click **Publish** in the upper-right corner.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Dy8b12JkBh0G692yvA53w-20251006-111047.png)
:::
::::

You can now share your template via a public URL with anyone outside your team.

To unpublish a template:

::::WorkflowBlock
:::WorkflowBlockItem
Open the template and click **Options**> **Unpublish**. 

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/0-Xr6ZaSQ5se6w2LvrqjZ-20251006-111130.png)
:::

:::WorkflowBlockItem
Alternatively, go to the **Team templates** tab, and click **Unpublish&#x20;**&#x6E;ext to the template's name. 

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/21bqS2kBLYqBD8Rx1orBd-20251006-111153.png)
:::
::::

Once you unpublish the template, it becomes private (visible only to your team). Any public links you shared while it was published will no longer work.

## Share scenario template via a public link

After publishing a template, you can share it with others via a public link.

To share a template:

::::WorkflowBlock
:::WorkflowBlockItem
Click **Share public link** in the upper-right corner.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/NJJnCZoMHGWSkr8tEhgCr-20251006-111220.png)
:::
::::

The link is now copied to your clipboard. You can paste it where needed.

:::hint{type="warning"}
People who get the link cannot edit or copy the template. They can only use it to create a scenario. 
:::

## Request to add scenario template to the public library

You can submit a request to add your published template to our public templates library.

To request approval:

::::WorkflowBlock
:::WorkflowBlockItem
Open your published template.
:::

:::WorkflowBlockItem
Click **Request approval**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/29WjP1WPe75O6SLHqNfNY-20251006-111301.png)
:::

:::WorkflowBlockItem
The template’s status changes to **Approval pending**.
:::

:::WorkflowBlockItem
Make’s administrator reviews your request.&#x20;
:::
::::

If approved, the template will be added to the public templates library and visible in  and on the .com website's [template gallery](https://www.make.com/en/templates).

You can always unpublish the template you've submitted to the public templates library and delete it. If you want to make edits to it, you need to unpublish the template, edit it, and submit it for approval once again.&#x20;

[title] Scenarios & connections
[path] Key concepts/

Learn the basics of  and connections in these articles:

::::LinkArray{contentSource="DOCS" sourceParentDocId="lWu46UFxldHeAMIeHWtu-" childrenDocs="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]" displayMode="CARD" itemsPerRow="2"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/7j1R2jphFd7aXHoYMhiFx_4.png" headerType="IMAGE" docId="SO88FM6pkT0G-adKDDfzZ" displayMode="CARD" docSeoDescription="Learn how to connect third-party services to Make to securely access and control data in your scenarios"}
[Connect an application](docId\:SO88FM6pkT0G-adKDDfzZ)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ZDfWtN_l9_C5xi_01XV7v_4.png" headerType="IMAGE" docId="8rWFO_KROhjLePg4qHx3_" displayMode="CARD" docSeoDescription="Schedule your Make scenarios and set rate limits to control exactly when and how often they run"}
[Schedule a scenario](docId:8rWFO_KROhjLePg4qHx3_)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ZDfWtN_l9_C5xi_01XV7v_4.png" headerType="IMAGE" docId="C8f35kwpiCYG1AZ5VLgEh" displayMode="CARD" docSeoDescription="Clone scenarios across your organization to scale your workflows and save hours of manual setup"}
[Clone a scenario](docId\:C8f35kwpiCYG1AZ5VLgEh)
:::

:::LinkArrayItem{headerType="IMAGE" docId="UFMN2wHgyw8lJPtJUFHtb" displayMode="CARD"}
[Delete a scenario](docId\:UFMN2wHgyw8lJPtJUFHtb)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/O3LeFUT0uRlJKMCD_uCLF_4.png" headerType="IMAGE" docId="pDRFtYsEJPiIzTaB7zJYh" displayMode="CARD" docSeoDescription="Understand when to activate scenarios for scheduled runs or keep them inactive for manual execution"}
[Active and inactive scenarios](docId\:pDRFtYsEJPiIzTaB7zJYh)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/h-pHbIQ7uKC99ePBmTcMX_4.png" headerType="IMAGE" docId="YDlSuPYIbERg8vMK99O2h" displayMode="CARD" docSeoDescription="Learn how scenarios execute, how data flows through modules, and how to interpret processed bundles"}
[Scenario execution flow](docId\:YDlSuPYIbERg8vMK99O2h)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/EIvMMFhz9kRkY2jp6Ni4I_4.png" headerType="IMAGE" docId="9Z2XnH-Lyy62CFAhjFHj5" displayMode="CARD" docSeoDescription="Monitor execution history and user changes, and export logs for debugging and analysis"}
[Scenario history](docId:9Z2XnH-Lyy62CFAhjFHj5)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/UgT6ALkSSWzuiIQg5i822_4.png" headerType="IMAGE" docId="VELX07tfgt8YmaKAB_Uyb" displayMode="CARD" docSeoDescription="Export and import scenario blueprints to back up, reuse, and share your automations"}
[Scenario blueprints](docId\:VELX07tfgt8YmaKAB_Uyb)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/rEdIVEAwFD2jmfpuHUKmQ_4.png" headerType="IMAGE" docId="oT79BIy3yPM4msTeDp1xL" displayMode="CARD" docSeoDescription="Find out how to create scenarios from public or team templates"}
[Scenario templates](docId\:oT79BIy3yPM4msTeDp1xL)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/RMGPgqlOxjawXJEqnnkgq_4.png" headerType="IMAGE" docId="4G_z9ABAtl3i0tKKPv3mI" displayMode="CARD" docSeoDescription="Share your scenarios via links or social media so others can view and copy your workflows"}
[Scenario sharing](docId:4G_z9ABAtl3i0tKKPv3mI)
:::
::::


[title] Edit the structure of a scenario input or output
[path] Explore more/Scenarios/Scenario inputs and outputs/

To edit the structure of the scenario input or output:

:::::WorkflowBlock
:::WorkflowBlockItem
In the Scenario Builder, click the  inputs and outputs icon.
:::

::::WorkflowBlockItem
Click on the item you want to edit, and make the changes.

:::hint{type="warning"}
Changing the  input **name** will cause the  to fail. If you need to change the input name, we recommend deleting the old item and adding a new one with the new name.

If you change the inputs from not required to required, you need to change your scheduling to **On-demand**.
:::
::::

:::WorkflowBlockItem
Click **Save**.
:::
:::::

Once you save your changes, the scenario input or output updates automatically everywhere you use it.

:::hint{type="warning"}
Editing the input or output structure item(s) in an active  might lead to data inconsistencies and  failure.

If you are connecting the  through the **Call a scenario** and **Return output** modules, check the **Relation tree** tab to find related   quickly. [Find out more about the Relation tree tab](docId:9cmtJAPTuG8sQnm3uq-ay).
:::


[title] What's an API?
[path] Get started/Learn the basics/

An API, or Application Programming Interface, is a set of rules and protocols that allows different software applications to communicate with each other. It specifies how requests and data should be structured so that applications are able to interact smoothly.

:::hint{type="info"}
Think of an API like a universal remote control. Just as a remote lets you control different devices without knowing how they work inside, an API lets applications work together without knowing what's happening behind the scenes.

In this analogy:

- The remote control is like the API interface.
- The buttons on the remote are like API endpoints.
- Users, pressing buttons, are like a second application making requests.
- The TV or device responding is like an application fulfilling those requests.&#x20;

Just as you press a specific button to change the channel without knowing how the TV processes that signal, one application can use another application's API to request data or perform actions without understanding its internal workings.
:::

Many SaaS (Software as a Service) applications provide APIs. For example:&#x20;

- ClickUp API provides numerous endpoints for creating tasks, searching tasks, adding comments, attaching files, and more.&#x20;
- Gmail API lets you send emails, mark them as read, or move them to a different folder in your inbox.&#x20;
- Notion API lets you update pages, create databases, retrieve information for database items, and more.&#x20;

An API consists of a list of services known as **API endpoints**. Each endpoint performs a specific action. Make is a solution that **orchestrates calls to any API**, allowing you to define any type of process. It's important to know that an API endpoint requires **input** (to understand what action to perform) and provides **output** (to deliver the result back to the calling application).&#x20;

Just like your remote needs you to press the correct button (input) before the TV can change to the channel you want (output), an API needs specific information before it can return the desired result.

The [ClickUp API documentation](https://clickup.com/api/clickupreference/operation/CreateTask/) gives a clear example of why APIs are essential for Make.

![](https://archbee-image-uploads.s3.amazonaws.com/yjwhINLS3fc-NXg38fV_d-59T2zmd97N0JNSp7No8xy-20250327-191935.png)

In the ClickUp API documentation, you can find:

- List of available endpoints: A comprehensive catalog of endpoints available through ClickUp's API, including options like "Get Tasks," "Create Task," and more. (<font color="#FF009A">A</font>)
- Instructions for the "Create a Task" endpoint: Detailed guidelines on how to use the "Create a Task" endpoint. Required inputs: name of the task, status, and other necessary parameters. Expected output: comprehensive information about the created task. (<font color="#FF009A">B</font>)
- Endpoint access location: Information on where and how to access this specific endpoint. (<font color="#FF009A">C</font>)
- Practical examples of endpoint calls: Real examples demonstrating how to call the "Create a Task" endpoint effectively. (<font color="#FF009A">D</font>)

APIs are a convenient way to help applications exchange information and services. Make leverages these APIs from various SaaS applications, acting as a solution that orchestrates calls to any API. Make already integrates with over 2,000 APIs—meaning 2,000 different applications—and this number is constantly increasing.&#x20;

[title] Webhooks
[path] Key concepts/Apps & modules/

Webhooks allow you to send data to  over HTTPS. Webhooks create a URL that you can call from an external app or service, or from another . Use webhooks to trigger the execution of .

Webhooks usually act as instant triggers. Contrary to scheduled triggers, which periodically ask a given service for new data to be processed, webhooks execute the  immediately after the webhook URL receives a request.

 supports the following types of webhooks:

- App-specific webhooks listen for data coming out of a specific app, also called instant triggers.
- Custom webhooks allow you to create a URL to which you can send any data.

## Creating app-specific webhooks

Many apps provide webhooks to execute  whenever a certain change occurs in the app. These are called **instant triggers**. Instant triggers are marked with the label **INSTANT** in the list of an app's modules:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-sMjOTx6FEUYqBbk_DoqQR-20250715-110630.png" size="50" width="600" height="150" position="center" darkWidth="600" darkHeight="150" showCaption="false"}

If an app does not provide webhooks, you can use **polling triggers** to periodically poll the service for new data.

## Creating custom webhooks

To create a custom webhook, you must use Make's Webhooks app. You can find information regarding how to set up the Custom webhooks module in the [Webhooks](docId\:JZfLcAPLoZSu5BcHu5qrk) app documentation.

## Scheduling webhooks processing

By default, when  receives data on a webhook, your  executes immediately. If you don't want to run your  immediately after a webhook receives data, you can schedule your  to process all webhook requests periodically.

::::WorkflowBlock
:::WorkflowBlockItem
Edit the  which is triggered by your webhook.
:::

:::WorkflowBlockItem
Edit the  schedule settings or edit the schedule settings of the webhook module.
:::

:::WorkflowBlockItem
Set up your desired schedule.
:::
::::

When a scheduled webhook receives data,  stores the data in the webhook's queue. The whole queue is then processed every time your schedule criteria are met.

## How  processes webhooks

When a webhook receives a request, the system stores the request in the webhook's queue. Each webhook has its own queue. Go to the **Webhooks** section in the left menu to view all webhooks and their queues.

### Parallel vs. Process data in order

If you are using instant webhooks,  starts processing each request immediately as the request is received. By default,  **with instant webhooks are processed in parallel**. Even if a previous  execution is still being processed,  does not wait for its processing to complete.

You can inspect all running executions in the  detail. Click an item in the list of running executions to view the graphical representation of that particular execution. The execution that is currently displayed is marked with an eye icon.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/nf8Uv0eH5CSZ07_H5zF2_-20251001-141448.png)

**To turn off parallel processing**, open the settings of your  and select **Process data in order**. With Process data in order enabled,  waits until the previous execution is complete before starting the next one. Also, use Process data in order when you need to process your webhook requests in the order that they came in.

### Processing scheduled webhooks

If you are using scheduled webhooks, requests accumulate in the queue until the schedule criteria are met. When schedule criteria are met,  processes the queued requests based on the *Maximum number of results* that you set for the webhook.

For example, if your scenario is scheduled to run every hour and your *Maximum number of results* is set to the default value of 2,  processes two items from the queue every hour. If your webhook queue is filling up with requests, increase the *Maximum number of results* or adjust the schedule to execute the scenario more often.

:::hint{type="info"}
**Instant trigger** modules have the *Maximum number of cycles* parameter instead of the *Maximum number of results*.

Set the *Maximum number of cycles* in the **instant trigger** modules to get the same data processing behavior as is with webhooks and the *Maximum number of results* parameter.
:::

### Webhook response module

The Webhook response module is typically used to send a response back to the service that triggered the webhook, confirming receipt or providing additional information. **Without** this module in your , the default responses are:

|                               | **HTTP status code** | **Body**          |
| ----------------------------- | -------------------- | ----------------- |
| Webhook accepted in the queue | 200                  | Accepted          |
| Webhook queue full            | 400                  | Queue is full     |
| Rate limit check failed       | 429                  | Too many requests |

Learn more about setting up a rate limit [here](https://help.make.com/schedule-a-scenario#lcstO).

You can further customize this response with the [Webhook response module](https://apps.make.com/gateway#VI6Pr).

:::hint{type="warning"}
If you place the Webhook response module in the middle of a  and an error occurs in a subsequent module, the  will not be deactivated. This can result in increased consumption of credits as you will not receive notification of the error.

If you place the Webhook response module last, you will be notified if any error occurs at any point in the .
:::

### Webhook queue details

When data arrives to a webhook and the call is not processed instantly,  stores it in the webhook processing queue.

The limit for the number of webhook queue items depends on your usage allowance, which is a part of your subscription. For every 10,000 credits licensed per month, you can have up to 667 items in each webhook's queue. The maximum number is 10,000 items in the webhook's queue.

When the webhook queue is full,  rejects all incoming webhook data which is over the limit.

Incoming webhook data is always stored in the queue regardless of the data is confidential option settings. As soon as the data is processed in a , it is permanently deleted.

### View webhook queue

To view the content of the queue, follow the steps below.

:::::WorkflowBlock
::::WorkflowBlockItem
In the left sidebar, click **Webhooks.**

:::hint{type="info"}
On smaller screens or at higher zoom levels, click the **three** **dots** and select **Webhooks**.
:::
::::

:::WorkflowBlockItem
Select the webhook for which you want to view the queue.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/nl1ogrzVG0KjC3lIxZP7L-20251001-123214.png)
:::

:::WorkflowBlockItem
You will see the details of that specific webhook:

- Webhook status
- Status of your &#x20;
-  ID and  URL

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/LRyoYv_AJcE5J4hfH-qex-20251001-124447.png)

Some apps also include a Webhook URL and webhook UDID (unique webhook identifier).
:::

:::WorkflowBlockItem
To see the webhook's queue, switch to the **Queue&#x20;**&#x74;ab.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/avW3lTwIqhRDBd4JEGFeL-20251001-125218.png)
:::

:::WorkflowBlockItem
Click **Detail** next to the webhook you want to inspect.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/gt_VUnTr7z7aWAmgVzi-b-20251001-125253.png)

You will see the parsed items.
:::
:::::

### Expiration of inactive webhooks

 automatically deactivates webhooks that are not connected to any  for more than 5 days (120 hours). The hook return `410 Gone` status code.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-tReEgTE6hsNRs41aFjkiz-20250210-160531.png" size="40" width="238" height="148" position="center" darkWidth="238" darkHeight="148" showCaption="false"}

### Delete webhook item from a queue

To delete a webhook item from a queue:

::::WorkflowBlock
:::WorkflowBlockItem
Go to **Webhooks&#x20;**&#x69;n the left sidebar.&#x20;
:::

:::WorkflowBlockItem
Select the webhook to view its queue.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/nl1ogrzVG0KjC3lIxZP7L-20251001-123214.png)
:::

:::WorkflowBlockItem
Switch to the **Queue&#x20;**&#x74;ab.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/avW3lTwIqhRDBd4JEGFeL-20251001-125218.png)
:::

:::WorkflowBlockItem
Tick the boxes on the left of the entries you want to delete, and click **Delete** **selected**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/8FjbKwT2_KjPMjNFcnk6d-20251001-130747.png)

To delete all, tick the first box on the left and then **Delete all**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/gPCCP6YaOfFEOFJMgupnv-20251001-130407.png)

Click **Delete** to confirm.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/pZWvfODlE090Ff56OuYFo-20251001-130615.png" size="50" width="882" height="300" position="center" darkWidth="882" darkHeight="300" showCaption="false"}
:::
::::

You have deleted the incoming webhook item(s) from the queue.

### Webhook logs

 stores webhook logs for 3 days. For the organizations on the Enterprise plan,  keeps the webhook logs for 30 days.  deletes logs older than other retention limit.

To view webhook logs, follow the steps below.

:::::WorkflowBlock
::::WorkflowBlockItem
In the left sidebar, click **Webhooks.**

:::hint{type="info"}
On smaller screens or at higher zoom levels, click the **three** **dots** and select **Webhooks**.
:::
::::

:::WorkflowBlockItem
Select the webhook for which you want to view the logs.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/nl1ogrzVG0KjC3lIxZP7L-20251001-123214.png)
:::

:::WorkflowBlockItem
Switch to the **Logs&#x20;**&#x74;ab.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/8iPtia0Lh-OIpt1-FSOaW-20251001-131240.png)

You can see:

- The status of the webhook call (success, warning, error, or all)

To filter the webhook logs by status, click the filter icon.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/rTDEtCrnRBKR9f0wW85xG-20251001-131727.png" size="60" width="1396" height="712" position="center" darkWidth="1396" darkHeight="712" showCaption="false"}

- Date and time of the incoming webhook

To sort the webhook log by date and time, click the arrow icon. To filter the webhook logs by date of creation, click the filter icon on the right and enter a date.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/PL8X94efBsjvhfQV3wyyj-uplmAax3Mh9WpoKvH3bGT-20250716-082942.png" size="60" width="1030" height="388" position="center" darkWidth="1030" darkHeight="388" showCaption="false" indent="2"}

- Webhook execution log size
:::

:::WorkflowBlockItem
To see the details of the specific webhook log, click **Detail**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/eN1jQvzeL-EomI6AFmn-N-20251001-132147.png)

You will see:

- Webhook request (timestamp, URL, method, headers, query, body)
- Webhook response (status, headers, body)
- Parsed items
- Parsed items combine the query parameters and body of the webhook request in one bundle.
:::
:::::

## Updating webhook settings

You can update a webhook's settings when you use the Custom Webhooks module only. To learn more, see the [Webhooks](docId\:JZfLcAPLoZSu5BcHu5qrk) app documentation.

## Error Handling

When there is an error in your  with a webhook, the :

- stops immediately - when the scenario is set to run *Immediately*.
- stops after 3 unsuccessful attempts (3 errors) - when the scenario is set to run as **scheduled**.

## Webhook rate limit

 can process up to 300 incoming webhook requests per 10 second interval.

If you send more, the system returns an error with status code 429.

[title] On-premise agent
[path] Explore more/Connections/

:::hint{type="info"}
This feature is available to Enterprise customers.
:::

With the On-premise agent (On-prem agent) installed on your system, your  can access applications and databases on your local network without changing the settings of your firewall.

![On-prem agent schema](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/w41YoDn4iUd-XjVJfge1y_uuid-12fede23-a807-af2c-3968-41ba3ea97882.png)

One On-prem agent can connect to many applications that are located in the same network. Currently, we provide an [HTTP Agent](https://apps.make.com/http-agent) app that allows for a connection with other custom systems that provide an API or a web service.

![Using an HTTP agent](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/21uggu3neaOf_DHKyAD5K_uuid-017d61ea-47e4-8a99-44c6-25c9ec267dde.png)



![More detailed on-prem schema](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/PiAIDjTYpQ2pb7-PUvvqq_uuid-6df3d17f-d7fd-c6c0-4314-08b788e6b1a4.png)

To start using an On-prem agent in your , you need to:

1. [Create](docId:2D2-HUt5EUJNKigSzp0vM) a new On-prem agent in the **On-prem agents** section of the **Organization** dashboard.
2. [Download](docId:2D2-HUt5EUJNKigSzp0vM) the On-prem agent and [install](docId:2D2-HUt5EUJNKigSzp0vM) it on your device.
3. [Connect a system](docId:2D2-HUt5EUJNKigSzp0vM) (an application) to the installed On-prem agent.
4. [Create a connection](docId:2D2-HUt5EUJNKigSzp0vM) between  and the connected system when adding the application module in your .

## Add an On-prem agent

The installation process consists of three steps:

- Create an On-prem agent in the **On-prem Agents** section, in .
- Download the On-prem agent to your device.
- Install the On-prem agent on your device.

:::hint{type="info"}
Only users with the **Owner**, **Admin**, and **App dev** organization roles can perform all three steps.
:::

### Create an On-prem agent

To create an On-premise agent:

:::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.
:::

:::WorkflowBlockItem
Switch to the **On-prem Agents** tab.
:::

:::WorkflowBlockItem
Click **+ Create on-prem agent**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Fp2m4gjORuiQVisEBI9N6-20251015-094353.png)
:::

:::WorkflowBlockItem
In the **On-prem agent name** field, enter the agent name, and click **Create agent**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/NEZg6CtaynUDJtnus2aWb-20251015-094542.png" size="50" width="884" height="454" position="center" darkWidth="884" darkHeight="454" showCaption="false"}
:::

:::WorkflowBlockItem
A dialog box with credentials appears.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/2cUxTR6OysA07nhupXJHU-20251015-094959.png" size="40" width="890" height="1078" position="center" darkWidth="890" darkHeight="1078" showCaption="false"}
:::

::::WorkflowBlockItem
Save the **Client ID**, the **Secret**, and the **Base URL** in a safe place. You will need these credentials in the installation stage later.&#x20;

:::hint{type="warning"}
Make sure to save the credentials in a secure location. This is the only time when  shows the On-prem agent credentials.
:::
::::

:::WorkflowBlockItem
Check the **I saved my credentials&#x20;**&#x62;ox.
:::

:::WorkflowBlockItem
Click **Download installer**.
:::
:::::

 redirects you to the download page, where you can choose your device OS and [download the On-prem agent installer](docId:2D2-HUt5EUJNKigSzp0vM).&#x20;

### Download the On-prem agent

To run the On-prem agent on your device, you need to download its installation package:

::::WorkflowBlock
:::WorkflowBlockItem
Once you click **Download installer&#x20;**&#x61;s described in step 8 in [Create an On-prem agent](docId:2D2-HUt5EUJNKigSzp0vM) section, you'll be redirected to the installation page. Select your device's operating system and click **Download**.

For macOS, download the file for Linux.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/-k6_9qgRdrgAx_jWOmb2v-20251015-095319.png" size="40" width="1794" height="930" position="center" darkWidth="1794" darkHeight="930" showCaption="false"}

If the auto-download doesn't start automatically, use the link instead.
:::

:::WorkflowBlockItem
Define where you want to save the On-prem agent installation package on your device.
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

### Install the On-prem agent

Installation is the last step you need to start using the On-prem agent in Make. Here you will find steps for installing the On-prem agent on Windows, macOS, and Linux.

:::::ExpandableHeading
### Installation for Windows

:::hint{type="info"}
You need to have Java 11 or above already installed on your device:
:::

::::WorkflowBlock
:::WorkflowBlockItem
Go to the folder where you saved the On-prem agent when downloading, right-click the file, and select **Run as Administrator**. An installation window appears. Click **Install**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-a76EsKwgw5ZN8o0_UwlUp-20250218-105639.png" size="50" width="946" height="587" position="flex-start" alt="Make Agent Installer" showCaption="false"}

You might see a warning. Click **Yes** to continue the installation process.
:::

:::WorkflowBlockItem
Insert the credentials you saved when [creating the On-prem agent](docId:2D2-HUt5EUJNKigSzp0vM) in Make and click **Next**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-kTmrH7Y6SwggpXUws4Pvk-20250218-105901.png" size="50" width="973" height="762" position="flex-start" alt="Insert credentials" showCaption="false"}
:::

:::WorkflowBlockItem
Select the path for installation and click **Next**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-zAyXG0US3MkoDf1a8k2Wi-20250218-110031.png" size="50" width="972" height="748" position="flex-start" alt="Path for installation" showCaption="false"}
:::

:::WorkflowBlockItem
Make sure your internet connection is stable. Click **Install**.
:::

:::WorkflowBlockItem
Complete the installation by clicking **Finish**.
:::

:::WorkflowBlockItem
A confirmation window appears. Click **Close**.
:::
::::

The On-prem agent status changes to **Active** in Make after refreshing the On-prem agents page. You can [connect a system](docId:2D2-HUt5EUJNKigSzp0vM) to it.

![Active agent](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Ud9PGgEOhmfdGVNj3WAeq_uuid-f4e1e2b1-900d-ab7d-6f88-57bb46c2ab43.png)

You can also check your system to see if the installation was successful:

::::WorkflowBlock
:::WorkflowBlockItem
Open the **Services** app on your computer.
:::

:::WorkflowBlockItem
In the list of services, find **Make Agent**. If the status is **Running**, you can start using the On-prem agent in Make. If there is no status, check the [troubleshooting guide](docId:2D2-HUt5EUJNKigSzp0vM).
:::
::::

:::hint{type="info"}
The installer works only for the agent you've downloaded. If you need to run more than one agent on your server, you need to download the installer once again and repeat the installation procedure.
:::
:::::

:::::ExpandableHeading
### Installation for macOS

:::hint{type="info"}
You need to have Java 11 or above already installed on your device:
:::

::::WorkflowBlock
:::WorkflowBlockItem
Go to the folder where you saved the .zip archive.&#x20;
:::

:::WorkflowBlockItem
Unzip the archive.
:::

:::WorkflowBlockItem
Open the `application-local.yml` file and fill in the following fields with the data you saved when [adding an On-prem agent](docId:2D2-HUt5EUJNKigSzp0vM) in .

- `make: authentication: client-id`
- `make: authentication: client-secret`
- `make: authentication: base-url`
:::

:::WorkflowBlockItem
Save the changes in the file.
:::

:::WorkflowBlockItem
Open the Terminal.
:::

:::WorkflowBlockItem
Open the folder that you unzipped from the archive in the Terminal. It is called **Linux-Mac**.
:::

:::WorkflowBlockItem
Launch the file using this command: `java -jar agent.jar`

![Mac installation command](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-_bGYBCSSG_WSv1m6x5aVt-20250221-092551.png)
:::
::::

The system launches the On-prem agent. If you see the `Successfully connected Agent with ID...` and `Started to poll for tasks` strings, it means the agent is installed successfully. You can connect a system to it.
:::::

:::::ExpandableHeading
### Installation for Linux

:::hint{type="info"}
You need to have Java 11 or above already installed on your device:
:::

::::WorkflowBlock
:::WorkflowBlockItem
Go to the folder where you saved the .zip archive.&#x20;
:::

:::WorkflowBlockItem
Unzip the archive.
:::

:::WorkflowBlockItem
Copy the `application-example.yml` file, and rename the copied file to `application-local.yml`.
:::

:::WorkflowBlockItem
Open the `application-local.yml` file and fill in the following fields with the data you saved when [adding an On-prem agent](docId:2D2-HUt5EUJNKigSzp0vM) in .

- `make: authentication: client-id`
- `make: authentication: client-secret`
- `make: authentication: base-url`
:::

:::WorkflowBlockItem
Save the changes in the file.
:::

:::WorkflowBlockItem
Open the Terminal.
:::

:::WorkflowBlockItem
Open the folder that you unzipped from the archive in the Terminal. It is called **Linux-Mac**.
:::

:::WorkflowBlockItem
Launch the file using this command: `java -jar agent.jar`

![Mac installation command](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-_bGYBCSSG_WSv1m6x5aVt-20250221-092551.png)
:::
::::

The system launches the On-prem agent. If you see the `Successfully connected Agent with ID...` and `Started to poll for tasks` strings, it means the agent is installed successfully. You can connect a system to it.
:::::

## Connect a system

Once you have installed the On-prem agent, you can connect it to an application (a connected system). You can connect several systems to one On-prem agent.

:::hint{type="info"}
Only users with the **Owner**, **Admin**, and **App dev** organization roles can connect a system.
:::

### Connect the HTTP system

:::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Organization**.
:::

:::WorkflowBlockItem
Click the **On-prem agents** tab.
:::

:::WorkflowBlockItem
Click **Connect system**.
:::

:::WorkflowBlockItem
In the **Name** field, insert a connection name. This name appears when adding an application module to a Make.
:::

:::WorkflowBlockItem
In the **Choose app to connect** dropdown list, select the [HTTP Agent](https://apps.make.com/http-agent) app.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/GCq_Pq73GOybKwqG1PPGS-20260128-141145.png" size="50" width="440" height="518" position="center" darkWidth="440" darkHeight="518" showCaption="false"}
:::

::::WorkflowBlockItem
Define the base URL to the application API.

:::hint{type="info"}
The URL contains a host, a port, and a definition of API for a particular app. If the app runs on the same device where the On-prem agent is installed, the host is `localhost`. If the app runs on another device, the host is the device IP address. The port and the API definition vary based on the app.

In this example URL `https://localhost:3000/api`

- the host is `localhost`
- the port is `3000`
- the definition of API is `/api`
:::


::::

:::WorkflowBlockItem
In the **URL** field, insert the URL to the application API.
:::

:::WorkflowBlockItem
Click **Save**.
:::
:::::

In the connected systems list, you will see a new connection that works with this specific On-prem agent. Now you can start building a .

:::hint{type="info"}
You might be asked to renew the access to the connected system after a certain period of time. If so, click **Revoke** in the **Connected systems** section.
:::

## Create a connection in the scenario

To create a [connection](docId\:SO88FM6pkT0G-adKDDfzZ), go to the Scenario Builder.

::::WorkflowBlock
:::WorkflowBlockItem
Click **Create a new scenario**.
:::

:::WorkflowBlockItem
Select the **HTTP Agent** from the dropdown list.
:::

:::WorkflowBlockItem
Select a module and connect it to .
:::

:::WorkflowBlockItem
Finish configuring the module settings.
:::
::::

After adding the module, you can continue building your . The module uses your selected On-prem agent.

:::hint{type="info"}
Currently, Make supports only **HTTP Agent** application for the On-prem agent usage.
:::

## On-prem agent status

The following table explains On-prem agent statuses.

| **Status**         | **Description**                                                                                                                                             | **Recommended next steps**                                                                                                                                         |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Active**         | The On-prem agent is installed on your device and works under normal conditions. You can connect a system to it and use it in .                             |                                                                                                                                                                    |
| **Not responding** | The On-prem agent is disconnected.  checks its activity every four minutes. If the On-prem agent doesn't respond, it means the Internet connection is lost. | Check [On-prem agent troubleshooting](#).<br />When in Not responding status, associated  still run, but the module using the On-prem agent shows a **500 error.** |
| **Registered**     | The On-prem agent is created and appears in the **On-prem agents** section.                                                                                 | - Make sure to complete the installation of the On-prem agent.
- Check if your firewall or anti-virus software is blocking the On-prem agent.                      |
| **Stopped**        | The On-prem agent was stopped manually.                                                                                                                     | Make your On-prem agent active again if needed.                                                                                                                    |

## Troubleshooting

Here you can find solutions for the most common issues when working with the On-prem agent in .

:::ExpandableHeading
### Windows installer broke in the middle of the installation

If the installation process breaks, and the progress bar remains the same, do the following:

1. Check if you have these drives installed and updated:
   a. Visual Studio 2019
   b. AdoptOpenJDK 11
   c. Java 11 and above
2. Restart the installation process.
:::

:::ExpandableHeading
### Error regarding wrong Java version when installing the On-prem agent for Windows

The following error appears if you have the wrong version of Java installed on your device:

![Java error](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/wVIsh1dv4ybC5Re9RpA7s_uuid-7c3ca7ef-0ed2-c483-0d07-331deffdd518.png)

1. Open the Command line.
2. Use the `echo %JAVA_HOME%` command to make sure Java is in the Windows PATH variable.
3. Use the `java -version` command to make sure Java 11 or above is installed.
:::

:::ExpandableHeading
### No permissions to run the Windows installer

Right-click the installer and click **Run as Administrator**.
:::

:::ExpandableHeading
### On-prem agent in Not responding status in Make

Check the following:

- The device where the On-prem agent is installed is operational.
- The device is connected to the Internet.
- The Internet connection is stable.
- Your firewall and anti-virus software don't block the On-prem agent.
- Restart the On-prem agent on your device (Windows only):
:::

:::ExpandableHeading
### On-prem agent not running on a Windows machine

If you open the **Services** app on Windows and see that the **Make Agent** app doesn't have the **Running** status, you can do the following:

1. Go to the folder where you saved the On-prem agent on your machine.
2. Open the **application-local** file and check your credentials: Client ID, Secret, and Base URL.
3. Open the **logs** folder and locate the problem.
:::


[title] Step 6. Add an aggregator
[path] Get started/Expand your scenario/

Imagine your marketing team adds multiple US prospects in a single day, your Sales Manager could quickly become overwhelmed with a flood of individual mobile notifications. By adding an aggregator to your scenario, you can combine all those prospects into a single notification - making the information more manageable while still ensuring timely alerts.

To add an aggregator:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Right-click the dots between the filter and the **Apple iOS** module and select **Add a module**. This will open a window with the list of apps and modules that you can add to your scenario.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/p8x13aN6r-ktd6I2WtuxS-20251104-093929.png)
:::

:::WorkflowBlockItem
Search for **Tools** in the search bar and then choose **Text** **Aggregator** from the available modules.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/gftNCjUWIGWPbE1SrvNj1-20251104-093952.png)

Alternatively, you can enter "Text aggregator" in the search bar to find it faster.
:::

:::WorkflowBlockItem
In the **Tools** settings, select **Google Sheets - Watch New Rows (1)&#x20;**&#x66;rom the dropdown list under the **Source Module&#x20;**&#x66;ield.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/L5D7m4yS9sAJ8VOhESGnQ-20251104-094032.png)
:::

:::WorkflowBlockItem
Switch on the **Advanced settings&#x20;**&#x74;oggle at the bottom of the window to open additional options.&#x20;
:::

:::WorkflowBlockItem
In the **Row separator&#x20;**&#x66;ield, select **New row** from the dropdown.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/GoRRaM61Ra8yc1v5lb-gf-20251104-094053.png)
:::

:::WorkflowBlockItem
In the **Text&#x20;**&#x66;ield, drag and drop or click `First Name` and `Last Name` values from the Google Sheets module. Separate the values with a space to get two distinct values in the output.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/vpKxsd2XvagI0BFiRhcSW-20251104-094114.png)
:::

:::WorkflowBlockItem
Click **Save** to save the aggregator settings.&#x20;
:::

:::WorkflowBlockItem
Next, you need to update the **Apple iOS > Send a push notification&#x20;**&#x6D;odule to use the aggregated text. Click the Apple iOS module to open its settings.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/g0VIRk7JMl7zcdbnXfHri-20251104-094250.png)
:::

:::WorkflowBlockItem
In the **Body&#x20;**&#x66;ield, remove any existing mapped values, then drag and drop or click the `text` value from the **Text** **aggregator&#x20;**&#x6D;odule.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/hABsbv6ualJ_U2Ivouln0-20251104-094319.png)
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x74;o apply the changes and make sure to save your entire scenario by clicking the **Save&#x20;**&#x69;con in the Scenario Builder toolbar.
:::
::::

Your scenario now has an aggregator that combines new US prospects that arrive into a single notification. In the next step, you'll test this entire scenario.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/z-ZsDTvDjEcAcSkQBc3J2-20251104-094825.png)

:::hint{type="info"}
**Understanding aggregators**

Aggregators combine multiple bundles of data into a single bundle. Without an aggregator, each prospect would trigger a separate notification. With an aggregator:

- Multiple prospects are combined into one notification
- The Sales Manager receives one comprehensive alert instead of many
- The scenario consumes fewer credits

Make offers different types of aggregators:

- **Text aggregator**: Combines text with separators (the one we used in this scenario)
- **Numeric aggregator**: Performs calculations (sum, average, count)
- **Array aggregator**: Groups data into structured arrays

In our scenario, the text aggregator helps prevent notification overload by sending one organized list of all US prospects.
:::


[title] System variables
[path] Explore more/Scenarios/Variables/

::embed[]{url="https://youtu.be/chrzqN1qr6g"}

System variables are provided by &#xNAN;*.&#x20;*&#x59;ou can’t modify or delete system variables. They can be used in modules with input fields, filters within the  editor, and in templates.&#x20;

## Use system variables when you need:﻿

- Information about the current  execution (ID, start time, operations consumed)
- Organization/team details (name, operations left, data left)
- Error handling and debugging information
- Automated notifications based on usage limits

You can access the scenario variables under the **Custom and system variables** tab when mapping a value in a module.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-cC5E65SBo3mGjQImD-kv0-20250528-084908.png" size="60" width="384" height="348" position="flex-start" alt="System variables" showCaption="false"}

System variables include information about:

- the  itself (Scenario ID, Scenario name, Scenario URL)
- the specific  execution (Execution ID, Operations consumed, Data consumed, Execution start date/time)
- the team the  is in (Team ID, Team name)
- the organization the  is in (Organization ID, Organization name, Operations left, Data left, Zone domain)

System variables are useful for error handling and  activity tracking. 

For example, if there is an error in your , you can use the  ID or organization name variables to pinpoint the exact  execution and organization in which the error occurred.

Here are some other situations for which you might use system variables:

- Create a slack message, email, or support ticket that contains a link to the  execution that created the message.
- Set email notifications to notify you once the operations left value reaches a certain number.

You can also reuse system variables and map them to any module in the module's input fields.

:::::ExpandableHeading
## Example: Get notified before you reach your operations limit

In this example, we imagine that at some point in your  you want to notify a team member of the number of operations left in your organization. We use a router to send an email when there are 1000-5000 operations left and when there are under 1000 operations left.

![Notify a team member based on the number of operations left](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-NKjDNe8Ghi1uZTF7Db_2j-20250616-111825.png)

::::WorkflowBlock
:::WorkflowBlockItem
In your , add a router.
:::

:::WorkflowBlockItem
In the first route, click the wrench icon to set up a filter.

**Label**: 1000-5000 operations left

**Condition**: Map the condition to the `Operations left` system variable.

Change the operator to **Numeric operators: Greater than** and enter `1000` in the field.

Click **Add AND rule**.

**Condition**: Map the second condition to the **Operations left** system variable.

Change the operator to **Numeric operators: Less than or equal to** and enter `5000` in the field.

Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-Ggk7IETdsl3dhuMow3dAD-20250616-105935.png" size="82" width="800" height="676" position="flex-start" alt="System variable first filter" showCaption="false"}
:::

:::WorkflowBlockItem
After this filter in the first route, add an **Email > Send an Email to a Team Member** module and **Create a connection**.

In the **To** field, select the member of your team you want to send an email to.

In the **Subject** field, enter a relevant subject.

In the **Content** field, enter the text of your email, mapping the Operations left variable. You can use HTML tags.

Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-3Qhn8vbDa1hNpVedStu2O-20250616-110710.png" size="80" width="798" height="532" position="flex-start" alt="Email 1000 - 5000 operations left" showCaption="false"}
:::

:::WorkflowBlockItem
In the second route, click the wrench icon to set up a filter.

**Label**: 1000 or fewer operations left

**Condition**: map the condition to the `Operations left` system variable.

Change the operator to **Numeric operators: Less than or equal to** and enter `1000` in the field.

Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-x5LF_WEiV_O66uy0gLwfa-20250616-111232.png" size="80" width="800" height="515" position="flex-start" alt="System variable first filter" showCaption="false"}
:::

:::WorkflowBlockItem
After this filter in the second route, add an **Email > Send an Email to a Team Member** module.

In the **To** field, select the member of your team you want to send an email to.

In the **Subject** field, enter a relevant subject.

In the **Content** field, enter the text of your email, mapping the `Operations left` variable. You can use HTML tags.

Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-g1RtEzPo-LVdNCF91iAgO-20250616-111530.png" size="82" width="794" height="534" position="flex-start" alt="Email 1000 - 5000 operations left" showCaption="false"}
:::
::::

As the number of operations left drops to the filtered amounts, your team member receives email notifications.
:::::


[title] Operations
[path] Key concepts/Credits & operations/

When you use features in Make, your activities result in operations. An operation is a module run to process or check data.&#x20;

In this guide to operations, learn what they are, how they work, and where to view them in  so you can debug a  or understand your [credit usage](docId\:hh-nrTakEqakBmg63UUiN).&#x20;

## What are operations?

An operation is a single module run to process data or check for new data.&#x20;

When you run a scenario, each module runs one or more times, resulting in 1 or more operations. A module's number of operations depends on the number of bundles it processes. For now, think of a bundle as a unit of data, like an email, contact, or file.&#x20;

**Examples**

- The **Gmail&#x20;**> **Send an Email&#x20;**&#x6D;odule sends 5 emails = 5 operations (one per email)
- The **Google Drive&#x20;**> **Upload File&#x20;**&#x6D;odule uploads 3 files = 3 operations (one per file)

The exception to this rule is [trigger modules](docId\:BkdEyuBelio6YvvCosRxJ), which only run once to check for or retrieve data, regardless of the number of bundles returned:

- The **Google Sheet&#x20;**> **Watch New Rows&#x20;**&#x6D;odule checks for new rows in a Google spreadsheet = 1 operation (one per check)

When you run a scenario, the checkmark icon (the first number) in the white bubbles above modules shows each module's operation count. The coin icon (the second number) shows the number of [credits](docId\:hh-nrTakEqakBmg63UUiN) consumed by those operations.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/Q31995ot4OZzZRNwsMBrJ-gFkNJUCJ7vyF-7v4dxHQV-20250724-113006.png" size="30" width="512" height="555" position="center" darkWidth="512" darkHeight="555" showCaption="false"}

:::hint{type="info"}
By default, the white bubble only shows operations. You can toggle on credits next to the scenario name.&#x20;
:::

## What are bundles?

When you click the white bubble above a module and expand an operation, you can view the bundles that the module processed.&#x20;

Bundles are containers of related data items, and data items are individual pieces of data. For example, when a module runs to add new contacts to a table, each contact is a bundle containing parameters such as name, last name, and email.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/Q31995ot4OZzZRNwsMBrJ-eEgAfsQC3w9e3ruh_vaJM-20250724-130544.png" size="40" width="704" height="706" position="center" darkWidth="704" darkHeight="706" showCaption="false"}

::embed[]{url="https://www.youtube.com/watch?v=AVkENE-gHFs"}

### Input and output bundles

An operation contains two types of bundles: input bundles and output bundles. An input bundle is the data a module receives, and an output bundle is the module's response data.&#x20;

In a scenario, the trigger module first retrieves bundles from an external source. The next module receives these bundles as input bundles. This module processes these bundles according to its function in the scenario, resulting in output bundles. This process repeats throughout the scenario.&#x20;

### How bundles relate to operations

An operation is a module run to process or check data, and a bundle is the processed data. Modules process each bundle separately, meaning each bundle triggers its own module run.&#x20;

For example, adding 5 contacts to a sheet requires 5 runs, resulting in 5 operations.&#x20;

Since each bundle requires a module run, bundles in earlier modules have a multiplying effect on the operations in the rest of the scenario:

1. A trigger module runs once to check for new data -> 1 operation
2. If the trigger module returns multiple bundles, the next modules run once for each bundle -> That many operations

:::ExpandableHeading
**Example**

A scenario watches for new responses to a Google Form, creates a document for each response, downloads it, and emails the document to each respondent. In the last scenario run, the trigger module, **Google Forms&#x20;**> **Watch Responses**, returned 10 new bundles (responses):

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/Q31995ot4OZzZRNwsMBrJ-kUOlraDfaxnJtbDnQDW08-20250812-140619.png" size="88" width="1695" height="516" position="center" darkWidth="1695" darkHeight="516" showCaption="false"}

The total operations used in this run:

- Trigger: 1 operation
- Other modules: 10 operations each (10 bundles per run)&#x20;

Total: 31 operations (1+30) for each scenario run
:::

:::hint{type="info"}
If you click **Stop** while a scenario is running, the module currently running must finish processing all of its bundles before the scenario stops. You can't stop the module before it processes all of the bundles.

**Example**
Your scenario has five modules. As the third module processes, you click **Stop**. Once third module finishes processing all the bundles, the scenario stops running. The fourth and fifth modules do not run.&#x20;
:::

## Where to view operations

Looking at your operations in detail is useful for debugging, understanding your credit usage, and monitoring your activities in Make.&#x20;

To view operations in a scenario:

- Click the white bubble above any module after running a scenario.&#x20;
- Expand individual operations to see their bundles processed.
- Expand bundles to see their data items.&#x20;

:::ExpandableHeading
**Example**

Your scenario starts with a **Google Sheets&#x20;**> **Watch New Rows** module that watches a spreadsheet for new contacts.&#x20;

After running the module, the white bubble shows one operation. When you expand the operation, you see 10 bundles, one for each contact returned. &#x20;

After expanding a bundle, you can see a contact's first and last name, email, city, and other details.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/Q31995ot4OZzZRNwsMBrJ-o9HAPOL6FAxd2Td9jdsj0-20250721-122143.png" size="60" width="801" height="693" position="center" showCaption="false"}

The next module, **Gmail&#x20;**>**&#x20;Send an Email**, sends 1 email to your company's sales manager for each new contact, including contact details. The module's white bubble shows 10 operations—one for each email sent.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/Q31995ot4OZzZRNwsMBrJ-roA7dxdjtTz-DVz-3__xR-20250721-125941.png" size="60" width="821" height="379" position="center" showCaption="false"}

You return to this scenario run to look at its operations in detail. After finding and clicking the scenario in your scenario list, you navigate to its **History&#x20;**&#x74;ab. You locate the scenario run with 11 operations and click **Details**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/Q31995ot4OZzZRNwsMBrJ-aixyWzn-kYU-SFufKFLY--20250725-111932.png" size="94" width="1787" height="537" position="center" showCaption="false"}

In **Details**, you can view a simple and advanced history log of the scenario run. You click on th&#x65;**&#x20;Gmail&#x20;**>**&#x20;Send an email&#x20;**&#x6D;odule's white bubble to learn more about its 10 operations. You can see that each operation is an email for a contact.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/Q31995ot4OZzZRNwsMBrJ-5CW8MytVvyH0LH0qtWPii-20250725-112837.png" size="60" width="1100" height="971" position="center" showCaption="false"}

After reviewing this scenario, you decide to optimize it so that it sends a single email with all new contacts in the body, instead of sending 10 separate emails (one for each new contact). To do this, you add a **Text aggregator** to combine all new contacts. This adjustment reduces total operations for this run from 11 to 3.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/Q31995ot4OZzZRNwsMBrJ-iiNUkK1fJSBkGKKiBCe_Q-20250825-093838.png" size="60" width="985" height="355" position="center" showCaption="false"}
:::


[title] Step 7. Add another module
[path] Get started/Create your first scenario/

Now that your Google Sheets trigger is working correctly, you need to add a second module to send notifications and connect it to your Slack workspace.

To add another module to your scenario:&#x20;

:::::WorkflowBlock
::::WorkflowBlockItem
Click the **+&#x20;**&#x69;con on the right side of the Google Sheets module.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/zIGDHgzVzTymU72CcVR9R-20251103-195256.png)

:::hint{type="info"}
Alternatively, to add a new module, you can double-click anywhere in your canvas or right-click anywhere and select **Add a module&#x20;**&#x66;rom the menu.
:::
::::

:::WorkflowBlockItem
Search for **Slack** in the search bar or browse the available apps.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/aMCnU9QU9aCpjcRQniWyk-20251103-195326.png)
:::

:::WorkflowBlockItem
Select **Slack** and then selec&#x74;**&#x20;Send a** **Message** from the available modules.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/r_S_XclC0l5qxctDNFq4z-20251103-195351.png)
:::

:::WorkflowBlockItem
After you add the module to your scenario, the connection settings will appear. Click **Create a connection.**

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/mfHPBOakWyz40inIpCZ_Q-20251103-195415.png)
:::

:::WorkflowBlockItem
For **Connection type**, select **Slack (user)**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/a2ToVSTr8LRlZEfh-s2zF-20251103-195436.png)
:::

:::WorkflowBlockItem
Name your connection, or leave the default name, and click **Save**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Qb0NuNeGbfhe8WVMCpG1D-20251103-195544.png)
:::

::::WorkflowBlockItem
A Slack sign-in window will open. Click **Allow&#x20;**&#x74;o authorize Make to access your Slack account.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/Er2QOciF6baGR7P9SLtwy-20250930-083722.png" size="70" width="1722" height="1284" position="center" showCaption="false"}

:::hint{type="info"}
If you have multiple Slack workspaces, make sure to select the one where you created the "sales-team" channel.
:::
::::
:::::

With your Slack module added to the scenario, you're now ready to configure it to send notifications using data from your Google Sheets trigger. In the next step, you'll map data between these modules.

[title] Step 5. Set up the trigger
[path] Get started/Create your first scenario/

At this step, you'll set up your Google Sheets trigger to watch for new rows in your spreadsheet. You'll specify which spreadsheet to monitor and how many rows to process at once.

To set up your Google Sheets trigger:

:::::WorkflowBlock
:::WorkflowBlockItem
Select your **Drive&#x20;**&#x66;rom the dropdown menu. You can leave the **Search Method&#x20;**&#x66;ield at its default settin&#x67;**&#x20;Search by path**.
:::

:::WorkflowBlockItem
In the **Spreadsheet ID&#x20;**&#x66;ield, use the **Click here to choose file&#x20;**&#x62;utton to select the **Prospects** spreadsheet you created in Step 2.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/uHhr_9q7z-DNKHl_gcxDu-20251103-194843.png)
:::

:::WorkflowBlockItem
Select **Sheet1** in the **Sheet Name&#x20;**&#x66;ield. This specifies which sheet contains the rows you want to monitor.
:::

:::WorkflowBlockItem
For **Table contains headers**, select **Yes**. This tells Make that the first row contains column names, which you'll use for mapping data later.
:::

:::WorkflowBlockItem
For **Row with headers**, leave the default **A1\:Z1** value. This indicates where your column headers are located.
:::

:::WorkflowBlockItem
Set the **Limit** to 20. This tells the module to process up to 20 new rows in a single run. You can adjust this based on your needs.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/i3Li8FwszXi25LmRFWpOm-20251103-194932.png)
:::

::::WorkflowBlockItem
Click **Save**. This saves your module settings, but not the entire scenario.

:::hint{type="info"}
Remember to click the **Save** icon in the Scenario Builder toolbar to save your entire scenario. It's good practice to save your scenario regularly as you build it.
:::
::::

::::WorkflowBlockItem
In the **Choose where to start** window that appears, select **All.**

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/imj7PeynpiEGhqCmGE0x7-20251103-195007.png)

:::hint{type="info"}
If you accidentally close that window, right-click the Google Sheets module and select **Choose where to start&#x20;**&#x66;rom the menu.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/bgRy7Hv1nFIRdljbZVyry-20250929-152659.png" size="40" width="644" height="770" position="flex-start" showCaption="false"}
:::

The **Choose where to start** option determines which rows the module will process. By selecting **All**, the module will first process the existing rows in the sheet, and then any new rows added afterwards. Also, the module will track which rows it has already processed and only fetch the ones it hasn't processed yet.
::::
:::::

Your Google Sheets trigger is now configured to detect new rows in your **Prospects** spreadsheet. Next, you'll test the module to ensure it works properly.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/fEtmteIiifjw9IJ0fI3nK-20251103-195055.png)

:::hint{type="info"}
**Understanding trigger modules**

Trigger modules like the one you've just configured can only be used at the beginning of scenarios. They process data when specific events occur in connected applications. There are two main types:

- **Instant triggers** start your scenario immediately when an event occurs in the connected application (marked with an "instant" tag in Make). These are ideal when you need real-time responses.
- **Polling triggers** (like your Google Sheets module) check for new data at regular intervals when your scenario runs. The module remembers what it has already processed and only retrieves new items each time.

The **Google Sheets > Watch New Rows** module you're using is a polling trigger, which will check for new rows each time your scenario runs.
:::


[title] Scenario execution flow
[path] Key concepts/Scenarios & connections/

In this section, you will learn how a  runs and how data flows through a . It will also show you where you can find information about your processed data and how to read it.

Once a  is [set-up](docId:4InplgaXo0COpID3pX2YS) correctly and [activated](docId\:pDRFtYsEJPiIzTaB7zJYh), it will run according to its defined [schedule](docId\:SCPFttWgFaPf077uJO1jh).

The  begins with the first [module](docId\:PDoPIBceCKCboMPpKplmY) responding to an event it has been set to watch for. If it returns any bundles (data), the bundles are then passed on to the next module and the  continues. If it does not return any bundles, the scenario does not continue and ends after the first module. In the case where there are returned bundles after the first module, the bundles will then go through each proceeding module one-by-one. If the bundles are processed correctly throughout all of the modules, the  is then marked as **Successful**.

## Example: Connect Facebook to Dropbox

The example below shows how Make connects three modules in a . It explains how Make downloads photos from [Facebook](docId\:xrAgCGHcpYJ0o9GcXgYu8), converts them to another format, and sends them to a selected [Dropbox](docId:3CpjivVixwccBvEEnSAam) folder.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/J1Dss_nkutuGRkBR3esBk_uuid-5b218535-8781-6514-efab-1e6566734d2e.png" size="90" width="2152" height="782" position="center" darkWidth="2152" darkHeight="782" showCaption="false"}

When the  begins, the first step is to watch for bundles. In this case, it is to watch for photos on Facebook. If it does not return a bundle (a photo), the processing of the  does not continue and ends after the first module.

If a bundle is returned, the bundle then passes through the rest of the . The bundle is first received through the **Watch photos** module, then it goes through the **Convert a format** module for the Image app, and then goes through the **Upload a file** module for Dropbox to reach its final destination, the Dropbox folder.

It is also important to note that if Facebook returns multiple bundles, for example two bundles, the processing of the latter bundle will not start until the first bundle is converted and uploaded to Dropbox.

## Information about processed bundles

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/X_XinyWduU4uiywMJsXmj_uuid-e45f0900-2bca-1dec-f513-85e2c0f187a0.png" size="40" width="800" height="907" position="flex-start" darkWidth="800" darkHeight="907" showCaption="false"}

For each module, the bundle goes through a 4 step process before going on to the next module or reaching its final destination. The 4 step process is **Initalization, Operation, Commit/Rollback, and Finalization**. This is called *transaction processing* and it helps to explain how data was processed in a module.

Once a  run is complete, each module displays an icon showing the number of operations performed. Clicking this icon will display the detailed information about the processed bundles, in the format described above. You can see which [modules settings](docId\:vNBss-BELMDIN3D4gguxL) were used and which bundles were returned by which module.

The picture above illustrates the processing of the last module used in the  above, the Dropbox module, **Upload a file**.

The module received the following input information:

1. Converted image
2. Selected folder where the image shall be uploaded to
3. Original name of the Facebook image

After processing, the module returned this output information:

- Image ID assigned by Dropbox
- Full path where in Dropbox Make uploaded the file

The above information is captured for each bundle separately, as marked by the drop down boxes Operation 1 and Operation 2 in the image.

## Stop a  run

You can stop a scenario run by clicking the **Stop** button.

The **Stop** button replaces the **Run once** button at the bottom of the Scenario Builder while the scenario is running.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/VJzsnUOiqFFk0g5EhgpFe-20260202-152128.png" size="42" width="312" height="95" position="flex-start" darkWidth="312" darkHeight="95" showCaption="false"}

When you press the **Stop** button, the currently running module will finish processing all of the bundles and then the scenario will stop. It is not possible to stop the module before it processes all of the bundles.

:::hint{type="info"}
Your scenario has five modules. During the processing of the third module, you click the **Stop&#x20;**&#x20;button. The third module will finish processing all the bundles then the scenario will stop. The fourth and fifth modules will not run.
:::

## Errors while executing a &#x20;

An error may occur during the  run. For example, if you delete the Dropbox folder that you have set as the target folder in the module setting, the  will terminate with an error message. For more information on this and to learn how to handle errors, please see the [error handling](docId:_w3dqOgJxm4xl3s64h40-) help guide.

[title] Get started
[path] /

A step-by-step guide to building your first automation:

::::LinkArray{contentSource="DOCS" sourceParentDocId="RkAg2DCqG6ZhIZ2cBJziS" childrenDocs="[object Object],[object Object],[object Object]" displayMode="CARD" itemsPerRow="2"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/nXC67-ZrQGy_jmbeKB8fW_1.png" headerType="IMAGE" docId="11htoOBSSasUHLN016x5z" displayMode="CARD" docSeoDescription="Get to know Make, how automation works, and the meaning of APIs"}
[Learn the basics](docId:11htoOBSSasUHLN016x5z)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/PN0L2qEEkJUTvF03zxlj-_2.png" headerType="IMAGE" docId="p5DHtppuOcAGN3DnHoT86" displayMode="CARD" docSeoDescription="Build your first automation with this guided walkthrough"}
[Create your first scenario](docId\:p5DHtppuOcAGN3DnHoT86)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/_A3-s1AbrmfLh2hYhQZ8Z_3.png" headerType="IMAGE" docId="u3wLLkM64eC53mm1Elc8R" displayMode="CARD" docSeoDescription="Take your automation further by adding essential Make tools"}
[Expand your scenario](docId\:u3wLLkM64eC53mm1Elc8R)
:::
::::


[title] Scenario notes
[path] Explore more/Scenarios/

Scenario notes allow you to document and communicate essential details about your  with other Make users. Notes serve as an effective way to provide context, instructions, or explanations about different parts of your .

:::hint{type="info"}
Before you start using notes, keep in mind:

- You can attach a note to any module or any route in your .&#x20;
- Each module or route can contain up to 200 notes.
- Each note has a 10,000-character limit.
- When you use a lot of formatting, like emojis and links, you might reach the note length limit faster than without formatting.
- Make stores your notes in HTML format, which uses extra characters to set formatting.
- Scenario notes are not included when you [clone](https://help.make.com/clone-a-scenario) or [share a scenario via a link](https://help.make.com/scenario-sharing).
:::

### Create notes

To add a note to a module or route:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Right-click on the module or route where you want to add a note.
:::

:::WorkflowBlockItem
Select **Add a note&#x20;**&#x66;rom the context menu.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/sirXheD7xX_Fm9AYGFQJn-20260317-125903.png" size="36" width="580" height="680" position="center" darkWidth="580" darkHeight="680" showCaption="false"}
:::

:::WorkflowBlockItem
Enter your content in the text editor.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/AU7EIlxcVJaLmO4s-MLP6-20260317-130302.png" size="50" width="1146" height="890" position="center" darkWidth="1146" darkHeight="890" showCaption="false"}
:::

:::WorkflowBlockItem
Optional: Use the formatting toolbar to style your text, add links, or insert emojis.
:::

:::WorkflowBlockItem
Click **OK&#x20;**&#x74;o save your note.&#x20;
:::
::::

This is how notes are displayed in a Scenario Builder when:

1. A note is attached to a module
2. A note is attached to a route

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/isFHVAF4U3FRYAhHcQI-X-20260317-130417.png" size="60" width="1656" height="1184" position="center" darkWidth="1656" darkHeight="1184" showCaption="false"}

### View notes

You have several options to view notes in your scenario:

| What to do                                | What you'll see                                           |
| ----------------------------------------- | --------------------------------------------------------- |
| Hover over the note marker                | A preview of the note                                     |
| Click once on a note marker               | The complete note content with scrolling for longer notes |
| Click the sticky note icon in the toolbar | The note panel showing previews of all scenario notes     |

### Edit notes

To edit a note:

:::::WorkflowBlock
:::WorkflowBlockItem
Click once on a note marker, or hover over it and click the note.
:::

::::WorkflowBlockItem
Click the **three dots&#x20;**&#x69;n the top-right corner of the note window, and then **Edit**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/gVyqsVwCJJRom0s3uLs0B-20260317-134444.png" size="50" width="872" height="322" position="center" darkWidth="872" darkHeight="322" showCaption="false"}

:::hint{type="info"}
You can also just double-click on a note to open it in edit mode.
:::
::::

:::WorkflowBlockItem
Make your changes in the text editor.
:::

:::WorkflowBlockItem
Click **OK** to save your updates or **Cancel** to discard them.&#x20;
:::
:::::

The edits to your note will be saved.&#x20;

### Delete notes

To delete a note:

::::WorkflowBlock
:::WorkflowBlockItem
Click once on a note marker, or hover over it and click the note.
:::

:::WorkflowBlockItem
Click the **three dots&#x20;**&#x69;n the top-right corner of the note window, and then **Delete**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/3L9zk3BUI351ilFu3Z0L0-20260317-133207.png" size="50" width="874" height="338" position="center" darkWidth="874" darkHeight="338" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Delete** once again to confirm.
:::
::::

The note will be deleted. This action is permanent and cannot be undone.&#x20;

### Best practices

- Use notes to document complex logic or explain non-obvious workflow decisions.
- Add implementation details that might help other team members understand your approach.
- Document any specific requirements or dependencies for modules
- Explain the purpose of different routes to clarify workflow branching.
- Keep notes concise but informative for better team collaboration.


[title] Step 2. Get your apps ready
[path] Get started/Create your first scenario/

Before building your first scenario, you need to get your apps and accounts ready.

### Required accounts

- A Make account ([Create one here](https://www.make.com/en/register))
- A Slack account and workspace ([Sign up for Slack](https://slack.com/get-started))
- A Google account ([Create an account](https://accounts.google.com/lifecycle/steps/signup/unknownerror?dsh=S-1274631282:1780494148254859\&flowEntry=SignUp\&flowName=GlifWebSignIn\&TL=APouJz5gX9o2mjUaHstMQ5w4s45YLf2M3vMq_rNrqlK1hQgKQjmWWWZHjuq1A5g3\&continue=https://accounts.google.com/ManageAccount?nc%3D1))

With your accounts created, the next step is to set up Slack and Google Sheets that you will use in your scenario.

### Set up Slack&#x20;

To create a channel where your sales team will receive notifications:

::::WorkflowBlock
:::WorkflowBlockItem
Open your **Slack workspace**.
:::

:::WorkflowBlockItem
Click the three dots next to **Channels** in the left sidebar.
:::

:::WorkflowBlockItem
Select **Create channel&#x20;**&#x66;rom the dropdown menu.
:::

:::WorkflowBlockItem
Name it "sales-team".
:::

:::WorkflowBlockItem
&#x20;Ensure the visibility is set to "Public".
:::

:::WorkflowBlockItem
Add a description (optional).
:::

:::WorkflowBlockItem
Click **Create**.
:::
::::

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/httkgDpCFA2dY6U_6gqlC-20250930-083957.gif)

This channel will be used to send prospect notifications to the sales team.&#x20;

### Set up Google Sheets&#x20;

To create a spreadsheet to store prospect information:

::::WorkflowBlock
:::WorkflowBlockItem
Go to [Google Sheets.](https://sheets.google.com)
:::

:::WorkflowBlockItem
Start a new spreadsheet.
:::

:::WorkflowBlockItem
Rename it to "Prospects".
:::

:::WorkflowBlockItem
Add these columns:&#x20;

- First Name
- Last Name
- Country
- Email
- Phone Number
- Details
:::

:::WorkflowBlockItem
Add one row of sample data.
:::
::::

![](https://archbee-image-uploads.s3.amazonaws.com/yjwhINLS3fc-NXg38fV_d-Y_UmEjChQCtj2-m4GFbMA-20250326-180553.png)

Google Sheet with proper column setup and sample data showing:&#x20;

- The name of your file (<font color="#FF009A">A</font>)
- Columns you added (<font color="#FF009A">B</font>)&#x20;
- Sample data (<font color="#FF009A">C</font>)

:::hint{type="info"}
Keep this spreadsheet open in another browser tab for easy access while you build your scenario.
:::


[title] Step 10. Schedule your scenario
[path] Get started/Create your first scenario/

The final step is to set up how often your scenario should run:

::::::WorkflowBlock
:::WorkflowBlockItem
In the Scenario Builder toolbar, click **Every 15 minutes** to open the schedule settings.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/vu_eI_A59p1lMRh4JrGSK-20251103-200213.png)
:::

::::WorkflowBlockItem
In the **Schedule setting** window that appears, set how frequently your scenario should run.&#x20;

For this scenario, keep the default **Every 15 minutes&#x20;**&#x6F;ption. This means your **Google Sheets > Watch New Rows** module will check for new rows every 15 minutes. You can adjust this based on how quickly you need to be notified about new prospects.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/kx-BHPDELLqGVG1Ckz5QH-20251103-200235.png)

:::hint{type="warning"}
When scheduling a scenario, consider how frequently you need to check for new data, as this affects your credits consumption:

- Running every 5 minutes = 288 credits per day (60/5 × 24), or 8,640 operations per month
- Running every hour = 24 credits per day, or 720 credits per month
- Running once daily = 30 credits per month

These numbers show the credits consumption for the trigger module only. The complete scenario will consume additional credits based on the amount of new data processed and the complexity of the modules in your scenario.
:::
::::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::::WorkflowBlockItem
After you schedule your scenario, you'll be prompted to activate it. Click **Activate scenario**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Ywz6b6OV_2BUNZcc48A9t-20251103-200301.png)

:::hint{type="warning"}
If you schedule and activate a scenario only for testing purposes, we recommend deactivating it after or adjusting the schedule to avoid using credits unnecessarily.
:::

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![](https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/Koi9tXiRvDr22Fy5WznmU-20251103-200332.png "Scenario is not activated")
:::

:::VerticalSplitItem
![](https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/O59_DcTe461S1khS4iSmT-20251103-200358.png "Scenario is activated")
:::
::::
:::::
::::::

Well done! You've created your first scenario in Make. It will now run according to your schedule, monitoring your Google Sheets spreadsheet for new prospects and sending notifications to your Slack channel.

:::hint{type="info"}
**What's next?**

You can stop at this step or continue and expand your scenario with the following:

- Add a router to create multiple paths in your workflow.
- Use filters to process data conditionally.
- Implement aggregators to combine multiple items into one.

These features will be covered in the [Expand your scenario](docId\:u3wLLkM64eC53mm1Elc8R) section.
:::


[title] Introduction to Make apps
[path] Key concepts/Apps & modules/

 is a no-code integration platform that allows you to connect multiple apps and facilitate data transfer between them. By using the modules within these apps, you can design  that can be scheduled to align with your workflows.

One of the key benefits of  is that it empowers you to share data across apps without requiring any coding expertise. To read more about how  works, go to our [Get started](https://help.make.com/get-started) section.

## What are  apps?

 apps are integrations of third-party APIs or  built-in tools. Each app consists of [modules](docId\:BkdEyuBelio6YvvCosRxJ).

## Types of  apps

 divides apps into different types based on their origin and availability:

- **Verified apps**: apps verified by  developers
- **Community apps**: apps developed by partners and power users
- **Custom apps**: apps developed by  users

## Verified apps

Verified apps are developed either by  developers or by other  users. Verified apps made by a third party have to pass the  [app review process](https://developers.make.com/custom-apps-documentation/app-review) and have to be actively maintained.

Verified apps further differ in their availability in  [pricing plans](https://www.make.com/en/pricing):

- **Standard apps**: All  users can use standard apps.
- **Paid plan apps**: All  users with a paid plan (Core, Pro, Teams, and Enterprise) can use paid plan apps.

:::Paragraph{indent="1"}
In the Scenario Builder, paid plan apps are marked with a **Paid plans** label, as shown in this example.
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-1O7C-Cn1YuwL0UKgKQw4l-20250728-073645.png" size="40" width="358" height="56" position="center" alt="Paid plans app example" darkWidth="358" darkHeight="56" showCaption="false"}

- **Enterprise apps**: All  users in organizations with the Enterprise plan can use enterprise apps.

:::Paragraph{indent="1"}
In the Scenario Builder, enterprise apps are marked with an **Enterprise** label, as shown in this example:
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-RbRKRZL20dzphHJiwjc9Q-20250728-073809.png" size="40" width="358" height="56" position="center" alt="Enterprise plan app example" darkWidth="358" darkHeight="56" showCaption="false"}

## Community apps

Community apps are developed by  partners and power users who have taken dedicated training. Unlike verified apps, community apps don't go through 's app review process. Support, maintenance, and monetization of a community app is the responsibility of the app developer.

You can check all the community apps on the [Make Apps & services page](https://www.make.com/en/integrations?community=1\&verified=1) when you filter to show community apps only.

In the  Builder, you can identify the community apps by the **Community** label:

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/HWxzUOnu9-zSJyV2RhkIt_image.png" size="34" width="268" height="57" position="center" alt="Community app example" darkWidth="268" darkHeight="57" showCaption="false"}

Community apps may require an additional purchase to use.  does not earn money or commission on these purchases. You purchase them directly from the developer.

To use a community app in your , you must first install the app in your  organization. You must have the **Admin**, **Owner**, or **App Developer** role to install an app.&#x20;

:::hint{type="info"}
You can learn more about Community apps and how to create them in our Developer Hub:

- [About Community Apps](https://developers.make.com/custom-apps-documentation/community-apps/about)
- [Monetization, pricing, and billing](https://developers.make.com/custom-apps-documentation/community-apps/how-does-it-work#monetization-pricing-and-billing)
- [App support](https://developers.make.com/custom-apps-documentation/community-apps/how-does-it-work#app-support)
:::

## Custom apps

Custom apps are developed by  users.  provides a [web interface](https://developers.make.com/custom-apps-documentation/get-started/make-apps-editor/web-editor-features) where you can create and manage your custom app configurations.

Custom apps are available to  users based on their [visibility](https://developers.make.com/custom-apps-documentation/app-visibility):

- **Private apps**: The custom app developer and users in all organizations they are part of can use the app.
- **Public apps**: Access to the app is on an invite-only basis. The app developer has to share an invite link with you.

:::hint{type="info"}
To learn more about creating custom apps, check the [Custom Apps documentation](https://developers.make.com/custom-apps-documentation).
:::


[title] Incremental variables
[path] Explore more/Scenarios/Variables/

Incremental variables are variables that can be used when you want to keep track of a value when a  or a route in a  runs.

## Use incremental variables when you need:

- Counters that increment with each  run
- Values that can either reset after each run or persist indefinitely

The incremental variable returns a value of `1` after the first run. The subsequent value is based on your choice for the value to never reset, reset after one cycle, or reset after one  run.&#x20;

You can add an incremental variable to your  by clicking on to the **Tools** icon and selecting the **Increment function** module.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-XsCQyMlfXCyTYY1LwdVTg-20250529-084116.png" size="40" width="446" height="591" position="flex-start" alt="Increment function" showCaption="false"}

:::::ExpandableHeading
## Example: Rotating the assignment of tasks to users in a group

Imagine that you receive a form submission requesting the completion of a task. In the following , an incremental variable is set to count each time a request is submitted and send the task by email to different people, alternating the assignment of the task.

To alternate the tasks, we are using the `mod `function to filter the assignments between two people.

The `mod` function returns the remainder after dividing one number by another.

For example, 12 `mod` 2 = 0, because there is no remainder after dividing 12 by 2. &#x20;

13 `mod` 2 = 1, because after dividing 13 by 2, there is a remainder of 1.

In this , the incremental variable value is divided by 2 using the `mod` function, and the tasks are routed to different people based on the remainder being even (`0`) or odd (`1`).

![Incremental variables](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-yBtHgNuMdMoYWoOtZV5tk-20250613-092333.png)

::::WorkflowBlock
:::WorkflowBlockItem
Add a **Tool > Increment function** module and configure the value to never reset.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/C2MkrykLq6eO8kjT8AdK6_uuid-805d861a-325c-2420-1bf6-3582ec935f56.png" size="60" width="707" height="346" position="flex-start" alt="Increment function" showCaption="false"}
:::

:::WorkflowBlockItem
Add a router. You will see two default routes added.
:::

:::WorkflowBlockItem
Click the wrench icon for the first route and set the filter:&#x20;

**Label**: Odd&#x20;

**Condition**: Map the incremental variable and use the `mod` math function and add the number `2`

Change the **Equal to** operator from the default **Text operator** to the **Numeric operator&#x20;**&#x61;nd type `1` in the comparison field.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-nfjgUnE27ONDApVF8HPO9-20250613-092458.png" size="68" width="816" height="553" position="flex-start" alt="filter odd" showCaption="false"}
:::

:::WorkflowBlockItem
Click the wrench icon for the second route and set the filter:&#x20;

**Label:** Even

**Condition:** Map the incremental variable and use the mod math function and add the number `2`.&#x20;

Change the **Equal to** operator from the default **Text operator** to the **Numeric** operator and type `0` in the comparison field.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-26Rt5zyvVcRbZbQE1NE2s-20250613-092546.png" size="70" width="819" height="532" position="flex-start" alt="even filter" showCaption="false"}
:::

:::WorkflowBlockItem
Complete your  by adding an Email module to the end of each route, notifying the recipient of their assignment.
:::
::::

As information comes in, the task assignment alternates between the two recipients.
:::::


[title] Router
[path] Key concepts/Tools/

A router allows you to branch the  flow into several chains of modules. Each route processes the data differently according to the condition you set. Filters help you to determine conditions via different operators such as `less than`, `greater than`, and so on.

Order routes in the sequence you want and set up a fallback route that will process data that doesn't fit other routes.

:::hint{type="success"}
See our  template for the [Controlled distribution of data flow](https://www.make.com/en/templates/2952-controlled-distribution-of-data-flow).
:::

## Adding a router to a &#x20;

You can add a router in two different ways:

- Connect a router to a module:

::::WorkflowBlock
:::WorkflowBlockItem
Click **Add another module**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-7A9Xm0SEYKNR5hyiYiNtj-20250214-104816.png" size="62" width="677" height="420" position="center" darkWidth="677" darkHeight="420" showCaption="false"}
:::

:::WorkflowBlockItem
In the search box, type **Flow controls** and click it.

![](https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-u0Ejrv2fkBo4bRM2LrUiS-20250214-104853.png)
:::

:::WorkflowBlockItem
Select **Router**.
:::
::::

- Insert a router between two modules:

::::WorkflowBlock
:::WorkflowBlockItem
Right-click the bridge between two modules, and select **Add a router**.

![](https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-AFT6IYmtIq9Qk8Hh71cyt-20250214-105016.png)
:::
::::

## Order routes

You can set the order of routes in which  processes them in the .

This example shows the router that determines which hint to send you on Slack according to tomorrow's weather.

::::WorkflowBlock
:::WorkflowBlockItem
Click the router that contains the routes you want to order.
:::

:::WorkflowBlockItem
Right-click and select **Order routes**. A window appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-7NMjzMmIo7MABvZ3xT1oD-20250214-104142.png" size="60" width="441" height="362" position="center" darkWidth="441" darkHeight="362" showCaption="false"}
:::

:::WorkflowBlockItem
Click arrows and move routes according to your needs.
:::

:::WorkflowBlockItem
*Optional*. Select **Auto-align arranges with set order** to visually arrange modules on the  canvas according to the set order.
:::

:::WorkflowBlockItem
Click **Apply**.
:::
::::

:::hint{type="success"}
Routes are processed sequentially, not in parallel.  won't process the second route unless it finishes processing the first one.
:::

## The fallback route

A fallback route processes data that doesn't fit the condition of all other routes. You can mark a route as a fallback if you want it to be executed last.

:::hint{type="info"}
You can set up a filter for a fallback route same as for other routes.
:::

To set up a fallback route, follow the steps:

::::WorkflowBlock
:::WorkflowBlockItem
Click the route you want to mark as a fallback. A filter window appears.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-SWpPW5k0ghLuACwq_5Mki-20250214-104238.png" size="60" width="664" height="754" position="center" darkWidth="664" darkHeight="754" showCaption="false"}
:::

:::WorkflowBlockItem
Select **Yes**.
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

You can recognize the fallback route by the special arrow icon on the router module:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/bKOATYxUqQHyoHAhGGKn7_uuid-036cc5df-914c-058d-d73f-7e0774a9e6c1.png" size="40" width="298" height="317" position="center" darkWidth="298" darkHeight="317" showCaption="false"}

## Select a whole branch

You can manage all modules in the branch at once.

Click the route menu, then click **Select whole branch**. It selects all the following modules.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/IrpZRCGHih_oujYeT9637_uuid-e3def79c-e047-8485-8c6e-d563eb9323a2.png)

You can copy or delete all selected modules at once.

**Example of a router with a fallback route**

You need to receive a message on Slack depending on tomorrow's weather:

- if the weather is hot, the message is `wear shorts`.
- if the weather is cold, the message is `wear a jacket`.
- if the weather is neither hot nor cold, the message is `better stay at home`.

The scenario looks like that:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/chJne3fCQxUYdpDVbPlVV_uuid-1159cae7-cd6f-80a5-2280-f28de8aa5927.png" size="76" width="1007" height="1038" position="center" darkWidth="1007" darkHeight="1038" showCaption="false"}

The scenario flow is:

::::WorkflowBlock
:::WorkflowBlockItem
The Weather module gets data about tomorrow's weather.
:::

:::WorkflowBlockItem
Data goes to the router that processes routes in the determined order:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-BQG-iuSswyxPS-O03UXy_-20250214-103759.png" size="60" width="443" height="300" position="center" darkWidth="443" darkHeight="300" showCaption="false"}

a. The **Hot weather** route sends the message to Slack, if data fits the filter condition:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-pqtiJwBALe7xyVNGecyFL-20250214-103850.png" size="60" width="661" height="686" position="center" darkWidth="661" darkHeight="686" showCaption="false"}

b. The **Cold weather** route sends the message to Slack, if data fits the filter condition:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-1C8OePr9a8L6pnpZSb4Fm-20250214-103925.png" size="60" width="661" height="685" position="center" darkWidth="661" darkHeight="685" showCaption="false"}

c. The **Fallback** route sends the message to Slack, if data doesn't fit previous routes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-w0NqmS-n5v_864VysGVU8-20250214-103953.png" size="60" width="644" height="681" position="center" darkWidth="644" darkHeight="681" showCaption="false"}
:::
::::


[title] Mapping
[path] Key concepts/Data & mapping/

## What is mapping?

Mapping is how  knows what information to get from one app and which app to send it to. You can use mapping to tell  how to transform data in your . For example:

- You want to automatically send information from emails to a colleague in a Slack message. In this case, map the subject or body of email messages to Slack.
- When a customer submits a form to request support, you want a Jira issue created automatically. Here, you can map the information from the form into Jira.
- Your business gets valuable leads from Facebook, so you want a database of this information and the same information entered into Pipedrive. Just map the data from Facebook leads to Airtable and Pipedrive.

In the same way that a map leads you from your starting point to your destination, mapping in  tells your data where to go in your .

::embed[]{url="https://www.youtube.com/watch?v=zqtY2hZ0BFM"}

## What can I map?

You can map any information that a module gets in a bundle. A **bundle** is like a box of information. Some boxes are large; some are small; some have just one thing inside them; some might have smaller boxes in them. Bundles are similar. Sometimes a bundle is just one piece of information, for example, a number or email address. Other times a bundle contains a variety of information.

When bundles have a lot of information, you might see the data organized into an **array** or **collection**. An array is like a menu organized into different sections like soups, starters, desserts, and so on. There's a lot of information but it's the same kind of information: food. An array has information of only one kind. For example, it might have multiple dates or names but not both. Collections can have different kinds of information and are like a moving box. When you move, you might put various things into one box: books, small gadgets, a box of letters. Collections contain a similar variety of information, for example, dates, numbers, and text descriptions.

### Getting a bundle

To know what you can map from a module, you run only that module and look at its bundles. Once you know what you can map, you can start mapping. Let's use the first example above to explore how this works. We want to take information from emails and send them to a colleague. Before we do any mapping, we begin by finding what information we can get from the email module. Because the email module provides the information we want, we call it the **source module**.

::::WorkflowBlock
:::WorkflowBlockItem
Go to the **Scenario** **Builder** and add the module **Email > Watch emails**.
:::

:::WorkflowBlockItem
Create a connection.
:::

:::WorkflowBlockItem
Select a folder and criteria.
:::

:::WorkflowBlockItem
Click **OK**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-NZLTlrx1R64PkROlxVFIf-20250212-100417.png" size="58" width="902" height="1518" position="center" darkWidth="902" darkHeight="1518" showCaption="false"}
:::

:::WorkflowBlockItem
Choose where you want  to start getting your emails and click **OK**.
:::

:::WorkflowBlockItem
Right-click the module.
:::

:::WorkflowBlockItem
Select **Run this module only**.
:::

:::WorkflowBlockItem
A small circle with 1 inside appears beside your module. Click inside the small circle.
:::
::::

A window opens and shows you all of the information that your email module got. You can map anything that appears. Click **+** to expand items.

### What's in a bundle?

Let's take a closer look at the information in the bundle window. In this example, we see the bundles from the **Slack > Create a message** module.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-rbuFBA1hm5H-qfP_Soxa3-20250212-101017.png" size="60" width="451" height="479" position="center" darkWidth="451" darkHeight="479" showCaption="false"}

::::WorkflowBlock
:::WorkflowBlockItem
Input - the information  sends to the third-party app.

In this example, you can see:

- Text - the content of the message sent. Click + to expand for further details.
- User - the user ID of the person receiving your Slack message.


:::

:::WorkflowBlockItem
Output - the information  gets back from the third-party app.

In this example, you can see:

- Message - the text content of the sent message, similar to Text in the Input. Click + to expand for further details.
- Channel - the ID of the channel where the message was sent. In this case, it's the same as User from the input. That's because we sent a direct message to a specific user.
:::
::::

## Mapping to the target

Now we know what information we can send to other modules. Next, we map that information. To do that, we first add the module we want to receive the information. In our example, that's **Slack > Create a message**. If you're still in the  Builder, continue with these steps:

::::WorkflowBlock
:::WorkflowBlockItem
Add the module **Slack > Create a message**.
:::

:::WorkflowBlockItem
Create a connection.
:::

:::WorkflowBlockItem
Under **Enter a channel ID or name**, select **Choose from a list**.
:::

:::WorkflowBlockItem
Under **Channel type**, select **IM channel**.
:::

:::WorkflowBlockItem
Under **User** search or scroll to find your intended recipient.
:::

:::WorkflowBlockItem
Under **Text**, click inside the empty field. A new window appears.
:::

:::WorkflowBlockItem
In the new window, click **Text content**. A red box labeled **Text content** appears in the **Text** field.
:::

:::WorkflowBlockItem
Click **OK**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-sRa5g__vS5P7zABH76Rg0-20250212-103402.png" size="68" width="900" height="1518" position="center" darkWidth="900" darkHeight="1518" showCaption="false"}
:::
::::

Your data is now mapped so that Slack automatically receives email content and sends it in a message.

## Tips and solutions

### Find the source module

While mapping a , you can find the source module by hovering over the mapped data. As you keep your mouse on a mapped item, the source module pulses.

### When there's no info for an instant trigger

When you click Run once or Run this module only, an instant trigger waits to receive information. The instant trigger needs incoming info to run. So the trigger waits until it receives incoming data. To run the module, you need to provide incoming information. Let's explore with an example: **Airtable > Watch responses**.

::::WorkflowBlock
:::WorkflowBlockItem
Right-click on **Airtable > Watch responses** and select **Run this module only**. The module waits for new responses.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-6j_QrFEOyxC4Z7lregMPW-20250212-103516.png" size="34" width="252" height="322" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Go to your Airtable form and submit a response.
:::
::::

The information submitted goes to your **Airtable > Watch responses** module. You can inspect the bundle to check that your configuration is working.

### When there's no info for a polling trigger

You can use the [above procedure](docId\:upfwoZsCC5SoIXR2954z2) to generate a bundle for most modules, including polling triggers. For instant modules, see the solution for instant triggers. The following are the general steps to get a bundle.

::::::WorkflowBlock
:::WorkflowBlockItem
Go to the **Scenario** **Builder** and find the module you want to get a bundle for.
:::

:::WorkflowBlockItem
Right-click the module.
:::

:::WorkflowBlockItem
Select **Choose where to start**.
:::

:::::WorkflowBlockItem
To get a bundle, select one of the following options and click **OK**.

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
a. **From a specific date option**: for example **Emails from after a specific date**. Enter a date you know there is data for. Example: enter a date you know you received emails.
:::

:::VerticalSplitItem
b. **Select the first option**: when available, this option lets you choose from a list.
:::
::::
:::::

:::WorkflowBlockItem
Right-click the module.
:::

:::WorkflowBlockItem
Select **Run this module only**.
:::
::::::

A small circle with 1 inside appears beside your module. Click inside the small circle.

[title] Devices
[path] Explore more/Connections/

To use  for Apple iOS or  for Android apps, it is necessary to add your iOS or Android device to your  account.

You can add your device to  by opening the mobile app and scanning a QR code generated on the **Devices** page.

Prerequisites:

-  for Apple iOS app or  for Android app installed on your device.

## Add a device using a QR Code

:::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Devices**.
:::

:::WorkflowBlockItem
Click **+Add device**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/JzBsFmTKvpzcLlT4vx3sv-20251007-130339.png)
:::

:::WorkflowBlockItem
In the **Add device** window, type a name for your device and click **Continue**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/oCxZdrcBmBY4rWHhf8mdw-20251007-130740.png" size="40" width="892" height="664" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
The screen with the QR code will appear.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/HdRHk3W_gF724A51bjy2w-20251007-131442.png" size="40" width="886" height="974" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Open the **Make&#x20;**&#x61;pp on your iPhone or Android device.&#x20;
:::

::::WorkflowBlockItem
In the screen that appears, tap **Scan a QR Code**. Scan the code you see in Make.&#x20;

:::hint{type="info"}
If scanning doesn't work, you can manually enter the code displayed.&#x20;
:::
::::

:::WorkflowBlockItem
Click **Save**.
:::
:::::

Your mobile device now displays your account settings. Your browser now lists your device on the **Devices** page.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/NGbQuRQN-LMuagKOdLILE-20251007-131632.png)


[title] Scenario settings
[path] Explore more/Scenarios/

To access **Scenario settings**, click the gear icon in the  Builder. Here you can set various advanced settings.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/9LE9x1UL499NV1oWem5vb-20260518-112450.png)

## Process data in order

You can choose to processes data in the order it's received, with each run finishing before the next starts. If there's an incomplete execution, no new runs are processed until all incomplete executions are resolved.

- When enabled, Make completes each execution before starting the next. New runs are paused until all incomplete executions are resolved.
- If disabled, the  continues to run according to its [schedule](docId\:SCPFttWgFaPf077uJO1jh), regardless of errors.

:::hint{type="info"}
Process data in order also applies to [webhooks](docId:1yhUnJ8jvZyxiP9Cf3Ps1). By default,  processes webhooks in parallel. When you enable process data in order,  waits until the previous execution is complete before starting the next one.
:::

## Keep data confidential

Make stores the data processed during each run in your execution logs. This lets you inspect and troubleshoot when something goes wrong. If you enable this setting,  won't retain any of that data. Your logs will still show that a run happened, but without the actual payload.

Enable keep data confidential if your scenarios handle sensitive or personal data that shouldn't be stored after processing.

:::hint{type="warning"}
If enabled, there are very limited options to solve errors that occur in a  execution.
:::

## Store incomplete executions

When a scenario run fails,  saves it as an incomplete execution so the data isn't lost. You can then retry the run manually or let  handle it automatically - either way, your scenario keeps running.

- If enabled, the  is paused and moved to the [incomplete executions](docId:6zZNn7v35hERRCJFccp9Q) folder. This gives you the possibility to fix the issue and continue from where the  stopped.
- If disabled, the  run stops and starts a [rollback phase](https://help.make.com/scenario-execution-cycles-and-phases#F-KOC).

You can resolve each incomplete execution either manually or automatically.

:::hint{type="info"}
The data in this folder counts towards the storage limits of your [subscription plan](https://www.make.com/en/pricing).
:::

## Discard data if storage is full

If your incomplete executions folder is full when an error occurs,  discards the failed data and keeps the scenario running. Discarded data can't be recovered, so make sure you have enough space if losing data isn't an option.

## Use updated variable values

When retrying an incomplete execution, you can use either the current variable values or the ones from the original run.&#x20;

- Enable this to use the latest team and organization variable values.
- Disable it to use the values that were active at the time of the original run.

## Errors before deactivation&#x20;

You can set how many errors in a row  accommodates before deactivating the . This setting defines the maximum number of attempts before the  deactivates (though there are exceptions listed in the [error handling overview](docId:7-HEHdTuU2XyYs8_qurub).&#x20;

:::hint{type="info"}
If a  starts with an instant trigger, the setting is ignored and the  is deactivated immediately once the first error has occurred.
:::

## Commit after each module

By default,  commits data only when the entire scenario finishes successfully. Enable this setting to commit data after each module runs instead.

- If enabled, data is committed right away and cannot be restored in the case of an error.
- If disabled, no commit occurs until operations are executed for all modules.

This affects data modules, instant triggers, and webhook responses. Use it when you need to ensure data is saved incrementally - for example, if a later module fails, data processed by earlier modules is still committed rather than rolled back.

## Commit trigger last

This setting defines the module commit order after a successful  operation phase. This setting is enabled by default.

- If enabled, the commit phase skips the trigger and processes that module last.
- If disabled, the commit phase occurs in the default order.

## Cycles per run

This setting defines the maximum number of cycles allowed during a  execution.

Setting more [cycles](https://help.make.com/scenario-execution-cycles-and-phases#75-3E) can be useful when you want to prevent connection interruption to third-party services. This can also ensure all records are processed within the  run.

If you execute the  manually by clicking the **Run once** button, the setting is ignored and **only one cycle** will be performed.


[title] Use scenario outputs
[path] Explore more/Scenarios/Scenario inputs and outputs/

Once you define your  outputs, you need to add the dedicated **Scenarios** > **Return output** module. Its module fields are based on  outputs setting.

Map the data you want to output from your  to the **Scenarios** > **Return output&#x20;**&#x6D;odule fields.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/UHilU14axqe-D_0w9mHIR-20260513-091623.png)

The **Scenarios** > **Return output** module always finishes the  run. It works similarly as the `return` statement in programming. You cannot add any subsequent modules after the **Scenarios** > **Return output** module in the current route.

Keep in mind that when using routers, the **Scenarios** > **Return output** module in a route finishes the . The modules in the subsequent routes won't run.

:::hint{type="info"}
If you have multiple **Scenarios** > **Return output** modules in your ,  runs only the one that is reached first in the  flow. Subsequent **Return output** modules don't run.
:::

 outputs are available to the entity that triggered the :

- If the  was triggered through the **Scenarios** > **Call a scenario** module, then  outputs are a part of the module output bundles.
- If the  was triggered through the Make API, then  outputs are in the request response.


[title] Variables
[path] Explore more/Scenarios/

Variables are containers for storing data. You can think of a variable as a “box” for data, with a uniquely-named sticker on it. 

Imagine you are moving to a new home and you need to pack up all the things in your house. You might want a box for clothes, one for books, and one for the dishes. When you pack the boxes, it's helpful to add a label to each box. That way, you know what is inside.

Variables store data as boxes store items.

However, unlike a box, you can store only one thing in a variable. Variables have a fixed name and a value that can change. You can reference the name in your . The name is then replaced by the current value of your variable when the  executes.&#x20;

When using , you might need to save certain pieces of information and assign a label to the information so that you can retrieve it later. A username, the day of the week, or available inventory left in your e-shop - these are just some examples of data that can be stored in variables as reusable elements that can be mapped to any module in the module's input fields.

# Types of variables

 offers four types of variables:

::::LinkArray{contentSource="CUSTOM" itemsPerRow="2"}
:::LinkArrayItem
[System variables](docId\:OzGaHLBj3ZkAoKWCWayII)&#x20;

Provided by &#xNAN;*.&#x20;*&#x59;ou can’t modify or delete system variables. They can be used in modules with input fields, filters within the  editor, and in templates.&#x20;
:::

:::LinkArrayItem
[Scenario variables](docId\:xheAxlxyiFE-v0oSUxxpE)&#x20;

Created within a  for use in  executions. You can use the [Set variable](docId\:cwfBo7bVO3BPZCSXcaQOF) and [Set multiple variables](docId\:cwfBo7bVO3BPZCSXcaQOF) tools to define these variables.
:::

:::LinkArrayItem
[Custom variables](docId\:xjlOKKg-AjN437oU5eYn1)

Similar to scenario variables, but created at the Organization or Team level and can be accessed and<font color="#0C121D"> </font>modified within a  execution. Only available with Pro, Teams, and Enterprise [pricing plans](https://www.make.com/en/pricing).&#x20;
:::

:::LinkArrayItem
[Incremental variables](docId\:waWi8huOLU6xec-o1LJYs)

Created for each . You can increment them any time in a  execution. The value of the incremental variable can be kept within multiple  executions.
:::
::::

# Variable use cases

Consider the following examples to determine the best variable to use in your .

### Get  information

Use:

- System variable

A system variable is available in all , created by , and never deleted.

### Share a value between multiple &#x20;

**Use:**

- Custom variable

Organization-level custom variables are visible for all scenarios in the organization. Team-level custom variables are only visible in built within that team. They can be created, modified, or deleted by the admin of the organization or team. Custom variables can also be modified within a , by using the  API or the **Update a Custom Variable** module

### Store a counter that can be shared between multiple  runs

**Use:**

- Custom variable
- Incremental variable

An incremental variable is only available in the current . Incremental variables are created by  and are incremented using the **Tool>Increment Function** module. The value resets for each  execution, or never resets, based on the parameters chosen in the **Tool>Increment Function** module.

### Set a variable and retrieve its value in the same  run

**Use:&#x20;**

- Custom variable, with restrictions
- Incremental variable, with restrictions
- Scenario variable

 variables only exist in the current . They can't be deleted, but they no longer exist when the  stops running.

**Restrictions:**

- While you can set the value of a custom variable in a , the other modules will still use its previous value. The new value of a custom variable is retrieved only when the  starts again.
- The increment is only a counter; you can't store any complex data.

### Set a variable and retrieve its value in other &#x20;

**Use:**

- Custom variable, with restrictions

**Restriction:&#x20;**

- The value of the variable is retrieved only when the  starts its execution. If a Team or Organization variable is modified while a  is running, the current run will use the previous value of this variable. The new value of a custom variable is retrieved only when the  starts again.

[title] Step 2. Add a router
[path] Get started/Expand your scenario/

A router allows you to split your scenario flow into multiple routes. Think of it like a fork in the road where your data can follow different paths based on your scenario requirements. This lets you process the same information in different ways - for example, sending all prospect notifications to Slack while only sending specific ones to mobile devices.&#x20;

To add a router to your scenario:&#x20;

:::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Scenarios&#x20;**&#x61;nd select the **New prospect notification** scenario you built in the [Create your first scenario](docId\:p5DHtppuOcAGN3DnHoT86) section.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/FY1GbwQNxVjJ10OQiWrTm-20250930-115357.png)
:::

::::WorkflowBlockItem
Right-click between the Google Sheets and Slack modules and select **Add a router**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/juGQN-gImC6XpO8YqyPi--20251103-202148.png)

A router module will appear between the modules.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/6urYSAA2evnwYSCfuMmSS-20251103-202350.png)

:::hint{type="info"}
Alternatively, you can add a router the same way you add any other module:

- Click **+ Add another module** on the right side of your module, search for "Router" in the search field, and select **Router** from the results.

While the right-click option is recommended when you need to place a router between two existing modules, this alternative method adds the router at the end of your scenario. This is useful when building a scenario from scratch, but requires additional reconfiguration when working with existing modules.
:::
::::

:::WorkflowBlockItem
Next, hover over the router and click the **+&#x20;**&#x69;con that appears. This creates a second route that branches from the router.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Q9Wb8dj152H-LDeQUlels-20251103-202436.gif)
:::
:::::

Your scenario now has two routes: the original route to Slack, where all prospects are sent, and a new route that you'll set up in the next step to send only US-based prospects to the mobile app.

:::hint{type="info"}
**Understanding routers&#x20;**

A router is a Make tool that allows you to branch or split your scenario flow into multiple routes:

- Each route after a router can process data differently
- You can add conditions to each route using filters (which we'll cover in [Step 4. Add a filter](docId:0eWrZ3lUZWR1FkC3abgT1))
- You can direct specific data to different destinations based on your requirements
- Routers don't consume credits, making them efficient for complex workflows
:::


[title] Restore and recover scenario
[path] Explore more/Scenarios/

When working on scenarios, changes don't always go as planned. You may need to undo edits, restore previous versions, or troubleshoot after updates.  allows you to restore a manually saved scenario and retrieve unsaved changes. You can use: 

- **Version history** for restoring previously manually saved versions
- **Scenario recovery** for retrieving unsaved changes in case of unexpected session interruptions&#x20;

These features will help you safely build, edit, and maintain your scenarios.

## Version history

Version history lets you access and restore previously saved scenario versions for up to 60 days. It helps you revert unwanted changes, troubleshoot errors, and safely experiment with new configurations.&#x20;

### When to use Version history

Saving scenario versions manually can help you in many cases:

- **Building or expanding a scenario**

:::Paragraph{indent="1"}
When creating or modifying a scenario, you may experiment with different routing logic, modules, filters, or mappings. Saving a baseline version before experimenting lets you safely test changes and easily revert if something doesn't work. 
:::

- **Fixing a broken automation after changes**

:::Paragraph{indent="1"}
Updates to modules, filters, or mappings can sometimes cause a scenario to stop working or produce incorrect results. This is particularly important if the automation supports critical business processes. Restoring a previous version from when the scenario was working correctly helps you quickly fix the problem and investigate later what caused the issue.  
:::

- **Rolling back unwanted changes**

:::Paragraph{indent="1"}
There’s no undo button for scenarios in Make. By saving your scenario regularly, you can restore a previous state in case you accidentally delete a module, filter, or tool, or change module settings or mappings.
:::

- **Working in a team**

:::Paragraph{indent="1"}
When multiple team members work on the same scenario, changes can be saved by different users. Version history allows you to track who made updates and restore previous versions if needed.
:::

### Restore scenario from Version history

To restore a manually saved scenario from the **Version history**:

::::WorkflowBlock
:::WorkflowBlockItem
Open your .
:::

:::WorkflowBlockItem
Click the **Version history** icon in the  toolbar.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/PF7R6KogXMf62CpDtvdri-20260316-105452.png" size="80" width="1324" height="174" position="center" darkWidth="1324" darkHeight="174" showCaption="false"}
:::

:::WorkflowBlockItem
In the **Versions** field, select a previous version you want to restore.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/rfJI3E7tcKn--uWJLtf1--20260316-110938.png" size="50" width="1098" height="798" position="center" darkWidth="1098" darkHeight="798" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Restore version**.
:::

:::WorkflowBlockItem
Click the **Save** icon to save the  with the restored version.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/njXrvWe2Z4NSELrXfPfOf-20260316-111253.png" size="60" width="966" height="174" position="center" darkWidth="966" darkHeight="174" showCaption="false"}
:::
::::

:::hint{type="warning"}
The restored version of the  is not automatically saved. If you wish to save the restored version of the , you have to do so manually, as described in step 5.
:::

## Scenario recovery

Scenario recovery allows you to retrieve unsaved changes to a scenario from a blueprint that is automatically saved in the background while you work in Scenario Builder.

### When to use Scenario recovery

Scenario recovery helps you retrieve the changes you haven't saved manually in case of unexpected user session interruptions, such as a browser crash, an internet disconnect, a power outage, or when you accidentally closed the tab.

When you reopen a scenario, Make compares the latest automatically saved blueprint and the latest manually saved version. If they differ, you will be prompted to recover the most recent changes.  &#x20;

:::hint{type="warning"}
Scenario recovery is not an autosave feature. It only helps retrieve unsaved changes after a session interruption. After recovering the changes, you still need to **manually** save the scenario.&#x20;
:::

### Retrieve unsaved changes from blueprint

To retrieve unsaved changes from an automatically saved blueprint:

:::::WorkflowBlock
::::WorkflowBlockItem
Open the scenario.

:::hint{type="info"}
If it's a new scenario that has never been saved, click **+Create scenario.**
:::
::::

:::WorkflowBlockItem
If unsaved changes are detected, a dialog window will appear displaying: &#x20;

- A list of changes
- A scenario preview
- The date of the latest blueprint version&#x20;
:::

:::WorkflowBlockItem
Click **Recover**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/-m6aBSS0rtdls_wmzaRoK-20260313-160421.png)
:::

:::WorkflowBlockItem
A confirmation message will appear in the bottom-right corner.
:::

:::WorkflowBlockItem
Click **Save** in the Scenario toolbar to keep the recovered changes.
:::
:::::

Your recovered scenario will be saved. You can access it in the **Version** **history**.&#x20;

### Restore a recovered scenario from Version history

:::hint{type="warning"}
If you close the scenario recovery dialog or click **Not** **now:**

- The recovered blueprint remains temporarily available in the Version history.&#x20;
- It will be permanently deleted once you manually save a new scenario version.

If you continue editing without saving the recovered scenario and another interruption occurs, a new blueprint will overwrite the previous one.

To avoid losing your changes, recover and save the scenario as soon as you reopen it.
:::

To restore a recovered version from the Version history:

::::WorkflowBlock
:::WorkflowBlockItem
Click the **Version history** icon in the  toolbar.
:::

:::WorkflowBlockItem
In the **Versions** field, select the latest version marked as `Recovered`.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/EYssizqfhOfsLXv7OUzao-20260316-154234.png" size="50" width="1059" height="771" position="center" darkWidth="1059" darkHeight="771" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Restore version**.
:::

:::WorkflowBlockItem
Click the **Save** icon to save the  from the recovered version.
:::
::::

Your recovered scenario will be saved. You can access it in the **Version** **history**.&#x20;

:::hint{type="warning"}
Always save the scenario after restoring a recovered version. Otherwise, you can lose all the recovered changes.&#x20;
:::


[title] Delete a scenario
[path] Key concepts/Scenarios & connections/

Delete a  by moving it to **Trash** in the **Scenarios&#x20;**&#x74;ab. You can restore it from **Trash&#x20;**&#x74;o move it back to the scenarios list.

## Move a scenario to Trash

When you move a scenario to **Trash**,  stores it for 30 days before permanently deleting it.&#x20;

To move a scenario to **Trash**:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Scenarios**.
:::

:::WorkflowBlockItem
Find the scenario you want to delete, and click the three-dot menu next to it.
:::

:::WorkflowBlockItem
Click **Move to trash**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ezFXtnZWRgPuNsuP8gbB5_move-to-trash.png)
:::

:::WorkflowBlockItem
Click **Move to trash&#x20;**&#x74;o confirm.&#x20;
:::
::::

You've now moved the scenario to **Trash**.&#x20;

To check when  will permanently delete that , see the date next to the  name. You can restore the  at any time before then.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/yNzTohYtSNxFVSSmePZPa_permanent-deletion-date.png)

## Restore a scenario from Trash

Restoring a scenario moves it back to your  list.&#x20;

To restore a scenario:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, **Scenarios.&#x20;**
:::

:::WorkflowBlockItem
In the submenu, click **Trash**.
:::

:::WorkflowBlockItem
Find the scenario you want to restore, and click **Restore**.
:::

:::WorkflowBlockItem
Click **Restore** to confirm.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/wbJivVONPF0HJlT3b1e-h_restore.png)
:::
::::

You've restored the scenario. Before running the scenario, you may need to choose where to start and reconnect any webhooks.&#x20;

[title] Custom scenario properties
[path] Explore more/Scenarios/

:::hint{type="info"}
This feature is available to Enterprise customers.
:::

To help organize and sort , you can use custom  properties to add customizable metadata. The properties you create appear on the  detail page and also in sortable columns in a table view of your . You can add as many custom properties as you like and edit which properties appear in your table view.

All organization members can view and use custom  properties. This includes using custom properties to filter the table view of .

For all properties, you can define the following:

- **Name** - a descriptive name used as a unique identifier that only appears when you manage your custom properties.
- **Label** - the name visible on the table view and detail page.
- **Hint text** - a short message you add to help your organization members use your custom property.
- **Field type** - the property type. For example, dropdown or boolean.
- **Required** - select **Yes** to make a property mandatory to include when applying custom properties to a .

Custom  properties support the following field types:

- **Short text** - up to 200 characters; useful for email addresses and URLs.
- **Long text** - up to 1,000 characters; supports multiple lines.
- **Number** - supports integers.
- **Boolean** - a yes/no value that appears as radio buttons.
- **Date** - date and time according to [ISO 8601.](https://en.wikipedia.org/wiki/ISO_8601)
- **Dropdown** - a list of items where users can select only one.
- **Multichoice** - a list of items where users can select multiple values.

## Create custom properties

Your organization dashboard has a **Scenario properties** tab where you can create and manage your custom properties.

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.
:::

:::WorkflowBlockItem
Switch to the **Scenario properties** tab.
:::

:::WorkflowBlockItem
Click **+Add property**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/zbnyDTSnaU_G6W33WIvvq-20251006-121758.png)
:::

:::WorkflowBlockItem
In the **Add custom property** dialog box, enter and select your information for each field. Click **Save** to create your custom property.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/8cQHVIWkk7pK-Q8yAfnUg-20251006-121833.png" size="50" width="878" height="1284" position="center" showCaption="false"}
:::
::::

Your custom property appears on the list on the **Scenario properties** tab.

:::hint{type="info"}
Only organization owners and admins can create and manage custom properties.
:::

## Use custom Make properties

All organization members can:

- Apply and edit custom properties to Make.
- Use custom properties to filter and sort the Make list.

### Apply and edit custom scenario properties

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Scenarios**.
:::

:::WorkflowBlockItem
Click the three dots next to the  whose custom properties you want to edit.
:::

:::WorkflowBlockItem
Select **Edit custom properties**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/QaRvPuVmVBEnuVk7EjJQ4-20251006-122355.png" size="80" width="2650" height="828" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
In the dialog box, edit your scenario properties
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

:::hint{type="info"}
You can also apply and edit custom properties from the  detail page.
:::

### Filter the scenario list&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Scenarios**.
:::

:::WorkflowBlockItem
Click **Table** to switch to the table view.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/njp2_c-6jqhDyNFx2VBq7-20251006-122713.png" size="78" width="2068" height="252" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click the icon next to the **Filter**, and select the properties you want to see in the table.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/cZWBZykhM9Rxw0WcVRVWC-20251006-123003.png" size="30" width="556" height="846" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Apply**.
:::
::::

### Sort the scenario list

By default,  are sorted by their names in alphabetical order, with active  at the top of the list. However, it is possible to change the sorting in both the List and Table views.

From the List view:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Scenarios**.
:::

:::WorkflowBlockItem
Click the **Sort by** button.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/sg7zl4smCS_geEdqWxG4I-20251006-123926.png)
:::

:::WorkflowBlockItem
Select a sorting option. You can sort  by their name or creation date.
:::
::::

From the Table view:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Scenarios**.
:::

:::WorkflowBlockItem
Click **Table** to switch to the table view.
:::

:::WorkflowBlockItem
Click the title header of a column to sort the list by that property. Click again to see a descending order list.
:::
::::

## Manage custom properties

You can edit or delete your custom  properties from the **Scenario properties** tab of your organization dashboard.

### Edit custom properties

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.
:::

:::WorkflowBlockItem
Switch to the **Scenario properties** tab.
:::

:::WorkflowBlockItem
Find the custom property you want to edit and click **Edit.**
:::

:::WorkflowBlockItem
In the dialog box, change the information as needed.
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

A confirmation message appears at the bottom of the screen and your changes appear in the table.

### Delete a custom property

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.
:::

:::WorkflowBlockItem
Switch to the **Scenario properties** tab.
:::

:::WorkflowBlockItem
Find the custom property you want to delete and click the down arrow icon.
:::

:::WorkflowBlockItem
Click **Delete**.
:::
::::

The property disappears from the table.

[title] Expand your scenario
[path] Get started/

Now that you've [created your first scenario](docId\:p5DHtppuOcAGN3DnHoT86) that monitors Google Sheets for new prospects and sends Slack notifications, you can take your scenario further. This guide will walk you through using routers, filters, and aggregators to create targeted notifications that make your automation more effective.

### What you'll build

Your expanded   will:

- Monitor Google Sheets for new prospect entries by the marketing team.
- Send Slack notifications to the sales team when new prospects are added.
- Send mobile notifications to the Sales Manager for US-based prospects.
- Aggregate multiple US prospects into a single notification.


![](https://archbee-image-uploads.s3.amazonaws.com/yjwhINLS3fc-NXg38fV_d-b3Zgg6e6zcQx_vcOn5jjV-20250314-123544.png)

### What you'll need

- Your Make scenario that you created following the steps in [Create your first scenario](docId\:p5DHtppuOcAGN3DnHoT86)&#x20;
- Make mobile app ([iOS](https://apps.apple.com/app/integromat/id1178593383) / [Android](https://play.google.com/store/apps/details?id=com.integromat.app))

Here's a preview of what your expanded  will look like:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/9YuM0wwaHQ5EfIyRrskY_-20251104-103047.png)


[title] Data & mapping
[path] Key concepts/

Learn about mapping and working with data in these articles:

::::LinkArray{contentSource="DOCS" sourceParentDocId="w1uRU5JD4JyDMBf0K8RaS" childrenDocs="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]" itemsPerRow="2" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/7iJFgPDVDthMzCQjXm3rY_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="R7A5-3xRImmXewR_zfoJu" displayMode="CARD" docSeoDescription="Learn about data types, collections, and arrays, and see how Make validates and converts data"}
[Item data types](docId\:R7A5-3xRImmXewR_zfoJu)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/4vkDK6AFGxP9Xd1sZdBup_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="IhFBo_As3zrC346CWrMmO" displayMode="CARD" docSeoDescription="Explore how Make handles data mismatches and when it can automatically convert it into a different type"}
[Type coercion](docId\:IhFBo_As3zrC346CWrMmO)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/n_NIp-tfn-DcQET7-v7-H_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="upfwoZsCC5SoIXR2954z2" displayMode="CARD" docSeoDescription="Discover how to map items between modules to move your data from one app to another"}
[Mapping](docId\:upfwoZsCC5SoIXR2954z2)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/5UT0rCZ7w7L0Vo7Q9DPZ9_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="TOeIVU0dBv44bMRjCMliC" displayMode="CARD" docSeoDescription="Manage data flow between modules with filters and operators, and copy them"}
[Filtering](docId\:TOeIVU0dBv44bMRjCMliC)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/070RMWVbgE3FkKMR88o7Q_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="WohDzDDIOV0Ly51gr9Dgy" displayMode="CARD" docSeoDescription="Understand how to map elements of simple and complex arrays to pass specific data"}
[Mapping arrays](docId\:WohDzDDIOV0Ly51gr9Dgy)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/OoiUJgdjCTv3dEFFtQKFV_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="1q0M9QTeaEa9iQPjCtekN" displayMode="CARD" docSeoDescription="Learn how Make handles files and how to map file names and actual content"}
[Working with files](docId:1q0M9QTeaEa9iQPjCtekN)
:::
::::


[title] Explore more
[path] /

Discover powerful tools and features to automate without limits:

::::LinkArray{contentSource="DOCS" sourceParentDocId="BHoCuk5ZSXs42dI9qjDVq" childrenDocs="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]" itemsPerRow="2" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/_Q2JjY8D7vKNXHhhTKGkD_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="NwcQSOf2t1g5BRd_IeG0W" displayMode="CARD" docSeoDescription="Dive deeper into scenario capabilities to build on the next level"}
[Scenarios](docId\:NwcQSOf2t1g5BRd_IeG0W)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/r0T9N4neFLFGhx_7Rn4F-_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="QEEtWgkpayudp_8hQVghk" displayMode="CARD" docSeoDescription="Find more connection options including our on-premise agent "}
[Connections](docId\:QEEtWgkpayudp_8hQVghk)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/3tE-iMVzVN_Wa_rpmik9L_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="xcvWa8ORECqG7qOwIAFUe" displayMode="CARD" docSeoDescription="Build complex scenarios with the help of these advanced tools"}
[Tools](docId\:xcvWa8ORECqG7qOwIAFUe)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/jRXeaaELzmvoHPgn9Q6x6_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="itHXaUhg0A2HMw4QwXcf0" displayMode="CARD" docSeoDescription="Transform and format data using our range of functions"}
[Functions](docId\:itHXaUhg0A2HMw4QwXcf0)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/jRXeaaELzmvoHPgn9Q6x6_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="i0tD0cDVYpuwI_WCvxoYj" displayMode="CARD" docSeoDescription="Discover a variety of methods to secure your data in Make."}
[Securing data with Make](docId\:i0tD0cDVYpuwI_WCvxoYj)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/c-mI7WNxplJ2W4bc-MCSD_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="F-qxwIMFYM0ND2sA6NAHR" displayMode="CARD" docSeoDescription="Learn how to use Make’s built-in database tool to store and manage data"}
[Data stores](docId\:F-qxwIMFYM0ND2sA6NAHR)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/oYJgVzoJhBp3biZUS7VIY_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="aJnLpqzcDARgN4AuHbHdF" displayMode="CARD" docSeoDescription="Discover the Make DevTool to debug your scenarios like a pro"}
[Developers](docId\:aJnLpqzcDARgN4AuHbHdF)
:::
::::


[title] Type coercion
[path] Key concepts/Data & mapping/

This document describes how  behaves in situations when it receives values in expected and unexpected data formats.

## When array is expected:

| **Received** | **Description**                                                                                                                        |
| ------------ | -------------------------------------------------------------------------------------------------------------------------------------- |
| **array**    | The value is handed over unchanged.                                                                                                    |
| **other**    | If the received value is not of the array type,  will create an array and the first (and the only) element will be the received value. |

## When Boolean is expected:

| **Received** | **Description**                                                                                                                   |
| ------------ | --------------------------------------------------------------------------------------------------------------------------------- |
| **boolean**  | The value is handed over unchanged.                                                                                               |
| **number**   | The value is converted to logical `Yes`, even if the value is `0`                                                                 |
| **text**     | If the value is equal to `false` or the value is empty, it is converted to logical `No`. If not, it is converted to logical `Yes` |
| **other**    | The value is converted to logical `Yes` whenever the received value exists (is not `null`).                                       |

## When Buffer is expected:

| **Received** | **Description**                                                                                                                                                                                                                               |
| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **buffer**   | The value is handed over unchanged only if the codepage is as expected. If the `codepage` differs,  will try to convert the received value to the requested `codepage`. If this conversion is not supported,  will return a validation error. |
| **boolean**  | The value is converted to text (`true`/`false`) and then to binary data following the steps mentioned above for converting to **text**.                                                                                                       |
| **date**     | The value is converted to ISO 8601 text and then to binary data following the steps mentioned for converting to **text**.                                                                                                                     |
| **number**   | The value is converted to text and then to binary data following the steps mentioned above for converting to **text**.                                                                                                                        |
| **text**     | The value is converted to binary data and encoded as expected. If the expected encoding is not specified, `utf8` encoding will be used.                                                                                                       |
| **other**    |  returns a validation error.                                                                                                                                                                                                                  |

## When Collection is expected:

| **Received**   | **Description**                     |
| -------------- | ----------------------------------- |
| **collection** | The value is handed over unchanged. |
| **other**      |  returns a validation error.        |

## When Date is expected:

| **Received** | **Description**                                                                                                                                                                                                                                                                                |
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **date**     | The value is handed over unchanged.                                                                                                                                                                                                                                                            |
| **text**     |  will try to convert the text to a date. If the conversion fails, it will return a validation error. Date must contain day, month and year. Date may contain time and time zone. Default time zone is based on your settings. See these [examples](https://help.make.com/type-coercion#RNPRI). |
| **number**   |  will treat the number as milliseconds since Jan 01 1970 (UTC) and convert it to a corresponding date.                                                                                                                                                                                         |
| **other**    |  returns a validation error.                                                                                                                                                                                                                                                                   |

:::ExpandableHeading
### Examples of date format&#x20;

- `2016-06-20T17:26:44.356Z`
- `2016-06-20 19:26:44 GMT+02:00`
- `2016-06-20 19:26+0200`
- `2016-06-20 17:26:44`
- `2016-06-20`
- `2016/06/20 17:26:44`
- `2016/06/20 19:26:44+02:00`
- `2016/06/20 17:26`
- `2016/06/20 5:26 PM`
- `2016/06/20`
- `06/20/2016 17:26:44`
- `06/20/2016 19:26:44+02:00`
- `06/20/2016 17:26`
- `06/20/2016 5:26 PM`
- `06/20/2016`
- `20.6.2016 17:26:44`
- `20.6.2016 19:26:44+02:00`
- `20.6.2016 19:26:44+02:00`
- `20.6.2016`
:::

## When Number is expected:

| **Received** | **Description**                                                                                        |
| ------------ | ------------------------------------------------------------------------------------------------------ |
| **number**   | The value is handed over unchanged.                                                                    |
| **text**     |  will try to convert the text to a number. If the conversion fails, it will return a validation error. |
| **other**    |  returns a validation error.                                                                           |

## When Text is expected:

| **Received**   | **Description**                                                                                                             |
| -------------- | --------------------------------------------------------------------------------------------------------------------------- |
| **text**       | The value is handed over unchanged.                                                                                         |
| **array**      | If the given array supports conversion to text, the value will be converted. If not,  will return a validation error.       |
| **collection** | The value is converted to a JSON string. An array of collections is converted separately to a comma-separated list.         |
| **boolean**    | The value is converted to text (`true`/`false`).                                                                            |
| **buffer**     | If text encoding is specified for binary data, the value will be converted to text. If not,  will return a validation error |
| **date**       | The value is converted to ISO 8601 text.                                                                                    |
| **number**     | The value is converted to text.                                                                                             |
| **other**      |  returns a validation error.                                                                                                |

## When Time is expected:

| **Received** | **Description**                                                                                                              |
| ------------ | ---------------------------------------------------------------------------------------------------------------------------- |
| **time**     | The value is handed over unchanged.                                                                                          |
| **text**     |  will try to convert time to the hours\:minutes\:seconds format. If the conversion fails, it will return a validation error. |
| **other**    |  returns a validation error.                                                                                                 |


[title] Keys and certificates
[path] Explore more/Connections/

Some apps in Make require you to use private or public keys or certificates for secure authentication and data protection. You have to add them in the Scenario Builder in the module settings of the app that requires a key or a certificate.&#x20;

## Keys and keychains

Keys are used by the [Encryptor](docId\:wUWoc-qtjewGHpYkXY9Zb) app in its AES Encrypt (advanced), AES Decrypt (advanced), Create digital signature, Decrypt a PGP message, and Encrypt a PGP message modules.

The [SSH](https://apps.make.com/ssh) app also allows using private keys to create the connection.&#x20;

Although a different type of key, the [HTTP](https://apps.make.com/http) app also saves the credentials you provide for making an HTTP request as a keychain for the API key and Basic Auth authentication types.

### Add a key&#x20;

You should add the keys in the module settings when an app's module requires a public or private key.&#x20;

Let's take the **Encryptor > AES Encrypt (advanced)** module as an example. To add a key there, you will:

::::WorkflowBlock
:::WorkflowBlockItem
Create a new scenario or open an existing one.
:::

:::WorkflowBlockItem
Add the **Encryptor > AES Encrypt (advanced)** module.&#x20;
:::

:::WorkflowBlockItem
In the **Key** field, click **Create a keychain**.&#x20;
:::

:::WorkflowBlockItem
In the **Add new keychain** window, enter your key and other details and click **Create**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/0hXykH-85QS6m7BEi03w3-20251202-095309.png" size="60" width="1572" height="1218" position="center" showCaption="false"}
:::
::::

Once you create it and save the module settings, the key is saved in the **Keys** section. There, you can manage all the created keys.

### Edit or delete a key

To edit a key:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Credentials**, and switch to **Keys.**﻿

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/fiD5I5lPGREgAOLw8p7tq-20260210-123211.png" size="50" width="1208" height="946" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click the **three dots > Edit&#x20;**&#x6E;ext to the required key or keychain.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/aauSHM18954HHi65JHPKt-20251202-103019.png)
:::

:::WorkflowBlockItem
You will see a form where you can edit the key and its details. Once you make the edits, click **Save**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/tG34dgn3X83gDukKgFdg4-20251202-101252.png" size="40" width="774" height="630" position="center" showCaption="false"}
:::
::::

Make applies the saved changes immediately. After confirming, the key is updated in all the modules where it's used.

To delete a key:

:::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Credentials**, and switch to **Keys.**﻿
:::

:::WorkflowBlockItem
Click the **three dots > Delete&#x20;**&#x6E;ext to the required key or keychain.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/uVefhQk4BavSjYWBRbX70-20251202-103518.png)
:::

::::WorkflowBlockItem
In a pop-up window, click **Delete** to confirm.

:::hint{type="info"}
If the key is used in scenario(s), a warning will appear showing the scenario name(s). Click **OK** to confirm the deletion.
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/EfA9PGmNS4kxg2lAZpXoL-20251218-092615.png" size="40" width="790" height="414" position="center" showCaption="false"}
::::
:::::

After confirming, the key is deleted from all the modules where it's used.

## Certificates

You may use certificates in the SSH app and for [configuring SSO](https://help.make.com/google-saml#7h2Hk) in Make.&#x20;

### Add a certificate

Let's take the **SSH > Execute a command** module as an example. To add a certificate there, you will:

::::WorkflowBlock
:::WorkflowBlockItem
Create a new scenario or open an existing one.
:::

:::WorkflowBlockItem
Add the **SSH > Execute a command** module.&#x20;
:::

:::WorkflowBlockItem
For a certificate:

1. In the **Connection** field, click **Create a connection**.&#x20;
2. In the **Auth type** field of the next window, select **Username** **and key**.&#x20;
3. In the **Private** **key** field, click **Extract**.
4. In the **Extract** field, choose **Certificate**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/LcQB-ID2242bd5HZFAkoc-20251203-090444.png)
:::

:::WorkflowBlockItem
Upload the certificate, add the **Password,** and click **Save**.
:::

:::WorkflowBlockItem
Then configure all the module fields.&#x20;
:::
::::

## Ways of inserting keys and certificates

There are two ways of inserting a key or certificate:

- Direct insert
- Extract from the file (P12, PFX or PEM)&#x20;

### Direct insert

With a direct insert, you just copy the key and paste it into the required field. For example, for **RSA PRIVATE KEY&#x20;**&#x69;n the **SSH > Execute a command** module:

::Image[****]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/TnHpxcVoEQBdtdUwd_dmd-20251203-090101.png" size="40" width="700" height="902" position="center" showCaption="false"}

:::hint{type="info"}
OPENSSH PRIVATE KEY is not supported. This has to be converted using the following command in Terminal: `ssh-keygen -p -m PEM -f <pathToTheKey>`. For Windows, you can use the PuTTy key generator.
:::

### Extract from the file (P12, PFX or PEM)&#x20;

To extract a Private Key or a Certificate, you need to use the key extraction function. This will also allow you to extract the key from encrypted files.

The supported file formats are **P12**, **PFX**, and **PEM**.&#x20;

Let's take the **SSH > Execute a command** module as an example. To extract a Private Key or a Certificate, you will:

:::::WorkflowBlock
:::WorkflowBlockItem
Create a new scenario or open an existing one.
:::

:::WorkflowBlockItem
Add the **SSH > Execute a command** module.&#x20;
:::

:::WorkflowBlockItem
In the **Connection** field, click **Create a connection**.&#x20;
:::

:::WorkflowBlockItem
In the **Auth type** field of the next window, select **Username** **and key**.&#x20;
:::

:::WorkflowBlockItem
In the **Private** **key** field, click **Extract**.
:::

:::WorkflowBlockItem
In the **Extract** field, choos&#x65;**&#x20;Private key.&#x20;**
:::

:::WorkflowBlockItem
Click the **Choose File** button.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/ykb9A_KZPWTm7-kC1rcCe-20251203-092720.png" size="70" width="1408" height="1082" position="center" showCaption="false"}
:::

::::WorkflowBlockItem
Browse and **Open** the required file. For example, when you create a Linux Based EC2 instance on AWS, you receive the login credentials in the PEM file:

:::BlockQuote
\[username\@hostname aws]$ ls&#x20;
IMTExample.pem&#x20;
\[username\@hostname aws]$
:::

The file contains the private key that is used to connect to the instance.

:::BlockQuote
\[username\@hostname aws]$ vat IMTExample.pem&#x20;
\-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAz7F3k1q2x9K8JfN8u1wPp8Yk4Q2Lw3mA9bR1q2zZ+/QeR9Lh
J3Kf4wQb7vR9kP2n4x1pQ2XhQ9L0vQj3F8tUzZxPnG1kZ0lMnU8BtR5KJ
.........................................................
4sZt3JmU7YwP8Qj3mNqP9jLw2yZk8NwQvH2Rr0YpM5Xk3tPw8mXl0QxNr0aY9uTn
\-----END RSA PRIVATE KEY-----
:::

This is a private key you will extract from a PEM file.
::::

:::WorkflowBlockItem
Once you extract the file, enter the password in the respective field, if needed.
:::

:::WorkflowBlockItem
Click **Save**.
:::
:::::

The private key will be exported from your file and will be used to connect to the required service.

[title] Update legacy modules with new modules
[path] Key concepts/Apps & modules/

:::hint{type="info"}
This document provides instructions for updating legacy modules manually. To automate this process, please use the [Module Migrator](https://apps.make.com/module-migrator) instead.&#x20;

**Important:&#x20;**&#x4D;igration is not supported for all apps. You can view the full list of currently supported apps in the Module Migrator itself.
:::

Most  apps rely on external services, particularly their APIs (Application Programming Interfaces). As services evolve, so do their APIs. When services release a new API version, their  app eventually becomes deprecated and shuts down. The result is a legacy (outdated) module in .&#x20;

 regularly implements new app versions that align with services' latest APIs. To keep your  running, make sure to update legacy modules to the latest versions.

Here's a step-by-step guide to updating legacy modules in , using Google Drive as an example.

:::::WorkflowBlock
:::WorkflowBlockItem
### Step 1. Identify the legacy &#x20;

A green double arrow icon (below) indicates a legacy module:&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/Q31995ot4OZzZRNwsMBrJ-0gh1P6xxDoRMomFye7ut1-20250416-090127.jpg" size="38" width="347" height="364" position="center" showCaption="false"}
:::

::::WorkflowBlockItem
### Step 2. Clone the legacy &#x20;

Clone the  to make a copy. You will use this scenario from now on.&#x20;

1. In the  diagram, open the **Options&#x20;**&#x64;rop-down menu in the top-right corner.&#x20;
2. Select **Clone**. &#x20;
3. In **Name of new scenario**, name the copied .&#x20;
4. To enable the  to pick up where its old version left off, select **Yes&#x20;**&#x69;&#x6E;**&#x20;Keep the states of any modules the same as those being duplicated**.&#x20;
5. Click **Save**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/Q31995ot4OZzZRNwsMBrJ-GMCHjY6DhjEo2Te1tSHfx-20250416-122940.gif)

:::hint{type="info"}
We recommend opening the legacy  in a new tab to easily compare its configuration settings with those of the new .&#x20;
:::
::::

::::WorkflowBlockItem
### Step 3. Access and select new modules

1. In your new (copied) , choose the legacy module you need to upgrade and click on its green double arrow icon.
2. Click **Show me new modules** and select the corresponding module. The new module will appear in the scenario builder, but remains unconnected.

:::hint{type="info"}
In the new modules list, some modules may no longer be available. In this case, choose the next-best fit.&#x20;
:::
::::

:::WorkflowBlockItem
### Step 4. Update the trigger module

1. Move the clock icon from the legacy module to the new module.&#x20;
2. Unlink the legacy module and subsequent module, and link the new module with the desired module.&#x20;
3. Set the values of the new module. Keep in mind that some fields may be different.

![](https://archbee-image-uploads.s3.amazonaws.com/Q31995ot4OZzZRNwsMBrJ-VSuLDfoXvWIfT94xMOVaV-20250416-122354.gif)
:::

:::WorkflowBlockItem
### Step 5. Update other modules

1. Update the next legacy module, following the same process outlined in Step 3 (Access and Select New Modules).
2. Connect the new module to (after) its legacy module.&#x20;
3. Set the values of the new module. If any items are missing in the mapping panel, see our [Mapping](docId\:upfwoZsCC5SoIXR2954z2) documentation.
4. Repeat this process for any remaining legacy modules.

![](https://archbee-image-uploads.s3.amazonaws.com/Q31995ot4OZzZRNwsMBrJ-YAob4OygEiJCLGbjVim7z-20250416-115639.gif)
:::

:::WorkflowBlockItem
### Step 6. Clean up and finalize

1. Remove all legacy modules from your new  with right-click and **Delete module**.&#x20;
2. Click **Save&#x20;**&#x74;o save your .&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/Q31995ot4OZzZRNwsMBrJ-3GBsh4kJcJ07oUk9lu-ZG-20250416-121538.gif)
:::
:::::

You have now updated your legacy modules to their newest versions. This process ensures your  continue to run properly as external services evolve their APIs.

[title] Connect to Google services using a custom OAuth client
[path] Explore more/Connections/

aTo connect some restricted Google services, like Google Drive or Google Sheet&#x73;*,* to Make, you need to create your own project in Google Cloud Platform and a custom OAuth client.&#x20;

The following procedure is intended for:

- **Personal use** (*@gmail* and *@googlemail.com* users)
- **Internal use** (Google Workspace users who prefer to use a custom OAuth client)

To connect, you must have a [Google account](https://accounts.google.com/signin).&#x20;

## Configure a Google Cloud Platform project

To configure a Google Cloud Platform project, follow these five steps:&#x20;

1. [Create a Google Cloud Platform project](docId\:w5UPQrHUgxZCKEtiFp7la)
2. [Enable APIs](docId\:w5UPQrHUgxZCKEtiFp7la)
3. [Configure your OAuth consent screen](docId\:w5UPQrHUgxZCKEtiFp7la)
4. [Create your client credentials](docId\:w5UPQrHUgxZCKEtiFp7la)
5. [Connect to Google services using a custom OAuth client](docId\:w5UPQrHUgxZCKEtiFp7la)

### Create a Google Cloud Platform project

To create a project in your Google Cloud console:

:::::WorkflowBlock
:::WorkflowBlockItem
Log in to the [Google Cloud Platform](https://console.cloud.google.com/) using your Google credentials.
:::

::::WorkflowBlockItem
On the welcome page, click **Create or select a project.**

::Image[****]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/iUUfJBhljqxbp2J37P6Zh-20250912-100329.png" size="80" width="1870" height="1220" position="center" darkWidth="1870" darkHeight="1220" showCaption="false"}

:::hint{type="warning"}
If you've already created projects in your Google Cloud Platform, you will be redirected to the latest project upon login. To create a new one, click the project name in the upper-left corner.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/9FvGpwwR3OpuC6WPd3lR9-20260312-142428.png" size="70" width="1442" height="490" position="center" darkWidth="1442" darkHeight="490" showCaption="false"}
:::
::::

:::WorkflowBlockItem
In the next window, click **New project&#x20;**&#x69;n the upper-right corner.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/TwqnY3iDQMsafLpxzv4JU-20250912-100529.png" size="70" width="1244" height="364" darkWidth="1244" darkHeight="364" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Change the default **Project name&#x20;**&#x61;nd **Project ID**, if needed. Select the **Location** for your project, and click **Create**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/HoHbDak4T8cEzz5BVWV---20250912-102510.png" size="40" width="878" height="636" darkWidth="878" darkHeight="636" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
On the top panel, next to the Google Cloud logo, click **Select a project**.
:::

:::WorkflowBlockItem
In the next window, click the project you just created.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/jIdNcvAxzEUP22emCBrlp-20250912-103458.png" size="80" width="1736" height="1156" position="center" darkWidth="1736" darkHeight="1156" showCaption="false"}
:::
:::::

You'll now see the **Google Cloud Platform project** you've created on the top panel, next to the Google Cloud logo.&#x20;

:::hint{type="info"}
To create a new project or work in the existing one, you need to have the `serviceusage.services.enable` permission. If you don’t have this permission, ask the Google Cloud Platform Project Owner or Project IAM Admin to grant it to you.
:::

### Enable APIs

To turn on the APIs your Google application needs:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar of the Google Cloud Platform, click **APIs & Services** > **Library**.
:::

:::WorkflowBlockItem
Search for the API you need for your project (e.g., Google Sheets, Google Drive, etc.). For the information on APIs for particular apps, look for the required app in the [Apps Documentation](https://apps.make.com/).&#x20;
:::

:::WorkflowBlockItem
Click the relevant API (e.g., Google Sheets API):&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/TRPadVqOMtq32fSCK5Hd3-20251119-161147.png" size="70" width="1906" height="730" position="center" darkWidth="1906" darkHeight="730" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Enable**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/-RVq7HyCeesc1C1t0hKRm-20251119-110119.png" size="40" width="614" height="340" position="center" darkWidth="614" darkHeight="340" showCaption="false"}
:::
::::

Your API is now enabled.

### Configure your OAuth consent screen

To set up the OAuth consent screen:

:::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar of the Google Cloud Platform, click **APIs & Services** > **OAuth consent screen**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/szrwOEJWw7Ei-b7MSgGJt-20250912-111324.png" size="40" width="730" height="1298" position="center" darkWidth="730" darkHeight="1298" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Get Started**.
:::

:::WorkflowBlockItem
In the **Overview** section:

- Under **App information**, enter *Make* as the app name, enter your Gmail address, and click **Next**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/iFvukbKbVakiQPqmsvre8-20250912-112021.png" size="40" width="870" height="972" position="center" darkWidth="870" darkHeight="972" showCaption="false"}

- Under **Audience**, select **External**, and click **Next**. For more information regarding user types, refer to [Google's Exceptions to verification requirements documentation](https://support.google.com/cloud/answer/13463073?visit_id=639160909375050501-1878988128\&rd=1).
- Under **Contact Information**, enter your Gmail address, and click **Next**.
- Under **Finish**, agree to the [Google API Services User Data Policy](https://developers.google.com/terms/api-services-user-data-policy?authuser=1), and click **Continue**, then **Create**.
- In the next window, click **Create OAuth Client**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/gWhkTq2f_h5To-n_byZ7b-20250912-114156.png" size="70" width="2764" height="338" position="center" darkWidth="2764" darkHeight="338" showCaption="false" indent="2"}

- You'll be redirected to the **Clients** tab. You can skip it for now or refer to the [Create your client credentials](docId\:w5UPQrHUgxZCKEtiFp7la) section to configure it.&#x20;
:::

:::WorkflowBlockItem
In the **Branding** section:&#x20;

- Under **Authorized domains,&#x20;**&#x63;lick **+Add domain.**
- Add `make.com` and `integromat.com`.&#x20;
- Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/qyTTXd-f6d-L3Qpue7jgY-20250912-115053.png" size="70" width="1264" height="1286" position="center" darkWidth="1264" darkHeight="1286" showCaption="false"}
:::

::::WorkflowBlockItem
In the **Audience** section:

- Click **Publish app** to update the project status to **In production.&#x20;**
- If you want the project to remain in the **Testing** publishing status, click **+Add users&#x20;**&#x61;nd enter your Gmail address under **Test users.** &#x20;



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/eMmPIQOVjUMtu2KFMZISU-20250912-115725.png" size="70" width="1272" height="1198" position="center" showCaption="false"}

:::hint{type="warning"}
**Publishing Status**

**Testing:** If you keep your project in the **Testing** status, you will be required to reauthorize your connection in Make every week. To avoid weekly reauthorization, update the project status to **In production**.

**In production:** If you update your project to the **In production** status, you will not be required to reauthorize the connection weekly. To do that, go to the **Google Auth Platform**, the **Audience** section, and click **Publish app**. If you see the notice **Needs verification**, you can choose whether to go through the [Google verification process](https://support.google.com/cloud/answer/13463073?authuser=1\&visit_id=638718595933013017-1855034908\&rd=1) for the app or to connect to your unverified app. Currently, connecting to unverified apps works in Make, but we cannot guarantee that Google will allow connections to unverified apps for an indefinite period.

For more information regarding the publishing status, refer to the Publishing status section of [Google's Setting up your OAuth consent screen help](https://support.google.com/cloud/answer/10311615#zippy=).
:::
::::

::::WorkflowBlockItem
In the **Data Access** section:

1. Under **Data Access**, click **Add or remove scopes.**
2. Under **Update selected scopes**, search for and select the required scopes from the list.
3. Alternatively, enter the required scopes one by one and click **Add to table** under **Manually add scopes.**
4. &#x20;Click **Update**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/TY0oxLY3FCNZB-khPTzbU-20251119-160545.png)

:::hint{type="warning"}
For the Google Sheets app, for example, you'd need to add the following scopes:

- `https://www.googleapis.com/auth/spreadsheets`
- `https://www.googleapis.com/auth/drive`

Each app, however, requires its own set of scopes. To find the correct scopes, go to the app's page in the [Apps Documentation](https://apps.make.com/) and refer to the **Configure your OAuth consent screen&#x20;**&#x73;ection.
:::
::::

:::WorkflowBlockItem
Click **Save**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/dtTyqztOypQIdp-_az0iP-20251119-160907.png" size="40" width="716" height="1222" position="center" showCaption="false"}
:::
:::::

Your OAuth consent is now configured.

### Create your client credentials

To generate the Client ID and Client secret needed for authentication:&#x20;

:::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar of the Google Cloud Platform, click **APIs & Services** > **OAuth consent screen**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/szrwOEJWw7Ei-b7MSgGJt-20250912-111324.png" size="40" width="730" height="1298" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Go to the **Clients&#x20;**&#x73;ection, and click **+Create client**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/-1bUMR6Uj2xMDxANLbnHN-20250912-123323.png" size="40" width="830" height="402" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Under **Create OAuth client ID**:&#x20;

- In the **Application type** dropdown, select **Web application**.
- In the **Name** field, update the name of your OAuth client. This will help you identify it in the console afterward.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/mBdU3rr_GENJMNAXSL3gP-20250912-124942.png" size="70" width="1320" height="682" position="center" showCaption="false"}
:::

::::WorkflowBlockItem
Under the **Authorized redirect URIs,&#x20;**&#x63;lick **+ Add URI** and enter the required redirect URI.

:::hint{type="warning"}
For the Google Sheets app, for example, you would need  `https://www.integromat.com/oauth/cb/google/`.&#x20;

Each app, however, requires different Redirect URIs. To find the correct one, go to the app's page in the [Apps Documentation](https://apps.make.com/) and refer to the **Create your client credentials&#x20;**&#x73;ection.
:::

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/roYo5qq3R0lqf3rv8c3MR-20251119-155905.png" size="40" width="810" height="492" position="center" showCaption="false"}
::::

:::WorkflowBlockItem
Click **Create**.
:::

:::WorkflowBlockItem
You'll see a message that the OAuth client has been created. Copy your **Client ID** and **Client secret** values, and store them in a safe place.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/Hw708snAzmYP3oS2oEzFl-20251121-090200.png" size="40" width="1152" height="980" position="center" showCaption="false"}
:::
:::::

You will use these values in the **Client ID** and **Client Secret** fields in Make.

### Establish the connection in Make

To establish the connection in Make:

::::WorkflowBlock
:::WorkflowBlockItem
Log in to your  account, add a Google app module to your , and click **Create a connection**.
:::

:::WorkflowBlockItem
Optional: In the **Connection name** field, enter a name for the connection.
:::

:::WorkflowBlockItem
Switch on th&#x65;**&#x20;Advanced settings** toggle and enter your Google Cloud Platform project client credentials.&#x20;
:::

:::WorkflowBlockItem
Click **Sign in with Google**.
:::

:::WorkflowBlockItem
If prompted, authenticate your account, grant all requested permissions, and confirm access.
:::
::::

You've successfully created the connection and can now use the Google app modules in your . If you want to make changes to your connection in the future, follow the steps [here](https://help.make.com/connect-an-application#tN2pJ).

## Common problems

:::::ExpandableHeading
### Failed to verify connection 'My Google Restricted connection'. Status Code Error: 400

This error message may appear if your connection has expired and is no longer valid. You need to reauthorize the connection.

This error affects **non**-Google Workspace accounts. For more details, please refer to the [Google OAuth documentation](https://developers.google.com/identity/protocols/oauth2#expiration).

Due to Google's updated security policy, unpublished apps can only have a 7-day authorization period. After the OAuth security token expires, the connection is no longer authorized, and any module relying on it will fail.

**Solution 1**

To avoid weekly reauthorization, you can update the publishing status of your project.

If you update your project to the **In production** status, you will not be required to reauthorize the connection weekly.

**To change the status of your project to** **In production**, follow the step 5 explained [here](docId\:w5UPQrHUgxZCKEtiFp7la). Here's a summary:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar of the Google Cloud Platform, click **APIs & Services** > **OAuth consent screen**.
:::

:::WorkflowBlockItem
Switch to the **Audience** section, and click **Publish app** to update the project status to **In production.&#x20;**
:::

:::WorkflowBlockItem
If you see the notice **Needs verification**, you can choose whether to go through the [Google verification process](https://support.google.com/cloud/answer/13463073?visit_id=638357423877979226-2405331664\&rd=1#exceptions-ver-reqts) for the app or to connect to your unverified app. Currently, connecting to unverified apps works in Make, but we cannot guarantee that Google will allow connections to unverified apps for an indefinite period.
:::
::::

**Solution 2**

If you keep your project in the **Testing** status, you will be required to reauthorize your connection in Make every week.

To reauthorize your Google connection:

::::WorkflowBlock
:::WorkflowBlockItem
Log in to Make.
:::

:::WorkflowBlockItem
In the left sidebar, click **Connections**.
:::

:::WorkflowBlockItem
Find your Google connection and click the **Reauthorize** button.
:::
::::
:::::

:::ExpandableHeading
### Error 400: redirect\_uri\_mismatch

This error message can appear if you haven't added the required redirect URIs for your Google app. Verify you're using the required Redirect URIs as explained in step 4  [here](docId\:w5UPQrHUgxZCKEtiFp7la).&#x20;

It may also happen that Google doesn't instantly recognize the Redirect URI used for the authentication. Once verified that you're using the proper Redirect URIs, wait for some time after creating your Google Cloud Platform project. Then, try to connect the Google app with your custom OAuth credentials once again.&#x20;
:::

:::ExpandableHeading
### Error 401: invalid\_client – The OAuth client was not found

This error occurs when the OAuth credentials associated with your Google connection are no longer valid or properly configured. It indicates that the original workspace is tied to a deprecated or outdated Google OAuth client.

**To resove this**:&#x20;

1. **Create a new Google connection**&#x20;
   - In your  workspace, go to **Connections**.&#x20;
   - Follow the authentication flow to create a new connection to Google services. This generates fresh, valid OAuth credentials.&#x20;
2. **Update your scenarios**&#x20;
   - Open your existing  and replace the old, broken Google connection with the newly created one.&#x20;
   - Save the changes to ensure your  run with the updated credentials.&#x20;
3. **Remove the old connection**&#x20;
   - Delete the deprecated connection from your workspace to prevent confusion.
:::

:::ExpandableHeading
### \[403] Access Not Configured

This error message may appear when you haven't enabled the corresponding API in your Google Cloud Platform.

To enable the API, complete the steps explained [here](docId\:w5UPQrHUgxZCKEtiFp7la). If the problem persists, delete the previous connection and connect your Google app to with your OAuth credentials once again.&#x20;
:::

:::ExpandableHeading
### Authorization Error - Error 403: access\_denied

This error message may appear if you keep your Google project in the **Testing** status and haven't added a **Test user** email address associated with the Google account you want to connect to Make as a Test user.

To add the test user or change the status of your app, complete the step 3 explained [here](docId\:w5UPQrHUgxZCKEtiFp7la). Then go to **Connections** in the left sidebar in , and click the **Reauthorize** button. If the problem persists, delete the previous connection and connect your Google app to with your OAuth credentials once again.&#x20;
:::

:::::ExpandableHeading
### Error 403: Insufficient Permission

Verify you've added all the required scopes in the Google Cloud Platform project for the app you're using, as explained in step 6 [here](docId\:w5UPQrHUgxZCKEtiFp7la).&#x20;

Then, reauthorize your Google connection by following these steps:

::::WorkflowBlock
:::WorkflowBlockItem
Log in to Make.
:::

:::WorkflowBlockItem
In the left sidebar, click **Connections**.
:::

:::WorkflowBlockItem
Find your Google connection and click the **Reauthorize** button.
:::
::::
:::::

:::ExpandableHeading
### Error message: It is not possible to use restricted scopes with customer @gmail.com accounts

This error message may appear if you haven't added the required scopes for your Google app.&#x20;

To add the scopes, complete steps 6 and 7, as explained [here](docId\:w5UPQrHUgxZCKEtiFp7la).&#x20;
:::

:::ExpandableHeading
### 100 Logins Limit Per Day Has Been Reached

According to the [Google OAuth 2.0 protocol policy](https://developers.google.com/identity/protocols/oauth2#expiration), there’s a limit of 100 refresh tokens per Google Account per OAuth 2.0 client ID. If the limit is reached, creating a new refresh token automatically invalidates the oldest refresh token without warning. This limit does not apply to service accounts.&#x20;

This happens rarely, but when it does, we recommend creating another OAuth client.
:::


[title] Step 9. Test your scenario
[path] Get started/Create your first scenario/

To make sure that both modules work together, you need to test your scenario.

::::WorkflowBlock
:::WorkflowBlockItem
Right-click the Google Sheets module and select **Choose where to start**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/kPA5Dko4fA2aTJ5JcSnSg-20251103-195921.png)
:::

:::WorkflowBlockItem
Select **All&#x20;**&#x61;nd click **Save.&#x20;**

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/8AfzmHUJiJE7joH5PiB7J-20251103-195945.png)
:::

:::WorkflowBlockItem
In the Scenario Builder toolbar, click the **Run once** button.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/oE82Ng76I6MKDb__bY09Q-20251103-200006.png)
:::

:::WorkflowBlockItem
Check the output bubbles above each module to see the results. The numbers shown in the bubbles indicate how many operations were processed/credits used.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/YAmMhOt61fj9MiYZUzvso-20251103-200037.png)
:::

:::WorkflowBlockItem
Click the output bubble above the Google Sheets module to see all rows processed in the Output section. Since we selected **All** in step 2, it processed all rows in your Google sheet (up to the limit of 20 you set earlier).

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/aj0c3lyR4aqzl9wDZe-Nw-20251103-200056.png)

Click the output bubble above the Slack module to see:&#x20;

- The **Input** information it received from Google Sheets.
- The **Output** information about the Slack message it sent.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/RO1xaCsIDJLUEWOHuEjei-20251103-200132.png)
:::

:::WorkflowBlockItem
Go to your Slack channel and check if the notification appeared correctly.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/sJV9yXJhAvx0rKDOghr61-20250930-143946.png)
:::

:::WorkflowBlockItem
Compare the data in your Slack message with your **Prospects** spreadsheet to ensure all information was transferred correctly.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/yjwhINLS3fc-NXg38fV_d-7a0wwkNHMvLJabbox7xyr-20250323-160801.png)
:::
::::

:::hint{type="info"}
**Understanding bundles**

A bundle is a collection of data delivered together. It can contain a single piece of information (like an email address) or multiple pieces of data (like spreadsheet rows). When you click on the output bubbles, you'll see the bundles that were processed:

- **Input bundle**: Contains the information you entered into the module and data you mapped from previous modules.
- **Output bundle**: Contains the results of the actions taken in the application and any data generated that can be mapped to the next module.
- **Action** modules (like your Slack module in this example) use as many credits as runs needed to process all bundles. If it processes 1 input bundle, it consumes 1 credit.
- **Trigger** modules (like your Google Sheets module) only use 1 credit, even if they output multiple bundles.

For example, if your Google Sheets document has 3 rows and you selected **All**, the Google Sheets module will generate 3 output bundles but only use 1 credit because it's a trigger module. These become input bundles for the Slack module, which processes them and sends 3 messages. The Slack module will use 3 credits because it processes 3 input bundles.
:::


[title] How to track credits
[path] Key concepts/Credits & operations/Credits/

Track your [credit usage](docId\:hh-nrTakEqakBmg63UUiN) to understand which activities consume the most credits and adjust as needed.&#x20;

Several places in  offer a different view of your credit usage. The following outlines where you can track credit usage and the information available.

| **View**             | **Credit usage**                            | **Best for**                                    |
| -------------------- | ------------------------------------------- | ----------------------------------------------- |
| **Dashboard**        | - Average daily credit usage
- Credits left | Overview and trends                             |
| **Subscription**     | * Credits in plan
* Total credits used      | Billing                                         |
| **Credit usage**     | Credits used per run                        | Analyzing run-level usage in all  and AI agents |
| **Scenarios**        | Credits used per                            | Identifying high-usage                          |
| **Scenario diagram** | Credits used in a  <br />                   | Analyzing a scenario's usage in detail          |
| **Scenario Builder** | Credits used per module                     | Analyzing module-level usage and debugging      |
| **Scenario history** | Credits per individual run                  | Analyzing run-level usage in a scenario         |

In the next sections, learn more about where you can track credit usage in .

## Dashboard

**Dashboard&#x20;**&#x74;racks total and daily credit usage for the current billing period. To find it, go to **Org&#x20;**&#x69;n the left sidebar.

At the top, you can view average daily usage, remaining credits, and the date when your credits reset.&#x20;

In **Usage**, you can view your credit usage trend in the current billing period. Hover over **Credits&#x20;**&#x74;o view the credits and extra credits in your plan.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/KRm-PV-ENu8Pdhk1JSYd--20251121-075419.png" size="90" width="1514" height="536" position="center" darkWidth="1514" darkHeight="536" showCaption="false"}

## Subscription

**Subscription&#x20;**&#x74;racks total credits purchased and used in the current billing period. To find it, go to **Org&#x20;**&#x69;n the left sidebar, then click **Subscription** under **My Plan**.&#x20;

In **Credits**, you can view the credits used from the total. You can also buy extra credits or enable extra credits auto-purchasing.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/mjbbehI7uDoAQLPGz00tW-20251121-081008.png" size="90" width="1482" height="456" position="center" darkWidth="1482" darkHeight="456" showCaption="false"}

## Credit usage

**Credit usage&#x20;**&#x74;racks your credit usage per run across all scenarios and AI agents. To find it, go to **Org&#x20;**&#x69;n the left sidebar, then click **Credit Usage&#x20;**&#x75;nder **My Plan**.&#x20;

This table includes the following information:

- **Name:&#x20;**&#x4E;ame of the scenario or AI agent that used credits&#x20;
- **Type:&#x20;**&#x54;ype of feature that used credits, whether a  or an AI agent
- **Credits:** Number of credits used in the run
- **Data transfer:&#x20;**&#x41;mount of data transferred in the run
- **Usage recorded:&#x20;**&#x54;he date and time of the credit usage

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/6qph_luSG_VmpFL-FWMvC-20251121-102817.png" size="90" width="1539" height="527" position="center" darkWidth="1539" darkHeight="527" showCaption="false"}

In the **Name&#x20;**&#x63;olumn, click an item to go to the  history of a specific run and view its details. **Name&#x20;**&#x69;tems are only clickable when the **Type&#x20;**&#x69;s scenario, as AI agent history doesn't exist.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/JHo2fgMLxOjktTSVASuQs-20251121-124809.png" size="90" width="1819" height="783" position="center" darkWidth="1819" darkHeight="783" showCaption="false"}

:::hint{type="info"}
Your pricing plan determines the number of days that credit usage entries are stored. See **Execution log storage (days)** on [Make's pricing page](https://www.make.com/en/pricing).&#x20;
:::

## Credit usage notification

When your organization approaches its credit usage limit, the organization owner and admins receive an email detailing this information.

- At 75% usage, the organization owner and admins will receive an email if your consumption is high in comparison to the amount of time that has elapsed in the month.  For example:
  - If you use 75% of your credits and only 40% of the month has elapsed, you will get a notification email.
  - If you use 75% of your credits and 75% or more of the month has elapsed, you won't get a notification email.
- At 90% usage, the organization owner and admins will always receive an email.
- At 100% usage, the organization owner and admins will always receive an email.

## Scenarios

The  list tracks credit usage by . To find it, go to **Scenarios&#x20;**&#x69;n the left sidebar.

The credit icon next to each  indicates the number of credits used in a  since the last reset (up to the past 30 days).&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/5vPWY7F2eU5ACMazlMh-L-20251121-102134.png" size="90" width="1534" height="580" position="center" darkWidth="1534" darkHeight="580" showCaption="false"}

## Scenario diagram

The scenario diagram tracks total credit usage in a scenario. To find it:

1. Go to **Scenarios&#x20;**&#x69;n the left sidebar.
2. Open a  in the  list.

In **Scenario usage**, you can view the total credits used in a scenario. **History&#x20;**&#x6C;ists individual  runs and their credit usage. Click any run to view it in more detail.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/FfdtHEso97xVBZrm6hRcE-20251121-101044.png" size="90" width="1800" height="995" position="center" darkWidth="1800" darkHeight="995" showCaption="false"}

## Scenario Builder

The  Builder tracks credit usage per module run. To find it:

1. Go to **Scenarios&#x20;**&#x69;n the left sidebar.
2. Open a  in the  list.
3. Click the canvas.&#x20;

When you click **Run once&#x20;**&#x6F;r **Run this module only**, you can view credit usage for the run in the output bubble of a module.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/eMrQj5Na51Ooxm1c20rz4-20251121-101356.png" size="30" width="295" height="315" position="center" darkWidth="295" darkHeight="315" showCaption="false"}

Next to the scenario name, clic&#x6B;**&#x20;Canvas options&#x20;**&#x61;nd toggle the credit usage view on and off.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/Jtobb7hQAFIAeayPY2hGd-20250912-121538.gif" size="50" width="624" height="268" position="center" darkWidth="624" darkHeight="268" showCaption="false"}

## Scenario history

 history tracks credits used per module run. To find it:

1. Go to **Scenarios&#x20;**&#x69;n the left sidebar.
2. Open a  in the scenario list.
3. Click the **History&#x20;**&#x74;ab at the top.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/rEpDxHpgyk-bKHVEFIDQm-20251121-100431.png" size="90" width="1812" height="469" position="center" darkWidth="1812" darkHeight="469" showCaption="false"}

Click **Details&#x20;**&#x74;o view a specific run in more detail.&#x20;

[title] Credential requests
[path] Explore more/Connections/

:::hint{type="info"}
The **Credential requests&#x20;**&#x66;eature is available to official **Make** **Partners** and **Enterprise&#x20;**&#x63;ustomers.&#x20;

Only users with the required permissions and with this feature enabled can create credential requests.&#x20;

See below:&#x20;

- [How to enable the feature](docId\:OktCtQXDZqEVdUDaz3ifh)
- [Who can request credentials](docId\:OktCtQXDZqEVdUDaz3ifh)
:::

Credential requests are a secure, scalable, and user-friendly way to collect connection credentials from third parties.&#x20;

When building automations in Make (e.g., for teammates, other teams, clients, or external partners), builders (requesters) can specify which connections and credentials are required for a scenario and generate a secure request link.&#x20;

Recipients can use this link to provide the requested connection credentials:&#x20;

- If they are not part of the requester's Make organization or team, they are invited to join it with a **Guest** role before they provide the credentials.
- If they are already part of the requester's Make organization, they can provide the credentials directly.

In both cases, recipients can:&#x20;

- See who requested their credentials and how they will be used.
- Retain the ongoing control to revoke, reauthorize, or edit credentials at any time.

:::hint{type="success"}
Login credentials and other authentication data are never exposed through credential requests.&#x20;

The person authorizing the request enters credentials directly in Make to create the connection. This connection can be used to build scenarios, but no one on the requester's side can view, access, or retrieve the user's authentication details (e.g., passwords, API keys, OAuth credentials).&#x20;
:::

## How to enable Credentials requests feature

To enable the feature, each user must submit this [form](https://f.make.com/r/credential-requests).&#x20;

The Customer Care team then verifies the eligibility (Partner or Enterprise account user with a corporate email) and grant acceess to the feature upon approval.

:::hint{type="warning"}
The feature is enabled for a user, not the organization. Once a user has access to the **Credentials** **request** feature, they can use it in any Make organization they are part of, provided that organization is on the Enterprise plan or a Make Partner on any paid plan.

All owners of these organizations will receive an email notification that this member has been granted permission to use the feature in their organization. The same applies to any new organizations the user joins in the future.
:::

All Team Members can check which users have the feature enabled by navigating to **Team > Team members** tab in the left sidebar.

## Who can request credentials

Credential requests are created and sent from the team you're currently working in within your Make organization. Who you can send a request to depends on your team and organization role:

- Team Members can request credentials from any user within their team.
- Team Admins can request credentials from any user within their organization.
- Organization Admins and Owners can request credentials from any user within their organization and from external people. &#x20;

Once the recipient authorizes a request, everyone in the team can use the shared credentials to create connections in the scenarios.

[Audit logs](https://help.make.com/audit-logs) show when and by whom a credential request was created, deleted, or authorized:

- Organization Admins can see this information for the entire organization.
- Team Admins can see this information for their teams.

## Create credential request

:::hint{type="warning"}
To create and send credential requests, you must have this feature enabled.&#x20;
:::

To create a credential request:

:::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Credentials&#x20;**&#x61;nd switch to th&#x65;**&#x20;Credential requests&#x20;**&#x74;ab.
:::

:::WorkflowBlockItem
Click the **+Create request** button.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/bi5VKyGntlFZ6gnAwG6zt-20251212-145428.png)
:::

:::WorkflowBlockItem
In the **Request** **name** field, enter a descriptive name that will help identify the request (e.g., the project or automation name).

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/RPoICvhYGmSqdqkW4kGsm-20260202-095435.png" size="50" width="790" height="290" position="center" showCaption="false"}
:::

::::WorkflowBlockItem
In the **Recipient&#x20;**&#x73;ectio&#x6E;**,&#x20;**&#x73;elec&#x74;**&#x20;Recipient is part of&#x20;**`[Name of your organization]` **organization**, if you want to request credentials from someone within your Make organization.&#x20;

:::ExpandableHeading
**Example**

You are building an internal weekly newsletter for all company employees. You want to automate email delivery and create newsletters tailored to each employee's role, location, or group or team they belong to, to provide the most accurate and targeted information.

To do that, you need access to employee data stored in the company's identity provider (Microsoft Entra ID). If you don't have access to it, you can send a credential request to get access to the following modules:&#x20;

- **Microsoft Entra ID > Search Users, Get a User, Get a User's Memberships, Search Groups, Get a Group&#x20;**

A colleague with access to these credentials can review your request, verify that it only includes read access, and create a connection for you. You then query Entra ID to retrieve email addresses and related information.
:::

In this case, you will select a user from the drop-down list.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/M3FlyBcmCc1xOY53LVbzF-20260202-100507.png" size="50" width="1182" height="282" position="center" showCaption="false"}
::::

::::WorkflowBlockItem
If you want to request credentials from someone who is *not* part of your Make organization, selec&#x74;**&#x20;Recipient is not part of&#x20;**`[Name of your organization]` **organization.&#x20;**

:::ExpandableHeading
**Example**

You are an external contractor hired to help the marketing department automate lead generation. You need to create a scenario in Make that retrieves emails from the marketing team's email account and stores or updates contacts in their HubSpot CRM. You can request the marketing manager to create the connection to the following apps and modules:

- **Email > Get emails**
- **Hubspot > Search for Contacts, Get a Contact, Create or Update a Contact**

Once you get all the credentials, you can build a scenario for the entire marketing team or for a specific marketing manager.
:::

:::hint{type="info"}
This option is only available to those with permission to [add users to the organization](https://help.make.com/organizations#1iKQb). You need to have either an Admin or an Owner [organization role](https://help.make.com/organizations#em3xI).
:::

In this case:

- Enter the recipient's **Name** and **Email address**.&#x20;
- Optionally, add a **Description** (max. 256 characters) to explain the purpose of the request.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/-wPkekAhSK4TUV1N-YrdD-20260202-105157.png" size="50" width="790" height="656" position="center" showCaption="false" indent="2"}
::::

:::WorkflowBlockItem
Once finished, click **Next**.
:::

:::WorkflowBlockItem
In the **App** field, select the app for which you want to request credentials.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/V269ROYtQlHOMRiXuE_RS-20260202-102313.png" size="50" width="794" height="958" position="center" showCaption="false"}

If the app has multiple versions, select the required one in the **Version** field.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/leUYdHzHwR7IT5gs71xoc-20260202-104005.png" size="50" width="780" height="296" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
In the **Module** field, select the modules for which you want to request credentials.&#x20;

To include all the modules, click **Select all.&#x20;**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/N6ZBlqLc6bOpr_Osj73g7-20260202-105253.png" size="50" width="790" height="772" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Optionally, add a note (max. 256 characters) explaining why you need the credentials and how you'll use them, or specify other details.
:::

:::WorkflowBlockItem
Configure a name to distinguish these credentials afterward in the list of available connections for the app, or leave the default.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ddpECPNlEkuiJMWwmrzB4-20260202-105423.png" size="50" width="778" height="170" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
To add more apps to the request, click the **+Add app** button and repeat the steps explained above.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/lqYRzHCqxp34qhEls3BQc-20260202-113114.png" size="50" width="786" height="844" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Review the terms and conditions, then check the box to confirm your agreement.
:::

:::WorkflowBlockItem
Click **Submit**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/bDHUSBJIW-n7Vtb6ic0lK-20260202-113313.png" size="50" width="788" height="888" position="center" showCaption="false"}
:::
:::::

You'll see a confirmation that the request has been successfully sent.&#x20;

- A recipient who is not a part of your Make organization will be invited to join your organization and team with a **Guest** role.&#x20;
- A recipient who is a part of your Make organization will receive a link to review the request.&#x20;

## Authorize or decline a credential request as a recipient

Once a requester submits a request, the recipient gets an email notification.

To authorize the credential request as a recipient:

::::WorkflowBlock
:::WorkflowBlockItem
Open the email notification.
:::

:::WorkflowBlockItem
If you're a part of the requester's Make organization, click the **Review** **request** button.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ey6d0tBPkSwmtF0YXqgon-20260202-152728.png" size="50" width="1188" height="1740" position="center" showCaption="false"}

If you're not a part of the requester's Make organization, you'll get an invitation to join it. Click the **Accept invitation** button.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/SEtFFDqGv77J6rQ8oY1cy-20260202-120235.png" size="50" width="1176" height="1671" position="center" showCaption="false"}

Follow the prompts to log in to Make or sign up if you don't have an account.&#x20;
:::

:::WorkflowBlockItem
Once you log in to Make, you will be redirected to the request details page in the requester's organization. There, you can see:

- Request name
- Requester's name
- Request date
- Request description (if provided by the requester)  &#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/APIApShpfgtCCTNjjWwqV-20260202-145157.png" size="60" width="1256" height="678" position="center" showCaption="false" indent="2"}
:::

:::WorkflowBlockItem
In the **Requested** **credentials** section, you can:&#x20;

- See the apps for which credentials are requested.
- Hover over the modules and permissions under each app to see which ones are included in the request.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/WDsGuZzTKZhe3yri-8FW7-20260202-162237.png" size="60" width="1244" height="438" position="center" showCaption="false" indent="2"}
:::

:::WorkflowBlockItem
Click **Authorize&#x20;**&#x74;o proceed.&#x20;
:::

:::WorkflowBlockItem
A window prompting you to create a connection will appear.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/PSNY9t8U3k_fchTU56CSA-20251215-161410.png" size="50" width="656" height="362" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Follow the prompts to grant Make access. Depending on the connection, you may need to select the connection type, enter an API key, OAuth credentials, or other authentication details.&#x20;
:::

:::WorkflowBlockItem
Once finished, a green **Authorized** label should appear next to the app's name.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/2qF4sPrjj_2dFD0RYtdWZ-20260202-162718.png" size="50" width="1252" height="432" position="center" showCaption="false"}
:::
::::

To decline the credential request, as a recipient:

::::WorkflowBlock
:::WorkflowBlockItem
Log in to Make.&#x20;
:::

:::WorkflowBlockItem
Switch to the requester's organization, if you have several. 
:::

:::WorkflowBlockItem
In the left sidebar, click **Credentials**. &#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/VrQyMWHhFJ7ghXw07jYar-20260128-141453.png" size="40" width="640" height="480" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Details** next to the relevant request.
:::

:::WorkflowBlockItem
Click **Decline** next to the app you don't want to provide credentials for.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/-1wxZ9a8kGohnNPzz0Ab_-20260202-162749.png" size="50" width="1260" height="1234" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Add the reason for declining the request.
:::

:::WorkflowBlockItem
Click **Decline**.
:::
::::

The requester will see the red **Declined** label in the request and the reason for that.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/25DNg-y5u0j1mH01BJHGT-20260202-163151.png" size="50" width="1196" height="210" position="center" showCaption="false"}

## View credentials requests

To see all the sent and received credential requests, click **Credentials** on the left sidebar. In the **Credential** **requests** tab, you can switch between **Sent** and **Received&#x20;**&#x72;equests depending on whether you are a requester, a recipient, or both.&#x20;

### Sent requests

In the **Sent** tab, you can view all the requests sent by you and your team members, including:

- Request name
- Which apps are included in the request&#x20;
- Who requested the credentials
- Who the recipient is
- When the request was sent&#x20;
- Request status

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/XN5xMXDt1ZS1DH18vQvM4-20260202-155249.png" size="100" width="3213" height="960" position="center" showCaption="false" indent="2"}

:::hint{type="info"}
Requests can have the following statuses:

- **Authorized** - All apps in the request have been authorized
- **Partially** **authorized** - Some apps have been authorized, and others declined
- **Incomplete** - The authorization process hasn't been completed
- **Invalid** - The authorization process has failed
- **Declined** - The request has been declined
:::

### View request details as a requester

To see all available information for the request, click **Details** next to the credential request.

For sent requests, the details include:&#x20;

- The recipient's name and email address
- The request submission date
- The request description (if provided by the requester)

In the **Requested** **credentials&#x20;**&#x73;ection, you can also:

- See all the apps included in the request
- Hover over modules and permissions to see what access is authorized
- See whether the request for a particular app is still **Pending**, has been **Authorized,&#x20;**&#x6F;&#x72;**&#x20;Declined** (with the reason added by the recipient)

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/IeQNAobEqZA9Y8i_md8CA-20260202-163436.png" size="50" width="1186" height="950" position="center" showCaption="false" indent="2"}

### Received requests

In the **Received** tab, you can view all the requests you've received, including:

- Request name
- Which apps are included in the request&#x20;
- Who requested the credentials
- When the request was sent&#x20;
- Request status

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Z5ppObm4VsQvCzuvwjSJX-20260202-171040.png" size="100" width="3210" height="813" position="center" showCaption="false" indent="2"}

### View request details as a recipient

To see all available information for the request, click **Details** next to the credential request.

For received requests, the details include:&#x20;

- The requester's name and email address
- The request submission date
- The request description (if provided by the requester)

In the **Requested** **credentials&#x20;**&#x73;ection, you can also:

- See all the apps included in the request
- Hover over modules and permissions to see what exactly is authorized
- See whether the request has been **Authorized&#x20;**&#x6F;&#x72;**&#x20;Declined** (with the reason you added)
- **Revoke,** **Authorize**, or **Decline** access to the credentials.

## Revoke access to credentials

A recipient can revoke access to the provided credentials at any time. To do that:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Credentials**.
:::

:::WorkflowBlockItem
Switch to **Sent&#x20;**&#x69;n the **Credential** **requests** tab, and click **Details** next to the relevant request.
:::

:::WorkflowBlockItem
In the **Requested** **credentials** section, click **Revoke** for the app you want to remove the access from.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/3edMYVbnH92dYh_V7tTgJ-20260202-170201.png" size="50" width="1260" height="1116" position="center" showCaption="false"}

The requester will no longer be able to use your credentials for that app.&#x20;
:::

:::WorkflowBlockItem
To restore access, click **Authorize&#x20;**&#x61;nd follow the prompts to establish the connection again (e.g., grant access, enter API key).&#x20;

To permanently remove access, click **Decline&#x20;**&#x6F;r delete the request (see below).&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/VQWbrzlXAHUeHP8vcjyuP-20260202-170240.png" size="50" width="1254" height="208" position="center" showCaption="false"}

&#x20;
:::
::::

The requester will no longer be able to use the credentials provided by the recipient for a particular app in the request. However, if there are multiple apps in the request, all the other authorized credentials will still be available. &#x20;

## Reauthorize credential request

Apps that use the OAuth 2.0 protocol only grant access for a limited time and may require periodic reauthorization to maintain the connection.&#x20;

### Request reauthorization

As a **requester**, you can ask a recipient to reauthorize an OAuth connection in an authorized credentials request. To do that:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Credentials**.
:::

:::WorkflowBlockItem
Switch to **Sent&#x20;**&#x69;n the **Credential** **requests** tab, and click **Details** next to the relevant request.
:::

:::WorkflowBlockItem
In the **Requested credentials** section, click **Request reauthorization** for the corresponding app.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Znulg2pdyeIEnLkPMRDdr-20260226-115525.png" size="70" width="1581" height="1012" position="center" showCaption="false"}
:::
::::

If the connection is valid and doesn't require reauthorization, a notification will appear at the bottom of the screen. The request won't be sent.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/RFy0f7X5sN0yjbUV5GWol-20260226-120130.png" size="40" width="790" height="132" position="center" showCaption="false"}

If the connection requires reauthorization, an orange **Reauthorizing** label will appear next to the app. The request will be sent, and the recipient will receive an email notification with a link for reauthorization.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/dwgBzMoXONGraxO8ILwYo-20260226-124211.png" size="40" width="1495" height="178" position="center" showCaption="false"}

### Reauthorize the request

As a recipient, you can reauthorize a credential request:

- Using the link from the email notification&#x20;
- Directly from the requester's Make organization

To reauthorize a credential request using the link from the email notification:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Open the email notification.
:::

:::WorkflowBlockItem
Click **Review** **request**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/fv9L5MtQQfqeJhSQRleLl-20260226-125621.png" size="48" width="784" height="1158" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Log in to the requester's Make organization, and go to the credential request details page.&#x20;
:::

:::WorkflowBlockItem
In the **Requested** **credentials** section, click **Reauthorize** for the corresponding app.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Op7RtLZNb0qzhPFMFbPQn-20260226-130132.png" size="70" width="1270" height="1016" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Follow the prompts to allow Make access.
:::
::::

To reauthorize a credential request directly from the requester's Make organization:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Log in to the requester's Make organization
:::

:::WorkflowBlockItem
In the left sidebar, click **Credentials >** **Credential** **requests**.
:::

:::WorkflowBlockItem
In the **Received** tab, click **Details** next to the relevant request.
:::

:::WorkflowBlockItem
In the **Requested** **credentials** section, click **Reauthorize** for the corresponding app.
:::

:::WorkflowBlockItem
Follow the prompts to allow Make access.
:::
::::

Once reauthorized, the status of the credential request will switch back to **Authorized** for both the requester and the recipient.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Ms4DcjvDi_rAwXNLWl55s-20260227-131928.png" size="46" width="1204" height="104" position="center" showCaption="false"}

A recipient and a requester will get an email notification about that.

## Delete credential request&#x20;

Both a recipient and a requester can delete the entire credential request. To do that:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Credentials**.
:::

:::WorkflowBlockItem
If you're a requester:

- Switch to **Sent&#x20;**&#x69;n the **Credential** **requests** tab.
- Click the **three dots > Delete&#x20;**&#x6E;ext to the request.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Ejk6qu44QpcH8oAwwRPuC-20260202-171511.png" size="100" width="3162" height="648" position="center" showCaption="false" indent="2"}

- Review the list of connections where the credentials are used and click **Delete** to confirm.
:::

:::WorkflowBlockItem
If you're a recipient:

- Switch to **Received&#x20;**&#x69;n the **Credential** **requests** tab.
- Click the **three dots  > Delete&#x20;**&#x6E;ext to the request.&#x20;
- Review the list of connections where the credentials are used and click **Delete** to confirm.
:::
::::

In both cases, the request will be deleted. The requester will no longer be able to use the credentials provided by the recipient for all the apps included in that request.&#x20;

:::ExpandableHeading
## FAQs

### How long is a credential request link valid?

Links don't expire, but recipients should act within a reasonable timeframe. If they don't respond, you can follow up or send a new request.

### Can I cancel a request in progress?

Yes, delete the request, and the recipient loses access to all apps in it.

### What if the recipient's email address changes?

If an external recipient can't access their email, send a new request with their updated email address. You can delete the old request.

### Can I request credentials from multiple people at once?

You need to send separate requests to each person. You can't bundle multiple recipients in one request.

### Can the recipient see what I do with their credentials?

Recipients can see which modules are included in the request and can revoke access anytime. They can't see the specific data you access with those credentials.

### What if the recipient's credentials expire?

Connections may stop working if authentication expires (e.g., token refresh fails). The requester will see an error and should contact the recipient to re-authorize.

### Can I change my mind and stop sharing credentials?

Yes, revoke access anytime. The requester loses immediate access, but the request stays open. If you want to permanently cut off access, delete the request.

### Is it safe to share credentials?

Yes, your login and other authentication data are never exposed through credential requests. When authorizing a request, you enter your credentials directly in Make to create the connection. This connection can be used to build scenarios, but no one on the requester's side can view, access or retrieve your authentication details (e.g., passwords, API keys, OAuth credentials).&#x20;
:::


[title] Scenario inputs and outputs
[path] Explore more/Scenarios/

 inputs and outputs let you control what data goes into your  and what data comes out. They define the information that  expect and share when communicating with other scenarios or external systems.&#x20;

To find  inputs and outputs, navigate to the  Builder and click on the **Scenario inputs and outputs** icon on the toolbar.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/hyWBQlny5zwsCdVR280TI-20260513-070958.png)

## What  inputs and outputs do

**Scenario inputs** define what data a scenario receives when triggered.&#x20;

**Scenario outputs** define what data the scenario returns after execution.

When a  calls another  (subscenario), inputs specify what data gets passed to the subscenario, while outputs specify what data gets returned to the calling .

## When you need  inputs and outputs

You will need to [configure scenario inputs and outputs](docId\:m0Sq0-LOYhxLFze6FxUsd) when building  that communicate with other  or external systems. This includes  that:

- Call other  (subscenarios)
- Get triggered by external systems via API
- Function as tools in AI systems

Some cases when you need  inputs and outputs:

- Syncing customer information across multiple systems
- Adding leads to CRM and email lists while creating proposals
- Creating records, invoices, emails, or orders with specific input parameters

## Where to use  inputs and outputs

 inputs and outputs enable your scenarios to function as tools across different systems: subscenarios, APIs, Make AI agents, and Make MCP server.

Regardless of which system you are working with,  with  inputs and outputs use three modules of the **Scenarios** app: **Call a scenario**, **Start scenario**, and **Return output**.&#x20;

Consider this flow to understand how these modules interact:&#x20;

1. In the parent scenario, you add a **Call a scenario&#x20;**&#x6D;odule, then select an existing (sub)scenario or create a new one.
2. In the subscenario, add &#x61;**&#x20;Start scenario** module, which allows you to map  inputs to modules.
3. Add more modules depending on what the subscenario aims to do.
4. Add a **Return output** module to send output from the subscenario to the parent.

This flow applies to all cases using  inputs and outputs.&#x20;

### Subscenarios

[Subscenarios](https://help.make.com/subscenarios) break complex workflows into smaller, reusable components. Each subscenario handles a specific task or business function.  inputs and outputs define the data exchanged between parent  and subscenarios.

The **Start scenario** module triggers the subscenario and passes input data. The **Return output** module returns data from the subscenario to the calling scenario.﻿

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/3m3nxy9qMeU6Y7_2CTa13-20260129-090314.png)

Benefits of inputs and outputs in subscenarios:

- **Reusability:** Updates to a subscenario's inputs and outputs automatically apply to all  using that subscenario.
- **Structured data sharing:** Inputs and outputs clearly define what data gets shared between .

**Example:&#x20;**&#x41;  that retrieves restaurant menus could use subscenarios for individual restaurants. Each subscenario receives restaurant name/ID and date as inputs, then returns menu items, prices, and last-updated timestamps as outputs.

### APIs

The [Make API](https://developers.make.com/api-documentation) allows external systems to trigger .  inputs and outputs define the structure of API requests and responses.

When calling a  via API, the defined inputs become the request body parameters. After execution, the  returns the defined outputs in the response structure.

**Example:&#x20;**&#x41;n external application triggers a restaurant menu  via API, sending date and restaurant ID as inputs. The  returns structured menu data as outputs.

### Make AI agents

[Make AI agents](docId:0KbNuoduk1EmVKqnwMDQC) can use  as tools.  inputs and outputs help agents understand what data to provide and what to expect in return.

Input and output names and descriptions help AI agents select appropriate data, similar to how tool names and descriptions help agents choose the right tools.

Inputs and outputs in data flow patterns:

- **Agent to scenario:** When  inputs are defined
- **Scenario to agent:** When  outputs are defined
- **Bidirectional:** When both inputs and outputs are defined

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/2lgGe02JvFoENX8LFz5PS-20260129-090413.png" size="50" width="968" height="1013" position="center" darkWidth="968" darkHeight="1013" showCaption="false"}

**Example**: A simple AI agent for retrieving daily restaurant menus uses subscenarios for each restaurant as its tools. Based on the user prompt, the agent calls the right  and returns a menu. The agent uses the outputs' structure in the subscenario to understand the menu data to be provided in the response.&#x20;

### Make MCP server

The[ Make MCP server ](https://developers.make.com/mcp-server)enables  to run from MCP-enabled AI systems like Claude.  inputs and outputs serve as instructions for AI systems by defining the information to exchange during interactions.

 inputs are parameters that AI systems fill when using scenarios.  outputs are parameters for data that scenarios return to AI systems.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Zu43H885E3akULEuyxL4_-20260129-090505.png" size="50" width="968" height="1013" position="center" darkWidth="968" darkHeight="1013" showCaption="false"}

**Example:&#x20;**&#x57;hen you ask Claude, an MCP client, about a restaurant's daily menu, Claude calls the relevant  through the MCP server. The  outputs provide the menu information for Claude's response.

## Scenario input and output types

&#x20;To help you correctly define inputs and outputs, the following table outlines the input and output types available in , including descriptions and when to use them.

| **Type**           | **Description**                                                                                                                         |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------- |
| Array              | A list of similar items. For example, a list of email attachments, where each item is a single file.                                    |
| Collection         | A group of related details about a single item. For example, a "Contact" collection containing a name, email address, and phone number. |
| Date               | A specific point in time, including the year, month, and day. Date is in ISO 8601 format (e.g., 2015-09-18T11:58Z).                     |
| Text               | Any type of plain text, from a word to a paragraph. Use this for names, descriptions, or messages.                                      |
| Number             | A numerical value. Use this for quantities, prices, ratings, or any other data that consists of digits.                                 |
| Boolean            | A type with only two options: true/false or yes/no. Good for toggles.                                                                   |
| Select             | A dropdown list of predefined options. Use this when you want a user to choose from a list of specific items, such as a country.        |
| Dynamic collection | Use this type to map a collection/object or paste a valid JSON string into the field.                                                   |
| Uinteger           | A whole positive number. Use it for ID numbers or counts where a negative value is impossible or an error.                              |
| Integer            | A whole number with no fractional part. Use it for any value that cannot have a decimal (e.g., the number of users on a site).          |
| Email              | Use this type for emails.                                                                                                               |
| URL                | Use this for URLs.                                                                                                                      |
| UUID               | Use this type for a Universally Unique Identifier.                                                                                      |
| Color              | Use this type for colors.                                                                                                               |
| Any                | Use it when you can't define a type.                                                                                                    |


[title] Credits & operations
[path] Key concepts/

In Make, credits and operations are related but distinct concepts. Operations count the activities performed in your scenarios, while credits are what you pay for those activities. Understanding both helps you better manage your Make usage.&#x20;

Learn more about credit and operations in these articles:

::::LinkArray{contentSource="DOCS" sourceParentDocId="7MJcR2V5eiL5mOp95RGHE" childrenDocs="[object Object],[object Object]" displayMode="CARD" itemsPerRow="2"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/aij4Le3bEHQVM9X7VLRNz_1.png" headerType="IMAGE" docId="hh-nrTakEqakBmg63UUiN" displayMode="CARD" docSeoDescription="Understand how credits work in Make, how different features consume them, and how to monitor your usage"}
[Credits](docId\:hh-nrTakEqakBmg63UUiN)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ssYBMkzRuHZSoVBAsh0mi_1.png" headerType="IMAGE" docId="ZR2rWmILMJ_19R85MlAwM" displayMode="CARD" docSeoDescription="Learn what operations are, how modules process data through bundles, and how to view them for debugging and optimization"}
[Operations](docId\:ZR2rWmILMJ_19R85MlAwM)
:::
::::

::::LinkArray{contentSource="DOCS" sourceParentDocId="hh-nrTakEqakBmg63UUiN" childrenDocs="[object Object],[object Object]" displayMode="CARD" itemsPerRow="2"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/jqcrVCiGBFC8rrftaQdnT_1.png" headerType="IMAGE" docId="LZASgxrjtBcJOk6vF0RKR" displayMode="CARD" docSeoDescription="Understand the credit cost of different Make features and modules based on their type and function"}
[How features use credits](docId\:LZASgxrjtBcJOk6vF0RKR)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/SOsWBuih9PN1VSTlAj_Sa_1.png" headerType="IMAGE" docId="IQaoTEwHzIwCqm-Ohyboh" displayMode="CARD" docSeoDescription="Learn where to track your credit usage and monitor consumption across scenarios, modules, and individual runs"}
[How to track credits](docId\:IQaoTEwHzIwCqm-Ohyboh)
:::
::::


[title] Dynamic connections
[path] Explore more/Connections/

:::hint{type="info"}
This feature is available to Enterprise customers.
:::

A **dynamic connection** is a variable that contains a connection. It allows you to choose which connection a module uses in a scenario run. &#x20;

Imagine that your company uses Gmail to communicate with clients and prospects. Each team member has their own Gmail account and is responsible for a specific region. You have a scenario in Make that sends emails to prospects or deals, and you want those emails to be sent from the Gmail account of the team member responsible for the region.&#x20;

Without the dynamic connection, you can add a Router and set up filters for each region and manager, and manually select the connection in each module:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/A3nEwr5QETSRWeJoz4oXN-20251218-144535.png" size="50" width="1038" height="996" position="center" showCaption="false"}

With the dynamic connection, however, you can group several connections into one variable:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/HxVni6uKZccOiELu4TwCX-20251218-144651.png" size="50" width="1672" height="1138" position="center" showCaption="false"}

When you run a scenario, you can select which account will be used within the scenario inputs:&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/aGSvQxYhpYodSzCaKiKWS-20251218-144617.png" size="50" width="1406" height="1122" position="center" showCaption="false"}

This is particularly useful for complex scenarios with multiple modules and users. Instead of going through each module one by one to select the required connection or creating multiple scenarios, you can simply define which connection to use through the scenario inputs.

## Create a  with a dynamic connection

To create a  with a dynamic connection, you have to assign a connection to build the .  calls the initial connection as the "build-time value."

When you finish the , you can assign a different connection to the dynamic connection anytime.

:::::WorkflowBlock
:::WorkflowBlockItem
Go to your  and select an app module.
:::

:::WorkflowBlockItem
Click the three dots next to **Create** **connection**, and then click **Create a dynamic connection.**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/w-Xikbjkt0qzAxYLk-Ct9-20251009-101545.png" size="60" width="1252" height="604" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
In the **Dynamic connection name** field, type the name of the connection.
:::

:::WorkflowBlockItem
Set the **Build-time value** for the dynamic connection:

- In the **Build-time value**, choose an existing connection or click **Add&#x20;**&#x6F;&#x72;**&#x20;Create new connection&#x20;**&#x74;o create a new connection.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/KEVrwIoFBgXsv7_B8P5aL-20251009-101804.png)

- In case of creating a new connection, enter a name for the connection in the **Connection name** field of the emerging window.
- Click **Save**.&#x20;
- Grant  access to your Dropbox account.
- Click **Save**.

You have set the build-time value for the dynamic connection. You can see the connection in the **Build-time value** field.
:::

:::WorkflowBlockItem
Then, select whether you want to use the build-time connection as the default or not.  uses the default value to run the .&#x20;

You will be able to select a different connection when you run the  on demand.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/P-GvWmijjV2ZuJWYBbanD-20251009-102405.png" size="60" width="1330" height="1098" position="center" showCaption="false"}
:::

::::WorkflowBlockItem
Optional: In the **Default value** field, you can select the default connection that will be used when a dynamic connection is selected.&#x20;

To create a new connection that will be set as the default value, click **Add** and follow the steps to create a connection.

:::hint{type="info"}
You can set the default value for the dynamic connection in the scenario inputs interface as well:&#x20;

1. In the Scenario Builder toolbar, click **Scenario inputs and outputs.&#x20;**
2. Expand the input to see the **Default value** field
3. Set the default.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/9nMBMIjFPJDM3tJQORu9N-20251219-161629.png" size="60" width="948" height="1064" position="center" showCaption="false"}

If you don't provide a default value for the dynamic connection, you can schedule the scenario to **On-demand&#x20;**&#x6F;nly.
:::
::::

:::WorkflowBlockItem
Click **Save**.
:::
:::::

You created a dynamic connection. Now you can continue configuring the module.

You can find your dynamic connections in:

::::Tabs
:::Tab{title="Module settings"}
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/7VHMaj3GCElh9wGb79Qmw-20251222-100245.png" size="50" width="1000" height="1048" position="center" showCaption="false"}
:::

:::Tab{title="Scenario inputs window"}
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/54UiwzZXzllfp3VXtwWM4-20251222-100321.png" size="40" width="980" height="1062" position="center" showCaption="false"}

In the **Build-time value&#x20;**&#x74;ab, you can also see the dynamic connection with the connection it's using:
:::
::::

In the **Build-time value&#x20;**&#x74;ab, you can also see the dynamic connection with the connection it's using:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Uwat2zhvck9omaXFRNaTA-20251222-100608.png" size="40" width="686" height="574" position="center" showCaption="false"}

## Run a  with a dynamic connection

A dynamic connection is like a variable or a container for connections, which is empty until you assign a connection to it. Thus, to run a  with a dynamic connection, you have to assign a connection to it or use a default. You can either create a new dynamic connection or use an existing one.

### Use an existing dynamic connection

To run a  with a dynamic connection, use the  inputs. In  inputs, assign a connection to the dynamic connection for your  run or use the default.

:::hint{type="info"}
To run your  on schedule, you have to provide a default for your dynamic connections.  uses the default connection in scheduled  runs.
:::

::::WorkflowBlock
:::WorkflowBlockItem
Go to your .
:::

:::WorkflowBlockItem
Click **Run once**. A  inputs window appears.
:::

:::WorkflowBlockItem
You can either set up a new connection or use an existing connection.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/V8jeLOAXcTqs3gJaEgivN-20251222-103414.png" size="60" width="1592" height="916" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **OK**.
:::
::::

 runs the  with the selected connections.

## Update a dynamic connection

Compared to other connections, dynamic connections are flexible and can change the value they contain. For example, you might want to assign a different connection to the dynamic connection with each  run. This might be practical when you want to frequently use different credentials in the .

Another option is to update just the default for the dynamic connection for scheduled  runs.

You can update a dynamic connection:

- [In the module settings](docId\:l9Gc1XFkuEukW-x_QjRpZ)&#x20;
- [In the scenario inputs](./#update-dynamic-connections-in-the----inputs)&#x20;

### Update dynamic connections in the module settings

To update a dynamic connection in the module settings:

::::WorkflowBlock
:::WorkflowBlockItem
Open the **Connections** dropdown list in the app module and find the dynamic connection you want to edit.
:::

:::WorkflowBlockItem
Click **Edit**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/IsR7BVSHlMZ7rJMwUp37r-20251009-122649.png" size="70" width="1236" height="948" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Next, you can change the dynamic connection name (optional).
:::

:::WorkflowBlockItem
In the **Build-time value** dropdown list, select the connection you want to assign to the dynamic connection. Click **Add**, if you want to create a new connection.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/1eB02jL3NKR_oY1Js_pSZ-20251222-111245.png" size="40" width="668" height="752" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

You have updated the dynamic connection. When the  runs, the dynamic connection will use the connection you assigned.

### Update dynamic connections in the  inputs

To update a dynamic connection in the scenario inputs:

::::WorkflowBlock
:::WorkflowBlockItem
Go to the  in which you want to update the dynamic connection.
:::

:::WorkflowBlockItem
In the Scenario Builder toolbar, click **Scenario inputs and outputs.&#x20;**
:::

:::WorkflowBlockItem
Switch to the **Build-time value** tab.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/GXVdaB-u6ibpR-Cnl99IC-20251009-123645.png" size="40" width="682" height="676" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Edit**.
:::

:::WorkflowBlockItem
In the dropdown list, select another connection you want to assign to the dynamic connection. Click **Add** if you want to create a new connection.
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

You have updated the dynamic connection. When the  runs, the dynamic connection will use the connection you assigned.

## Delete a dynamic connection

To delete a dynamic connection:

::::WorkflowBlock
:::WorkflowBlockItem
Go to the  in which you want to delete the dynamic connection.
:::

:::WorkflowBlockItem
In the Scenario Builder toolbar, click **Scenario inputs and outputs.&#x20;**
:::

:::WorkflowBlockItem
In the **Scenario** **inputs** tab, click the delete icon next to the dynamic connection.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/j8vfPhvoiz3ppn4BpRm9s-20251222-111831.png" size="80" width="1594" height="854" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

You have deleted your dynamic connection.

[title] Iterator
[path] Key concepts/Tools/

Iterator is a special type of module that converts an array into a series of bundles. Each array item will output as a separate bundle.

## Setting up an iterator

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Z5TzLrnePyBiz8uz4CGc8_uuid-76ebf1a2-e19f-d998-5faa-366411cbe503.png" size="78" width="853" height="497" position="center" showCaption="false"}

Setting up an iterator is done in the same way as [setting any other module](docId\:vNBss-BELMDIN3D4gguxL). The Array field contains the array to be converted/split into separate bundles.

### Examples:

### Save email attachments to Google Drive

The  below shows how to retrieve emails with attachments and save the attachments as single files in a selected [Google Drive](docId\:CT1o6eSjM1F0Xm3Wk5nBx) folder.

Emails can contain an array of attachments. The **Iterator** module inserted after the first module enables you to handle each attachment separately. The **Iterator** splits the array of attachments into single bundles, each bundle with one attachment will then save one at a time in a selected Google Drive folder. The **Iterator** module set up is shown above - the Array field should contain the `Attachments[]` array.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/6me7VXLBgnu4YVJzrjewX_uuid-afd56dcf-8ee1-119f-c8cf-9d1b8b93778a.png" size="90" width="1324" height="496" position="center" showCaption="false"}

### Specialized iterators

For your convenience, many  apps offer specialized iterator modules with a simplified setup. For example, the [Email](docId\:MInmGWOE1-I9v0yVMHkZm) app contains the special iterator **Email > Iterate attachments** that will produce the same results as the general **Iterator** without having to specify the array, just the source module.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/QhBwYdJiHid8iJz0thwvN_uuid-bd6d2f54-cd86-0526-3eaf-a1ff554dba42.png" size="94" width="1226" height="417" position="center" showCaption="false"}

## Learn when to use an Iterator in your 

The video below is module 1 of the 3 part lesson titled **Iterator and Array Aggregator**. It explains the purpose of the Iterator and the Array Aggregator and with the help of a sample , explains when to use an Iterator and what to do with the output.

::embed[[Youtube Link Here](https://www.youtube.com/embed/mWZBA2xSvB4)]{url="https://www.youtube.com/embed/mWZBA2xSvB4"}

### Troubleshooting: Mapping panel does not display mappable items under the Iterator module

When an **Iterator** does not have information about the structure of the array's items, the mapping panel in the modules following the **Iterator** will display only two items under the **Iterator**: `Total number of bundles` and `Bundle order position`:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/_4I0SIQ4StH8PY7oH4FzL_uuid-9e8ce4d7-8de0-9a44-0f40-379c04149499.png)

The reason for this is that in  each module is responsible for providing information about items it outputs so these items can be properly displayed in the mapping panel in the following modules. However, there are several modules that might be unable to provide this information in some cases, e.g. [JSON](docId:2ZexWuohEi0YVSOEq2NAg)**&#x20;> Parse JSON** or [Webhooks](docId:1yhUnJ8jvZyxiP9Cf3Ps1)**&#x20;> Custom Webhook** modules with missing [data structure](docId:1EOkQdVOyEt82um5dJjA8).

The solution is to manually execute the  to make the module learn about the items it outputs so it can provide the information to the following modules.

For example, if you have a **JSON > Parse JSON** module without a data structure as below:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/GBSv9I7uVXF8bQP5TMfxl_uuid-aebaafc2-8fef-c8f5-9c40-c7d125978bd1.png" size="62" width="844" height="677" position="center" showCaption="false"}

And then if you connect an **Iterator** module to it, you will not be able to map the output of the module to the *Array* field in the setup panel of the **Iterator**:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/lDcwWarEB3Bv0vz0TByn2_uuid-cdb106ba-05ba-4b5a-e0a2-b4999f852db6.png)

To resolve this, just manually start the  in the  editor. You can un-link the modules after the **JSON > Parse JSON** module to prevent the flow from proceeding further or right-click th&#x65;**&#x20;JSON > Parse JSON** module and choose "Run this module only" from the context menu to execute only the **JSON > Parse JSON** module.

Once the **JSON > Parse JSON** has been executed, it learns about the items it outputs and provides this information to all the following modules including the **Iterator**. The mapping panel in the **Iterator's** setup will then display the items:

![Flow\_Control\_10.png](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/aDAcDFWeOwq8EBbtvosuL_uuid-52e88ac1-3593-608c-57f3-f93b0a792a7a.png)

Moreover, the mapping panel in the modules connected after the **Iterator** will display the items contained in the array's items:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/L7AD8qbPhPEC30mVyiMdV_uuid-39c30df4-4f5e-1bff-6c6c-f1449fc1a7da.png)

**In summary:** if you cannot see some items in a module's mapping panel, simply run the  once so all the modules can learn about the items they output and provide this information to the following modules.

[title] Subscenarios
[path] Explore more/Scenarios/

In Make, you can build an automation using a parent scenario and one or more subscenarios.&#x20;

- A parent scenario is the main scenario that triggers one or more subscenarios via the [Scenarios > Call a scenario ](https://apps.make.com/scenario-service#call-a-scenario)module.
- A subscenario is a scenario triggered by a parent scenario or other sources, such as an AI agent, an MCP client, or an API call. &#x20;

A parent scenario can include multipl&#x65;**&#x20;Scenarios >** **Call a scenario** modules to trigger different subscenarios. A subscenario can also act as a parent scenario and trigger other subscenarios through the **Scenarios >** **Call a scenario&#x20;**&#x6D;odule.&#x20;

## Benefits of subscenarios

Subscenarios help you to:

- **Simplify complex workflows**: Break down large scenarios into smaller, manageable components that are easier to build, maintain, and troubleshoot.

:::Paragraph{indent="1"}
For example, instead of building a single scenario with dozens of routes to handle lead creation, checking companies, contacts, campaigns, and affiliates, you can split each task into its own subscenario. The parent scenario stays clean and readable, while each subscenario handles one thing well.
:::

- **Save time by reusing logic:** Use the same subscenario across different parent scenarios instead of recreating modules.

:::Paragraph{indent="1"}
For example, if multiple scenarios need to update your product inventory, new orders, returns, B2B deliveries, you can build one inventory subscenario and call it from all of them. Update the logic once, and all parent scenarios benefit automatically.
:::

- **Extend automation to AI agents and MCP servers**: Use scenarios as callable tools in agent workflows.

:::Paragraph{indent="1"}
For example, you can expose a subscenario as a tool that an AI agent calls when it needs to look up a customer record, send a notification, or trigger an action in an external app, without the agent needing to know how the underlying automation works.
:::

- **Transfer data more easily:** Pass a clearly defined structure of inputs and outputs between scenarios.

:::Paragraph{indent="1"}
For example, you can send a customer’s email as an input to a subscenario. It checks whether they’re already registered, then returns a status as an output that the parent uses to decide whether to send a welcome email. If you call a scenario using the **Webhooks** app, you don't have the in-built capability to define the inputs you want to pass from the parent scenario and the outputs you want to receive from the subscenario
:::

- **Reduce credit usage:&#x20;**&#x53;cenarios run via the **Scenarios** app don't consume credits.

:::Paragraph{indent="1"}
For example, if you call a scenario using the **Webhooks** and **Make** apps, each operation will consume credits. With the Scenarios app, you can call scenarios, pass the inputs, and return outputs free of charge. &#x20;
:::

## Limitations of subscenarios

Although subscenarios offer multiple benefits, they also have certain limitations. You can only call a scenario created in your team. If you want to call a scenario from another team or organization, you have to use one of these modules:

- **Make > Run a scenario**
- **Webhooks > Custom webhook&#x20;**

## Calling modes for subscenarios

Subscenarios can run in two modes that define how the parent scenario and the subscenario interact. They can follow:

- Synchronous execution &#x20;
- Asynchronous execution

The mode depends on whether the parent scenario needs the subscenario´s results to continue the run.

### Synchronous execution&#x20;

In synchronous mode:

- The parent scenario calls the subscenario via the **Scenarios >** **Call a scenario&#x20;**&#x6D;odule, passes scenario inputs, and pauses execution until the subscenario completes.&#x20;
- The subscenario starts running with the **Scenarios >** **Start scenario&#x20;**&#x6D;odule, processes the inputs, and returns outputs to the parent scenario via the **Scenarios >** **Return outputs&#x20;**&#x6D;odule.
- Once the parent scenario receives the outputs, it resumes execution.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/E0Rg9YoUtfKIKWMF7lHXm-20260225-102438.png" size="70" width="5856" height="3384" position="center" darkWidth="5856" darkHeight="3384" showCaption="false" indent="2"}

### Asynchronous execution

In asynchronous mode:

- The parent scenario calls the subscenario via **Scenarios >** **Call a scenario&#x20;**&#x6D;odule, and continues immediately without waiting for outputs.&#x20;
- The subscenario starts running with **Scenarios >** **Start scenario&#x20;**&#x6D;odule and completes its operations independently.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/WA3LfkRSBjs1qFnxrdMQF-20260225-102507.png" size="70" width="6452" height="3284" position="center" darkWidth="6452" darkHeight="3284" showCaption="false" indent="2"}

A parent scenario can also call multiple subscenarios that run in different modes.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/GU9xcFHGs3NjFP6tiEDts-20260305-110530.png)

## Create a parent scenario with subscenarios

To build an automation with subscenarios, you need to:

- Create a parent scenario
- Create one or more subscenarios that this parent scenario will call
- Link them with th&#x65;**&#x20;Scenarios >** **Call a scenario**/**Scenarios >** **Start scenario** modules

&#x20;Let's look at this basic workflow as an example and walk through each step afterward.&#x20;

:::hint{type="info"}
**A parent scenario:**

- The parent scenario receives the data from the **Jotform > Watch for Submissions.**

**A subscenario with synchronous execution:**

- The parent scenario sends the data to the subscenario and waits for the output.
- The subscenario checks if the email from the event registration form already exists in the database using the **Google Sheets > Search Rows&#x20;**&#x6D;odule.
- A **Router** handles two possible outcomes:&#x20;
  - **Email doesn't exist**: The participant is added to the database via the **Google Sheets > Add Rows&#x20;**&#x6D;odule. The subscenario sends a confirmation and the data back to the parent scenario via **Scenarios > Return output&#x20;**&#x6D;odule.&#x20;
  - **Email already exists**: The subscenario sends a notification back to the parent scenario via the **Scenarios > Return output&#x20;**&#x6D;odule. &#x20;
- After the parent scenario receives confirmation that the email has been added, it sends a welcome email to the participant via the **Gmail > Send an email module**.&#x20;

**A subscenario with asynchronous execution:**

- The parent scenario sends the data to the subscenario and immediately proceeds to send a welcome email to the participant without waiting for the outputs.
- The subscenario stores the participant's data in the database and completes.&#x20;
:::

### Create a parent scenario&#x20;

To create a parent :

:::::WorkflowBlock
:::WorkflowBlockItem
In , click **+Create a new scenario**.
:::

:::WorkflowBlockItem
In the Scenario Builder, click the big plus icon and add the **Jotform > Watch for Submissions** module.
:::

:::WorkflowBlockItem
In the **Webhook** field, click **Add** to create a webhook.
:::

:::WorkflowBlockItem
In the **Create a webhook** window:

- In the **Webhook** **name** field, enter the webhook's name.
- In the **Connection** field, select a connection or create a new one.
- In the **Team** field, select the Jotform team.
- In the **Form** field, select the form that collects event registrations.&#x20;
- Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/DVyl0g4YEKYP_ohDvETXn-20260219-105913.png" size="70" width="1846" height="884" position="center" darkWidth="1846" darkHeight="884" showCaption="false" indent="2"}
:::

:::WorkflowBlockItem
Click **Save** to save the module settings.&#x20;
:::

:::WorkflowBlockItem
Click the plus icon next to the **Jotform > Watch for Submissions** module and add the **Scenarios >** **Call a scenario&#x20;**&#x6D;odule.
:::

::::WorkflowBlockItem
In the **Scenario** field, click **+Create scenario**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/leLwUOvtTJ9sMEnJSJlAf-20260206-152304.png" size="50" width="1160" height="940" position="center" darkWidth="1160" darkHeight="940" showCaption="false"}

:::hint{type="info"}
You can also select an existing scenario from the list. In this case, make sure that the scenario you select as a subscenario is **active** and scheduled to run **on demand**.&#x20;

Additionally:

- Use th&#x65;**&#x20;Scenarios > Start a scenario** module to start a subscenario
- Define scenario inputs
- Define scenario outputs if the parent scenario expects them
- Use **Scenarios > Return output** module if the parent scenario expects outputs
:::
::::
:::::

After this, you'll be redirected to the Scenario Builder. There, you can create and configure your subscenario based on whether you want synchronous or asynchronous execution.&#x20;

### Create a subscenario with synchronous execution&#x20;

After clicking **Create a scenario** in the **Scenarios >** **Call a scenario** module, you can configure your subscenario. To do that:

:::::WorkflowBlock
::::WorkflowBlockItem
In the **Create a scenario** window:

- In the **Name** field, enter the subscenario name.
- Optionally, in the **Description name** field, add a description.
- Define the input and output structure.

In our example, the parent scenario receives the **Name** and the **Email** from the **Jotform > Watch for Submissions&#x20;**&#x6D;odule and passes this data to the subscenario. Therefore, we create two scenario inputs: `name` and `email`.

For outputs, we want to return the participant's registration status together with the name and email, so we create three outputs: `status`, `name`, and `email`.

- Click **Create** **scenario**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ejf0xxT9HNoNX90YD53vG-20260206-152332.png" size="30" width="714" height="1382" position="center" showCaption="false"}

:::hint{type="warning"}
You can see scenario inputs and outputs in the subscenario.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/KDhUGaIYIPjOCbX72rjkT-20260305-141055.png" size="40" width="662" height="610" position="center" showCaption="false"}

It is important to define the [structure of scenario inputs and outputs ](https://help.make.com/create-the-structure-of-scenario-inputs-or-outputs)accurately to ensure data passes without errors.&#x20;
:::
::::

:::WorkflowBlockItem
You will see a scenario diagram with two automatically added modules: **Scenarios >** **Start scenario&#x20;**&#x61;nd **Scenarios >** **Return outputs**. To add modules to your subscenario, click the big + icon between the modules.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/aY8RsLv5f8L2ikYj1f4Yg-20260305-130333.png" size="70" width="1770" height="868" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Add the **Google Sheets > Search Rows&#x20;**&#x6D;odule to check whether the email already exists in your database. In the module settings:

- Select the spreadsheet and sheet where registrations are stored.
- In the **Filter** field:
  - Select the Google Sheet's column that contains emails.
  - Set the **Text operators:** **Equal to**.&#x20;
  - Map the `email` from **Scenarios > Start scenario** module.
- Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/qQ_rgXGLuy-zaOCaYP06K-20260219-114544.png" size="52" width="1590" height="1388" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Add a **Router&#x20;**&#x74;hat will handle two possible routes.
:::

:::WorkflowBlockItem
The first route will run if the email from the registration form **doesn't exist** in the database. To configure the filter, right-click the dots between the modules and select **Set up a filter**.&#x20;

Set the **Condition** as follows: &#x20;

- Map `Total number of bundles` from the **Google Sheets > Search Rows** module.
- Select **Numeric operators: Equal to**
- Enter **0**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/8kmsml9OhcvEFmkBxfkcV-20260223-103542.png" size="50" width="1258" height="956" position="center" showCaption="false" indent="2"}
:::

:::WorkflowBlockItem
Add the **Google Sheets > Add a Row&#x20;**&#x6D;odule to store the email and the name from the registration form. In the module settings:

- Select the spreadsheet and sheet where registrations are stored.
- Map `name` and `email` values from the **Scenarios > Start scenario** module.
- Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/qQEYAPR0Nq_JlYkGHbcjw-20260219-125954.png" size="50" width="1028" height="1394" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click the **Scenarios > Return output** module after the **Google Sheets > Add a Row&#x20;**&#x6D;odule. You will see the output fields you defined when creating a subscenario:

- In the **Status** field, enter a message indicating the participant has been added: e.g., `Participant added`.&#x20;
- In the **Name** and **Email** fields, map the name and email passed from the parent scenario so that you can identify the participant.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/g3HTq5htfclZG8KFU9e1P-20260223-093555.png" size="50" width="1084" height="638" position="center" showCaption="false" indent="2"}
:::

:::WorkflowBlockItem
Return to the **Router** and add a second route.&#x20;

This route will run if the email from the registration form **already exists** in the database. To configure the filter, right-click the dots and select **Set up a filter**.&#x20;

Set the **Condition** as follows: &#x20;

- Map `Total number of bundles` from the **Google Sheets > Search Rows** module.
- Select **Numeric operators: Greater than**
- Enter **0**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/H1eL5iXrs-dfJkaByFeEr-20260223-102239.png" size="50" width="1146" height="928" position="center" showCaption="false" indent="2"}
:::

:::WorkflowBlockItem
Add another **Scenarios > Return output** module to this route. You will see the output fields you defined when creating a subscenario:

- In the **Status** field, add a message indicating the participant is already registered: e.g., `Participant already exists`.&#x20;
- In the **Name** and **Email** fields, map the name and email passed from the parent scenario.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/yQOt3lBC-dS71RydPe1Zv-20260223-110917.png" size="60" width="1310" height="642" position="center" showCaption="false" indent="2"}
:::

:::WorkflowBlockItem
Your subscenario should now look like this:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/xoo-2aTEmKEcaZt2jpqLc-20260223-112414.png" size="70" width="2236" height="1172" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
All subscenarios should be **active** and scheduled **on demand**.&#x20;

If you create a subscenario from the **Scenarios > Call a scenario** module, it's automatically scheduled on demand. In this case, you only need to enable the toggle to activate the subscenario and save it.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/OvspdJawZNlzG6qydsJQD-20260224-130950.png" size="40" width="1298" height="104" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Return to the parent scenario to complete the configuration.&#x20;
:::

:::WorkflowBlockItem
Open the **Scenarios > Call a scenario** module and verify that:

- The correct subscenario is selected
- The subscenario is active (has a green **Active** label)

In the Scenario inputs field, map the data you pass from the parent scenario to the subscenario. In this example, it will be Name and Email from the **Jotform > Watch for Submissions** module. &#x20;

Se&#x74;**&#x20;Wait for the scenario** **to** **finish** to **Yes**. In a synchronous execution, it indicates that a parent scenario will wait for a subscenario's outputs before continuing execution.

Once verified, click **Save**.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/JbKdAaue5D83PkZCkOfBx-20260224-150614.png" size="50" width="1020" height="1298" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Add the **Gmail > Send an email** module to send a welcome email to the registered participant. Here, you can map `email` returned from the **Scenarios > Call a scenario** module to the **Recipient email address** field.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/xSpopoGgSncg0Or6H8tee-20260223-172334.png" size="50" width="1130" height="1208" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Th&#x65;**&#x20;Scenarios > Call a scenario** module will return outputs from your subscenario. Since we only need to send the email to the newly registered participants, set up a corresponding filter.&#x20;

Right-click the dots between the **Gmail > Send an email** and **Scenarios > Call a scenario&#x20;**&#x6D;odules, and click **Set up a filter.&#x20;**

Set the **Condition** as follows: &#x20;

- Map `status` from the **Scenarios > Call a scenario&#x20;**&#x6D;odule.
- Select **Text operators: Equal to**
- Enter `Participant added` (the status defined in step 8).
- Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/84hVWWZI3wyGm8F7ArT1Q-20260223-174312.png" size="70" width="1390" height="778" position="center" showCaption="false"}
:::
:::::

Your parent scenario should look like this:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/AjB07AK736C5BCIRvW4Ty-20260305-142648.png" size="60" width="1748" height="1374" position="center" showCaption="false"}

Save it and submit a form in Jotform to test the workflow.

### Create a subscenario with asynchronous execution&#x20;

After clicking **Create a scenario** in the **Scenarios >** **Call a scenario** module, you can create your subscenario. To do that:

:::::WorkflowBlock
:::WorkflowBlockItem
In the **Create a scenario** window:

- In the **Name** field, enter the subscenario name.
- Optionally, in the **Description name** field, add a description.
- Define the input structure.

In our example, the parent scenario receives the **Name** and the **Email** from the **Jotform > Watch for Submissions&#x20;**&#x6D;odule and passes this data to the subscenario. Therefore, we create two inputs: `name` and `email`.

Since this is asynchronous execution, the parent scenario doesn't expect any outputs. Therefore, you don't need to define any output fields.

- Click **Create** **scenario**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ejf0xxT9HNoNX90YD53vG-20260206-152332.png" size="30" width="714" height="1382" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
You will see a scenario diagram with the **Scenarios >** **Start scenario&#x20;**&#x61;nd the **Scenarios >** **Return outputs&#x20;**&#x6D;odules.&#x20;
:::

:::WorkflowBlockItem
To add modules to your subscenario, click the big + icon between the modules
:::

:::WorkflowBlockItem
Add the **Google Sheets > Add a Row** module to store the participant's information. In the module settings:

- Select the spreadsheet and sheet where registrations are stored.
- Map `name` and `email` values from the **Scenarios > Start scenario** module.
- Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/qQEYAPR0Nq_JlYkGHbcjw-20260219-125954.png" size="50" width="1028" height="1394" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
If you create a subscenario from the **Scenarios > Call a scenario** module, the  **Scenarios > Return output** module is added automatically.&#x20;

Since in asynchronous execution, your subscenario will not return any output, you can right-click this module and delete it.
:::

:::WorkflowBlockItem
Your subscenario should now look like this:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/2DBj82pK7r43FeMM7zpQ7-20260224-135914.png" size="60" width="1544" height="844" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
All subscenarios should be active and scheduled on demand.&#x20;

If you create a subscenario from the **Scenarios > Call a scenario** module, it's automatically scheduled on demand. In this case, you only need to enable the toggle to activate the subscenario and save it.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/OvspdJawZNlzG6qydsJQD-20260224-130950.png" size="40" width="1298" height="104" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Return to the parent scenario to complete the configuration.
:::

::::WorkflowBlockItem
Open the **Scenarios > Call a scenario** module and verify whether:

- The correct subscenario is selected
- The subscenario is active (has a green **Active** label)

In the Scenario inputs field, map the data you pass from the parent scenario to the subscenario. In this example, it will be Name and Email from the **Jotform > Watch for Submissions** module. &#x20;

Se&#x74;**&#x20;Wait for the scenario** **to** **finish** to **No**. In asynchronous execution, it indicates that a parent scenario will not wait for a subscenario's outputs and will continue execution after calling it.

Once verified, click **Save**.&#x20;

:::hint{type="info"}
If the subscenario has a grey **Inactive** label, click **Preview**. This will open a subscenario in a new window, where you can activate and save it.  &#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/w6S1RefF0P6ClcfWoTNI8-20260225-090939.png" size="50" width="1002" height="1286" position="center" showCaption="false" indent="2"}
:::
::::

:::WorkflowBlockItem
Add the **Gmail > Send an email** module to send a welcome email to the registered participants. Here, you can map `email` returned from the **Scenarios > Call a scenario** module to the **Recipient email address** field.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/xSpopoGgSncg0Or6H8tee-20260223-172334.png" size="50" width="1130" height="1208" position="center" showCaption="false"}
:::
:::::

Finally, save the parent scenario and submit a form in Jotform to test the workflow.

## When to use subscenarios

### Reduce the complexity and simplify the maintenance of scenarios

Subscenarios are useful when you're building a complex workflow with multiple conditions and branching logic. They help reduce overall complexity and make scenarios easier to read, debug, and maintain.

Let's suppose you are creating a "B2B Leads Creation" scenario that receives new contact information, which includes:&#x20;

- The contact's identity
- The company they work for&#x20;
- Optionally, the affiliate who introduced them
- Optionally, the campaign or event they are interested in

Creating a contact may seem simple, but the process can quickly become complex, as you need to:

- Check whether the company already exists in the CRM (and create it, if it doesn't)
- Check whether the contact already exists (and create or update it, if necessary)&#x20;
- Optionally, add the contact to campaigns or events
- Optionally, link the contact to an affiliate partner

If you process such a complex workflow in a single scenario, you may end up with multiple routes and nested filters leading to more routes. As the workflow grows, it becomes harder to read, more difficult to debug, and increasingly complex to maintain.

A better approach is to divide the workflow into dedicated subscenarios for each task:

- Create or update a company
- Create or update a contact
- Add a contact to a campaign or event
- Attach a contact to an affiliate

With this structure, the parent scenario stays simple. It can have a few routes, evaluate high-level conditions, and call the appropriate subscenario when needed. The subscenarios will focus on a single task each and have their own routes and conditions. Even if a subscenario becomes complex internally, it remains easier to maintain and troubleshoot.

### Reuse instead of duplicating

Subscenarios are also useful for avoiding duplicated logic across multiple workflows. Let's suppose you're managing product inventory and need to create or update products in several different business cases:

- When a new order is placed in your online store, you decrease the stock
- When a B2B partner places a direct order, you also decrease the stock
- When new products are delivered, you update the product in the inventory
- When a customer returns a product, you increase its stock

You can build separate scenarios for each of these cases. For example, when a new order is placed in Shopify, the scenario would:

- Check whether the product still exists in the inventory in your ERP&#x20;
- Verify that stock is available
- Return an error if the stock is 0
- Decrease the stock by the ordered quantity

Similarly, when adding a new product to the inventory via a form, the scenario would:

- Verify whether the SKU already exists
- Create the product if it doesn't exist
- Update the stock level accordingly&#x20;

If you look closely, each use case follows the same pattern:

- Verify whether the product exists
- Check stock levels
- Increase or decrease stock&#x20;
- Update product information&#x20;
- Handle errors (e.g., when stock equals 0)

By having a workflow for each case, you're duplicating actions across multiple scenarios and spending more time on updating each of them. Additionally, if you want to add another step to the workflow (e.g., add a new POS with access to update inventory), you have to duplicate the stock inventory logic again.

A better approach is to create a dedicated subscenario that will handle inventory and:

- Create products
- Update products
- Verify stock levels
- Increase or decrease stock&#x20;
- Manage stock-related errors

All parent scenarios can simply call this subscenario whenever inventory needs to be checked or modified. You will no longer need to duplicate the stock management operations as they are centralized in one subscenario that reuses the same logic. You can also link any new parent scenario at any time, and if you change ERP or handle more data, you just need to change one single scenario.

[title] Scenario sharing
[path] Key concepts/Scenarios & connections/

Scenario sharing allows you to create a public scenario page that you can share with others via a link or post on social media. Anyone with the link can view the public scenario page or log in to Make and create a copy of a shared scenario in their Make account and then edit or use it.  

:::hint{type="success"}
Unlike with [blueprints](https://help.make.com/blueprints), you don’t need to export, import, re-export, and copy scenario blueprints after any change. The link always shows the latest saved version of the scenario.  

Sharing scenarios through a link is also faster and more flexible than sharing them through [templates](https://help.make.com/scenario-templates). In particular, when you simply want to demonstrate an automation, viewers don't have to log in or sign up for a Make account to see it. 
:::

## Create a link to share scenario 

To create a link for sharing a scenario:

:::::WorkflowBlock
::::WorkflowBlockItem
Create a new scenario or open an existing one. 

:::hint{type="info"}
If it’s a newly created scenario, you will need to save the scenario before sharing it.
:::
::::

:::WorkflowBlockItem
In the upper-right corner of the Scenario Builder, click **Share**.

![]()

For an existing scenario, you can also click **Share&#x20;**&#x69;n the scenario diagram.

![]()
:::

:::WorkflowBlockItem
In the **Share scenario** window, you will see the scenario name and the thumbnail (preview image). This thumbnail is created automatically. See how to edit it [here](docId:4G_z9ABAtl3i0tKKPv3mI).&#x20;
:::

:::WorkflowBlockItem
Switch on the **Public scenario page&#x20;**&#x74;oggle.  &#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/KYkD_i9iiN3u6Pzv2vywl-20260316-151119.png" size="60" width="987" height="1024" position="flex-start" alt="Switch on the Public scenario page toggle." darkWidth="987" darkHeight="1024" showCaption="false"}
:::
:::::

You can now copy the link and share it with anyone. 

:::hint{type="info"}
If you are an affiliate partner and organization owner, you can earn 35% commission for a full year for every new sign-up from your shared . [Learn more](docId\:Q49X24UPoVzL0iUwA4qOP) about our Affiliate program.
:::



## Customize public details

To configure how your scenario appears on the **Public scenario page**: 

::::WorkflowBlock
:::WorkflowBlockItem
 In the upper-right corner of the Scenario Builder, click **Share**.
:::

:::WorkflowBlockItem
 In the **Share scenario** window, click **Customize public details**. 

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/X_ULQkRPQDopROqAr9kGQ-20251013-143325.png" size="50" width="786" height="670" position="flex-start" darkWidth="786" darkHeight="670" showCaption="false"}
:::
::::

There you can:

### Edit thumbnail

- Hover over the image and click **Edit thumbnail**. 

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/0J-AIDj5W3ZRKEaYcjgFO-20251013-081337.png" size="40" width="766" height="540" position="flex-start" darkWidth="766" darkHeight="540" showCaption="false" indent="2"}

- You will see the scenario. Use zoom and drag to set the part that should be displayed in the thumbnail.  
- Click **Save&#x20;**&#x61;t the top of the screen to apply changes, or **Cancel** to revert to the default thumbnail.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/m_9T9HokT_EUfFRDNJSAL-20251013-081718.png" size="100" width="2372" height="1418" position="flex-start" darkWidth="2372" darkHeight="1418" showCaption="false" indent="2"}

This thumbnail is attached to the link when it’s shared on social media.&#x20;

:::hint{type="warning"}
The thumbnail is not automatically adjusted when you make changes to the shared scenario. To reflect the changes, go to the **Share scenario&#x20;**&#x77;indow, click **Customize public details,** and update the thumbnail in the **Edit thumbnail** section.
:::

### Add title&#x20;

- Enter a title (max. 40 characters) that will be displayed on the **Public scenario page**. It can differ from the scenario's name.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/1BepZyq16TIFHW-gfZYh_-20251013-082256.png" size="50" width="772" height="124" position="flex-start" darkWidth="772" darkHeight="124" showCaption="false" indent="2"}

### Add description&#x20;

- Provide a brief explanation (max. 260 characters) of what the scenario does. This description will appear under the title on the **Public scenario page**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/brxbu4UnpfJkJzsTRoCP2-20251013-082755.png" size="50" width="772" height="178" position="flex-start" darkWidth="772" darkHeight="178" showCaption="false" indent="2"}

### Add additional information&#x20;

- Include the details (max. 2000 characters) that viewers should know to make the scenario work, e.g., how to set up an app, configure modules, or establish connections. This will be displayed in the **Additional information** section on the **Public scenario page**. 

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/KDkQ_cB9Ej5JuYQWq1b0c-20251013-083344.png" size="50" width="768" height="310" position="flex-start" darkWidth="768" darkHeight="310" showCaption="false" indent="2"}

### Check author's details

Check the **Author and avatar&#x20;**&#x73;ection that will be displayed on the **Public scenario page**. This section includes:

- **Author’s name**: this is the name of the Make user who last saved the scenario. Thus,  it can differ from the person who initially created it. You can change how your name is displayed in the **Profile settings** of your Make account.   &#x20;
- **Author's avatar**: this is the picture set on gravatar.com for the author's email address used in the Make account. If you don't have a picture set or want to change the current one, you need to do it via gravatar.com.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/mYKZaRLY16O1-TVeAuMgl-20251013-105117.png" size="50" width="776" height="306" position="flex-start" darkWidth="776" darkHeight="306" showCaption="false" indent="2"}

When finished, click **Save changes**. 

## Share scenario via social media or email

You can also share scenarios directly on social media platforms or via email:

::::WorkflowBlock
:::WorkflowBlockItem
In the upper-right corner of the Scenario Builder, click **Share**.
:::

:::WorkflowBlockItem
 In the **Share scenario** window, click **Share via social**. 

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/InLWC0BgwZDOburFXmQVE-20260316-161045.png" size="50" width="491" height="519" position="flex-start" darkWidth="491" darkHeight="519" showCaption="false"}
:::

:::WorkflowBlockItem
Click the required platform (email, LinkedIn, Facebook, or X).&#x20;
:::
::::

You'll need to complete the authorization process for the selected social media platform. After that, you'll be redirected to the new post creation page or the new email draft page.

The post should have automatically attached a scenario preview, containing:

- Scenario thumbnail
- Scenario title (as specified by scenario metadata)
- Scenario description, if added.

:::hint{type="info"}
If you are an affiliate partner and organization owner, you can earn 35% commission for a full year for every new sign-up from your shared . [Learn more](docId\:Q49X24UPoVzL0iUwA4qOP) about our Affiliate program.
:::



## Check sharing status 

When a scenario is shared, you will see a blue **Shared** label next to the scenario name in the Scenario Builder or scenario diagram.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/N3Tm8Ynj9Pzg40iv8HFLt-20251030-132657.png)

You can also see a blue **Shared** label next to the scenario name in the scenarios folder, if it's currently shared:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/bd4QLwavAETcF4lQqHtGi-20251013-123300.png)

:::hint{type="warning"}
A shared link is dynamic. Viewers always see the latest saved version of the scenario. 

You must save changes for them to appear in the shared scenario. Unsaved changes are indicated by an orange **Shared** label next to the scenario name. 
:::

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/dKEeg1Klj5DZ0imNGhL5d-20251030-132732.png)

## Preview public scenario page 

To preview the **Public scenario page**:

::::WorkflowBlock
:::WorkflowBlockItem
In the upper-right corner of the Scenario Builder, click **Share**.
:::

:::WorkflowBlockItem
&#x20;In the **Share scenario&#x20;**&#x77;indow, click **Preview public page**.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/KWb5XiKmWMINTDCPnkZG4-20260316-161159.png" size="50" width="491" height="519" position="flex-start" darkWidth="491" darkHeight="519" showCaption="false"}
:::
::::

You can now preview the public page.

:::hint{type="info"}
If you are an affiliate partner and organization owner, you can earn 35% commission for a full year for every new sign-up from your shared . [Learn more](docId\:Q49X24UPoVzL0iUwA4qOP) about our Affiliate program.
:::



## Disable scenario sharing   

To stop sharing the scenario:

::::WorkflowBlock
:::WorkflowBlockItem
In the upper-right corner of the Scenario Builder or scenario diagram, click **Share**.
:::

:::WorkflowBlockItem
Switch off the **Public scenario page&#x20;**&#x74;oggle.
:::
::::

The link will no longer work. Anyone who accessed the scenario while the public page link was enabled will still keep their copy. 

If you enable scenario sharing again, the link will remain the same. Anyone who had access to the previously shared public page will be able to see the most up-to-date version again.

## Public scenario page

Users who get the link or see a scenario shared on social media can click it and see the **Public scenario page**. This is a view-only, shareable page that includes:

1. Title
2. Description 
3. Interactive scenario preview
4. Additional information 
5. Author’s name and avatar

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/VWS81jvQGphSRSlFjhHGQ-20251013-131257.png" size="100" width="2444" height="1306" position="center" darkWidth="2444" darkHeight="1306" showCaption="false" indent="2"}

As a viewer, you can click the **+Use the scenario** button on that page: 

- If you are logged in to Make, a copy of the scenario will be created in your account.
- If you are not logged in to Make, you will be prompted to sign in. After signing in, a copy of that scenario will be created in your account.  

:::hint{type="warning"}
If you have multiple Organizations and/or Teams in your Make account, the scenario will be added to the last **Organization > Team** you've opened (or which is currently selected).&#x20;
:::

### What is included in a scenario shared via a link

- Modules
- Module settings (with mapped values, but without connections)
- Metadata
- Scenario notes

### What is not included in a scenario shared via a link

- API keys, passwords, and other details used to create a connection 

:::hint{type="warning"}
**Subscenarios**, **Make** **AI** **Agents**, **Data** **stores**, and **Data** **structures** are shared as empty modules.&#x20;

**Custom** **and** **Community** **apps** may not be displayed in a shared scenario if they haven't been approved and made installable by the users’ organization.&#x20;

If the shared scenario includes apps that require installation, users without admin permissions in their organization will see a warning prompting them to contact their organization’s admin to proceed.
:::

If your scenario includes subscenarios, Make AI Agents, Data stores, Data structures, and Custom or Community apps, you’ll see a warning before sharing. Click **Continue sharing** to share the scenario as it is.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/j939e1msvVFfPnXsiH115-20251030-130139.png" size="40" width="780" height="344" position="flex-start" darkWidth="780" darkHeight="344" showCaption="false"}

Those who copy and use a shared scenario have to:

- Create their own connections and provide credentials for all the apps in the scenario.
- If the scenario includes subscenarios, ask a creator to share them separately, or create them manually, and connect afterward. 
- Create their own AI agents.
- Recreate the data stores and data structures manually.
- Install custom and community apps themselves.  

:::hint{type="success"}
As a scenario creator, you can use the **Additional information** field to explain how to handle elements that aren’t shared with the scenario. 

You can also add [scenario notes](https://help.make.com/scenario-notes) when preparing a scenario for sharing to help users quickly tailor the scenario to their use case.&#x20;
:::


[title] Resources
[path] Key concepts/

Learn about different keyboard shortcuts in this article:

::::LinkArray{contentSource="DOCS" sourceParentDocId="vAn6bp8azzR2mj1EP1V74" childrenDocs="[object Object]" displayMode="CARD" itemsPerRow="2"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/K2kXa4NGb0dXDtMvF5wf3_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="-34XmXU4DGylnjSGpoYlD" displayMode="CARD" docSeoDescription="Discover the keyboard shortcuts available in Make to save time when editing scenarios"}
[Keyboard shortcuts](docId:-34XmXU4DGylnjSGpoYlD)
:::
::::


[title] Scenarios
[path] Explore more/

Dive deeper into  capabilities in these articles:

::::LinkArray{contentSource="DOCS" sourceParentDocId="NwcQSOf2t1g5BRd_IeG0W" childrenDocs="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]" itemsPerRow="2" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/_Of0g4JG3kBZvkOgEFRr0_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="evAR6qLowV4yyUnEyV-00" displayMode="CARD" docSeoDescription="Define how your scenario executes and behaves if an error occurs"}
[Scenario settings](docId\:evAR6qLowV4yyUnEyV-00)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/QzA3qifwiyaRNY6M5J8Us_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="UU6T2Hbp8ZB9ng5ERZt8C" displayMode="CARD" docSeoDescription="Add notes to modules and routes to document your logic and keep track of important details"}
[Scenario notes](docId\:UU6T2Hbp8ZB9ng5ERZt8C)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/uiWNbDWt2Pfl270HR-wYW_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="7odICud0KE9-Tr4XWUiqn" displayMode="CARD" docSeoDescription="Set the data passed to the scenario you call, and the information it returns"}
[Scenario inputs and outputs](docId:7odICud0KE9-Tr4XWUiqn)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/lF-xpvmPXszvfgMC9FdFg_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="pEfxEHpGTRf7ONqaX2OJZ" displayMode="CARD" docSeoDescription="Build scenario chains to run complex workflows in sequence and transfer data"}
[Subscenarios](docId\:pEfxEHpGTRf7ONqaX2OJZ)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/al2Oi1zXpXSBWTR1IundX_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="ARftcKI5IzLDMiAiZYTJf" displayMode="CARD" docSeoDescription="Learn how to use, create, and share scenario templates to streamline automation creation"}
[Create and manage scenario templates](docId\:ARftcKI5IzLDMiAiZYTJf)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/G4hKz2K12PqwWjnoUlmms_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="bneC-obvqUiOIREJmAMyk" displayMode="CARD" docSeoDescription="Add custom properties to organize, sort, and filter your scenarios in a table view"}
[Custom scenario properties](docId\:bneC-obvqUiOIREJmAMyk)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/QGqZ0tOtKy2gy9qs4RzaW_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="DVn33b4od230cWt0cJpCi" displayMode="CARD" docSeoDescription="Understand types of variables and how to set them to store and reuse data in scenarios"}
[Variables](docId\:DVn33b4od230cWt0cJpCi)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/15xODkWQr6NBmCuxu-Iuj_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="6zZNn7v35hERRCJFccp9Q" displayMode="CARD" docSeoDescription="Store failed scenario runs and resolve them automatically or manually to prevent data loss"}
[Incomplete executions](docId:6zZNn7v35hERRCJFccp9Q)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/t3BB4DcZqEFyzbwDYkxgg_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="TqybCEbKzEcZcCb5_pr5t" displayMode="CARD" docSeoDescription="Explore the cycles and phases of scenario execution to manage data processing"}
[Scenario execution, cycles, and phases](docId\:TqybCEbKzEcZcCb5_pr5t)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/s6sx-z3eC6pkf8y3MKKwJ_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="pMzVwWE-Q5ht0M_2mtYRi" displayMode="CARD" docSeoDescription="Restore previous versions of your scenarios and recover unsaved changes when needed"}
[Restore and recover scenario](docId\:pMzVwWE-Q5ht0M_2mtYRi)
:::

:::LinkArrayItem{headerType="IMAGE" docId="yciPTD5a8Z78ypItvuapG" displayMode="CARD"}
[Undo and redo scenario changes](docId\:yciPTD5a8Z78ypItvuapG)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/XoAoAHaIxYMu76iMrUqYt_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="ay1LLXGjveo3e6ShLOf6O" displayMode="CARD" docSeoDescription="Use trigger data from a previous run to execute a current version of a scenario for testing and debugging"}
[Scenario run replay](docId\:ay1LLXGjveo3e6ShLOf6O)
:::
::::


[title] Scenario variables
[path] Explore more/Scenarios/Variables/

** variables are useful when you need to reuse the same information multiple times. They make  easier to manage and maintain.&#x20;

## Use  variables when you need:

- Temporary data that only exists during one  run
- To pass information between modules in the same &#x20;
- Data that doesn't need to persist after the  completes
- Simple counters or flags within a single  run

To use  variables, use the **Set variable** or **Set multiple variable** tools in your .

If you need to access the defined variable(s) in a different route than where they were set, use the **Get Variable** or **Get Multiple Variable** tools.

## Create a  variable

You can create  variables in your .

:::::WorkflowBlock
::::WorkflowBlockItem
Click the **Tool** icon on the Scenario Builder toolbar to select the **Set variable** tool.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-rkQcxfJghBuZXk7lIFP9n-20250610-113901.png" size="52" width="448" height="593" position="flex-start" alt="Set variable" darkWidth="448" darkHeight="593" showCaption="false"}

You can also click the giant plus in your canvas to select **Tools \< Set variable**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-WmPOOrQlVP_n4Dp8QFjjf-20250610-114136.png" size="68" width="706" height="554" position="flex-start" alt="Set variable" darkWidth="706" darkHeight="554" showCaption="false"}

:::hint{type="info"}
To set multiple variables at once, select the **Set multiple variables** tool.
:::
::::

:::WorkflowBlockItem
Fill in the following information:

| **Field**             | **Description**                                                                                     |
| --------------------- | --------------------------------------------------------------------------------------------------- |
| **Variable name**     | - This field is mandatory.
- The name is the identifier of the variable.                            |
| **Variable value**    | * Enter the value for your variable.
* You can use letters, digits, spaces, and special characters. |
| **Variable lifetime** | Select the lifetime of your variable:<br />* One cycle
* One execution                              |

If you are using the **Set multiple variables** tool, repeat this for each variable.
:::

:::WorkflowBlockItem
Click **Save** to save your variable.
:::
:::::

::::::ExpandableHeading
## Example: Send an email with weather conditions for a selected city

In this example, we use the **Set variable** module to select a city, retrieve weather information for the city, and use the **Set multiple variables** and **Get multiple variables** modules to send the information in an email to a team member.

![Scenario variables example](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-LAN_DOvHPVRRkaOmnzyyq-20250613-100249.png)

:::::WorkflowBlock
:::WorkflowBlockItem
In your , click the **Tool** icon on the Scenario Builder toolbar to select the **Set variable** tool.

You can also click the giant plus in your canvas to select **Tools \< Set variable**.
:::

:::WorkflowBlockItem
In the **Variable name** field, enter `City`.

For this example, we have set the **Variable value** to `Paris`.

Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-xwltSHLrnuTKh1mSWO0cH-20250613-122950.png" size="60" width="448" height="283" position="flex-start" alt="Set variable - City" showCaption="false"}
:::

:::WorkflowBlockItem
Add a **Router**.
:::

:::WorkflowBlockItem
In the first route at the top, add a **Weather** module.

In the **I want to enter a location by** field, select `cities`.

In the **City** field, map the value to the `City variable` that you set in step 1.

Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-rLGQ50RzDZKUs_R_HHdeg-20250613-123355.png" size="78" width="805" height="309" position="flex-start" alt="Weather module" showCaption="false"}
:::

:::WorkflowBlockItem
After the **Weather** module in the first route, add a **Set multiple variables** module.

Add two variables:

- `status` - mapped to the `Status` value from the Weather module.
- `description` - mapped ot the `Description` value from the Weather module.

Click **Save.**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-fZOk8tNxXpXhE5WjqBWeK-20250613-123755.png" size="60" width="448" height="609" position="flex-start" alt="Set multiple variables" showCaption="false"}
:::

::::WorkflowBlockItem
In the second route at the bottom, add a **Get multiple variables** module to retrieve the information from the previously set variables.

For **Variable name 1**, enter `status`.

For **Variable name 2**, enter `description`.

Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-6zwZDS5jq-PFKEaqeNi3P-20250613-124104.png" size="70" width="789" height="387" position="flex-start" alt="Get multiple variables" showCaption="false"}

:::hint{type="info"}
Note that this step is not necessary if you are not using a router.&#x20;

In this example, we've chosen to split the scenario into two routes to demonstrate both the **Set mutliple variables** and **Get multiple variables** modules.
:::
::::

:::WorkflowBlockItem
After the **Get multiple variables** module in the second route, add an **Email > Send an Email to a Team Member&#x20;**&#x6D;odule and **Create a connection**.

In the **To** field, select the member of your team you want to send the email to.

In the **Subject** field, enter a relevant subject.

In the **Content** field, enter the text of your email, mapping the `City`, `status`, and `description` variables. You can use HTML tags.

Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-zLjNKS7k8U5HrNLV-5d8K-20250613-124852.png" size="74" width="743" height="539" position="flex-start" alt="Send email" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Run once** to test your scenario.
:::
:::::

The person you selected in the Email module receives an email like this:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-8mnNqCgk2VyW-DiQiQThV-20250613-125224.png" size="70" width="714" height="524" position="flex-start" alt="Weather scenario email" showCaption="false"}
::::::


[title] Scenario blueprints
[path] Key concepts/Scenarios & connections/

In , you can save or copy  as **Blueprints** and share them with other  users within or outside your organization, or use and reuse them for your needs.&#x20;

A blueprint is a reusable version of a  that includes:

-  modules
- Module settings
- Mapped values

Blueprints help to set up automations quickly, without having to start from scratch. You can:

- Back up your  in case you lose access to or switch to another  account.
- Export and save a blueprint to reuse a  later.
- Share a blueprint with other users, who can then import the file or paste the JSON  and run the  as-is or adapt it to their specific needs.
- Copy a blueprint and paste it into other scenarios in Make, LLMs, or other relevant platforms.

:::hint{type="warning"}
While blueprints include  modules, settings, and mapped values, users still need to [create connections](https://help.make.com/connect-an-application#QzWef) for their accounts after importing the blueprint.&#x20;
:::

::embed[]{url="https://www.youtube.com/watch?v=bt9EydXoHK4"}

## Export a blueprint

You can export a blueprint of the  as a `.json` file.

To export a blueprint:

::::::WorkflowBlock
:::WorkflowBlockItem
Click  in the left sidebar. Choose an existing , or click **+ Create a new scenario**, if you need to create the  first. &#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/d6pT0Xe-ljGjZ9nXiyx6I-20251001-152632.png)
:::

:::::WorkflowBlockItem
If it's a new , add modules and [configure the module settings](https://help.make.com/module-settings). If it's an existing scenario, check that all of them are set up correctly.&#x20;

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/_GISVgX7C5_VfSraVGi7F-20251001-152717.png)
:::

:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/DUb4kvqu6f__ZEwyj-G1E-20251001-152747.png)
:::
::::
:::::

:::WorkflowBlockItem
In the upper right corner of the Scenario Builder, click the **three dots** **>** **Export blueprint**. &#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/IS7LhhQ1Ka8NmOxWiiKpG-20251104-114924.png" size="60" width="1558" height="1014" position="center" darkWidth="1558" darkHeight="1014" showCaption="false"}
:::
::::::

Once exported, the blueprint downloads to your device as a `.json` file.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/5qi2Ue5_Ah6ilGn3ggk2n-20251015-102626.png" size="50" width="1079" height="792" position="center" darkWidth="1079" darkHeight="792" showCaption="false"}

The file is typically named after your . For example:

- If your 's name is "New prospect notification", the file will be called `New prospect notifcation.blueprint.json`.
- If the  has a default "New scenario" name, Make names the file after the modules in the , e.g.,`Integration Google Forms, Google Sheets.blueprint.json`. &#x20;

::Image[]{src="https://app.archbee.com/api/optimize/PL8X94efBsjvhfQV3wyyj-qzh9fMSCOPod8wSEybfwD-20250630-134806.png" size="26" width="626" height="376" position="center" darkWidth="626" darkHeight="376" showCaption="false"}

You can now share this file with other Make users or keep it for your own future use.&#x20;

## Import a blueprint

:::hint{type="info"}
We recommend creating a new  before importing a blueprint. If you import a blueprint while editing another  that hasn't been saved, all the changes in that  will be lost.&#x20;
:::

You can import a blueprint of the  saved in `.json` format. &#x20;

To import a blueprint:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In the upper-right corner of the Scenario Builder, click the **three dots** **>** **Import blueprint**.&#x20;

![]()
:::

:::WorkflowBlockItem
Click **Choose File,&#x20;**&#x73;elect the blueprint file in .json format, and click **Save**.

![]()
:::
::::

The imported  will appear in the  Builder. You can now configure your own account connections, make any necessary edits to the , schedule it, and click the **Save** icon.

:::hint{type="warning"}
The imported blueprint must be below 2 MB in size. If the blueprint exceeds the scenario size limit, you'll be unable to save the scenario and will see an error message.&#x20;
:::

## Copy  a blueprint to a clipboard

You can also copy a  blueprint to the clipboard. The blueprint is copied as JSON text, which can be pasted into other scenarios in Make, LLMs, or other compatible tools.&#x20;

To copy the blueprint to the clipboard, click the **three dots** **>** **Copy blueprint to clipboard&#x20;**&#x69;n the upper-right corner of the Scenario Builder.&#x20;

![]()

To paste the blueprint into another scenario in Make:

::::WorkflowBlock
:::WorkflowBlockItem
Create a new scenario or open an existing one.&#x20;
:::

:::WorkflowBlockItem
Right-click anywhere on the scenario canvas.&#x20;
:::

:::WorkflowBlockItem
Click **Paste**.

![]()
:::
::::

A scenario from the blueprint will appear in the Scenario Builder. You can now configure it, make any necessary edits to the , schedule it, and click the **Save** icon.

:::hint{type="info"}
Check out the [Make Academy Blueprints course](https://academy.make.com/courses/take/BasicsC01/multimedia/41089201-unit-1-blueprints) to walk through a use case and see how blueprints work in action.&#x20;
:::


[title] Call Google APIs with OAuth 2.0 HTTP request
[path] Explore more/Connections/

In Make, you can call Google APIs with the[ HTTP > Make a request](https://apps.make.com/http#pKx7q) module. Since  Google APIs use the OAuth 2.0 protocol for authentication and authorization, you will need to select the OAuth 2.0 authentication type when configuring your connection.

:::hint{type="info"}
For details on required APIs, scopes, and connection settings, refer to the API documentation of the specific Google service you are using. You can find it in the [Google APIs Explorer](https://developers.google.com/apis-explorer/). &#x20;
:::

To call Google APIs with the **HTTP > Make a request** module, you need to:

1. [Create and configure a Google Cloud Platform project](docId:2MZj8dpgNdiJekaDPFBrc)
2. [Establish the OAuth connection in Make](docId:2MZj8dpgNdiJekaDPFBrc)
3. [Configure the HTTP module to send the request](docId:2MZj8dpgNdiJekaDPFBrc)

## Create and configure a Google Cloud Platform project&#x20;

To connect  to Google services using your custom client credentials, you need to create and configure a project in the Google Cloud Platform.

### Create a Google Cloud Platform project

::::WorkflowBlock
:::WorkflowBlockItem
Log in to the [Google Cloud Platform](https://console.cloud.google.com/) using your Google credentials.
:::

:::WorkflowBlockItem
On the welcome page, click **Create or select a project.**

::Image[****]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/iUUfJBhljqxbp2J37P6Zh-20250912-100329.png" size="80" width="1870" height="1220" position="center" darkWidth="1870" darkHeight="1220" showCaption="false"}
:::

:::WorkflowBlockItem
In the next window, click **New project&#x20;**&#x69;n the upper-right corner.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/TwqnY3iDQMsafLpxzv4JU-20250912-100529.png" size="80" width="1244" height="364" position="center" darkWidth="1244" darkHeight="364" showCaption="false"}
:::

:::WorkflowBlockItem
Change the default **Project name&#x20;**&#x61;nd **Project ID**, if needed. Select the **Location** for your project, and click **Create**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/HoHbDak4T8cEzz5BVWV---20250912-102510.png" size="70" width="878" height="636" position="center" darkWidth="878" darkHeight="636" showCaption="false"}
:::

:::WorkflowBlockItem
On the top panel, next to the Google Cloud logo, click **Select a project**.
:::

:::WorkflowBlockItem
In the next window, click the project you just created.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/jIdNcvAxzEUP22emCBrlp-20250912-103458.png)
:::
::::

You'll now see the **Google Cloud Platform project** you've created on the top panel, next to the Google Cloud logo.&#x20;

:::hint{type="success"}
To create a new project or work in the existing one, you need to have the `serviceusage.services.enable` permission. If you don’t have this permission, ask the Google Cloud Platform Project Owner or Project IAM Admin to grant it to you.
:::

### Enable APIs

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar of the Google Cloud Platform, click **APIs & Services** > **Library**.
:::

:::WorkflowBlockItem
Search for the API you need for your project (e.g., Google Drive, Google Sheets, etc.).&#x20;
:::

:::WorkflowBlockItem
Click the relevant API. For example, Google Sheets API:&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/FqyFIK1N28aaFciCB7nHq-20251119-105908.png)
:::

:::WorkflowBlockItem
Click **Enable**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/-RVq7HyCeesc1C1t0hKRm-20251119-110119.png" size="40" width="614" height="340" position="center" showCaption="false"}
:::
::::

Your API is now enabled.

### Configure your OAuth consent screen

:::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar of the Google Cloud Platform, click **APIs & Services** > **OAuth consent screen**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/szrwOEJWw7Ei-b7MSgGJt-20250912-111324.png" size="50" width="730" height="1298" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Get Started**.
:::

:::WorkflowBlockItem
In the **Overview** section:

- Under **App information**, enter *Make* as the app name, enter your Gmail address, and click **Next**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/iFvukbKbVakiQPqmsvre8-20250912-112021.png" size="60" width="870" height="972" position="center" showCaption="false"}

- Under **Audience**, select **External**, and click **Next**. For more information regarding user types, refer to [Google's Exceptions to verification requirements documentation](https://support.google.com/cloud/answer/9110914#exceptions-ver-reqts).
- Under **Contact Information**, enter your Gmail address, and click **Next**.
- Under **Finish**, agree to the [Google API Services User Data Policy](https://developers.google.com/terms/api-services-user-data-policy?authuser=1), and click **Continue**, then **Create**.
- In the next window, click **Create OAuth Client**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/gWhkTq2f_h5To-n_byZ7b-20250912-114156.png" size="70" width="2764" height="338" position="center" showCaption="false" indent="2"}

- You'll be redirected to the **Clients** tab. You can skip it for now or refer to the [Create your client credentials](docId\:w5UPQrHUgxZCKEtiFp7la) section to configure it.&#x20;
:::

:::WorkflowBlockItem
In the **Branding** section:&#x20;

- Under **Authorized domains,&#x20;**&#x63;lick **+Add domain.**
- Add `make.com` and `integromat.com`.&#x20;
- Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/qyTTXd-f6d-L3Qpue7jgY-20250912-115053.png" size="70" width="1264" height="1286" position="center" showCaption="false"}
:::

::::WorkflowBlockItem
In the **Audience** section:

- Click **Publish app** to update the project status to **In production.&#x20;**
- If you want the project to remain in the **Testing** publishing status, click **+Add users&#x20;**&#x61;nd enter your Gmail address under **Test users.** &#x20;



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/eMmPIQOVjUMtu2KFMZISU-20250912-115725.png" size="70" width="1272" height="1198" position="center" showCaption="false"}

:::hint{type="success"}
**Publishing Status**

**Testing:** If you keep your project in the **Testing** status, you will be required to reauthorize your connection in Make every week. To avoid weekly reauthorization, update the project status to **In production**.

**In production:** If you update your project to the **In production** status, you will not be required to reauthorize the connection weekly. To do that, go to the **Google Auth Platform**, the **Audience** section, and click **Publish app**. If you see the notice **Needs verification**, you can choose whether to go through the [Google verification process](https://support.google.com/cloud/answer/13463073?authuser=1\&visit_id=638718595933013017-1855034908\&rd=1) for the app or to connect to your unverified app. Currently, connecting to unverified apps works in Make, but we cannot guarantee that Google will allow connections to unverified apps for an indefinite period.

For more information regarding the publishing status, refer to the Publishing status section of [Google's Setting up your OAuth consent screen help](https://support.google.com/cloud/answer/10311615#zippy=).
:::
::::
:::::

Your OAuth consent is now configured.

### Create your client credentials

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar of the Google Cloud Platform, click **APIs & Services** > **OAuth consent screen**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/szrwOEJWw7Ei-b7MSgGJt-20250912-111324.png" size="50" width="730" height="1298" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Go to the **Clients&#x20;**&#x73;ection, and click **+Create client**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/-1bUMR6Uj2xMDxANLbnHN-20250912-123323.png" size="60" width="830" height="402" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Under **Create OAuth client ID**:&#x20;

- In the **Application type** dropdown, select **Web application**.
- In the **Name** field, update the name of your OAuth client. This will help you identify it in the console afterward.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/mBdU3rr_GENJMNAXSL3gP-20250912-124942.png)
:::

:::WorkflowBlockItem
Under the **Authorized redirect URIs,&#x20;**&#x63;lick **+ Add URI.** Enter: `https://www.integromat.com/oauth/cb/oauth2` and click **Save**.&#x20;

This redirect URI is required to use the **HTTP > Make a request** module in Make.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/29XiATeiOAJ-yODCpBWCy-20251119-111753.png" size="50" width="820" height="522" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Create**.
:::

:::WorkflowBlockItem
You'll see a message that the OAuth client has been created. Copy your **Client ID** and **Client secret** values, and store them in a safe place.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/9K5uTh_cRFMTGrzqa_i5i-20251119-112349.png" size="60" width="1152" height="980" position="center" showCaption="false"}
:::
::::

You will use these values in the **Client ID** and **Client Secret** fields in Make.

## Establish the OAuth connection in Make

To establish the connection in Make:

:::::WorkflowBlock
:::WorkflowBlockItem
Log in to your  account .
:::

:::WorkflowBlockItem
Create a new scenario or open an existing one and add an **HTTP > Make a request** module to your .
:::

:::WorkflowBlockItem
In the **Authentication type** field, select&#x20;**&#x20;OAuth 2.0**.
:::

::::WorkflowBlockItem
In the **Credentials** field, click **Create a connection** (or **Add&#x20;**&#x6E;ext t&#x6F;**&#x20;Create a connection**) to create your OAuth 2.0 connection:

- In the **Connection name&#x20;**&#x66;ield, enter a name to distinguish your connection.&#x20;
- In the Flow type field, select Authorization Code as you'll need to enter further both an **Authorize URI** and **Token URI**.&#x20;
- In th&#x65;**&#x20;Authorize URI** field, enter the **Authorize URI&#x20;**&#x61;s it's defined in the Google API documentation: `https://accounts.google.com/o/oauth2/v2/auth`
- In th&#x65;**&#x20;Token URI** field, enter the **Token URI&#x20;**&#x61;s it's defined in the Google API documentation: `https://oauth2.googleapis.com/token`
- In the **Scope** field, click **+Add item** to add the scopes required for your HTTP request. &#x20;

:::hint{type="info" indent="2"}
You can check the scopes in the Google service's API documentation. For the [Google Sheets API scopes](https://developers.google.com/workspace/sheets/api/scopes), for example, you can use:

- `https://www.googleapis.com/auth/drive`
- `https://www.googleapis.com/auth/spreadsheets`
:::

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/LgGbum5HIC9oBaWVT2ghx-20251119-115613.png)

- In the **Client** **ID** field, add the **Client ID&#x20;**&#x79;ou obtained from your Google Cloud Platform project app.
- In th&#x65;**&#x20;Client Secret** field, add the **Client** **Secret&#x20;**&#x79;ou obtained from your Google Cloud Platform project app.
- Enable the **Advanced settings&#x20;**&#x74;oggle, and select **SPACE** in the **Scope** **separator** field.

:::hint{type="warning" indent="2"}
Choosing the right scope separator is important, as the wrong one can prevent you from establishing the connection.&#x20;
:::

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/tS6YaAjg5f0hAjvqtPzD7-20251119-121730.png" size="40" width="696" height="498" position="center" showCaption="false" indent="2"}

- To avoid having to constantly refresh the connection, in the **Authorize** **parameters**, click **+Add item** and add:&#x20;
  - **Key**: `access_type`**&#x20;Value**: `offline`
  - **Key**: `prompt` **Value**: `consent`

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/xlUIxU_PaWAsVfJNbhKOz-20251212-122702.png" size="40" width="714" height="706" position="center" showCaption="false"}

- Click **Save**.
::::

:::WorkflowBlockItem
Complete the required steps to sign in to Google. If you see a message that Google hasn't verified your app, you'll need to confirm that you trust the developer:

- Click **Advanced**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/MKB2Ge-KPFYTX9SfT9n9X-20251119-130723.png" size="40" width="1346" height="742" position="center" showCaption="false" indent="2"}

- Clic&#x6B;**&#x20;Go to integromat.com (unsafe)**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/H3KsXukfc2n3qtaay2R8U-20251119-130805.png" size="40" width="1322" height="992" position="center" showCaption="false" indent="2"}
:::

:::WorkflowBlockItem
Then, if prompted, authenticate your account, grant all requested permissions, and confirm access.
:::
:::::

You've successfully created the OAuth 2.0 connection and can now make the HTTP request to a Google app.

:::hint{type="info"}
You can [edit the connection ](https://help.make.com/connect-an-application#tN2pJ)at any time. To do that:

- Open **Connections** from the left sidebar.&#x20;
- Find the required connection, click the three dots next to its name, and click **Edit**.&#x20;

You will be able to add or remove scopes and edit some other connection parameters. &#x20;
:::

## Configure the HTTP module to send the request

To make an HTTP `POST` request to the Google Sheets API to create a spreadsheet:

:::::WorkflowBlock
:::WorkflowBlockItem
In the **URL** field, enter the URL according to the desired output. To create a spreadsheet, for example, you would use: `https://sheets.googleapis.com/v4/spreadsheets`
:::

:::WorkflowBlockItem
Select the **POST** method required for this API call. &#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/aBvLw76eidYVonN-vBBFT-20251119-133534.png" size="40" width="684" height="898" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Leave the **Headers** and **Query** sections empty.
:::

::::WorkflowBlockItem
For the **Body** section:

- In the **Body content type** field, select **application/json**.
- In the **Body input method&#x20;**&#x66;ield, select **Data structure**.&#x20;
- In the **Body** **structure** field, click **Add&#x20;**&#x74;o create a new data structure.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/pJ13hn4DlhkjowqatUx5D-20251119-133636.png" size="40" width="686" height="562" position="center" showCaption="false" indent="2"}

- Enter a name for your data structure to distinguish it afterward. Click **+Add item** to set up the parameters as 'key-value' pairs.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/qeGUIK1DTXSu9C_IXOTok-20251119-133956.png" size="40" width="698" height="648" position="center" showCaption="false" indent="2"}

- Alternatively, click **Generate** to enter a JSON text that will be converted into 'key-value' pairs. For example:

:::BlockQuote
\{
&#x20;   "properties": \{
&#x20;       "title": "New Spreadsheet Created by Make"
&#x20;   },
&#x20;   "sheets": \[
&#x20;       \{
&#x20;           "properties": \{
&#x20;               "title": "Initial Data"
&#x20;           }
&#x20;       }
&#x20;   ]
}
:::

- Click **Generate**.&#x20;
- This way, you'll add a title field to add the name of the spreadsheet you create, and a title field for the sheet created in that spreadsheet. Click **Save**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/FNGYXmhwQfhQYN7g7VkyN-20251119-134338.png" size="40" width="700" height="1328" position="center" showCaption="false" indent="2"}

- In the **Body content&#x20;**&#x66;ield, you can now enter the names of the spreadsheet and sheet that you'll create.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/BGohQIUWyKbYVFiL7Yrp5-20251119-134818.png" size="40" width="686" height="592" position="center" showCaption="false" indent="2"}
::::

:::WorkflowBlockItem
Click **Save&#x20;**&#x61;nd run the module.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/a3rbIYSUnUKMe6WaRCtrf-20251119-134935.png" size="40" width="686" height="528" position="center" showCaption="false"}
:::
:::::

You can now check your Google Sheets. A new spreadsheet called **New spreadsheet Make&#x20;**&#x77;ith &#x61;**&#x20;New sheet** will be created. You can also see it in the output:&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/8A-XW2bwdkf2DUGCpWrz_-20251119-135342.png" size="40" width="682" height="1310" position="center" showCaption="false"}

## Troubleshooting

If you get an error while establishing the OAuth 2.0 connection to any Google service in the **HTTP > Make a request** module, ensure that you've completed all the steps described above. Below is the summary of the key items you need to verify.

### &#x20;Check your Google Cloud Platform project

::::WorkflowBlock
:::WorkflowBlockItem
**Required API is enabled:** Ensure you've enabled the required Google API, as explained [here](docId:2MZj8dpgNdiJekaDPFBrc).&#x20;
:::

:::WorkflowBlockItem
**Authorized domains are added:** Add `integromat.com` and `make.com` as authorized domains in the **Branding** section, as explained in step 4 [here](docId:2MZj8dpgNdiJekaDPFBrc).&#x20;
:::

:::WorkflowBlockItem
**Test user is added, or the app is published**: Add your Gmail account as a test user or publish the app, as explained in step 5 [here](docId:2MZj8dpgNdiJekaDPFBrc).
:::

:::WorkflowBlockItem
**Authorized Redirect URI  is added:&#x20;**&#x41;dd the correct `https://www.integromat.com/oauth/cb/oauth2` in the **Clients** section, as explained in step 4 [here](docId:2MZj8dpgNdiJekaDPFBrc).
:::
::::

### Check the connection settings of the HTTP > Make a request module in Make

::::WorkflowBlock
:::WorkflowBlockItem
**Authorize URI  and Token URI are correct:&#x20;**&#x55;se `https://accounts.google.com/o/oauth2/v2/auth` as **Authorize URI&#x20;**&#x61;nd  `https://oauth2.googleapis.com/token` as **Token URI,** as explained in step 4 [here](docId:2MZj8dpgNdiJekaDPFBrc).&#x20;
:::

:::WorkflowBlockItem
**Required scopes are added**: Add all the scopes needed for your HTTP request, as explained in step 4 [here](docId:2MZj8dpgNdiJekaDPFBrc). &#x20;
:::

:::WorkflowBlockItem
**Correct Client ID and Client Secret are used:&#x20;**&#x45;nter the credentials you obtained from your Google Cloud Platform project, and ensure they match.
:::

:::WorkflowBlockItem
**Scope separator is set to SPACE**: Set th&#x65;**&#x20;Scope separator** to **SPACE** if you're adding more than one scope, as explained in step 4 [here](docId:2MZj8dpgNdiJekaDPFBrc). &#x20;
:::
::::


[title] Module settings
[path] Key concepts/Apps & modules/

For each module in your , you need to configure its settings - the fields you see when you click on the module. These fields define the data you want to receive or send to an application, the information you want to pass between modules, and specific details regarding what actions each module should take.

For example, the [Dropbox](docId:3CpjivVixwccBvEEnSAam) modules require you to specify the target folder for uploading files. For the [Email](docId\:H5qycYdCFM29tfYMovn0N) modules, you need to enter the email address to which emails should be sent. Every setting is unique for each module.

![](https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-TmDNf-QX_zgyiaGYgpxbt-20250211-143045.png)

The module settings open automatically when you add a new module to your . You can also open or re-open the module settings in the [Scenario editor](docId:7euvHnup3GLX7SO-Jdcng) by clicking on the module.

## Connection settings

In almost every app's module settings, you will find connection settings. This is where you create a connection to your user account for the given app, and is the first step when adding a new module to your . Some fields you might see in the connection settings include Username, Password, API Key, or Client Credentials. For more information and instructions on how to create a connection to any of your accounts see [Connecting to services](docId\:SO88FM6pkT0G-adKDDfzZ).

## Required and optional fields

Some fields in the module settings are required, while others are optional. You can identify which fields are required by their name written in **bold**. If you try to save your module settings without filling in a required field, you will receive an error. Your  cannot run unless all required fields are filled in.

In each field, you can either type the appropriate text into the field or fill it in by [mapping an item](docId\:upfwoZsCC5SoIXR2954z2) from another module in your .

:::hint{type="info"}
For some parameters (mostly arrays with several fields that  retrieves depending upon the selected connection) you can see a **Map** toggle. Switching on the **Map** toggle brings up a text field where you can [map items](docId\:upfwoZsCC5SoIXR2954z2) from the preceding modules.
:::

## Standard fields

When you open the module settings, you will see all of the module's standard fields. These include the most frequently used fields for the module, and are typically the default items you see when going to the website of the service you are using. Standard fields can be both optional and required.

## Advanced fields

Some modules also include advanced fields that can be found in the module's advanced settings. These fields include more complex items that may require specific technical knowledge to use. To open the advanced settings, switch on the **Advanced settings** toggle.

## Data types

Each field in the module settings accepts a specific data type, signifying what format of information you can enter or map into the field. This can be text, date, number, etc. You can identify a field's data type by hovering over the name of the field. For more information, see [Item data types](docId\:hdc1mr5JWOaqEIiS266kB).

[title] Scenario run replay
[path] Explore more/Scenarios/

:::hint{type="info"}
&#x20;  run replay is available on all plans.
:::

 run replay is a capability that runs a current version of a scenario using trigger data from a previous  run. This means you can test scenarios, resolve errors, and retroactively send data to third-party systems without needing to obtain new data.

You can replay  runs in multiple places in , depending on your goals:

- [Scenario Builder](docId\:ay1LLXGjveo3e6ShLOf6O): Test and debug new and existing &#x20;
- [Scenario history](docId\:ay1LLXGjveo3e6ShLOf6O) and [Run details](docId\:ay1LLXGjveo3e6ShLOf6O): Backfill data and recover from errors in existing &#x20;

## Why replay  runs

Many data events, such as payments, CRM deals, or e-commerce orders, are difficult to trigger on demand. Using trigger data from replayed  runs instead enables efficiency in each of the following use cases.&#x20;

### Test and debug

As you progressively build and test scenarios, the same data is processed multiple times. Instead of obtaining new data at each step, you can use trigger data from previous runs to ensure that new modules, routes, or fields are successful. &#x20;

[Run with existing data](docId\:ay1LLXGjveo3e6ShLOf6O) in the  Builder is ideal for testing, as it enables you to replay runs while building.&#x20;

### Recover from errors

You can replay  runs to resolve logical errors, such as faulty filters, incorrect data mapping, or missing modules.&#x20;

For example, if you have 100 errored runs due to a logical mistake, you can use [Run with existing data](docId\:ay1LLXGjveo3e6ShLOf6O) to fix the error in the  Builder, then [Replay run](docId\:ay1LLXGjveo3e6ShLOf6O) to replay the 99 errored runs from the  history or Run details.&#x20;

### Backfill data

You can use replay to retroactively populate data in databases and third-party systems when errors in  result in corrupt or incomplete data, or when you forget to add data to a system after building a .&#x20;

[Replay run](docId\:ay1LLXGjveo3e6ShLOf6O) from the  history or Run details is ideal for backfilling data, as this action doesn't require you to be in the  Builder.

## How it works

When you replay a  run, a current version of a  runs using the trigger data of a previous run. That data passes through all modules, even those that ran successfully.

The following data is stored for  run replays:

- Trigger output data&#x20;
- [Scenario inputs](docId:7odICud0KE9-Tr4XWUiqn)
- The most up-to-date [variable](docId\:DVn33b4od230cWt0cJpCi) value (values from previous runs are not preserved if updated during or since these runs)&#x20;

Like standard  runs, replayed runs appear in the  history and consume credits.&#x20;

:::hint{type="info"}
If you see the note **Run cannot be replayed**, this is likely because the following run types aren't stored:

- **Check run**: A run scheduled by a [polling trigger](docId\:BkdEyuBelio6YvvCosRxJ) that did not return new data.
- **Single module run**: A run of a single non-[trigger](docId\:BkdEyuBelio6YvvCosRxJ) module.&#x20;
:::

## Where to find it

You can replay  runs from the  Builder,  history, and Run details.&#x20;

### &#x20;Builder

To find **Run with existing data**:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Scenarios**.&#x20;
:::

:::WorkflowBlockItem
Select a  from your  list.
:::

:::WorkflowBlockItem
On the toolbar, click the down arrow next to the **Run once** button.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/E_5T95KsL1DhRC8IVy9xQ-20251010-125928.png" size="60" width="1095" height="625" position="center" darkWidth="1095" darkHeight="625" showCaption="false"}
:::

:::WorkflowBlockItem
Select the  run to replay from the dropdown menu.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/z59Y43NmVyGdBSI2vdQjN-20251010-130318.png" size="60" width="694" height="497" position="center" darkWidth="694" darkHeight="497" showCaption="false"}
:::

:::WorkflowBlockItem
Click the **Run once** button.
:::
::::

### &#x20;history

To find **Replay run&#x20;**&#x69;n the  history:

::::WorkflowBlock
:::WorkflowBlockItem
On the left sidebar, click **Scenarios**.&#x20;
:::

:::WorkflowBlockItem
Select a  from the list.
:::

:::WorkflowBlockItem
In the  diagram, click **History**.&#x20;
:::

:::WorkflowBlockItem
To replay a  run, click the replay icon next to the **Details&#x20;**&#x62;utton.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/gVfSqIH5pH1u9VGVuZQlq-20251010-133826.png)
:::

:::WorkflowBlockItem
Optionally, click **View run&#x20;**&#x74;o view the replayed run in more detail in a new tab.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/vVx8XWjE8LvwG6Cqawllm-20251212-125407.png)
:::
::::

### Run details

To find **Replay run&#x20;**&#x69;n Run details:

::::WorkflowBlock
:::WorkflowBlockItem
On the left sidebar, click **Scenarios**.&#x20;
:::

:::WorkflowBlockItem
Select a  from the list.
:::

:::WorkflowBlockItem
In the  diagram, click a run in **History**.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ZSFALikEhBkWSc2eI0SIf-20251210-162300.png" size="90" width="1811" height="723" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click the **Replay run&#x20;**&#x62;utton to replay the run.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/n1LNYypK_ziNxx2phOklT-20251210-162555.png" size="90" width="1810" height="765" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Alternatively, click **History**, then the date or the&#x20;**&#x20;Details&#x20;**&#x62;utton.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Yp2YykreHAiW9Nz_9XhMi-20251212-114011.png)
:::

:::WorkflowBlockItem
Click th&#x65;**&#x20;Replay run** button to replay the run.&#x20;
:::
::::

## Examples

In this example, you have a  that sends Tally responses to a Slack channel. The example is for illustrative purposes only, and does not require you to build a scenario.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/Q31995ot4OZzZRNwsMBrJ-2C4fxt-4oWwcqXDP5oqyu-20250818-155556.png" size="60" width="749" height="324" position="center" showCaption="false"}

### Run with existing data

Your  watches responses in a Tally form and sends them to a private Slack channel. As you build, you update the Slack channel configured in the **Slack&#x20;**> **Create a Message** module:

::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, you open the **Slack&#x20;**> **Create a Message** module settings, add the new Slack channel, and save.&#x20;
:::

:::WorkflowBlockItem
To test this change, you click the downward arrow next to the **Run once** button on the toolbar.&#x20;
:::

:::WorkflowBlockItem
In **Scenario run**, you select a previous run to use for trigger data.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/INSM2MODfoeaXMVsRpk2g-20251010-134421.png" size="60" width="646" height="477" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
You click the **Run once&#x20;**&#x62;utton.
:::

:::WorkflowBlockItem
The change does not return errors, so you save the scenario for future use.
:::
::::

### Replay run

After a week of running your Tally form , you realize you should have also sent the responses to Airtable. You decide to replay the past week's run to backfill its data in Airtable:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
You update the scenario with an Airtable module and click **Save**.&#x20;

Alternatively, you can temporarily disable the route to Slack to avoid sending the same responses again.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/Q31995ot4OZzZRNwsMBrJ-n2DfC5lHVbEBL_HqSA8AZ-20250818-160209.png" size="60" width="873" height="580" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
To backfill the past week's data into Airtable, you replay last week's  run in **History**.&#x20;

Alternatively, replay it from the Run details after clicking the date or **Details**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/RaUMmu3iwCXhP-QuAtHrz-20251010-134914.png)
:::

:::WorkflowBlockItem
This action injects the previous run's trigger data into the trigger module of the updated .
:::

:::WorkflowBlockItem
The replayed run appears at the top of your  history. The run resulted in 1 extra credit due to the added Airtable module, totalling 3 credits.
:::

:::WorkflowBlockItem
Your Airtable database now includes data from the past week.
:::
::::

:::hint{type="warning"}
 run replay includes the following constraints:&#x20;

- Bulk replay is currently not possible.&#x20;
- A  run is replayable as long as it's available in the  history, which varies by plan. See[ log storage](https://www.make.com/en/pricing) for details.
:::




[title] Item data types
[path] Key concepts/Data & mapping/

When building scenarios, you work with different data types, from simple text and numbers to more complex elements such as collections and arrays. Understanding these types is essential because each field in the module's settings accepts a specific format of information you can enter or map into the field.&#x20;

Defining the correct data type is important for performing operations with your data. For example,[ math functions](https://help.make.com/math-functions) require the number data type, while text operations need the text data type.

::embed[]{url="https://www.youtube.com/watch?v=KySMUv6BC0o"}

## Data validation

Make validates the data you provide to ensure that it meets the field's expected format and any additional constraints. If you enter or map an invalid data type, the module will stop processing and return a DataError. 

**Common validation errors occur when:**&#x20;

- A field expects a number but receives text like “100 units”.
- You try to map a collection such as `{“name”: “John”, “age”: “30”, “city”: “London”}` into a field that expects simple text.
- A date field receives an improperly formatted string.

## Data conversion

Make automatically coerces (i.e., converts) certain data types when possible. This helps your scenario continue running even when data types don't perfectly match (when there are minor type mismatches). For example:

- A Boolean data type mapped into the text field will be converted to "true" or "false" text.&#x20;
- A number data type mapped into the text field will be converted to text.&#x20;

:::hint{type="info"}
Find out more about supported type coercion [here](https://help.make.com/type-coercion).
:::

However, in some cases, this coercion may produce unexpected outputs, which can cause errors later in the scenario. If coercion is not possible at all, Make will also return a validation error. Thus, to avoid such errors and ensure correct scenario execution, use the correct data type from the start.&#x20;

## Data types

You can identify a field's data type by hovering over the name of the field or over the mapped value. Make supports the following data types:

- [Text](docId\:R7A5-3xRImmXewR_zfoJu)&#x20;
- [Number](docId\:R7A5-3xRImmXewR_zfoJu)&#x20;
- [Boolean](docId\:R7A5-3xRImmXewR_zfoJu)&#x20;
- [Date and time](docId\:R7A5-3xRImmXewR_zfoJu)
- [Buffer (binary) data](docId\:R7A5-3xRImmXewR_zfoJu)&#x20;
- [Collection](docId\:R7A5-3xRImmXewR_zfoJu)&#x20;
- [Array](docId\:R7A5-3xRImmXewR_zfoJu)&#x20;

### Text

The **text** data type (also called ) contains letters, numbers, and special characters (@ ? !). It can represent names, emails, addresses, product descriptions, prompts, and other longer texts.  validates text to make it meet any length requirements.

You can enter text manually or map it:

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/xmVaDBFh1cPKsY8i6HOCO-20251029-112003.png" size="70" width="1280" height="780" position="center" darkWidth="1280" darkHeight="780" showCaption="false"}

### Number

The **number** data type contains numerical characters. Numbers can represent quantities, prices, phone numbers, ages, measurements, and calculations. If you don't define your numbers as numbers in some modules, they may be considered a text data type.

Make validates some numerical fields for specific ranges (minimum or maximum allowed values).

You can enter the number data in the corresponding fields manually:

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/Ce11M6IblMwkbjnUt2SoR-20251029-120944.png" size="40" width="706" height="668" position="center" darkWidth="706" darkHeight="668" showCaption="false"}

Or map it:

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/lFhvQllhZfEplWjoCicYX-20251029-121053.png" size="70" width="1206" height="754" position="center" darkWidth="1206" darkHeight="754" showCaption="false"}

### Boolean (Yes/No)

The **Boolean** data type is used for items with only two possible values: **true** or **false**. In Make, it's typically a yes-or-no option: &#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/JKa3F-LiqMrlSTwBR7fqm-20251028-183958.png" size="40" width="694" height="758" position="center" darkWidth="694" darkHeight="758" showCaption="false"}

You can also map the Boolean data type:

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/SmUnBhyMr8mIZw3h8Snlu-20251028-184010.png" size="40" width="698" height="748" position="center" darkWidth="698" darkHeight="748" showCaption="false"}

### Date and time

A **date** data type is used for dates or date+time. When you click a date field, a pop-up calendar appears in the module settings. The format of the date and time depends on the time zone specified in your **Profile settings** (Web section > Time zone options).

&#x20;You can enter the date manually, set it from the calendar, or map it:&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/bhp0mzvhRotQjf01Cw7a_-20251028-183634.png" size="70" width="1284" height="910" position="center" darkWidth="1284" darkHeight="910" showCaption="false"}

**How date values are displayed in Make**

In output bundles, date and time values are displayed based on the locale and the [time zone](https://help.make.com/manage-time-zones) specified in your **Profile settings&#x20;**(Web section > Time zone options)**.** &#x20;

You can also view a date item's value in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format by hovering over the item.﻿ This is the format used when passing the date values through the API to other services. &#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/AGaf_GT0Gnq5Cm5_ngenK-20251216-095807.png" size="70" width="1242" height="920" position="center" darkWidth="1242" darkHeight="920" showCaption="false"}

If the ISO value does not show up, the item is not a date but probably text.

## Buffer (binary data)

File content is usually sent as a **Buffer** type (image content, video file, etc.). In some cases, there is text data included in this type (e.g., a text file).  is able to automatically convert text data in binary code to text (and vice versa).&#x20;

For example, when you want to include a file as an attachment to your email, the **Data** field will expect a buffer data type. You can map it from other modules:&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/--LZLf7HG_UvzyD2NCizk-20251029-084109.png" size="70" width="1290" height="894" position="center" darkWidth="1290" darkHeight="894" showCaption="false"}

For more information on files, see the [Working with files](docId\:OAUIOo6OUjV0FYGlzMRte) article.

### Collection

A **collection** is an item consisting of several subitems, represented as key-value pairs (e.g., `"Product": "Dress"`,  `"Quantity": "5"`). For example, you can set these key-value pairs while creating a JSON string in the **Create JSON** module:

::Image[**&#x20;&#x20;**]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/kWYHPtmsBciCGmR303FI6-20251029-145325.png" size="40" width="698" height="634" position="center" darkWidth="698" darkHeight="634" showCaption="false"}

This will create a collection:

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/fjfmJtHwLczSmdJqvC4Sj-20251029-151358.png" size="40" width="702" height="650" position="center" darkWidth="702" darkHeight="650" showCaption="false"}

### Array

An **array** is a list of items. These items can be simple values like numbers, booleans, and strings (text), or dates, or collections. For example, you can add a JSON string:

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/b0zgKTnOox_5-SrlYuqkF-20251029-131422.png" size="50" width="1108" height="804" position="center" showCaption="false"}

And then map the array into the **Array** field of the **Iterator** module:&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/zTukt-eaV8mQd8TlQRzCW-20251029-102007.png" size="70" width="1302" height="384" position="center" showCaption="false"}

You will see this array of collections in the input:&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/DbSv6IiYuBk9iSg4ApHyz-20251029-132000.png" size="40" width="690" height="708" position="center" showCaption="false"}

For more information about arrays, see:

- [How to map arrays](https://help.make.com/mapping-arrays)
- [Array functions](https://help.make.com/array-functions#)

[title] Scenario execution, cycles, and phases
[path] Explore more/Scenarios/

 is a transactional system, similar to [relational databases](https://en.wikipedia.org/wiki/Database_transaction), where all operations within a scenario are executed as part of the controlled process.

&#x20;Each  execution goes through the following phases:&#x20;

- Initialization 
- One or more cycles
- Finalization

# Initialization phase

During th&#x65;**&#xA0;initialization phase**, all necessary connections are created and verified.    also checks whether each module can perform its intended operation(s).

# Cycles

The initialization phase is followed by at least one cycle, which consists of:

- **Operation phase** (reading or writing)
- **Commit/rollback phases&#x20;**(finalizing or discarding changes).&#x20;

Each cycle represents an indivisible unit of work composed of a series of operations. 

It is possible to set the maximum number of cycles in the [Scenario settings](https://help.make.com/scenario-settings#MsQG). The default number is 1.

## Operation phase

During the **operation phase,**  performs reading and writing operations.&#x20;

- **Reading operations** consist of obtaining data from a service that will then be processed by other modules according to a predefined . For example, the **Dropbox > Watch files** module returns new bundles (files) created since the last  execution.
- **Writing operations&#x20;**&#x63;onsist of sending data to a given service for further processing. For example, the **Dropbox > Upload a file** module uploads a file to a Dropbox folder.

## Commit and rollback phases

After the operation phase,  either commits or rolls back the operations:

- If operations are successful for all modules, the **commit phase** begins. During this phase, all operations performed by the modules are committed.  sends information to all the services involved in the operation phase about its success.
- If an error occurs during the operation or commit phase for any module, the phase is aborted and the **rollback phase** is started, making all operations during the given cycle void. &#x20;

:::hint{type="warning"}
Not all modules allow for rollback. Modules that support rollback are marked with the `ACID` tag. Modules without this tag do not support rollback and **cannot be reverted&#x20;**&#x62;ack to their initial state in case of an error in other modules.
:::

:::hint{type="info"}
In the context of rollbacks, setting the maximum number of cycles can be particularly useful when processing multiple bundles from a trigger in a single run.

For example, consider a scenario where:

- You use a polling trigger to check for new data.
- You don’t need the scenario to run every minute, so you schedule it to run once per hour.
- There are multiple bundles to process in one execution.

In this case, you have two options:

1. **Increase the trigger limit in the Module settings:&#x20;**&#x52;aise the maximum number of results the trigger retrieves per cycle (e.g., from 2 to 10). The scenario will still use a single cycle, but process more data in one go.&#x20;
2. **Increase the maximum** **number of cycles in the** **Scenario settings:&#x20;**&#x4B;eep the trigger limit low (e.g., 1), but configure the scenario to run in multiple cycles (e.g., from 1 to 10).

If an error occurs while processing the 10th bundle, for example:

- With the first option (one cycle, higher trigger limits), the entire cycle is rolled back. None of the processed bundles are saved, and everything has to be reprocessed in the next run.
- With the second option (multiple cycles, lower trigger limits), only that last cycle (the failed bundle) is rolled back. Since previous cycles are already committed, only that failed bundle has to be reprocessed in the next run. This approach can save time and prevent unnecessary reprocessing of successfully completed work.
:::

# Finalization phase

During the **finalization phase**, open connections (e.g., FTP connections, database connections, etc.) are closed and the  execution is completed.

# Example

**Transfer of bundles between databases**

The following example shows how to connect three `ACID` modules. The aim of the  is to get new rows from a MySQL database, insert (transfer) them into an MSSQL database, and then insert the IDs of the rows from the MSSQL database into a PostgreSQL database.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-QrZSe0uQHs0jTc5lMSP0X-20250214-130728.png" size="90" width="1085" height="368" position="flex-start" alt="Scenario execution example" darkWidth="1085" darkHeight="368" showCaption="false"}

When the  starts, the **initialization phase** is performed first.  verifies connections to the MySQL, MSSQL and PostgreSQL databases one at a time. If everything goes well and the connections are successful,  moves on to the **operation phase**. If an error occurs, the **finalization phase** starts instead of the **operation phase** and the  is terminated.

If there isn't an error, the **operation phase** begins. A preset procedure selects (reads) the table rows (bundles) from MySQL. Those rows are then passed to the next module that writes them to a selected table in the MSSQL database. If everything is in order, the last PostgreSQL procedure is called to insert the row IDs returned by the preceding module into the table.

If the operation phase is completed successfully, the **commit phase** begins.  calls the SQL COMMIT command for each database, and the write operations are committed.

However, if the operation or commit phase fails due to an error (e.g., connection failure),  calls for a rollback. During the **rollback phase**,  goes through all modules and executes the SQL ROLLBACK command for each module to revert each database back to its initial state.

Finally, during the **finalization phase**, each module closes its connection to the database.


[title] Undo and redo scenario changes
[path] Explore more/Scenarios/

Use **Undo** and **Redo&#x20;**&#x69;n the  toolbar to reverse or reapply changes to , such as adding, moving, linking, or configuring modules. These help you avoid manual reconfiguration when testing iterations or correcting mistakes.&#x20;

## Undo and redo changes

Undo or redo changes with the **Undo&#x20;**&#x61;nd **Redo&#x20;**&#x62;uttons on the  toolbar or keyboard shortcuts.&#x20;

### Use the  toolbar

In the  Builder, click **Undo&#x20;**&#x6F;r **Redo&#x20;**&#x6F;n the  toolbar.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/KPMnpVVEgH1XfAUEOueQy-20260504-093854.png)

### Use keyboard shortcuts&#x20;

Use these keyboard shortcuts to undo and redo changes.

| **Shortcut**                          | **Action**           |
| ------------------------------------- | -------------------- |
| **Windows**: Ctrl+Z<br />**Mac**: ⌘+Z | Undo a change to a   |
| **Windows**: Ctrl+Y<br />**Mac**: ⌘+Y | Redo a change to a   |

## Types of changes covered

The table below outlines which changes you can undo and redo.&#x20;

| **Covered**                   | **Not covered**     |
| ----------------------------- | ------------------- |
| Module additions or deletions |  inputs and outputs |
| Module linking or unliking    |  settings           |
| Module position on the canvas |                     |
| Field mappings                |                     |
| Field text                    |                     |
| Schedule settings             |                     |
| Filters                       |                     |


[title] Learn the basics
[path] Get started/

Welcome to Make! This guide will introduce you to automation and show you how to create your own workflows that save time and reduce manual work.

## What is automation?

Automation is about using technology to perform tasks automatically, reducing the need for manual work. It frees up your valuable time and resources by handling routine work for you. From simple day-to-day tasks to complex business processes, automation helps you reduce errors and focus on more important activities.

## Benefits of automation

Automation brings many advantages to your work:

- **Save time**: Let technology handle repetitive tasks while you focus on what matters
- **Reduce errors**: Automated processes run consistently without human mistakes
- **Improve efficiency**: Complete more work with the same resources
- **Scale easily**: Handle growing workloads without adding more manual steps

With Make, you can connect your favorite apps and create custom automations that work for you - all without writing a single line of code.

[title] Errors that don't create incomplete executions
[path] Explore more/Scenarios/Incomplete executions/

Most of the errors that can happen in  are connected with the flow of data in your scenario (like the `DataError`) or with the third party application (like the `ConnectionError`).

However, some errors don't create an incomplete execution:

- When the error happens on the first module in the .
  However, you can add the **Break** error handler ot the first module in the . With the **Break** error handler,  stores the incomplete execution even when the first module in the  outputs an error.
- When your incomplete executions storage is full. If your incomplete executions storage is full,  checks the [enable data loss](docId:7-HEHdTuU2XyYs8_qurub) setting:
  - If the data loss is disabled,  disables the scenario.
  - If the data loss is enabled,  keeps scheduling  runs and discards the incomplete execution if it cannot be stored in your account.
- When the  runs longer than the  run duration limit. You can check the limit for your plan on the  [pricing](https://www.make.com/en/pricing).
- When an error happens during the initialization or rollback [scenario phase](docId\:M3kmLkL8455cS-ZZ13YTb). Since these errors happen outside of the  operation phase, there is no incomplete  run.


[title] Delete the scenario input or output fields
[path] Explore more/Scenarios/Scenario inputs and outputs/

To delete the scenario inputs or outputs:

::::WorkflowBlock
:::WorkflowBlockItem
In the Scenario Builder, click the  inputs and outputs icon.
:::

:::WorkflowBlockItem
Find the item you want to delete.
:::

:::WorkflowBlockItem
Click **X** next to the item you want to delete.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/x7lkSQuYX4ZNDpjo81Hnu-20260121-143741.png" size="50" width="618" height="582" position="center" darkWidth="618" darkHeight="582" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

The deleted item will be removed from the  inputs and outputs dialog box and from your scenario. &#x20;

[title] Introduction to Make AI Agent (New)
[path] Make AI Agent (New)/

:::hint{type="warning"}
This page and the following pages reflect the new version of the **Make AI Agent (New)** app released on February 2nd, 2026.&#x20;
:::

:::hint{type="info"}
The **Make AI Agent (New)&#x20;**&#x61;pp is available i&#x6E;**&#x20;open beta**, so product functionality and pricing may change. The app is available on **all plans&#x20;**&#x75;sing Make's AI Provider, with the option to use custom AI provider connections on **paid plans**.
:::

An AI agent is an AI system that independently performs tasks for you based on your instructions. In , AI agent refers to [Make AI Agent (New)](docId\:rXryASA6852hvhkZ6NhXU), an app that you use to create agentic .

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Mas34hwkK_6CjwW0eru0c_intro-to-agents.png)

In this introductory guide to AI agents in , learn about their key concepts, when to use agents, and where to go next to start building.&#x20;

## Key concepts

In , agents use these core concepts:

- &#x41;**&#x20;large language model (LLM)** is like a brain that the agent uses to think and make decisions. Without it, the agent can't understand or respond to requests.
- An **AI provider** connects the agent to an LLM. Common AI providers include OpenAI, Gemini, and Anthropic Claude. Make's AI Provider connects to LLMs without needing an account with a provider.
- **Reasoning&#x20;**&#x73;hows you the agent's step-by-step thinking, so you can understand each of its decisions and debug when something goes wrong.&#x20;
- **Instructions&#x20;**&#x61;re guidelines that define the agent's role and how it should behave. They include goals, the steps to achieve them, and other rules to follow across all tasks.&#x20;
- **Knowledge&#x20;**&#x69;s reference information that the agent uses to tailor its responses to your goals. It consists of files stored in the agent's memory, for example, FAQs, brand guidelines, company policies, and internal documentation.&#x20;
- **Input&#x20;**&#x69;s variable information that the agent processes each time it runs. It includes specific requests and data from third-party services, such as Slack messages.&#x20;
- **Tools&#x20;**&#x63;onnect agents to third-party services, such as email, database, and CRM systems, to allow them to perform specific tasks. In , tools are modules, , MCP server tools, and other agents.&#x20;
- **Files&#x20;**&#x61;re task-specific documents that the agent processes and uses in tools, such as email attachments or chat message files.

Agents are in  (automated workflows), so some familiarity with  is helpful when you create them. For an introduction to Make-specific concepts, refer to [Key concepts](docId\:ymoJFpyuyRAHffph2AZHv).

## When to use AI agents&#x20;

When deciding whether to use agents in , consider these guidelines:

- **Use a scenario with an agent** for tasks that require flexible reasoning, judgment calls, and variable inputs and outputs. Examples: categorizing support tickets, screening candidates, and analyzing market data.&#x20;
- **Use a scenario with an AI app** for tasks that combine predefined logic with AI-generated content, where both inputs and outputs follow specific parameters. Examples: translating, transcribing, and summarizing documents.&#x20;
- **Use a standard scenario** for tasks with predefined logic that always produce the same output for a given input. Examples: syncing data between services, processing orders, and updating customer management systems.&#x20;

Since AI systems provide unpredictable results, choose tasks for your agent that you trust an intern to handle. Avoid tasks involving sensitive data, high-stakes financial or strategic decisions, or strict legal requirements.

## AI agent examples

This table outlines common examples of AI agents to try:

| **Agent**                          | **What it does**                                                                                                                                        |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Customer support ticket triage** | Categorizes, prioritizes, and assigns customer support tickets to team members                                                                          |
| **Sales outreach&#x20;**           | Identifies potential leads, researches them, schedules meetings, and sends email invitations                                                            |
| **Content marketing&#x20;**        | Creates blogs, social media content, and other materials and automatically posts them to social media channels                                          |
| **Market research analyst&#x20;**  | Gathers company information online, saves the data in a database, and analyzes the collected data                                                       |
| **Candidate screening&#x20;**      | Analyzes candidate resumes against job requirements, creates a form that qualifies each candidate, and shares the form with recruiters and interviewers |
| **SEO optimization&#x20;**         | Analyzes content for SEO and creates a report with recommendations                                                                                      |

To build other agentic  like this one using pre-built templates, see[ Make AI agent library](https://www.make.com/en/ai-agents-library).&#x20;

## What's next

To get started with the **Make AI Agent (New)** app, see these resources:

- [Create your first AI agent](docId\:hA1-tULW54S28IH4StIxr) to build an agent from the beginning
- [Sales outreach AI agent](docId\:eG7rWQ8eRecFa8XngZtLZ) to walk through a guided use case
- The [Automation to AI Agents](https://academy.make.com/bundles/automation-to-ai-agents-foundation) course from Make Academy for more hands-on practice&#x20;

[title] Manage AI agents
[path] Make AI Agents/

:::hint{type="success"}
This page reflects a **previous version of Make AI Agents**. For the latest information, see [Make AI Agent (New)](docId\:rXryASA6852hvhkZ6NhXU).&#x20;
:::

To create and manage AI agents in , navigate to the **AI Agents** configuration tab in the left sidebar.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/FzsjmBiHto_6xA8P1c_Mi-20250929-071833.png" size="70" width="2648" height="1368" position="center" showCaption="false"}

In the **AI Agents** configuration tab, you can:

- View the existing AI agents available in your team
- Create and duplicate agents
- Configure agents
- Delete agents

:::hint{type="info"}
AI agents are shared across all team members, like connections. If you'd like to have a private agent, use a team where you're the only member.
:::

## Create agents

To create a new AI agent, navigate to th&#x65;**&#x20;AI Agents&#x20;**&#x63;onfiguration tab, then click the **Create agent** button in the top-right corner:

:::::WorkflowBlock
::::WorkflowBlockItem
In the **Connection&#x20;**&#x64;ropdown, select an existing connection, or click **Add** to open a **Create a connection** dialog:

1. In the **Connection type&#x20;**&#x64;ropdown, select your AI provider.
2. If applicable, fill in the rest of the form according to the documentation for creating a connection to the AI provider. Check the list of [AI service providers](https://www.make.com/en/help/ai-in-make).
3. Click **Save** to complete the connection.

:::hint{type="info"}
Users o&#x6E;**&#x20;all plans** can select **Make's AI Provider&#x20;**&#x61;s a connection type. Those o&#x6E;**&#x20;paid plans** can also choose a **custom AI provider connection**, such as OpenAI or Anthropic Claude.
:::
::::

:::WorkflowBlockItem
In the **Agent name** field, specify a name for the agent.
:::

:::WorkflowBlockItem
In the **Model** field, select the AI model that the agent will use for reasoning.
:::

::::WorkflowBlockItem
In the **System prompt** field, define the agent's purpose and constraints.&#x20;

:::hint{type="info"}
A concise system prompt is recommended. You can later tailor the agent's behavior to a specific task in the **Make AI Agents** app.
:::
::::

:::WorkflowBlockItem
Click **Save** to confirm agent settings.
:::
:::::

Next, add the agent's tools and context:&#x20;

:::::WorkflowBlock
::::WorkflowBlockItem
In **Context**, click **Add&#x20;**&#x74;o upload files that the agent can use, then **Upload**.&#x20;

**Context&#x20;**&#x61;llows you to add external information that enhances the agent's knowledge base. Examples include internal knowledge bases or reference tables. Context files are stored in a RAG vector database to enable long-term memory.&#x20;

:::hint{type="warning"}
Current limitations for uploading in **Context**:

- TXT, PDF, DOCX, CSV, MD, and JSON files only&#x20;
- 20 MB maximum per file&#x20;
- 20 files maximum per AI agent
- 150 files per team and 200 files per organization (Teams plan)
- 250 files per team and 500 files per organization (Enterprise plan)
- 100 files per team and 150 files per organization (all other plans)
:::
::::

:::WorkflowBlockItem
In **MCP**, you can connect your agent to MCP servers to access additional tools.&#x20;

Click **Add** to create a connection to an available MCP server, then toggle on the tools that you want the agent to access. Click **Save**.&#x20;
:::

:::WorkflowBlockItem
In **Tools**, click **Add** to select the module(s) or  the agent can use.
:::

:::WorkflowBlockItem
Click **Save**.
:::
:::::

You have created an AI agent. You can now use it in a **Make AI Agents&#x20;**> **Run an agent** module, or you can continue configuring it.

## Duplicate agents

If you need to create a new agent based on an existing agent, you can duplicate an agent for a quicker setup.&#x20;

To duplicate an agent:

::::WorkflowBlock
:::WorkflowBlockItem
Navigate to the **AI agents&#x20;**&#x63;onfiguration tab in the left sidebar.
:::

:::WorkflowBlockItem
Identify the existing agent to duplicate.&#x20;
:::

:::WorkflowBlockItem
Click the three dots next to the **Configure** button.
:::

:::WorkflowBlockItem
Select **Duplicate**.
:::

:::WorkflowBlockItem
In the **Duplicate agent** dialog, configure your new agent's connection, name, model, and system prompt.
:::

:::WorkflowBlockItem
Click **Duplicate**.
:::
::::

You have now duplicated an agent. To further configure this agent, click the **Configure&#x20;**&#x62;utton.&#x20;

## Configure agents

When using AI agents, you will need to adapt them to your processes or update them to improve their efficiency.&#x20;

Options for configuring your agent:

- Update the agent's system prompt in **System prompt**
- Add background information or data for the agent to use in **Context**
- Add modules or  the agent can use as its tools in **Tools**

The tools you select in the agent's settings are always available to the agent, in addition to tools that you add in the **Make AI Agents&#x20;**> **Run an agent&#x20;**&#x6D;odule.

To configure an agent:

:::::WorkflowBlock
:::WorkflowBlockItem
Navigate to the **AI Agents&#x20;**&#x63;onfiguration tab in the left sidebar, then click **Configure**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Tv3c1dTEDHliFxX4Bebya-20251104-154117.png)
:::

:::WorkflowBlockItem
Alternatively, you can click the **Configuration** link in the **Make AI Agents&#x20;**> **Run an agent** module settings:

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/W6HaZIbptVOHIQBavuQAX-20250924-101937.png" size="60" width="1296" height="1334" position="center" showCaption="false"}
:::

::::WorkflowBlockItem
To make further changes to the agent's model, click the **Agent settings** button within an agent in the **AI Agents** configuration tab.&#x20;

This allows you to:

- Change the name of the agent
- Change the model the agent is using if the AI provider has different models
- If the model supports **Model Configuration**, you can configure the following:
  - **Maximum tokens**: The maximum amount of tokens that the agent can generate and send back to the **Make AI Agents&#x20;**> **Run an agent** module.
  - **Maximum steps**: The maximum number of iterations the agent can run before providing the final reply to your request.
  - **Maximum history**: The maximum number of messages that the agent adds to its context from the communication thread. This setting influences the agent's context only if you specify the **Thread ID** in the **Make AI Agents&#x20;**> **Run an agent** module settings.

:::hint{type="warning"}
Updating agent settings affects all **Run an agent** modules using the agent. To revert changes, you must do so manually.
:::
::::
:::::

:::hint{type="info"}
You can't change an agent's AI provider. To use a different provider, you must create a new agent.
:::

## Delete agents

To delete an agent:

::::WorkflowBlock
:::WorkflowBlockItem
Navigate to the **AI Agents&#x20;**&#x63;onfiguration tab on the left sidebar.
:::

:::WorkflowBlockItem
&#x20;Click the button with the three dots next to the agent to delete.
:::

:::WorkflowBlockItem
Select **Delete**.
:::
::::

:::hint{type="warning"}
AI agent deletion is permanent. If you delete an AI agent, all modules using the agent will stop working.
:::


[title] Tokens for date/time formatting
[path] Explore more/Functions/

Use date/time formatting tokens to change the format of date/time data. For example, you can convert a timestamp to a quarter of the year or day of the week. The following tables present the tokens supported for changes in formatting.

## Year, month, and day tokens

| **Token** | **Output**                               | **Description**                         |
| --------- | ---------------------------------------- | --------------------------------------- |
| `YY`      | `70 71 ... 29 30`                        | 2 digit year                            |
| `YYYY`    | `1970 1971 ... 2029 2030`                | 4 digit year                            |
| `Y`       | `1970 1971 ... 9999 +10000 +10001`       | Year with any number of digits and sign |
| `Q`       | `1 2 3 4`                                | Quarter of year                         |
| `Qo`      | `1st 2nd 3rd 4th`                        | Quarter of year with ordinal            |
| `M`       | `1 2 ... 11 12`                          | Month number                            |
| `Mo`      | `1st 2nd ... 11th 12th`                  | Month with ordinal                      |
| `MM`      | `01 02 ... 11 12`                        | Month number with leading zero          |
| `MMM`     | `Jan Feb ... Nov Dec`                    | Month abbreviation                      |
| `MMMM`    | `January February ... November December` | Month name                              |
| `D`       | `1 2 ... 30 31`                          | Day of month                            |
| `Do`      | `1st 2nd ... 30th 31st`                  | Day of month with ordinal               |
| `DD`      | `01 02 ... 30 31`                        | Day of month with leading zero          |
| `DDD`     | `1 2 ... 364 365`                        | Day of year                             |
| `DDDo`    | `1st 2nd ... 364th 365th`                | Day of year with ordinal                |
| `DDDD`    | `001 002 ... 364 365`                    | Day of year with leading zero           |

## Week year, week, and weekday tokens

| **Token** | **Output**                          | **Description**                      |
| --------- | ----------------------------------- | ------------------------------------ |
| `d`       | `0 1 ... 5 6`                       | Day of week                          |
| `do`      | `0th 1st ... 5th 6th`               | Day of week with ordinal             |
| `dd`      | `Su Mo ... Fr Sa`                   | Day abbreviation                     |
| `ddd`     | `Sun Mon ... Fri Sat`               | Day abbreviation                     |
| `dddd`    | `Sunday Monday ... Friday Saturday` | Day name                             |
| `E`       | `1 2 ... 6 7`                       | Day of week (ISO)                    |
| `w`       | `1 2 ... 52 53`                     | Week of year                         |
| `wo`      | `1st 2nd ... 52nd 53rd`             | Week of year with ordinal            |
| `ww`      | `01 02 ... 52 53`                   | Week of year with leading zero       |
| `W`       | `1 2 ... 52 53`                     | Week of year (ISO)                   |
| `Wo`      | `1st 2nd ... 52nd 53rd`             | Week of year with ordinal (ISO)      |
| `WW`      | `01 02 ... 52 53`                   | Week of year with leading zero (ISO) |
| `gg`      | `70 71 ... 29 30`                   | Week year                            |
| `gggg`    | `1970 1971 ... 2029 2030`           | Week year                            |
| `GG`      | `70 71 ... 29 30`                   | Week year (ISO                       |
| `GGGG`    | `1970 1971 ... 2029 2030`           | Week year (ISO)                      |

## Hour, minute, second, millisecond, and offset tokens

| Token                | Output                                    | Description                               |
| -------------------- | ----------------------------------------- | ----------------------------------------- |
| `H`                  | `0 1 ... 22 23`                           | 24 hour time                              |
| `HH`                 | `00 01 ... 22 23`                         | 24 hour time with leading zero            |
| `h`                  | `1 2 ... 11 12`                           | 12 hour time                              |
| `hh`                 | `01 02 ... 11 12`                         | 12 hour time with leading zero            |
| `k`                  | `1 2 ... 23 24`                           | 24 hour time                              |
| `kk`                 | `01 02 ... 23 24`                         | 24 hour time with leading zero            |
| `A`                  | `AM PM`                                   | Post or ante meridiem (upper case)        |
| `a`                  | `am pm`                                   | Post or ante meridiem (lower case)        |
| `m`                  | `0 1 ... 58 59`                           | Minutes                                   |
| `mm`                 | `00 01 ... 58 59`                         | Minutes with leading zero                 |
| `s`                  | `0 1 ... 58 59`                           | Seconds                                   |
| `ss`                 | `00 01 ... 58 59`                         | Seconds with leading zero                 |
| `S`                  | `0 1 ... 8 9`                             | Fractional seconds                        |
| `SS`                 | `00 01 ... 98 99`                         | Fractional seconds with leading zero      |
| `SSS`                | `000 001 ... 998 999`                     | Fractional seconds with two leading zeros |
| `SSSS ... SSSSSSSSS` | `000[0..] 001[0..] ... 998[0..] 999[0..]` | Fractional seconds                        |
| `Z`                  | `-07:00 -06:00 ... +06:00 +07:00`         | Time zone                                 |
| `ZZ`                 | `-0700 -0600 ... +0600 +0700`             | Time zone                                 |
| `X`                  | `1360013296`                              | Unix Timestamp                            |
| `x`                  | `1360013296123`                           | Unix Millisecond Timestamp                |


[title] Knowledge files for AI agents
[path] Make AI Agent (New)/Input files and knowledge files for AI agents/

Knowledge files are reference information that your agent uses to tailor its responses to your goals. This guide covers how knowledge files work and how to upload and manage them.&#x20;

## When to upload knowledge files

When you have large blocks of text that an agent must reference often, such as brand guidelines, style guides, or company policies, upload them as knowledge files. The agent stores them in its memory and retrieves only the relevant parts, reducing cost.

## How knowledge files work

When you upload a knowledge file, the following happens:

1. &#x20;To store the file in a RAG vector database,  splits the file into smaller text segments called chunks and converts them to vectors.&#x20;
2. Later, you send the agent a request related to the file.&#x20;
3. The agent searches the database for the chunks relevant to the request.
4. To respond to you, the agent returns the most relevant chunks instead of the entire file.

## Knowledge file requirements and limits

Knowledge files have the following requirements and limits:

- **Supported file types:** TXT, PDF, DOCX, CSV, MD, JSON
- **Maximum file size:&#x20;**&#x32;0 MB per file
- **Maximum files per agent:&#x20;**&#x32;0
- **Maximum files per team:&#x20;**&#x31;00 (Free, Core, Pro), 150 (Teams), 250 (Enterprise)
- **Maximum files per organization:&#x20;**&#x31;50 (Free, Core, Pro), 200 (Teams), 500 (Enterprise)
- **Maximum file storage period:**  deletes files after 180 days of inactivity (if your agent hasn't queried them)&#x20;

## Upload knowledge files

You have two main ways to upload knowledge files: manually in the **Make AI Agent (New)&#x20;**&#x61;pp o&#x72;**&#x20;AI Agents&#x20;**&#x74;ab, or automatically with the **Knowledge&#x20;**&#x61;pp in a :

- Manually upload files for a quick setup, and for files that rarely change, such as company guidelines or style guides.
- Upload files with the **Knowledge&#x20;**&#x61;pp in a separate  for files that regularly change, such as knowledge bases or contact lists.

### Manually upload files in the Make AI Agent (New) app

To manually upload a file in the **Make AI Agent (New)&#x20;**&#x61;pp:

::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder,<font color="#101010"> </font>hover over the plus icon of <font color="#101010"></font> **Make AI Agent (New)** > **Run an agent (New)** module, and click **Knowledge.&#x20;**
:::

:::WorkflowBlockItem
In **Agent knowledge**, click **Upload files**.&#x20;
:::

:::WorkflowBlockItem
Clic&#x6B;**&#x20;Choose file** to select a file to upload.
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Optionally, to edit the file description, click the pencil icon next to your file and make your changes.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Toggl&#x65;**&#x20;Advanced settings** for optional file settings.
:::

:::WorkflowBlockItem
In **Search query**, specify a search query that the agent uses to find information in your file, or allow the agent to decide the query.
:::

:::WorkflowBlockItem
In **Limit**, specify the number of results (relevant chunks of the file) the agent returns, or allow the agent to decide the number.
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::
::::

You've now manually uploaded a file in the **Make AI Agent (New)&#x20;**&#x61;pp.

### Manually upload files in the AI Agents tab&#x20;

To manually upload a file in the **AI Agents** tab:

::::WorkflowBlock
:::WorkflowBlockItem
Go to **AI Agents** on the left sidebar, then to **Knowledge files**.&#x20;
:::

:::WorkflowBlockItem
Click **Upload files** in the top-right corner.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Ro3yzD4ZdQTDHrWVIUAC5-20260612-122928.png)
:::

:::WorkflowBlockItem
Click **Choose file** to select a file, or drag and drop the file.&#x20;
:::

:::WorkflowBlockItem
Click **Upload**.&#x20;
:::
::::

You've now manually uploaded a file in the **AI Agents&#x20;**&#x74;ab.&#x20;

### Automatically upload files in the Knowledge app in a separate &#x20;

To upload a file in the **Knowledge** app in a separate  from the AI agent :&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In a new , add a module that watches for files and one that downloads files.&#x20;
:::

:::WorkflowBlockItem
Add the **Knowledge** > **Upload knowledge** module after it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/VlIEYx0P8nTHLL5Hj1xpQ-20260612-115935.png" size="90" width="969" height="361" darkWidth="969" darkHeight="361" position="center" caption="This example scenario watches for files in Google Drive and downloads them before uploading them in the Knowledge app." showCaption="true"}
:::

:::WorkflowBlockItem
In the **Upload knowledge** module settings, map the file name and data from the download file module.&#x20;
:::

:::WorkflowBlockItem
Click **Run once**.
:::
::::

You've now uploaded a file in the **Knowledge&#x20;**&#x61;pp. To regularly update the file with its newest version, replace the **Upload Knowledge module** with an **Update Knowledge** module.

## Manage knowledge files

You can download, edit, update, and delete your existing knowledge files in **AI Agents** > **Knowledge files**.

### Download files

To download a file:

::::WorkflowBlock
:::WorkflowBlockItem
Go to **AI Agents** on the left sidebar, then to **Knowledge files**.&#x20;
:::

:::WorkflowBlockItem
Click the three-dot menu next to the file you want to download.&#x20;
:::

:::WorkflowBlockItem
Select **Download**.&#x20;
:::
::::

You've now downloaded a file.&#x20;

### Edit files

To edit a file's name and description:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Go to **AI Agents** on the left sidebar, then to **Knowledge files**.&#x20;
:::

:::WorkflowBlockItem
Click the three-dot menu next to the file you want to download.&#x20;
:::

:::WorkflowBlockItem
Select **Edit**.&#x20;
:::

:::WorkflowBlockItem
Add a new file name and description. The name must include underscores after each word, for example, "`Company_terminology`."&#x20;
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

You've now edited a file's name and description. &#x20;

### Update files

To update a file (replace an existing file with another one):

::::WorkflowBlock
:::WorkflowBlockItem
Go to **AI Agents** on the left sidebar, then to **Knowledge files**.&#x20;
:::

:::WorkflowBlockItem
Click the three-dot menu next to the file you want to replace.&#x20;
:::

:::WorkflowBlockItem
Select **Update**.&#x20;
:::

:::WorkflowBlockItem
Click **Choose file&#x20;**&#x74;o select a file to upload, or drag and drop a file.
:::

:::WorkflowBlockItem
Optionally, in **Description**, edit the AI-generated file description, or select **Regenerate description&#x20;**&#x66;or AI to generate a new one.
:::

:::WorkflowBlockItem
Click **Update**.&#x20;
:::
::::

You've now updated a file.&#x20;

### Delete files

To delete a file:

::::WorkflowBlock
:::WorkflowBlockItem
Go to **AI Agents** on the left sidebar, then to **Knowledge files**.&#x20;
:::

:::WorkflowBlockItem
Click the three-dot menu next to the file you want to delete.&#x20;
:::

:::WorkflowBlockItem
Select **Delete**, then confirm the deletion.&#x20;
:::
::::

You've now deleted a file.&#x20;

[title] Data structures
[path] Explore more/Data store/

A data structure is a document that describes in detail the format of the data being transferred to . Based on this document, the  editor is able to figure out which module returns or receives which kind of data. The data structure documents are most commonly used for serializing/parsing data formats such as JSON, XML, CSV and others.

You can create a data structure when [adding a new data store.](docId\:l6duB0QnRcBjBVNhw6-Xk)

You can read more about [supported data types](docId\:hdc1mr5JWOaqEIiS266kB).

## Data structure generator

Data structures don't always have to be created. You can make it easier by using a template from our built-in generator. By providing a data sample, the generator will automatically create a data structure based off of the data sample you entered. The created data structure can then be manually modified.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-KkNhnBJNfzFoSSatGgtAH-20250221-151206.png" size="70" width="624" height="477" position="flex-start" alt="Data structure generator" darkWidth="624" darkHeight="477" showCaption="false"}

## Track data structure usage

You can track where you are using a data structure in .

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Data structures**.
:::

:::WorkflowBlockItem
To the right of the data structure, click the data store icon to see a list of data stores using the data structure.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/cUE6709AV5nLiKrI1yb9Z-20260316-100911.png)
:::

:::WorkflowBlockItem
Click the  icon to see a list of the  using the data structure.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/5WvIHJAIP84_kqFbKe1Oa-20260316-101214.png)
:::
::::

Click to go to the data store or  where you are using the data structure.


[title] AI agent use case
[path] Make AI Agents/

:::hint{type="success"}
This page reflects a **previous version of Make AI Agents**. For the latest information, see [Make AI Agent (New)](docId\:rXryASA6852hvhkZ6NhXU).&#x20;
:::

In the following use case, we will build an agent that helps us manage the stock inventory of a small shop.&#x20;

We will use Slack to submit tasks for the agent and receive responses about their completion. The agent will use  and other information we provide to him to list our stock information and order new items.

In this use case, we will:

::::WorkflowBlock
:::WorkflowBlockItem
[Set up the AI agent](docId\:QQHCPQi6cGVX33z6sBcDv)&#x20;
:::

:::WorkflowBlockItem
[Create the AI agent's tools](docId\:OZhcC-c-k-5XdXtTu9zHM):

- Scenario to list shop inventory
- Scenario to order more stock
:::

:::WorkflowBlockItem
[Create a scenario to send tools to the AI agent](docId\:Ce8DepjdaG63mIeW0tJn0)&#x20;
:::
::::

**Prerequisites**:

- API key of the AI service provider. Check the documentation of your AI service provider to find out how to get it.


[title] MCP tools for AI agents
[path] Make AI Agents/Tools for AI agents/

:::hint{type="success"}
This page reflects a **previous version of Make AI Agents**. For the latest information, see [Make AI Agent (New)](docId\:rXryASA6852hvhkZ6NhXU).&#x20;
:::

You can connect your AI agent to MCP servers to access additional tools. &#x20;

To add an MCP tool for an AI agent:

:::::WorkflowBlock
:::WorkflowBlockItem
Go to the **AI Agents** configuration tab on the left sidebar.&#x20;
:::

:::WorkflowBlockItem
Select an agent where you want to add an MCP tool.
:::

:::WorkflowBlockItem
In the **MCP** section, click **Add**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-9NSw3Mw-AULKzXjRzkv2q-20250826-135709.png" size="60" width="1322" height="1268" position="center" showCaption="false"}
:::

::::WorkflowBlockItem
Create a connection to an available MCP server or choose an existing connection.&#x20;

:::hint{type="info"}
See [here](https://apps.make.com/mcp-client#vHyR5) how to create a connection to an MCP client.&#x20;
:::
::::

:::WorkflowBlockItem
Toggle on the tools that you want the agent to access.
:::

:::WorkflowBlockItem
Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-7uGD8E_mWot8Ovwuad2h1-20250826-140010.png" size="40" width="862" height="1202" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save** in the top-right corner to save the changes in your AI Agent.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/AK3jIOIL3REuFjVJW6T4h-20250929-071225.png" size="70" width="2614" height="1288" position="center" showCaption="false"}
:::
:::::

You can now use your MCP servers and their tools in your AI agent. You can also:

- Click the drop-down to enable and disable active tools
- Click the gear icon to edit the connection
- Click the delete icon to delete the MCP tool from your AI agent

::Image[]{src="https://app.archbee.com/api/optimize/PL8X94efBsjvhfQV3wyyj-ZWp7NSwEdD_vZdKlGQapd-20250826-141225.png" size="50" width="1272" height="274" position="center" showCaption="false"}



Within the **Make AI Agents > Run an agent** module, you can click the drop-down to check all the active MCP tools added to your AI agent.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-KoWOp5pk_7YEhRK7zw3TV-20250826-142058.png" size="40" width="774" height="674" position="center" showCaption="false"}


[title] Functions
[path] Explore more/

Transform and format data using our range of functions:&#x20;

::::LinkArray{contentSource="DOCS" sourceParentDocId="itHXaUhg0A2HMw4QwXcf0" childrenDocs="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]" itemsPerRow="2" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ZgNFXLvBBwV9mHnQCvWPq_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="EfN1AJre8itYVlHd3X9hB" displayMode="CARD" docSeoDescription="Apply built-in functions to transform data and create complex formulas within your scenarios"}
[Use functions](docId\:EfN1AJre8itYVlHd3X9hB)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/iDpYabsbW41vbw4sDHISY_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="HaNw5IEFnHvoIuAffUzXy" displayMode="CARD" docSeoDescription="Manage how specific items are extracted or omitted from your data and apply conditional logic"}
[General functions](docId\:HaNw5IEFnHvoIuAffUzXy)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/2f2VgmFlXtyvPo1BMHupJ_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="oxBNhXmSPoAi2KLTL2_Ee" displayMode="CARD" docSeoDescription="Perform calculations, rounding, and number formatting"}
[Math functions](docId\:oxBNhXmSPoAi2KLTL2_Ee)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/j1hVOTVcTfZ5EFVOGOH0v_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="nNCw6fq-BfHc0nFI7OzSh" displayMode="CARD" docSeoDescription="Generate random numbers to use in your formulas and functions"}
[Math variables](docId\:nNCw6fq-BfHc0nFI7OzSh)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Nn_KXtneqFeXxYS5wYmXW_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="sr1Oy9LW5yc0XMmuEfgIb" displayMode="CARD" docSeoDescription="Modify and transform data using text and binary functions."}
[Text and binary functions](docId\:sr1Oy9LW5yc0XMmuEfgIb)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/6puIOMnW3IMFTr5QH9XWl_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="1kv1ib5q50i0SLbc7G2PZ" displayMode="CARD" docSeoDescription="Format, parse, and calculate dates and times with timezone support"}
[Date and time functions](docId:1kv1ib5q50i0SLbc7G2PZ)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/m8qw-cZA_wSylI8kXxJwY_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="c88Eg0PBIOwHF4y5DgPz7" displayMode="CARD" docSeoDescription="Use special parsing tokens to read and extract dates and times"}
[Tokens for date/time parsing](docId\:c88Eg0PBIOwHF4y5DgPz7)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/GWuCIVMRdjyvn_XZF50M2_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="KUmuKVBfixzZTKuZyE7XZ" displayMode="CARD" docSeoDescription="Use special formatting tokens to change the format of the date and time data"}
[Tokens for date/time formatting](docId\:KUmuKVBfixzZTKuZyE7XZ)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/JtyYV2Ruf5cul2YLg1uLU_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="EfxY9mDhratLOenUvnIOO" displayMode="CARD" docSeoDescription="Sort, filter, and transform arrays to manipulate complex data structures"}
[Array functions](docId\:EfxY9mDhratLOenUvnIOO)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/iV7KOLbg-MvGvQ2Sa1y0b_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="6aXxxE6k-Lc5Pm-4qrLaV" displayMode="CARD" docSeoDescription="Create custom JavaScript functions to transform data in your scenarios"}
[Custom functions](docId:6aXxxE6k-Lc5Pm-4qrLaV)
:::
::::


[title] Math variables
[path] Explore more/Functions/

Use math variables to insert a random number into your functions.

## random

Returns a floating-point, pseudo-random number in the range \[`0`, `1`) (inclusive of `0`, but not `1`).

Use the following formula to generate an integer pseudo-random number in the range \[`min`, `max`] (inclusive of both, `min` and `max`):

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/gc7yTBq4zGHJH3DFAMrCq_uuid-81fd5f8a-8050-beef-9184-deff3b944d95.png" size="70" width="506" height="88" position="flex-start" alt="Math variable - random" showCaption="false"}

```text
{{floor(random * (1.max - 1.min + 1)) + 1.min}}
```

### Example: Roll the dice

You can employ the `random` variable to create a dice game that randomly picks a number, for example between 1 and 6, and then returns that number to a user.

::::WorkflowBlock
:::WorkflowBlockItem
In the mapping panel of the **Tools > Set variable** module, select the **Math functions** tab.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-xyuY8nuBAllnvjQycz-mh-20250226-093022.png" size="60" width="721" height="417" position="flex-start" alt="Random math variable" showCaption="false"}
:::

:::WorkflowBlockItem
Select the `floor` function.
:::

:::WorkflowBlockItem
Insert the following:

```none
{{floor(random * 6) + 1}}
```
:::
::::


[title] Make AI Agents
[path] /

Learn about agentic automation with the **Make AI Agents&#x20;**&#x61;pp:

::::LinkArray{contentSource="DOCS" sourceParentDocId="0KbNuoduk1EmVKqnwMDQC" childrenDocs="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]" itemsPerRow="2" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/3JLgI-GxJFRGlzNl4uYnj_9.png" headerType="IMAGE" docId="05qYfeST5_mSQ5Wq4ed7A" displayMode="CARD" docSeoDescription="Discover what AI agents are and how they work"}
[Introduction to AI agents](docId:05qYfeST5_mSQ5Wq4ed7A)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/JyroW6Jy2_nDW9frFrwez_9.png" headerType="IMAGE" docId="ne3moWmtjsdrfQZeWhZJO" displayMode="CARD" docSeoDescription="Create, configure, and manage AI agents with instructions, knowledge, and tools"}
[Manage AI agents](docId\:ne3moWmtjsdrfQZeWhZJO)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/gc7zk5SK-LIzO_M8BYlKT_9.png" headerType="IMAGE" docId="UkLl6gZWyz2VjFvwx5YRc" displayMode="CARD" docSeoDescription="Learn about modules, scenarios, and MCP tools and when to use each in your AI agent"}
[Tools for AI agents](docId\:UkLl6gZWyz2VjFvwx5YRc)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/hiObyGZ91IGFoikhXQNAa_9.png" headerType="IMAGE" docId="kvwI15AjDGHCMs7dWA_ig" displayMode="CARD" docSeoDescription="Design effective AI agents with tips on tools, prompts, data security, and more"}
[AI agent best practices](docId\:kvwI15AjDGHCMs7dWA_ig)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/lpxbIx0UjfwJq2-OY85C4_9.png" headerType="IMAGE" docId="i_eKr8XqKy1g_gTvFXBAH" displayMode="CARD" docSeoDescription="Understand the configuration settings needed to set up and customize AI agents"}
[AI Agents configuration](docId\:i_eKr8XqKy1g_gTvFXBAH)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/XMEAI9SPKyOcfSmaltRg-_9.png" headerType="IMAGE" docId="MDyjgeEIIRrXMd607V1xg" displayMode="CARD" docSeoDescription="Explore Make AI Agents app modules and settings to use AI agents in scenarios"}
[Make AI Agents app](docId\:MDyjgeEIIRrXMd607V1xg)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/LwpAHvMxbRGr9KUNrH4o8_9.png" headerType="IMAGE" docId="_doNhkuw79HF58dDYbAkV" displayMode="CARD" docSeoDescription="Build your first AI agent step by step with this simple inventory management example"}
[AI agent use case](docId:_doNhkuw79HF58dDYbAkV)
:::
::::


[title] Error handlers
[path] Error handling/

The following topic provides a quick reference to working with error handlers in . If you want to learn more about individual error handlers, check the dedicated articles in this section of the Help Center.

::::LinkArray{contentSource="DOCS" sourceParentDocId="_JsogpsCihSJp9LJ41VDy" childrenDocs="[object Object],[object Object],[object Object],[object Object],[object Object]" itemsPerRow="2" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/QBKR8-61qa44q_PTOhBFs_11.png" headerType="IMAGE" docId="j9XCttcBfDwq3q3u144FN" displayMode="CARD" docSeoDescription="Use the Skip error handler to disregard errors and allow the scenario to process subsequent bundles"}
[Skip error handler](docId\:j9XCttcBfDwq3q3u144FN)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/48Ms2m82obih6jpOJbMji_11.png" headerType="IMAGE" docId="cPTWi8yI45ZL3M5slzjNV" displayMode="CARD" docSeoDescription="Use Retry error handler to store incomplete executions and enable automatic or manual retries."}
[Retry error handler](docId\:cPTWi8yI45ZL3M5slzjNV)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/CJH0xfFW97P_NrVncUCsN_11.png" headerType="IMAGE" docId="7xRuGbeY0uTl58ucpwp7v" displayMode="CARD" docSeoDescription="Add Resume error handler to set a substitute value for a failed module and continue scenario processing"}
[Resume error handler](docId:7xRuGbeY0uTl58ucpwp7v)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/wBtMo3upNcqLJ7ttcAnF7_11.png" headerType="IMAGE" docId="vx_5byW32D43uwVobwE7t" displayMode="CARD" docSeoDescription="Add Commit error handler to stop scenario execution when an error occurs and save the processed changes"}
[Commit error handler](docId\:vx_5byW32D43uwVobwE7t)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/NP6nug-mmwKjroUITMbsg_11.png" headerType="IMAGE" docId="B_9VerlQIMAv-OEvxw39A" displayMode="CARD" docSeoDescription="Apply Rollback error handler to stop scenario execution when an error occurs and revert changes"}
[Rollback error handler](docId\:B_9VerlQIMAv-OEvxw39A)
:::
::::






[title] Securing data with Make
[path] Explore more/

Data security is important for operational integrity, confidentiality, and authentication.

You can use a variety of methods to secure your data in .

## Methods and  use cases

Select a method for more detailed information, **including sample use cases with step-by-step instructions**:

::::LinkArray{contentSource="CUSTOM" itemsPerRow="2"}
:::LinkArrayItem
[AES (Advanced Encryption Standard)](docId\:KwnE2u3w9OrBKJldUeE9O)

AES is a symmetric algorithm that uses the same key for both encryption and decryption.
:::

:::LinkArrayItem
[PGP (Pretty Good Privacy)](docId\:QsAAf5s_fMxaE7X0XPfJ4)

PGP is a cryptographic tool that encrypts a message using both symmetric and asymmetric keys.
:::

:::LinkArrayItem
[Digital signature](docId\:YpvXzpw6VlCls1ES8azV7)

A digital signature is used to verify the identity of the sender and that a message or document is authentic and unaltered.&#x20;
:::

:::LinkArrayItem
[Hash functions](docId:-0cTbs0pGXP3pp8FXYm5B)

Hash functions take variable-length inputs and produce fixed-length outputs of text that can't be reversed or decoded.
:::

:::LinkArrayItem
[Methods of securing data overview](docId\:Nr5i2u8cA8druikQRj8JO)

Learn how data security helps prevent data tampering and unauthorized access while minimizing data exposure.﻿
:::
::::



## Data security examples in &#x20;

Consider the following examples to determine the best data security methods to use for your .

### Encrypt and decrypt data with a secret key that is not hidden

If you want to encrypt and decrypt data with a secret key that is not hidden (low data security):

Use [AES encryption/decryption (simple)](docId\:KwnE2u3w9OrBKJldUeE9O)&#x20;

**Example:&#x20;**

An internal service to let teams search for non-confidential employee information without accessing the IdP (identity provider).&#x20;

If a third-party manages to determine the webhook URL and API key, the secret key used for encryption and decryption protects the employee information. However, the key is not hidden in the scenario module.

Required resources:

- A module to connect to the IdP
- [Encryptor > AES Encrypt (simple)](https://apps.make.com/crypto#aes-encrypt-simple)
- [Encryptor > AES Decrypt (simple)](https://apps.make.com/crypto#aes-decrypt-simple)
- A secret key shared in advance with all the teams using the service

### Encrypt and decrypt sensitive data with a hidden, secret key

If you want to encrypt and decrypt sensitive data with a hidden, secret key (more data security):

Use  [AES encryption/decryption (advanced)](docId\:KwnE2u3w9OrBKJldUeE9O)&#x20;

**Example:&#x20;**

An internal service to give a limited number of users access to confidential employee information (for example: salary, home address, yearly reviews, etc.).&#x20;

If a third-party manages to determine the webhook URL and API key, the secret key protects the employee information. Additionally, the shared AES key is encrypted by Make and is inaccessible.

Required resources:

- A module to connect to the IdP
- [Encryptor > AES Encrypt (advanced)](https://apps.make.com/crypto#aes-encrypt-advanced)
- [Encryptor > AES Decrypt (advanced)](https://apps.make.com/crypto#aes-decrypt-advanced)
- An AES key (128 or 256 bits) shared in advance with relevant users

### Encrypt and decrypt sensitive data with a pair of private and public keys

If you want to encrypt and decrypt sensitive data with a pair of private and public keys (high data security):

Use [PGP encryption/decryption](docId\:QsAAf5s_fMxaE7X0XPfJ4)&#x20;

**Example:&#x20;**

A service to share confidential business information with a B2B partner.&#x20;

PGP provides a high level of security against man-in-the-middle attacks. The sender and recipient exchange public keys in advance. The data is encrypted with the recipient's public key and signed with the sender's private key. The data is decrypted with the recipient's private key and the signature is verified with the sender's public key.

Required resources:

- [Encryptor > Encrypt a PGP message](https://apps.make.com/crypto#encrypt-a-pgp-message)
- [Encryptor > Decrypt a PGP message](https://apps.make.com/crypto#decrypt-a-pgp-message)
- A set of public and private PGP keys for the sender
- A set of public and private PGP keys for the recipient

### Verify the sender and authenticity of a document

If you want to verify the sender and authenticity of a document:

Use a [digital signature](docId\:YpvXzpw6VlCls1ES8azV7)&#x20;

**Example:**

A service to verify that the sender of a contract is legitimate and the contract has not been modified.

The sender creates a digital signature with a private RSA key and sends the contract to the recipient with the digital signature. The recipient uses the sender's public RSA key to verify the identity of the sender and that the contract has not been tampered with.

Required resources:

- [Encryptor > Create a digital signature](https://apps.make.com/crypto#create-digital-signature)
- A public and private RSA key for the sender. The public key is shared with the recipient in advance.

### Secure and verify a password

If you want to secure and verify a password:&#x20;

Use [hash functions](docId:-0cTbs0pGXP3pp8FXYm5B)&#x20;

**Example:**

A password system for a mission-critical application that requires additional security.

The password is never stored. Instead, the SHA-512 hash of the password is stored in a data store. Whenever a user logs in to access the system, the password they submit is hashed with SHA-512 and the hash is compared to the stored hash.&#x20;

Required resources:

- [The SHA-512 hash function](https://help.make.com/text-and-binary-functions#sha512)
- [A data store](https://help.make.com/l6du-data-stores)

### Create a secure audit log

If you want to create a secure audit log:

Use [hash functions](docId:-0cTbs0pGXP3pp8FXYm5B)&#x20;

**Example:**

A method to track users' actions in a system. The method prevents users from accessing or modifying the audit logs.

When a record of the userID and additional details are stored in the data store, a hash is stored as well. To access the record and verify that it has not been changed, your generated hash must match the stored hash. The random salt is saved in a different location, so no one can calculate a new hash if they attempt to modify the record.&#x20;

Required resources:

- [A hash function with a random salt](https://help.make.com/text-and-binary-functions#sha256)
- [A data store](https://help.make.com/l6du-data-stores)


[title] Make AI Agent (New)
[path] /

Get started with the **Make AI Agent (New)&#x20;**&#x61;pp. Learn key concepts, build your first agent, manage knowledge, and explore examples.

::::LinkArray{contentSource="DOCS" sourceParentDocId="rXryASA6852hvhkZ6NhXU" childrenDocs="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]" itemsPerRow="2" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/I30paa7cP2G9ZhRKHNgRE_3-1.png" headerType="IMAGE" docId="TDbUXjpvPGmQxZPwVqJ7w" displayMode="CARD" docSeoDescription="Learn when to use the Make AI Agent (New) app, understand key concepts, and see practical examples."}
[Introduction to Make AI Agent (New)](docId\:TDbUXjpvPGmQxZPwVqJ7w)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/J-O5FIDw4BFeGjE6q-74n_5.png" headerType="IMAGE" docId="hA1-tULW54S28IH4StIxr" displayMode="CARD" docSeoDescription="Build your first AI agent: plan your agent, configure instructions, add tools and knowledge, and test before going live."}
[Create your first AI agent](docId\:hA1-tULW54S28IH4StIxr)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/_FaFsyZorgYfHBL3mm1wN_1.png" headerType="IMAGE" docId="eG7rWQ8eRecFa8XngZtLZ" displayMode="CARD" docSeoDescription="Build a sales outreach AI agent: watch Gmail for leads, research companies, qualify them, draft personalized emails, and send to Slack."}
[Sales outreach AI agent use case](docId\:eG7rWQ8eRecFa8XngZtLZ)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/itweWKQblQc_o1XFBbdrZ_triggers.png" headerType="IMAGE" docId="St83Bmv0xAT86o2SZHycE" displayMode="CARD" docSeoDescription="Create AI agent scenarios using common triggers: chat messages, emails, forms, and webhooks."}
[Create AI agents for different triggers](docId\:St83Bmv0xAT86o2SZHycE)
:::

:::LinkArrayItem{headerType="IMAGE" docId="NZHT21BU_GEVB7ADLCNjG" displayMode="CARD" docSeoDescription="Learn when to use input files vs. knowledge files in AI agents to reduce token usage, and explore specifics about each type."}
[Input files and knowledge files for AI agents](docId\:NZHT21BU_GEVB7ADLCNjG)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/zJgdUyhY_cp_COu8v8mKA_4.png" headerType="IMAGE" docId="jMOlI8G2T7FJfcFBGBZgN" displayMode="CARD" docSeoDescription="Reference Make AI Agent (New) app settings as you build or troubleshoot your AI agent. "}
[Make AI Agent (New) app](docId\:jMOlI8G2T7FJfcFBGBZgN)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/7v4J138cIjO5xuTRVLZq5_best-practices-1.png" headerType="IMAGE" docId="tyY0H5PsJp3nWFCVOQ7KC" displayMode="CARD" docSeoDescription="Design effective AI agents with tips on tools, prompts, testing, and more."}
[Make AI Agent (New) best practices](docId\:tyY0H5PsJp3nWFCVOQ7KC)
:::

:::LinkArrayItem{headerType="IMAGE" docId="ms_rjgzNtzqwAweGAKIyf" displayMode="CARD" docSeoDescription="Learn how credits and token costs work in Make AI Agent (New) and Knowledge apps. "}
[Credit usage for AI agents](docId\:ms_rjgzNtzqwAweGAKIyf)
:::
::::


[title] Email-triggered AI agent
[path] Make AI Agent (New)/Create AI agents for different triggers/

This email-triggered AI agent  watches new emails in your Gmail account, and the agent replies to them. The watched emails are ones you've sent to yourself with a specific subject. Later, you can tailor the watch criteria to your needs.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Z8HkSp1ABFNE3JpEpbPj4_email-triggered-ai-agent.png)

## Prerequisites

- A Gmail account
- A test email, with any text and subject, sent to your personal email

## Step 1. Add Watch emails module

The **Gmail&#x20;**> **Watch emails&#x20;**&#x6D;odule watches your Gmail account for new emails.

To add a **Watch emails&#x20;**&#x6D;odule:

::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, click the giant plus.
:::

:::WorkflowBlockItem
In the app search, search for and click **Gmail**.
:::

:::WorkflowBlockItem
Select the **Watch emails&#x20;**&#x6D;odule.
:::

:::WorkflowBlockItem
In **Connection**, select an existing Gmail connection from the dropdown or click **Add&#x20;**&#x74;o add a new one.&#x20;
:::

:::WorkflowBlockItem
Optionally, in **Label**, you can filter the emails by label.
:::

:::WorkflowBlockItem
Toggle **Advanced settings**.&#x20;
:::

:::WorkflowBlockItem
In **Sender email address**, enter your personal email address so that the module only watches emails from that address.
:::

:::WorkflowBlockItem
Optionally, in **Subject**, add the specific subject to watch for.
:::

:::WorkflowBlockItem
Click **Save**.
:::

:::WorkflowBlockItem
In the dialog that prompts you to choose where to start processing data, click the link.&#x20;
:::

:::WorkflowBlockItem
In the **Choose where to start** dialog, select **Choose manually** and select the first option (the email you sent yourself earlier).&#x20;
:::

:::WorkflowBlockItem
Click **Save** on the  toolbar.&#x20;
:::

:::WorkflowBlockItem
Click **Run once** on the  toolbar to retrieve your test email and have data to map in other modules.&#x20;
:::

:::WorkflowBlockItem
Click the output bubble to view the output items that you can share with the agent. For example, the `Full text body `value is the content of the email.&#x20;
:::
::::

You've now added the **Gmail&#x20;**> **Watch email&#x20;**&#x6D;odule to the .&#x20;

## Step 2. Add the Run an agent module

To add the **Make AI Agent (New)** > **Run an agent** module:

:::::WorkflowBlock
:::WorkflowBlockItem
Click the plus icon next to the **Gmail&#x20;**> **Watch emails** module.&#x20;
:::

:::WorkflowBlockItem
In the app search, search for and click **Make AI Agent (New)**.&#x20;
:::

:::WorkflowBlockItem
Click the **Run an agent** module.&#x20;
:::

::::WorkflowBlockItem
In **Connection**, select an existing AI provider connection from the dropdown or click **Add&#x20;**&#x74;o add a new one.&#x20;

:::hint{type="info"}
If you don't want to set up an account with an AI provider, select **Make's AI Provider**.&#x20;
:::
::::

:::WorkflowBlockItem
In **Model**, select a model from your chosen AI provider.&#x20;
:::

:::WorkflowBlockItem
In **Instructions**, describe who the agent is and what it does. You can copy-paste the below:&#x20;

You are a customer service agent that answers questions from customers. Read the content of the email and answer in HTML format. Directly reply to the email. Don't provide any email signature.&#x20;
:::

:::WorkflowBlockItem
In **Input**, map the `Full text body` value from the **Gmail&#x20;**> **Watch emails** module so that the agent accesses the email content.&#x20;

Later, you can add other values that the agent needs, such as `Date `and `From (name)`.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/TiLmU65ovPDxSQ0dNuRxc-20260210-153413.png" size="50" width="467" height="474" position="center" darkWidth="467" darkHeight="474" showCaption="false"}
:::

:::WorkflowBlockItem
In **Conversation ID**, map the `Thread ID` value from the **Gmail&#x20;**> **Watch emails** module. This action retrieves the email history so the agent remembers previous emails in case the user replies.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::
:::::

You've now added the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule to your .

## Step 3. Add a Reply to an email module

Add a **Gmail&#x20;**> **Reply to an email** module so the agent replies to incoming emails.&#x20;

To add a **Reply to an email&#x20;**&#x6D;odule:

::::WorkflowBlock
:::WorkflowBlockItem
Click the plus icon next to the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule.&#x20;
:::

:::WorkflowBlockItem
In the app search, click **Gmail**.&#x20;
:::

:::WorkflowBlockItem
Click the **Reply to an email&#x20;**&#x6D;odule.&#x20;
:::

:::WorkflowBlockItem
In **Connection**, select your existing Gmail connection.&#x20;
:::

:::WorkflowBlockItem
In **Thread ID**, map the `Thread ID` value from the **Gmail** > **Watch emails** module. This action allows the agent to reply directly to the initial user email.&#x20;
:::

:::WorkflowBlockItem
In **Body contents**, click **Add body content**.&#x20;
:::

:::WorkflowBlockItem
In **Text**, map the `Response` value from the **Run an agent&#x20;**&#x6D;odule, so the agent sends its response as the email reply.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.
:::

:::WorkflowBlockItem
Test your :

1. Click the down arrow next to **Run once** on the  toolbar.&#x20;
2. In **Scenario run**, select the previous scenario run to use its trigger data as test data.&#x20;
3. Click **Run once**.&#x20;
4. Check your inbox for a reply from the agent.&#x20;
:::
::::

You've now created an email-triggered AI agent .

[title] Scenarios for AI agents
[path] Make AI Agents/Tools for AI agents/

:::hint{type="success"}
This page reflects a **previous version of Make AI Agents**. For the latest information, see [Make AI Agent (New)](docId\:rXryASA6852hvhkZ6NhXU).&#x20;
:::

When you use a  as a tool for an AI agent, you need to create a  (or choose an existing one), and specify its name and description. Unlike module tools,  require you to define the [scenario inputs and outputs](https://help.make.com/scenario-inputs-and-outputs) so that the agent knows how to handle the data it receives and returns.&#x20;

:::hint{type="info"}
To use a  as a tool for an AI agent, make sure it's active and scheduled **On demand**. You can also use  triggered by a Custom webhook.
:::

### Create a 

You can create a  for an AI agent in the **AI Agents&#x20;**&#x63;onfiguration tab or in the **Make AI Agents > Run an agent** module.&#x20;

To create a  for an AI agent in the **AI Agents&#x20;**&#x63;onfiguration tab:

::::WorkflowBlock
:::WorkflowBlockItem
Go to the **AI Agents** configuration tab on the left sidebar.&#x20;
:::

:::WorkflowBlockItem
Select an agent where you want to add a .
:::

:::WorkflowBlockItem
In the **Tools** section, click **Add**, and select **Scenario**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/vjb4_BwKmX0Az4vFCKeSm-20250923-075628.png" size="60" width="1310" height="1236" position="center" darkWidth="1310" darkHeight="1236" showCaption="false"}
:::

:::WorkflowBlockItem
Clic&#x6B;**&#x20;Create scenario**.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-hkSSlrM95FomhsH5ZyeUT-20250821-161259.png" size="60" width="1086" height="940" position="center" darkWidth="1086" darkHeight="940" showCaption="false"}
:::

:::WorkflowBlockItem
Configure the :&#x20;

- Enter scenario's **Name** and **Description.**
- Define scenario inputs and outputs:
  - **Name:&#x20;**&#x54;he name of the input (e.g., "city")
  - **Description:&#x20;**&#x54;he description of the input (e.g., "City we want to get the weather report from")
  - **Type:&#x20;**&#x54;he data type (e.g., Text for a city name)
:::

:::WorkflowBlockItem
Click **Create scenario**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/untoS8Sp2W8IzF2MBKyz--20250924-084908.png" size="40" width="698" height="1382" position="center" showCaption="false"}
:::
::::

To create a  for an AI agent in the **Make AI Agents > Run an agent** module:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Open the **Make AI Agents > Run an agent** module in a .
:::

:::WorkflowBlockItem
In the **Agent** field, select your agent.&#x20;
:::

:::WorkflowBlockItem
In the **Tools** section, click **Add**, and select **Scenario**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/N3bSys30BU0Sspj3H5RTy-20250924-085302.png" size="60" width="1182" height="1182" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Follow the same steps as when creating a  tool in the **AI Agents&#x20;**&#x63;onfiguration tab.
:::
::::

Once the  is created, add modules to it:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Click the  or the **Edit** button, and then click the giant plus.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/_nvQN8CXH_Mb2BCUoSX5R-20250926-163403.png" size="80" width="2610" height="1408" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Choose the module you want to add.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-ZoPo0aX0Vkcw-yz0H1r7P-20250822-060928.png" size="80" width="1724" height="878" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Map the corresponding  inputs you've added in step 5, and click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-c0LiG_ShfmO563C8C8jo5-20250826-095026.png" size="60" width="1298" height="592" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
In the Toolbar, click **Save** to save the , check if it's scheduled to run **On demand&#x20;**&#x61;nd activate it. This is required to use a as a tool for AI agents.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-18VZhZjc0Cd3Dkf1Wo17N-20250822-062700.png" size="60" width="904" height="70" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Go back to the AI Agent configuration tab, click **Add > Scenarios**, select the  you've created, and click **Save** in the top-right corner to save the changes in your AI Agent.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/xyX0oyJHkshgdDW9s4BTl-20250929-080150.png" size="70" width="2530" height="1314" position="center" showCaption="false"}
:::
::::

You can see below that a  with a single module looks the same as the  created for a module tool. The difference is:

- With a module tool,  automatically creates the  with inputs and outputs. You can't edit it in the  Builder unless you convert it to a .
- With a  tool, you have to add manually the module you want to use, do the mappings for the  inputs/outputs, and edit  afterward.

Thus, if you don't plan to add additional modules or build a more complex workflow, we recommend using a module tool instead.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/QkMigpPFEDJB2RlmgPijH-20250926-163635.png" size="70" width="2632" height="1376" position="center" showCaption="false"}

Now you can use your as a tool for an AI agent. You can test it by typing a request in the **Testing & Training&#x20;**&#x63;hat. &#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/SSMBnS7cb2Jmt-tzLmnS9-20250929-075540.png" size="70" width="2654" height="1320" position="center" showCaption="false"}

You can find the  created for AI agents in the **All scenarios** folder.&#x20;

### Edit a  

To edit a  for an AI agent:

::::WorkflowBlock
:::WorkflowBlockItem
Go to the **Tools** section of the AI agent configuration tab, and click the expand icon next to the .&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/MDtAYZPHP2U5ciRawhNRr-20250924-092527.png" size="58" width="1268" height="1336" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Alternatively, within the **Make AI Agents > Run an agent** module, select your agent, and click the expand icon next to the .&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/aBFMaYUCe5X-bMYZAa-vs-20250924-091429.png" size="60" width="1296" height="1334" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Or just go to the **All scenarios** folder and select the required  from the list.

::Image[]{src="https://app.archbee.com/api/optimize/PL8X94efBsjvhfQV3wyyj-9cogRNhV_sy_IaqXl16Wk-20250824-084142.png" size="70" width="2606" height="428" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
In all cases, you will be redirected to the scenario diagram. Click **Edit** in the top-right corner, make the required changes, and save your .

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/c7-nAHaH7b3E7z-E53db8-20250926-164417.png" size="70" width="2632" height="1376" position="center" showCaption="false"}
:::
::::

Once you're done editing the scenario, ensure the  is active and scheduled to **On demand**.

### Delete a 

To delete a  for an AI agent:

::::WorkflowBlock
:::WorkflowBlockItem
Go to the **Tools** section of the AI agent configuration tab, click the delete icon next to the .&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-0Uj8UoPJdVuSZnv0gq3s9-20250824-120902.png" size="60" width="1316" height="1248" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Alternatively, within the **Make AI Agents > Run an agent** module, select your agent and click the delete icon next to the .&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/UZ6ztsgEXCSPBa_Yu0zG--20250924-092036.png" size="60" width="1296" height="1334" position="center" showCaption="false"}
:::
::::

Your  will be deleted **from all instances of the agent&#x20;**&#x61;cross all scenarios. However, it will still be available in your **All scenarios&#x20;**&#x66;older.&#x20;


[title] Tools for AI agents
[path] Make AI Agents/

:::hint{type="success"}
This page reflects a **previous version of Make AI Agents**. For the latest information, see [Make AI Agent (New)](docId\:rXryASA6852hvhkZ6NhXU).&#x20;
:::

In , you can add three types of tools for AI agents: **module tools, scenarios,&#x20;**&#x20;and **MCP tools.&#x20;**

- [Module tools](https://help.make.com/module-tools-for-ai-agents) are best for a simple and quick setup. They let you add single module(s) to your AI agent without having to create and configure a full .&#x20;
- [Scenarios](https://help.make.com/scenarios-for-ai-agents) are better for complex workflows where you need multiple steps, filters, and specific [scenario inputs and outputs](https://help.make.com/scenario-inputs-and-outputs) in your AI agent.&#x20;
- [MCP](https://help.make.com/mcp-tools-for-ai-agents) servers let your AI agents access new tools and perform tasks using them.

Key difference between these three tools:

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Module tools**
:::

:::VerticalSplitItem
To add it to your AI agent, you just need to create a module tool and configure the module settings. &#x20;

A scenario for a module tool with all the scenario inputs and outputs is created automatically. A scenario consists of the selected module and may contain 2-3 utility modules necessary to work with scenario inputs and outputs, and aggregation of multiple bundles for a search module type.&#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Scenarios**
:::

:::VerticalSplitItem
To add it to your AI agent, you have to manually build the scenario, add the module(s) you want to use, and define and map the scenario inputs/outputs.&#x20;

A scenario may contain different modules and filters.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**MCP**
:::

:::VerticalSplitItem
To add it to your AI agent, you need to connect to an MCP server and add the required tools to your AI agent.&#x20;
:::
::::


[title] Skip error handler
[path] Error handling/Error handlers/

The **Skip** error handler skips the error or the failed bundle from the  flow and continues processing the remaining bundles. The  run continues with the next bundle. The Skip error handler prevents turning off the  when there's an error and marks the  run as a success even in case of errors.

**When to use it**: Use the Skip error handler when incorrect data in your  has no impact on your processes and occasional data loss is acceptable. This handler is best suited for situations where keeping the  running takes priority over processing every bundle.

**For example**: Amy gets new customer information from the customer sign up form, and adds this to her CRM. Sometimes users submit this form twice by mistake causing duplicate entries and the CRM rejects the enrty. To prevent the scenario from stopping, Amy adds an Skip error handler to her CRM bundle to skip the error for duplicate entries and moves on with the next steps.&#x20;

For more information about error handling strategies check the [Overview of error handling](docId\:sN7McE4QmL-Q6wDTOOcSy) .

### How the Skip error handler works

When a module encounters an error, the Skip error handler drops the problematic bundle and moves on to the next one. This prevents the error from disabling the  or interrupting the process.

### Use the Skip error handler

This demo  contains five modules.&#x20;

1. **JSON** - **Parse JSON** provides test data in the form of an array of ten record IDs.
2. **Iterator** splits the array into individual bundles.
3. **Data store** - **Update a record** Updates the data in the data store.
4. **Data store** - **Update a record** This module updates the data again. This time the module works differently. In the module mapping, there is a mapping that intentionally creates an error:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/IGuzVI2USP_2J2uaI6DiO_uuid-38a27efa-f066-3ba0-d77f-c1fac59dbb6a.png" size="100" width="882" height="254" position="center" darkWidth="882" darkHeight="254" showCaption="false" indent="2"}

5. The mapping inserts a `null` value into the required **Key** field, which always creates the `BundleValidationError`.
6. **Slack** - **Send a message**: Sends a message to a private testing channel.

**This is how the example&#x20;**&#xNAN;**&#x20;looks**:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/L6a2XCwEDQWUCbUSajRPF-20260525-093117.png)

When we run the example , we would get the `BundleValidationError`:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/FVita6Pz8FHNk0QTzNyv9-20260525-093231.png)

**Let's see how to handle this error using an Skip error handler**.

::::WorkflowBlock
:::WorkflowBlockItem
Right-click the data store module that failed and click **Add error handler.**
:::

:::WorkflowBlockItem
From the list of error handlers, click **Skip**.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

You've successfully added the **Skip** error handler to your .&#x20;

**What happens when you run the scenario after you add an Skip error handler.**

With the **Skip** error handler, you can skip the bundle that causes an error from the  flow and process the rest of the bundles in the . In addition,  will keep running your  on schedule instead of disabling scheduling because of an error.

When we added the **Skip** error handler to the **Update a record** module, the **Skip** error handler would skip the bundle from the  flow. The bundle doesn't enter the fifth (**Send a message**) module. The bundle from the third module passes through the .

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/zcPfuV6MPw7PGTh8KDDcj-20260525-100311.png)

Your  keeps running regardless of errors. When an error occurs in the **Data store** module, the **Skip** error handler removes the bundle from the  flow.


[title] Fix general errors
[path] Error handling/Common errors and fixes/

| ### There is no  listening for this webhook |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Cause**                                   | This error occurs when a webhook is triggered, but it is not currently associated with any active . In other words, the system receives a request at the webhook URL, but there is no    set up to listen for or process that incoming data.<br />Users typically encounter this error in one of the following situations:<br />* A webhook was created but never added to a .
* The  that previously used the webhook was deleted, disabled, or no longer uses that webhook.
* An external platform (or an HTTP request) is still calling an old webhook URL that is no longer in use.
* The webhook was intentionally abandoned, but the external system was not updated to stop sending requests.<br />Because webhooks can be triggered by many different sources, the exact cause depends on how and where the webhook URL is being used. |
| **Solution**                                | Since this issue is context-dependent, the appropriate solution depends on the intended use of the webhook:<br />* **If the webhook is still needed:**&#xA;Associate the webhook with an existing  or create a new  that listens for it.&#x20;
* **If the webhook should no longer be used:**&#xA;Stop triggering it by updating or removing the webhook URL from the external platform or request source.
* **If the webhook was replaced or changed:**&#xA;Ensure that the external system is calling the correct, currently active webhook URL.
* **If the webhook is permanently unused:**&#xA;Consider deleting it to avoid confusion. Note that deleting the webhook will cause future requests to return a `410 – Webhook not found`error, so make sure external calls are removed or updated first.&#x20;                              |



| ### Module initialization failed with an error |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Cause**                                      | In rare cases, a webhook  may fail to start and display a <br />**Module initialization failed with an error,&#x20;**&#x73;howing 0 operations executed. Although the webhook queue may contain events, none are processed because the  never begins execution.<br />Before a  executes, all modules must be initialized. During this initialization phase, the platform verifies any connections attached to modules in the following order:<br />* The webhook module has a connection attached.&#x20;
* During initialization, the webhook module verifies the attached connection.&#x20;
* If the connection is broken, expired, or no longer valid, the verification fails.&#x20;
* As a result, the webhook module fails to initialize, and the entire  does not start.&#x20;
* Because the  never starts, the webhook cannot process queued events.&#x20; |
| **Solution**                                   | Depending on the setup, one of the following actions is required:<br />1) **Reauthenticate the connection:** If the connection supports reauthorization, reauthenticate it so the webhook module can successfully initialize.&#x20;
2) **Replace the connection:&#x20;**&#x49;f the connection is legacy or cannot be reauthorized, create a **new connection** and attach it to the webhook module.&#x20;
3) **Detach the connection:&#x20;**&#x49;f the webhook does not strictly require the connection for runtime behavior, detaching it will allow the module to initialize and process events.&#x20;                                                                                                                                                                                                                                                      |


[title] Introduction to errors and warnings
[path] Error handling/

When an automation does not behave as expected,  reports the issue as either a warning or an error, preventing your scenario from running. Errors and warnings can occur due to several reasons including connection issues, invalid mapping, API errors, etc.

## Errors in &#x20;

Errors indicate that your  encountered an unexpected event that was not handled by an . As a result, you should review the  to identify and resolve the issue.

### How to identify errors

A module will return an error when it receives invalid data from previous modules or from the app itself. When you open your  in the  editor,  highlights the module that produced the error with an alert sign. To view the error type, click the alert sign displayed above the module.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/YfVZgCqJKkNAzWUUl7j7G-20260525-095648.png)

When you click the caution sign, you can check the bundle that caused the error in the module:

- Shows the error type and the error message.
- Different options to resolve this error
- The purple action button opens the  Help Center in a pop-up window.

When a module outputs an error,  stops the current  run and initiates a rollback. During this phase,  attempts to revert any changes made before the error occurred, restoring the system to the state it was in prior to the  execution.&#x20;

If a  encounters errors across multiple consecutive runs,  automatically disables the 's schedule. Disabling the  prevents repeated failed executions, allowing you time to investigate and resolve the issue while avoiding unnecessary consumption of operations.

### What causes errors in Make

The following are the most common reasons that can cause a module to return an error:

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Data handling:**
:::

:::VerticalSplitItem
These errors occur when there are issues with the data transferred between modules. An error may arise if the data is incorrect or not in the right format. Make ensures that only valid data is processed in a scenario.

Error examples:

- [Bundle Validation Errors](docId\:SLue-xtn4T2rHh5i-yJP8)
- [Data Error](docId\:SLue-xtn4T2rHh5i-yJP8)&#x20;
- [Duplicate Data Error](docId\:SLue-xtn4T2rHh5i-yJP8)
- [Incomplete Data Error](docId\:SLue-xtn4T2rHh5i-yJP8)&#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Organization limits:**
:::

:::VerticalSplitItem
As per your plan, you have resources allotted for your organization. Exceeding these resource limits in your plan will prevent your scenarios from running.

Error examples:

- [Max File Size Exceeded Error](docId\:SLue-xtn4T2rHh5i-yJP8)
- [Operations Limit Exceeded Error](docId\:SLue-xtn4T2rHh5i-yJP8)&#x20;
- [Data Size Limit Exceeded Error](docId\:SLue-xtn4T2rHh5i-yJP8)&#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**API related:**
:::

:::VerticalSplitItem
These errors can occur due to the changes to APIs, authentication or authorization settings. An error may occur due to changes in the connection, such as expired API keys, unavailable APIs, or revoked access after team or permission changes.&#x20;

Error examples:

- [Account Validation Error](docId\:SLue-xtn4T2rHh5i-yJP8)&#x20;
- [Module Timeout Error](docId\:SLue-xtn4T2rHh5i-yJP8)&#x20;
- [Connection Error](docId\:SLue-xtn4T2rHh5i-yJP8)&#x20;
- [Rate Limit Error](docId\:SLue-xtn4T2rHh5i-yJP8)&#x20;
- [Runtime Error](docId\:SLue-xtn4T2rHh5i-yJP8)&#x20;
:::
::::

### How errors are categorized

 classifies errors based on two primary factors, their origin and their underlying cause.

**Example:** A `ConnectionError` typically occurs when a third-party service is having an issue or incident. In this case, the origin is the external server, and the cause is the inability to establish a connection.

### Error notifications

When errors are not handled by any error handler,  sends you an email notification:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/_okvzFUmEvcJx9XjfPbau_uuid-901553d1-77f3-4012-c86b-048959ef0519.png" size="64" width="1218" height="584" position="center" darkWidth="1218" darkHeight="584" showCaption="false"}

 also sends out a notification when your  gets disabled because of repeated errors.

You can learn more about  email notifications and their settings [here](docId\:W6MIE5W1V2tVBemgxP-s_).

## Warnings in 

Warnings alert you that there was an issue during the  run, but not as serious as an error. Also,  can have a Warning status if errors are successfully handled by your configured error handlers or .

When a module in a  returns a warning, your  keeps running and stays enabled.  A warning doesn't disable the scheduling of your  and warnings don't count into the [number of consecutive errors](docId:7-HEHdTuU2XyYs8_qurub). But it's a good idea to check the [scenario execution history](docId:9Z2XnH-Lyy62CFAhjFHj5) to view the cause of the warning.

A warning can also be the result of handling an error with the [Retry error handler](docId\:cPTWi8yI45ZL3M5slzjNV). With the warning  informs you that the **Retry** error handler created an [incomplete execution](docId:6zZNn7v35hERRCJFccp9Q) of your .

When a module returns a warning,  highlights the module with a **yellow** **caution** sign. To check the warning, click the caution sign displayed above the module.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/DkwGnzJoAM7y3oLhU0GRm_image.png)

When you use , you will see a warning when the error handler activates. In the example above, the [Retry error handler](docId\:cPTWi8yI45ZL3M5slzjNV) handled the [BundleValidationError](docId\:n4w0YAeoP7a-A4VfW-EBp). The error handler activation turned the original error into a warning.

The following are the most common  that cause a module to return a warning:

- When a module outputs an error, but you have enabled the [storing of incomplete executions](docId\:evAR6qLowV4yyUnEyV-00) in the  settings.
- When the data store used in a   reaches its capacity limit.
- When the execution time of a   run exceeds the duration limit of your subscription.

[title] Throw
[path] Error handling/

:::hint{type="success"}
This article describes alternatives and workarounds to mimic the **Throw** error handling directive. You can use the Throw error from&#x20;
:::

### Alternate solution

To conditionally throw an error you may configure a module to make it optionally purposely fail during its operation. One possibility is to employ[ JSON > Parse JSON](docId:2ZexWuohEi0YVSOEq2NAg) module configured to optionally throw an error (`BundleValidationError` in this case):

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/jjcZgfExUdyFAbvNIqz6L_uuid-a1cc3ee9-b4ce-f1cc-09e0-71ff675de398.png)

You can then attach one of the [error handling directives](docId\:MetTCf9yUrrYWTSf1whdw) to the error handling route to:

- force the  execution to stop and perform the rollback phase: Rollback
- force the  execution to stop and perform the commit phase: Commit
- stop the processing of a route: Skip
- stop the processing of a route and storing it in the queue of [incomplete executions](docId:6zZNn7v35hERRCJFccp9Q): Retry

The following example shows the use of the Rollback directive:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/KGrFC3z6TY6hkhGN65i2M_uuid-626a1f51-0d48-6519-055b-350c022a8162.png" size="74" width="1157" height="578" position="center" darkWidth="1157" darkHeight="578" showCaption="false"}

### Workaround - Using HTTP Module

Usecase - Retry after some time if there is no record found using Retry Directive. Usually, this is crucial when your record doesn't update instantly and you would like to process it later on in automation. Using this Retry directive could be handy with the lesser complexity of the setup.

Current Barrier -  does not offer a module that would enable you to easily conditionally generate (throw) errors.

To give you a better understanding here is the current setup without modification: This  search in Zendesk if there is no use it won’t throw an error forcefully to search it again you would need to implement a complex procedure by saving the record.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/hazxo1ayX8W4Kzm0MAMsS_uuid-e66e6b0e-77bf-ad6f-344d-6ccc5fbd8520.png" size="76" width="1500" height="757" position="center" darkWidth="1500" darkHeight="757" showCaption="false"}

Solution - To conditionally throw an error you may replace the module where you want to throw an error, with an HTTP module then perform the search in a second  linking the HTTP module using webhook with a second . If no result found you can customize the module to throw an error

### &#x20;1&#x20;

- Replace the Module where you want to throw an error with HTTP > Make a Request module
- Configure the URL within the query parameter that you will get from the Custom Webhook module and add an optional query parameter to search for the email
- Enable the advanced settings and check the evaluate all the states as errors.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/I8aId7P-yGCOqHNVBJ3vq_uuid-28a522c5-e56e-2152-3a68-641e265037b6.png" size="74" width="684" height="749" position="center" darkWidth="684" darkHeight="749" showCaption="false" indent="2"}

- Add a Retry error handler in that HTTP module and configure the setup to run later.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Y9gz2ahzSeKqKfrUnUU0-_uuid-6d696de8-2ea0-29c1-69ce-49741b011f61.png" size="76" width="988" height="769" position="center" darkWidth="988" darkHeight="769" showCaption="false" indent="2"}

### &#x20;2&#x20;

1. Setup Webhooks > Custom Webhooks as a trigger and copy the URL use it in the HTTP module as shown in the previous steps.
2. Here use the Zendesk > Search for a User module use the parameter from the HTTP module to perform a query. Enable Continue the execution of the route even if the module returns no results
3. Add a Router and create two routes
4. Consecutively setup the webhook response module

The following example returning the result - You will notice when the Zendesk module executes the API it doesn’t send any error message but in the action, we’re replicating the error using the HTTP module.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/6BGcZo4t40dN9N0SlF4cN_uuid-10343e53-6205-4ab2-dee4-5ed7e5f88dd3.gif)


[title] Make Skills
[path] Model Context Protocol/

:::hint{type="info"}
As Make Skills is in open beta, functionality may change.&#x20;
:::

Make Skills are file-based resources you can give your AI assistant so it can reliably perform Make-specific tasks, including building scenarios, configuring modules, and connecting to Make MCP server or third-party services.&#x20;

## How Make Skills work&#x20;

Make Skills are individual zip files that contain markdown files (`.md`) with reference information, best practices, and instructions on Make-specific topics.&#x20;

These steps describe how they work:

1. Give your AI assistant Make Skills via a zip file or plugin.&#x20;
2. Connect to [Make MCP server](https://help.make.com/make-mcp-server) or your [MCP toolbox](https://help.make.com/mcp-toolboxes).&#x20;
3. In the chat or command line, ask your assistant to perform a Make-specific task, for example, "Create a scenario that watches unread emails."&#x20;
4. The assistant reviews its available Make Skills for guidance.
5. The assistant calls the right tools through the Make MCP server to complete the task.&#x20;

## Types of Make Skills&#x20;

You can give your AI assistant any of the following skills, depending on your goals.

| **Skill**                | **What it helps AI do**                                                         | **Best with**                              |
| ------------------------ | ------------------------------------------------------------------------------- | ------------------------------------------ |
| **Scenario building**    | Build and modify scenarios.                                                     | Claude Code, Claude Desktop, and Claude.ai |
| **Module configuration** | Configure modules and related elements.                                         | Claude Code, Claude Desktop, and Claude.ai |
| **MCP referencing**      | Connect to Make MCP server and troubleshoot related issues.                     | Claude Code                                |
| **API shell workflow**   | Build connectors that call third-party services directly from the command line. | Claude Code                                |

## Install Make Skills in Claude

This guide shows you how to upload Make Skills to Claude Cowork or Claude Chat.

For information on other methods, see [Install Make Skills in other ways](docId\:olKI_adUZWTZJUHASAY66).

### Prerequisites

- You have a Claude account.&#x20;
- You've connected Claude to [Make MCP Server](https://help.make.com/get-started-with-make-mcp-server) or your [MCP toolbox](https://help.make.com/connect-to-claude-desktop).

### Step 1. Download Make Skills

To download Make Skills zip files:

::::WorkflowBlock
:::WorkflowBlockItem
Go to the [Make Skills website](https://skills.make.com/).
:::

:::WorkflowBlockItem
Under **Install Make Skills**, go to **Downloads**.
:::

:::WorkflowBlockItem
Download the zip files for the skills you need, or download all files.&#x20;
:::
::::

You've now downloaded Make Skill zip files.

### Step 2. Upload Make Skills to Claude&#x20;

To upload Make Skills zip files to Claude:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Open Claude Desktop or Claude.ai.
:::

:::WorkflowBlockItem
In the left sidebar, go to **Customize**.&#x20;
:::

:::WorkflowBlockItem
Click **Skills**.&#x20;
:::

:::WorkflowBlockItem
Click the plus sign icon > **Create skill** > **Upload a skill**.&#x20;
:::

:::WorkflowBlockItem
Drag or upload the zip files.
:::
::::

You've now uploaded your Make Skills zip files to Claude.&#x20;

## Install Make Skills in other ways

You can also install Make Skills in Claude Code, Codex, Cursor, Windsurf, and others. For all options, see the complete installation guide on the[ Make Skills website](https://skills.make.com/).&#x20;

[title] Fix connection errors
[path] Error handling/Common errors and fixes/

App modules output the `ConnectionError` when the app is unavailable. For example, the app might be offline for maintenance.

 uses the [HTTP 503 and 504 status codes](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) to identify the `ConnectionError`.

:::hint{type="info"}
 follows the standard error codes and their definitions. Note that it is possible that the third party may not fully comply with the standard.
:::

When a module in your  outputs the `ConnectionError`, you should check the status page of the module app. Chances are that the status page will have the URL `https://status.domain`, for example [https://status.make.com](https://status.make.com).

When  recognizes the module output as the [`ConnectionError`](docId\:n4w0YAeoP7a-A4VfW-EBp) and you don't use any error handling,  acts depending on the following attributes:

-  scheduling
- enabling of the incomplete executions

|             | Incomplete executions disabled                                                           | Incomplete executions enabled                                                                                                                                        |
| ----------- | ---------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Scheduled   |  pauses the scheduling of the scenario for 20 minutes.<br /> doesn't rerun the scenario. |  pauses the scheduling of the scenario for 20 minutes.<br /> retries the incomplete execution with the incomplete execution [backoff](docId\:QIox8zKLNPuRKZSNOP8rC). |
| Instant     |  reruns the incomplete execution with the  [backoff](docId\:QIox8zKLNPuRKZSNOP8rC).      |  retries the incomplete execution with the incomplete execution [backoff](docId\:QIox8zKLNPuRKZSNOP8rC).                                                             |

## How to fix the ConnectionError

To handle the `ConnectionError`, you can use the [strategies for handling the rate limit errors](docId\:EQ8GGnx95Q7r047EeLhP3) . The most efficient strategy is to use the [Retry error handler](docId\:cPTWi8yI45ZL3M5slzjNV) to rerun the  after a delay:

:::::WorkflowBlock
::::WorkflowBlockItem
If your  triggers with an [instant trigger](docId\:PDoPIBceCKCboMPpKplmY) (for example, a custom webhook module), consider enabling Process data in order in scenario settings. With Process data in order, the trigger module processes incoming data one by one in the order they arrive.

Otherwise, skip this step.

:::hint{type="info"}
If a  has incomplete executions and Process data in order enabled,  pauses the  until the incomplete executions are processed to keep the order of incoming data.
:::
::::

:::WorkflowBlockItem
Add the **Retry** error handler to the module that is causing the errors.

Consider setting the delay and the number of attempts according to the importance and the schedule of your .

For example, if the app has occasional downtime for maintenance for a few hours with no availability, it might be best to set a lower number of attempts with longer time periods between them.

On the other hand, if the app is occasionally unavailable because it's overloaded, and the  is important for you, it might be best to use a short time period (a few minutes) with a higher number of attempts.
:::

:::WorkflowBlockItem
Enable incomplete executions in the  settings.  will save bundles that caused the error.
:::
:::::

For example, if you would use the **Webhook** trigger to ask questions to **ChatGPT**, but the **ChatGPT** app is sometimes overloaded with requests and sending back errors, your Make and Make settings with error handling could look like this:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/knZ45PKnPwPT5mEYOYbRk_uuid-00ea2d20-42c0-038a-d330-a7a44c61907b.png)

Whenever the **Create a completion** module outputs the `ConnectionError` because the OpenAI servers are overloaded or unavailable,  creates an incomplete execution with the **Create a completion** module.

After the delay set in the **Retry** error handler,  reruns the **Create a completion** module. If the rerun succeeds,  will continue scheduling new  runs.

If the rerun fails,  reruns the module again after the delay, up to the number of attempts set in the **Retry** error handler settings.

[title] Common errors and warnings and their fixes
[path] Error handling/

On this page, you will find common [errors](docId\:SLue-xtn4T2rHh5i-yJP8) and [warnings](docId\:SLue-xtn4T2rHh5i-yJP8) that you may encounter in  and how to fix them.

::::LinkArray{contentSource="DOCS" sourceParentDocId="Dfe_eMkMKY4PPHj7k5z5s" childrenDocs="[object Object],[object Object],[object Object],[object Object],[object Object]" itemsPerRow="2" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/BaIe-_4XVxri6L5cUEgH7_11.png" headerType="IMAGE" docId="SLue-xtn4T2rHh5i-yJP8" displayMode="CARD" docSeoDescription="Identify different error types in your scenarios and understand what causes them"}
[Fix errors and warnings](docId\:SLue-xtn4T2rHh5i-yJP8)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/aVB_7BPipEdEB3aCMQ0u9_11.png" headerType="IMAGE" docId="EQ8GGnx95Q7r047EeLhP3" displayMode="CARD" docSeoDescription="Understand what causes rate limit errors and how to prevent and resolve them"}
[Fix rate limit errors](docId\:EQ8GGnx95Q7r047EeLhP3)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Ks1LbZ5mV1k58GSiEF-Q5_11.png" headerType="IMAGE" docId="P1jOkICDhbCZx1FTDWDRV" displayMode="CARD" docSeoDescription="Understand what causes connection errors and how to manage them with error handlers"}
[Fix connection errors](docId\:P1jOkICDhbCZx1FTDWDRV)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Ze2KoIIH96Vcu0RW2162b_11.png" headerType="IMAGE" docId="_VN-o4QEtC9WASR7uxtqg" displayMode="CARD" docSeoDescription="Understand what causes missing data errors and how to handle them"}
[Fix missing data errors](docId:_VN-o4QEtC9WASR7uxtqg)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/GqH41PYefbx4LjkgGr0wS_11.png" headerType="IMAGE" docId="7lrV1hn4EOYGNr32Dk1RR" displayMode="CARD"}
[Fix general errors](docId:7lrV1hn4EOYGNr32Dk1RR)
:::
::::








[title] Retry error handler
[path] Error handling/Error handlers/

When a  hits an error, the default behavior is often to simply stop. The Retry error handler allows you to pause a failed bundle, store the error message, mappings and the remaining  flow. Depending on the Retry error handler settings,  retries the incomplete  either automatically or manually.&#x20;

**When to use it**: Use the Retry error handler when you want to pause and potentially retry the failed run rather than just skipping or rolling back.

**For example:** A new order is placed and triggers a scenario. Tim uses Make to write the order data to the database. The database write fails due to a temporary connection issue. He adds the Retry error handler which pauses that bundle and stores the error, the order data, and the remaining scenario flow as an incomplete execution. Make continues processing any other orders in the queue. Make automatically retries the failed bundle after a set interval (e.g. 3 attempts, every 15 minutes) until the database connection is restored and the entry is successful. Once the database write completes, the confirmation email is sent as normal.

For more information about error handling strategies check the [Overview of error handling](docId\:sN7McE4QmL-Q6wDTOOcSy) .

### How does the Retry error handler works

The Retry error handler acts as a time-out corner for a problematic module. Instead of stopping the whole , the Retry handler pulls the failing bundle out of the flow.  saves exactly what went wrong, including the error message and the data that caused it.  processes the rest of the modulesin the  flow.

Automatic retry is most effective for temporary errors or errors where another attempt might be successful.

:::hint{type="info"}
 automatically retries the most frequent temporary errors, the `ConnectionError` and `RateLimitError`. You don't need the Retry error handler to automatically retry these types of errors.

To automatically retry the `ConnectionError` and `RateLimitError`, you only need to enable incomplete executions in scenario settings.

You can read more about automatic retry in the article about [incomplete executions](docId:6zZNn7v35hERRCJFccp9Q).&#x20;
:::

To use the **Retry** error handler in your , you have to enable incomplete executions in  settings.

### Use the Retry error handler

In this example, we have a scenario that updates a data store and then sends a Slack message. If the data store update fails because of a missing value (a `BundleValidationError`), a Slack message will never be sent.&#x20;

This demo  contains five modules.

1. **JSON** - **Parse JSON** provides test data in the form of an array of ten record IDs.
2. **Iterator** splits the array into individual bundles.
3. **Data store** - **Update a record** Updates the data in the data store.
4. **Data store** - **Update a record** This module updates the data again. This time the module works differently. In the module mapping, there is a mapping that intentionally creates an error:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/IGuzVI2USP_2J2uaI6DiO_uuid-38a27efa-f066-3ba0-d77f-c1fac59dbb6a.png" size="100" width="882" height="254" position="center" darkWidth="882" darkHeight="254" showCaption="false" indent="2"}

:::Paragraph{indent="1"}
The mapping inserts a `null` value into the required **Key** field, which always creates the `BundleValidationError`.
:::

5. **Slack** - **Send a message**: Sends a message to a private testing channel.

**This is how the example&#x20;**&#xNAN;**&#x20;looks:**

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/L6a2XCwEDQWUCbUSajRPF-20260525-093117.png)

When we run the example , we would get the `BundleValidationError`.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/FVita6Pz8FHNk0QTzNyv9-20260525-093231.png)

**Let's see how to handle this error using a Retry error handler.**

::::WorkflowBlock
:::WorkflowBlockItem
Right-click the data store module that failed and click **Add error handler.**
:::

:::WorkflowBlockItem
From the list of error handlers, click **Retry**.&#x20;
:::

:::WorkflowBlockItem
Configure the **Automatically complete execution** by toggling between **Yes** or **No**.

If you set it as **Yes**, the system automatically retries depending upon the the number of attempts and the interval (e.g., try 3 more times, every 15 minutes).

If you leave this as **No**, the error will stay in your **Incomplete Executions** tab until you resolve it.
:::

:::WorkflowBlockItem
In the bottom panel, click th&#x65;**&#x20;Scenario settings**.&#x20;
:::

:::WorkflowBlockItem
In **Store incomplete executions**, selec&#x74;**&#x20;Yes.**
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

You've successfully added the **Retry** error handler to your .&#x20;

**What happens when you run the scenario after you add a Retry error handler.**

Here, we added the **Retry** error handler to the **Update a record** module, the **Retry&#x20;**&#x65;rror handler would remove the bundle from the  flow.&#x20;

When an error occurs in the **Data store** module,  issues a warning and creates an incomplete execution. The incomplete execution contains the error message,  mappings and data.

 would then process the remaining bundles in the  flow.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Sqqw28dZbN76adAIzgWy5-20260525-093939.png)

You can finish the  run in the incomplete executions tab manually or  can finish the run automatically.

If you use the automatic  completion,  attempts to finish the  automatically.

[title] AI agent best practices
[path] Make AI Agents/

:::hint{type="success"}
This page reflects a **previous version of Make AI Agents**. For the latest information, see [Make AI Agent (New)](docId\:rXryASA6852hvhkZ6NhXU).&#x20;
:::

Well-designed AI agents can run tools for you with minimal human intervention. However, their effectiveness depends on their setup and instructions. This guide outlines tips for building AI agents in Make, such as tool naming, prompting, and data access.

## Tools

If a large language model (LLM) is an AI agent's brain, tools are its hands and actions. They give the agent the capabilities to do its job. In , you have three types of [tools for an AI agent](https://help.make.com/tools-for-ai-agents): scenarios, modules, and MCP server tools.

### Tool naming

An agent chooses the right tool for a task based on your tool names and descriptions. Write concise names and descriptions that reflect the tool's purpose and when to run it.&#x20;

For example: "Add customer email to Customer Contacts table" as the scenario name and "This adds a new customer email address to the Customer Contacts table. Do not run this if '@' is missing" as the scenario description.

:::hint{type="info"}
Well-named tools are essential when sharing with external AI systems, such as agents, through [Make MCP Server.](https://developers.make.com/mcp-server) These systems rely on tool metadata (not the system prompt) to make the right decisions.
:::

### Input and output naming in scenarios

Well-defined [scenario inputs and outputs](docId:7odICud0KE9-Tr4XWUiqn) help the AI agent understand what data to receive and share. Inputs and output fields include:

- Name
- Type
- Description
- Default value
- Required (Yes/No)
- Multi-line (Yes/No)

Take advantage of this configuration to specify your requirements for inputs or outputs. For example: "customer\_email" as the scenario input name and "Full name of the customer" as the description. It is a required text input.

You can also add stylistic requirements to input descriptions, if relevant. For example, you can specify that a string (text) input must be all lowercase, sentence case, all caps, and so on.&#x20;

### Debugging in tools

If you notice your agent returns suboptimal outputs, first check if the issue is with your tools. You can debug by adjusting tool-specific logic in tool names, descriptions, and input and output schemas.&#x20;

For example, you can add a hint in your tool description about when the agent should run the tool ("Only run when you have a bank user ID").

Also, check that all scenarios with an agent are activated; scenario errors can cause deactivation. (For handling errors in scenarios, see [Error handling](docId:_w3dqOgJxm4xl3s64h40-).)

You can adjust the logic in the system prompt if that change applies to all tools. &#x20;

## Prompting

Make AI agent prompts serve two distinct but related functions: system instructions and user-agent communication.&#x20;

The **System prompt&#x20;**&#x73;erves as the core instructions guiding agent behavior, including role, limitations, and processes.&#x20;

Prompting (or communicating with) agents involves task requests and instructions. You can send prompts in:&#x20;

- Scenario-based **Messages&#x20;**&#x69;n the **Make AI Agents >** **Run an agent** module&#x20;
- The chat window, **Testing & Training**, in the **AI Agents** configuration tab &#x20;

### Global system prompts&#x20;

Keep the system prompt broad enough to enable your agent to work across different scenarios (e.g., quoting, inventory, and customer support). An overly specific prompt may restrict your agent's effectiveness to a limited set of tasks.

For example, consider these two approaches to writing system prompts – specific or simple – for a content agent you expect to use across multiple content creation scenarios:

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
**Specific and restrictive prompt**

"You're a content agent designed to generate Instagram content under 150 characters. Drawing from various sources, you will write captions for lifestyle brands. Use an upbeat tone, two relevant hashtags, and three emojis. End the caption with a question to the audience."
:::

:::VerticalSplitItem
**Simple and global prompt**

"You're a content agent designed to generate and refine text across formats and platforms. You can produce engaging, informative, or persuasive content (including short-form, long-form, outlines, and more) tailored to audience needs and platform requirements."
:::
::::

The specific prompt restricts the agent in platform (Instagram), form (character count, emojis, hashtags), and task (social media caption writing), which limits its ability to help with other content-related tasks like SEO-optimized blog writing.

Keep system prompts general and include more specific instructions in the relevant tool's description or **Messages&#x20;**&#x66;ield.

### Redundancy in AI-assisted prompts

If you are not an advanced prompt writer, you may benefit from using the **Improve&#x20;**&#x62;utton in **System prompt**, which enhances your prompt with AI. However, overly lengthy prompts can increase the risk of LLM confusion or hallucinations. Using AI to write prompts may contribute to this risk if you don't review its work.

Always review your AI-enhanced prompts for redundancies and remove them. Similarly, edit or remove the Workflow section if it does not align with your process.

### Additional prompts in tools&#x20;

After writing your system prompt, you can add further specifications in tools. You can do this in **Messages&#x20;**&#x61;nd **Additional system instructions** in the **Make AI Agents > Run an agent&#x20;**&#x6D;odule.

In **Messages**, you can write a prompt or input that tells the agent what to do with that specific tool, including limitations and conditions.

For example, in a social media caption scenario, you can instruct the agent to limit the length to 150 characters, avoid complex punctuation like em dashes or semicolons, and request human validation for specific topics.

In the optional **Additional system instructions**, you can add extra contextual information that the agent wouldn't receive from the user.

For example, if users call your agent through communication channels like Slack or Telegram, you can use this field to pass metadata such as user type, timestamp, and profile name from that channel.

## Data security and access&#x20;

LLMs are imperfect systems that are vulnerable to risk, such as PII disclosure in outputs or prompt hacking. The best precaution is to assume that anyone could successfully access what you share with your agent, including its tools and data.

### Agent access to information&#x20;

Agents only use the personal data you explicitly provide through tools and context files. To reduce data security risk, limit the agent's access to the data it needs to do its job. Avoid exposing it to sensitive, non-essential information.

For example, instead of connecting the agent to a tool that exports your entire calendar, its access could be limited to a public calendar, with only free/busy slots listed.

### Limits of user-imposed constraints

An agent's system prompt includes limitations and constraints, or rules. Limitations guide the agent's behavior by defining desirable and undesirable actions. For example, you can instruct your AI agent to:

- Limit engagement with off-topic queries
- Avoid sharing sensitive information in outputs
- Flag harmful or unsafe inputs
- Prioritize internal knowledge bases as references
- Prompt a human to validate outputs

However, even with thorough, explicit guardrails, the agent could still behave unpredictably. In AI systems, constraints themselves have limitations: agents may not always follow them. Given the implications for data security, the most reliable constraint in this area is giving the agent minimal access to sensitive information.

## Model configuration&#x20;

In **Agent settings&#x20;**&#x69;n the **AI Agents** configuration tab, you can improve how your agent functions by setting limits on its output tokens, execution steps, and thread history.

### Max output tokens&#x20;

Agents can provide lengthy responses, which can get costly. Use **Max Output Tokens** to limit the number of tokens an agent outputs. If you set the maximum tokens too low, you may get incomplete responses. One token equals about 4 characters of text.&#x20;

### Steps per agent call

In rare cases, agents can get stuck in a loop, repeating the same actions without achieving their goal. Prevent this by limiting the execution steps an agent can take. A safe estimate for execution steps is to multiply your maximum expected number of tool calls by 10.&#x20;

### Max number of agent runs in thread history

Agents use thread history, similar to a chat history, to remember interactions with you. However, you may not want to keep the entire thread history. Doing so consumes additional tokens, as the agent needs to read the entire history during each execution. To save tokens, limit the number of previous messages the system stores. For example, if you only want to keep the last 5 messages, set this field to 5.&#x20;

## Knowledge enhancement&#x20;

The LLM behind your agent is likely unaware of your company's internal knowledge and processes. Improve your agent's decision-making by uploading private files to **Context&#x20;**&#x69;n the **AI Agents&#x20;**&#x63;onfiguration tab. These files serve as reference information for the agent.

Context files should contain fixed information that applies to all tools. For example:

- Company guidelines
- Internal knowledge bases (e.g., Confluence)
- Support tickets
- Community posts
- Company Slack conversations

Your files shouldn't include sensitive information when the agent will be used by users who shouldn't access that data.&#x20;

When deciding on files to upload, consider the garbage in, garbage out (GIGO) principle: poor-quality or unrepresentative inputs lead to similarly flawed outputs. Upload information that reflects the results you want the agent to reproduce. For example, do not upload poorly executed work as examples to follow.

## Cost optimization

When using Make AI agents, you incur fees for Make credits and LLM provider (e.g., ChatGPT) tokens.&#x20;

Overall costs can rise quickly if using one thread ID, multiple tools, and advanced reasoning LLMs. Keep LLM costs low by optimizing your token usage and choosing a cost-effective LLM.

### Token usage

Token usage depends on two main factors: the amount of information the LLM processes in requests and the number of user-to-LLM interactions.

**Data scope**

To reduce the amount of information an agent handles in a request, specify the data you want to pass to the agent and the data you want it to return. For example, instead of instructing the agent to scan an entire database, narrow the scope of its search to entries after June 1st, 2025.

To limit the data handled in requests:

- Define scenario inputs and outputs.
- Filter inputs before passing them into the agent. In a scenario, you can add a filter in the route before the **Make AI Agents >** **Run an agent** module.
- Store files with global information (e.g., contact details) in the agent's **Context**.

**Context**

When you have large blocks of text that an agent must reference often, you can upload them as context files and reduce the tokens processed in requests.&#x20;

Your context files are split into text segments called chunks, converted to vectors, and stored in Make’s RAG vector database. Agents can search the database for the chunks relevant to your queries, and return the most relevant sections instead of entire files, using fewer tokens.

You can upload context files in the **AI Agents** tab in the left sidebar, or the **Context** modules in the **Make AI Agents** app.

After uploading a file, update the system prompt or user message to describe what the agent can find in the file. This action helps the agent understand when to retrieve the file, distinguish between similar files, and avoid processing irrelevant information.

These strategies can help prevent errors in Make that result from exceeding the token limit of the LLM underlying your agent. See OpenAI’s [GPT-5 documentation](https://platform.openai.com/docs/models/gpt-5) for an example of LLM token limits.

**Interactions**

User-to-LLM interactions, which include your inputs and the LLM's outputs, also consume tokens.&#x20;

To reduce interactions, prioritize clarity in prompts and consolidate data requests instead of making multiple sequential requests. These strategies enable complete, accurate outputs sooner.

Additionally, when you use the same thread ID across **Make AI Agents&#x20;**&#x6D;odule runs, the entire thread gets passed into the agent. If you don't need to reference your conversation history with an agent, leave the **Thread ID&#x20;**&#x66;ield blank. This action creates a new thread ID, which can significantly save costs.&#x20;

:::hint{type="info"}
You can monitor token usage in the **Make AI Agents > Run an agent** output bundle in **tokenUsageSummary**, and on your LLM provider account.
:::

### Choice of starter LLM&#x20;

You have multiple LLMs to choose from for powering your AI agent, each with varying costs depending on factors like speed and reasoning abilities.

When creating an AI agent, start with an LLM with a good speed-to-cost ratio. The ideal starter model is fast and inexpensive, such as OpenAI's GPT‑4.1 mini. More advanced, slower models, like OpenAI's o3, can rapidly increase costs. Test how well an affordable model can achieve your goals, and scale up as needed.

While a fast LLM performs well in many cases, the right model depends on what you want to do with an agent. Some LLMs are better suited for certain use cases than others, and many LLM providers classify their models accordingly.

[title] Rollback error handler
[path] Error handling/Error handlers/

The **Rollback** error handler stops the scenario and reverts any changes made by modules that support transactions, such as MySQL or Data Store.  cannot undo actions made by modules that don't support transactions, like **Gmail&#x20;**>**&#x20;Send an email** or **Dropbox** > **Delete a file**

When an error occurs, the failed bundle does not continue through the scenario flow and   doesn't process any remaining bundles. The scenario run is marked as an error in the scenario history, but the scenario itself will not be disabled.

:::hint{type="success"}
Modules that support transactions are labeled with the "ACID" label.

Before you use the **Rollback** or **Commit** error handlers, take a look at the [auto commit scenario setting](docId\:evAR6qLowV4yyUnEyV-00) first.
:::

**When to use it:&#x20;**&#x55;se the Rollback error handler when data integrity is critical and any changes made during a failed run must be undone.

For example: Tom tries to book a hotel room online which requires a deposit. The hotel attempts to charge the Tom's payment card, but the card is declined. The Rollback error handler reverts the hotel reservation. Everything is undone, no hotel is reserved and the hotel reverts to it original room availability.&#x20;

For more information about error handling strategies check the [Overview of error handling](docId\:sN7McE4QmL-Q6wDTOOcSy) .

### How the Rollback Error handler works

When a module encounters an error, the Rollback error handler stops the scenario and reverts changes made by the erroring bundle in modules that support transactions. The behaviour depends on whether the **Auto-commit** option is enabled in your scenario settings.

- **Auto-commit enabled** — Only the module that produced the error can revert its changes. Changes made by previous modules in the scenario are committed and cannot be rolled back.
- **Auto-commit disabled** — All changes made during the bundle's execution across every transaction-supported module can be reverted.

### Use the Rollback error handler

In this example, we have a scenario that updates a data store and then sends a Slack message. If the data store update fails because of a missing value (a BundleValidationError), Make must stop the scenario and revert any changes made.

This demo  contains five modules.

1. **JSON** - **Parse JSON** provides test data in the form of an array of three record IDs.
2. **Iterator** splits the array into individual bundles.
3. **Data store** - **Update a record**: Updates the data in the data store.
4. **Data store** - **Update a record**: This module updates the data again. This time the module works differently. In the module mapping, there is a mapping that intentionally creates an error:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/IGuzVI2USP_2J2uaI6DiO_uuid-38a27efa-f066-3ba0-d77f-c1fac59dbb6a.png" size="100" width="882" height="254" position="center" darkWidth="882" darkHeight="254" showCaption="false" indent="2"}

5. The mapping inserts a `null` value into the required **Key** field, which always creates the `BundleValidationError`.
6. Having two data store modules doing the same thing, but one of them failing, will make a good example for the **Commit** and **Rollback** error handlers.
7. **Slack** - **Send a message**: Sends a message to a private testing channel.

**This is how the example&#x20;**&#xNAN;**&#x20;look**s:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/hAt8L-RCHcqlRX1Zv9ITu_uuid-a20c3804-3600-efbd-3e63-6ee8604bee5a.png)

When we run the example , we would get the `BundleValidationError`:

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/eV9s60is4o30uYvPGyHHU_uuid-d0cd6900-234c-21a1-c35c-e5ee696e538c.png)
:::

:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/CNPg8JnCTdNcxaACINlIU_uuid-5e505ecc-ffa2-af6c-9a23-e625392bf169.png)
:::
::::

**Let's see how to handle this error using a Rollback error handler**.

::::WorkflowBlock
:::WorkflowBlockItem
Right-click the module that is causing the error. In the menu, select **Add error handler**.
:::

:::WorkflowBlockItem
Select the **Rollback** error handler.
:::

:::WorkflowBlockItem
Optional: Go to  settings and disable the **Auto-commit** option.
:::

:::WorkflowBlockItem
When an error happens, the module that outputs the error reverts changes if the module supports transactions. If you disable the **Auto-commit** option, all modules in the  that support transactions undo changes.
:::

:::WorkflowBlockItem
Save your .
:::
::::

You've successfully added the **Rollback** error handler to your .&#x20;

**What happens when you run the scenario after adding the Rollback error handler.**

When the **Rollback** error handler is added to the **Update a record** module, the **Rollback** error handler would stop processing the bundle in the .

When an error occurs in the **Data store** module, the  stops and  reverts changes made by the erroring bundle in modules that support transactions.

 wouldn't process the remaining bundles.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/hFW_Qzof1gOSgooi8bFke_uuid-1efea139-a1c9-35b8-bc89-f89428a18bd5.png)

**Let's check the data in the data store as well.**

In this example, before running the , the data store contained the following data:

<font color="#BE185D">{we need a better example}</font>

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/oRZrCTIj9zuzZsnPsPb73_uuid-5d1bac2c-e430-eeb5-bc8b-220215ade799.png)

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/hfIMYjRdotNKBy-0o3Ev8_uuid-41ecf051-2dae-90c9-bfdd-288c3f64d0c0.png)
:::

:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/nwkQQ7SQTHK8_9R5xT9D-_uuid-c10413d2-2a9d-4d96-fe28-e86daff85b73.png)
:::
::::

The mappings for the **Update a record** modules. The first module updates the `ID` column to the number `4` and the `Name` column to the text `Test 4`.

The second module updates the `ID` column to the number `5` and the `Name` column to the text `Test 5`.

If you disable the **Auto-commit** option in the  settings,  reverts the changes that happened when  was processing the bundle in modules that support transactions.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/m_T7FG48xXzUiNpMD615w_uuid-9e689f33-25d5-47ac-7f0d-a0e7ff42cf8b.png)

1. The first bundle of data gets through the  flow successfully and updates the first row of data in the data store both times. The first row contains the update from the second **Update a record** module: `ID = 5, Name = Test 5`.
2. The second bundle gets to the first **Update a record** module successfully, but causes an error in the second module. The **Rollback** error handler reverts the update from the second bundle and stops the .
3.  doesn't update the third row because the **Rollback** error handler stopped the  run already. The data in the third row remain the same: `ID = 3, Name = Test 3`.

If you keep the **Auto-commit** option enabled,  reverts the changes made by the module that output the error if the module supports transactions.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/VnE9UupIhuh__HkPObLdL_uuid-3ce21539-b9cc-0fbf-da10-2459ce8e2bf2.png)

1. The first bundle of data gets through the  flow successfully and updates the first row of data in the data store both times.  commits all changes and they cannot be rolled back later.
2. The first row contains the update from the second **Update a record** module: `ID = 5, Name = Test 5`.
3. The second bundle gets to the first **Update a record** module successfully.  commits all changes and they cannot be rolled back later. The second bundle causes an error in the second module.
4. The **Rollback** error handler prevents the update in the second module and stops the . The second row contains the update from the first module only: `ID = 4, Name = Test 4`.
5. Make doesn't update the third row because the **Rollback** error handler stopped the  run already. The data in the third row remain the same: `ID = 3, Name = Test 3`.

You can use the **Rollback** error handler to stop the  run and undo changes when the module outputs an error.


[title] Methods of securing data
[path] Explore more/Securing data with Make/

Data security helps prevent data tampering and unauthorized access while minimizing data exposure.﻿

## Core principles of data security

::::Tabs
:::Tab{title="Integrity"}
Ensures that data has not been altered or tampered with during transmission. The objective is to guarantee that the recipient receives the original document that was sent.&#x20;
:::

:::Tab{title="Confidentiality"}
Protects data from unauthorized access, ensuring that only the intended recipient can read it. If someone intercepts the message, they won't be able to read the contents.&#x20;
:::

:::Tab{title="Authentication"}
Checks that the request is from the correct sender. If the request is from someone else, the recipient can detect it and stop any data being processed.
:::
::::

## Importance of data security

Prioritizing data security is important for:

- **Data protection and confidentiality&#x20;**&#xA;Prevent data breaches and protect sensitive information from unauthorized access.
- **Meeting legal requirements**
  Many international and industry-specific regulations mandate data encryption and strong security practices. Examples include:
  - GDPR (General Data Protection Regulation), requiring technical and organizational measures to ensure data protection.
  - PCI DSS (Payment Card Industry Data Security Standard), requiring encryption of cardholder data during transmission across open, public networks.
- **Consumer trust**
  Commitment to data security builds confidence with customers, partners, and stakeholders.
- **Operational integrity**
  Encryption and hashing techniques secure communication and ensure that data has not been corrupted or altered.

Security mechanisms include [encryption](docId\:Nr5i2u8cA8druikQRj8JO), [hashing](docId\:Nr5i2u8cA8druikQRj8JO), and digital signatures.

## Encryption

Encryption is a method of converting original data (plaintext) into an unreadable format (ciphertext) to ensure confidentiality and secure communication. Encryption is reversible with the correct key. Encryption can be symmetric (using the same key for encryption and decryption) or asymmetric (using a public key to encrypt the data and a private key to decrypt it).&#x20;

Encyption is most often used for confidential data, like financial records, and for secure communications (TLS/SSL).

In , you can encrypt and decrypt data using AES (Advanced Encryption Standard) or PGP (Pretty Good Privacy).

### Symmetric encryption

Uses the same key for both encrypting and decrypting messages. Both the sender and receiver need to have access to the identical key.

- Advantages
  - Fast performance: Encrypts and decrypts data quickly, making it good for large files.
  - Simple implementation: Uses a single key for a straightforward setup.
- Disadvantages
  - The secret key must be shared securely. If someone gets the key, they can read all the encrypted data.

Modules in :

- [AES Encrypt (simple)](https://apps.make.com/crypto#aes-encrypt-simple)
- [AES Encrypt (advanced)](https://apps.make.com/crypto#aes-encrypt-advanced)
- [AES Decrypt (simple)](https://apps.make.com/crypto#aes-decrypt-simple)
- [AES Decrypt (advanced)](https://apps.make.com/crypto#aes-decrypt-advanced)

### Asymmetric encryption

Uses a pair of keys. The public key is used to encrypt the data and the private key is used to decrypt it. The receiver shares the public key with anyone who wants to encrypt and send a message to them. Only the receiver can decrypt it using the private key that is kept secret.

- Advantages
  - Private key protected: The private key used to decrypt the message is not shared.
  - Supports digital signatures: You can use asymmetric encryption to implement the signature and verify who sent a message and ensure it wasn't altered.
- Disadvantages
  - Slower performance: It processes data more slowly than symmetric encryption. It is less efficient for encrypting big files due to its complexity.

Modules in :

- [Encrypt a PGP message](https://apps.make.com/crypto#encrypt-a-pgp-message)
- [Decrypt a PGP message](https://apps.make.com/crypto#decrypt-a-pgp-message)

## Hashing

Hashing is a one-way conversion of data to verify the integrity of the data. Hashing is not reversible. The output is called a hash value.

A hash value is a fixed-length string of characters generated by a hash function that uniquely represents the input data. It is used to verify that data hasn't been changed. The process is one way, meaning it's impossible to determine the original message from the hash.&#x20;

Hashing is most often used for password storage, file integrity, and digital signatures.

In , you can:

- Use the [Encryptor > Create digital signature module](https://apps.make.com/crypto#create-digital-signature) to generate a unique hash using [SHA-1](https://help.make.com/text-and-binary-functions#sha1) or [SHA-256](https://help.make.com/text-and-binary-functions#sha256).
- Use [hash functions](docId:-0cTbs0pGXP3pp8FXYm5B) in other app modules as needed.

[title] Model Context Protocol
[path] /

Integrate  with AI applications using Make MCP server and MCP toolboxes:

::::LinkArray{contentSource="DOCS" sourceParentDocId="a54Rx8rWkXqxDfQNA0tSu" childrenDocs="[object Object],[object Object],[object Object],[object Object]" displayMode="CARD" itemsPerRow="2"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/gCXC_7mtkmW6Sg6myTKbR_8.png" headerType="IMAGE" docId="DSXYGPC7BjnnX33pI786J" displayMode="CARD" docSeoDescription="Discover Model Context Protocol (MCP) with Make: how it works, benefits, key concepts, and MCP options."}
[Introduction to MCP](docId\:DSXYGPC7BjnnX33pI786J)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/gCXC_7mtkmW6Sg6myTKbR_8.png" headerType="IMAGE" docId="95jjtReuq1qmRYiBxVBkX" displayMode="CARD" docSeoDescription="Learn how to use Make MCP server, understand requirements, and connect to MCP clients."}
[Make MCP server](docId:95jjtReuq1qmRYiBxVBkX)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/gCXC_7mtkmW6Sg6myTKbR_8.png" headerType="IMAGE" docId="JqY6i5aCFIm-kOm9ERv7A" displayMode="CARD" docSeoDescription="Create and manage MCP toolboxes: select and configure tools, generate keys, and connect to MCP clients. "}
[MCP toolboxes](docId\:JqY6i5aCFIm-kOm9ERv7A)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/gCXC_7mtkmW6Sg6myTKbR_8.png" headerType="IMAGE" docId="olKI_adUZWTZJUHASAY66" displayMode="CARD" docSeoDescription="Install Make Skills in AI assistants to build scenarios, configure modules, and connect to Make MCP server and APIs. "}
[Make Skills](docId\:olKI_adUZWTZJUHASAY66)
:::
::::


[title] Maia by Make system card
[path] Maia/

:::hint{type="info"}
Maia is not yet generally available (GA). Functionality and pricing may change.&#x20;
:::

This system card covers Maia's functionality, data usage, human intervention points, and data security.

## Overview

Maia is an AI and automation co-worker in the  Builder. She helps create, modify, and debug  through natural language.

## AI integration

Maia runs on a large language model (LLM). She interprets your natural language prompts, reasons about the current state of the , and calls a set of predefined tools to modify the scenario. She autonomously chooses and orders tools in a single user-prompted session.

## User interactions

You interact with Maia through a conversational chat interface in the  Builder. Describe what you need, for example, "add a filter that only passes emails from my domain," and Maia applies the changes step by step on the canvas while explaining its actions.

## Use of AI models&#x20;

Maia relies on the following models:

- [GPT-5.2](https://deploymentsafety.openai.com/gpt-5-2/introduction)
- [GPT-4.1 mini](https://developers.openai.com/api/docs/models/gpt-4.1-mini)
- [Claude Sonnet 4.6](https://www-cdn.anthropic.com/bbd8ef16d70b7a1665f14f306ee88b53f686aa75/Claude%20Sonnet%204.6%20System%20Card.pdf)

### Model training on customer data

Make doesn't use customer data, such as user prompts,  structures, or outputs, to train or fine-tune the underlying LLM. Adjustments in model behavior come exclusively from system prompt engineering and tooling configuration. No customer data modifies the model weights.

### Impact of model output

The LLM decides how to respond to each user request, including the tools to call, their order, and parameters. The output determines the  configuration, whose quality depends on the LLM's reasoning ability and the accuracy of its knowledge.

## Data flow

### Inputs

Maia uses these inputs in each session:

- The natural language prompt you enter in the chat interface
- The current state of the , including the module graph, connections, and settings
- Details about your Make account, including permissions
- Built-in Make-specific knowledge (prompts and skills)&#x20;

### Processing

Maia processes your requests in these steps:

1. Once Maia receives the prompt and  context, she plans her response.&#x20;
2. Maia selects predefined tools, for example, add module, set filter, connect modules, and calls each one at a time.
3. Each tool action appears on the canvas in real time.
4. Maia lists tool calls in the chat interface.

### Outputs

Maia produces the following outputs:

- **Scenario modifications:** Modules (added or removed) and field configurations&#x20;
- **Contextual information**: Natural language explanations of modifications&#x20;

## Human oversight and control

### Level of automation

Maia only acts when you explicitly prompt her. While she may call multiple tools sequentially without requesting your approval for each, the outcome of these actions is visible on the canvas.&#x20;

### Human intervention&#x20;

You can intervene in Maia's behavior in the following ways:

- **Revert:** Undo any change that Maia makes by clicking a previous  version in the chat.
- **Validation and testing:** You must check the  configuration before running or activating it.
- **Restricted actions:** Maia is unable to take high-impact actions, such as running, activating, or deactivating . She asks you to perform these actions yourself.

### Monitoring and evaluation

 monitors and evaluates Maia's performance by:

- Tracking live activity in Maia (Maia's actions and user conversations) to detect errors, false outputs, and unintended changes to &#x20;
- Investigating user questions and generated responses
- Developing an LLM evaluation framework to standardize Maia's  building

### Opting in and out

By default, Maia is available in the  Builder for all users. Enterprise users can opt out in their account settings.

## Safety and security

### Data security

- **User prompts and scenario data:&#x20;**&#x54;his data stays in Make. Exceptions include calls to the AI provider, which are subject to Make's data processing agreement with that provider.
- **Data access:&#x20;**&#x4D;aia operates strictly within your defined access permissions. She does not access resources or data that are inaccessible to you.
- **Data encryption:** Your data is encrypted in transit and at rest, following Make's platform-wide security standards.

### Personal data (PII) handling

The AI provider applies safeguards that reject prompts requesting personal data. Maia doesn't actively seek personal data. She only processes data that you explicitly include in your prompt, or that is present in the  you're building.

### System reliability

Maia's availability depends on  platform uptime and AI provider availability. Uptime targets align with Make's standard platform SLA.&#x20;

## Ethical considerations

### Transparency

Maia never indicates that you're interacting with a deterministic system or human agent. All of her outputs are subject to the following mandatory disclosure statement: "Output is generated by AI, please verify as errors may occur."&#x20;

Maia's step-by-step narration of the changes she makes to the canvas provides live insight into her decision-making. More visibility into her reasoning is unavailable (a known limitation of current LLMs).

### Fairness and bias

Maia's primary function is to build , rather than evaluate, limiting her exposure to bias. Her AI provider applies safety alignment frameworks to mitigate model-level biases. As the model never uses customer data for training, it does not factor in organizational biases.

### Potential adverse effects

Maia may produce  that include bugs or logical errors, such as incorrect data transformation or unintended API calls.&#x20;

Mitigations include:

- Revert to a previous  version to undo Maia-generated changes.
- Run and activate  yourself (Maia is unable to run scenarios).
- Test  before activating them.&#x20;

[title] Step 2. Create the AI agent's tools
[path] Make AI Agents/AI agent use case/

:::hint{type="success"}
This page reflects a **previous version of Make AI Agents**. For the latest information, see [Make AI Agent (New)](docId\:rXryASA6852hvhkZ6NhXU).&#x20;
:::

AI agents in  need tools to do their job – these tools are modules,  and MCP tools. Agents use information provided by you to reason about how and when to use these tools.&#x20;

To inform the AI agent's context,  sends the following information to the AI service provider:

- System prompt
- The name and description of each tool&#x20;
- The name and description of [inputs or outputs](docId\:dI1PkXe4s6-sTrIU9SpVv) of the scenario used as a tool&#x20;

In addition to providing context, all  used as tools for AI agents must be [active](docId\:pDRFtYsEJPiIzTaB7zJYh) and either scheduled **on demand** or triggered by a **Custom webhook.**

In the next sections, we will create a tool for our agent to list our shop inventory and another to order more stock if we're low.&#x20;

:::hint{type="info"}
The aim of the following sections is to showcase the AI agent's reasoning. The example  provided have been simplified to streamline their setup.
:::

## Tool 1: Scenario to list shop inventory

We will provide our agent with a  to list our shop inventory. Since we want to send data from the  to the agent, we have to use [scenario outputs](docId:4GwCr4LPZuaBtV9eDYtYR) and the **Scenarios** > **Return output** module.

To create the :

::::WorkflowBlock
:::WorkflowBlockItem
Click the **Create a new scenario** button in your organization dashboard or in the list of .
:::

:::WorkflowBlockItem
If you don't have testing data ready, set up your shop data:

1. Add the **Data store** > **Search record** module to your .
2. In the **Data store** field, select **Add** to create a new data store.
3. In the **Data store name** field, fill in the name for your inventory data storage.
4. In the **Data structure** box, click **Add** to define a structure for your data store.
5.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/xSpGhDIsAwW5-e9QQh6Dl-yrYWfvGplur7yV8QMrCf5-20250306-124119.png" size="56" width="499" height="1162" position="center" showCaption="false" indent="2"}

6. Click **Save** to confirm the data structure and **Save** to create the data store.
7. Go to the list of data store and open the new data store.
8. Click the **Add** button to add data to your data store:

![](https://archbee-image-uploads.s3.amazonaws.com/xSpGhDIsAwW5-e9QQh6Dl-jYhXubr3GNnzWEwydwQlV-20250306-124235.png)
:::

:::WorkflowBlockItem
Update the name of the . The AI agent uses the  name to decide if it should run the . Fill in: "List shop inventory".
:::

:::WorkflowBlockItem
Add the **Tools** > **Text aggregator** module

1. In the **Source module** field, keep the data store module.
2. Enable the **dvanced settings** toggle at the bottom of the module settings.
3. In the **Row separator** field, select **New row**.
4. In the **Text** field, map the `name` and `quantity` fields from your data store:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/xSpGhDIsAwW5-e9QQh6Dl-qbtuXUlKbpPTXePRhrNxY-20250306-124859.png" size="74" width="886" height="208" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Add the **Scenarios** > **Return output** module.

1. Click **Add scenario outputs** to set  outputs for the return data module.
2. In the **Scenario outputs** tab, define the  output structure and fill in the `description` of each item in the output:
3.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/xSpGhDIsAwW5-e9QQh6Dl-p0fksUq3OBAV4GBehELHO-20250306-125058.png" size="52" width="794" height="1358" position="center" showCaption="false" indent="2"}

4. In the module settings, map the `text` variable to the `inventory` field.
5. Confirm module settings with **Save**.
:::

:::WorkflowBlockItem
Set  scheduling:

1. Set the  scheduling to **On demand**. The agent will run the  for you when needed.
2. Confirm the  scheduling with **Save**.
3. Activate the .
4. Save your .
:::

:::WorkflowBlockItem
Add  description for the agent:

1. Go to the  **Diagram** tab.
2. Click **Options** > **Edit description**.
3. Add description to the . The AI agent uses the  name and description to decide if it should run the scenario. Fill in: "Lists the shop inventory."
4. Click **Save**.
:::
::::

You have created the  for your agent to list the shop inventory. We will make the  available to your agent in the following sections.

## Tool 2: Scenario to order more stock

We will provide the agent with another tool: a  to order more items for our shop inventory. The  will receive order information from the agent with  inputs.

For our testing purposes, the  will just send messages to a selected chat.

To create the :

::::::WorkflowBlock
:::WorkflowBlockItem
Click the **Create a new scenario** button in your organization dashboard or in the list of .
:::

:::::WorkflowBlockItem
In **Scenario inputs and outputs** in the **Scenario inputs** tab, set the  inputs structure and description:

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/xSpGhDIsAwW5-e9QQh6Dl-iWEgWRv8Pjq8m5iwOw98R-20250306-125358.png)
:::

:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/xSpGhDIsAwW5-e9QQh6Dl-gmIThHam9Eb9Z1h_dSozh-20250306-125409.png)
:::
::::
:::::

:::WorkflowBlockItem
Add the **Slack** > **Create a message** module.
:::

:::WorkflowBlockItem
Set up the **Create a message** module:

1. In the **Connection** selection box, select your connection. If you don't have a connection, click the **Add** button to create it.
2. Select the channel where you want to receive the messages about new orders created by the agent.
3. In the module settings, use the scenario input in the **Text** field. For example:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/xSpGhDIsAwW5-e9QQh6Dl-OX4qt7qt3EnhZu944vDUZ-20250306-125502.png" size="88" width="872" height="182" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Update the name of the . The AI agent uses the  name to decide if it should run the . Fill in: "Create buy stock order."
:::

:::WorkflowBlockItem
Set  scheduling:

1. Set the  scheduling to **On demand**. The agent will run the  for you when needed.
2. Confirm the  scheduling with **Save**.
3. Activate the .
4. Save your .
:::

:::WorkflowBlockItem
Add  description for the agent:

1. Go to the  **Diagram** tab.
2. Click **Options** > **Edit description**.
3. Add description to the . The AI agent uses the  name and description to decide if it should run the . Fill in: "Creates orders to refill the shop inventory."
4. Click **Save**.
:::
::::::

You have created the  for your agent to create orders to refill the shop inventory. We will make the  available to your agent in following sections.

[title] Maia by Make
[path] /

Create, modify, and troubleshoot scenarios with natural language using Maia:

::::LinkArray{contentSource="DOCS" sourceParentDocId="TCRDufDHDbqdIx3E7YoID" childrenDocs="[object Object],[object Object]" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/XAW3jZ24zW322P-M9H1WK_maia-data-help-center.jpg" headerType="IMAGE" docId="LdYLO43v51euEM3BNLhXP" displayMode="CARD" docSeoDescription="Browse Maia use cases, usage tips, and pricing. "}
[Introduction to Maia by Make](docId\:LdYLO43v51euEM3BNLhXP)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/VFOu3mt2KPGOvFFVsISlj_maia-help-center.jpg" headerType="IMAGE" docId="UW5jfXVniOPUc9ElblDWd" displayMode="CARD" docSeoDescription="Learn how Maia handles your data, uses AI, and maintains security and compliance."}
[Maia by Make system card](docId\:UW5jfXVniOPUc9ElblDWd)
:::
::::







::::LinkArray{contentSource="DOCS" sourceParentDocId="TCRDufDHDbqdIx3E7YoID" childrenDocs="[object Object],[object Object]"}
:::LinkArrayItem{headerType="NONE" docId="UW5jfXVniOPUc9ElblDWd"}

:::
::::




[title] Math functions
[path] Explore more/Functions/

Use a math function to apply mathematical operations to data. For example, math functions let you get an average of an array, round a value up or down, or change the format of a number (1 000 000 to 1,000,000 or 1.000.000). Below is a list of supported math functions and a brief description of each one.

## abs&#x20;

**abs (number)**

Returns the absolute value of an integer.

```none
abs( -5 ) = 5
```

```none
abs( 5 ) = 5
```

```none
abs( 0 ) = 0
```

```none
abs( -3.7 ) = 3.7
```

## average

**average (\[array of values]) average(value1; \[value2], ...)**

Returns the average value of the numeric values in a specific array, or the average value of numerical values entered individually.

## ceil

**ceil (number)**

Returns the smallest integer greater than or equal to a specified number.

```none
ceil( 1.2 ) = 2
```

```none
ceil ( 4 ) = 4
```

## floor

**floor (number)**

Returns the largest integer less than or equal to a specified number.

```none
floor( 1.2 ) = 1
```

```none
floor( 1.9 ) = 1
```

```none
floor( 4 ) = 4
```

## formatNumber

**formatNumber (number; decimalPOINTS; \[decimalSeparator]; \[thousandsSeparator])**

Returns a number in the requested format. Decimal point is \`,\` by default, Thousands separator is \`.\` by default.

```none
formatNumber( 123456789 ; 3 ; , ; . ) = 123.456.789,000
```

## max

**max (\[array of values]), max(value1;value2; ...)**

Returns the largest number in a specified array, or the largest number among numbers entered individually.

## median

**median (\[array of values])**

Returns the median of the values in a specified array, or the median of numbers entered individually.

```none
median( 3; 5; 7 ) = 5
```

```none
median( 2; 3; 5; 8 ) = 4
```

```none
median( 2.5; 3.5; 2; 4.5; 1 ) = 2.5
```

## min

**min (\[array of values]), min(value1;value2; ...)**

Returns the smallest number in a specified array, or the smallest number among numbers entered individually.

## parseNumber

**parseNumber (number; decimal separator)**

Parses a string with a number and returns the number.

Example: `parseNumber(` 1 756,456 `;` , `)`

## round

**round (number)**

Rounds a numeric value to the nearest integer.

```none
round( 1.2 ) = 1
```

```none
round( 1.5 ) = 2
```

```none
round( 1.7 ) = 2
```

```none
round( 2 ) = 2
```

## stdevP

**stdevP (\[array of values])**

Returns the standard deviation of a specified array of population values, or the standard deviation of numbers entered individually.

```none
stdevP( 1; 2; 3; 4; 5) = 1.4142135623730951
```

```none
stdevP( {{array}} )
```

## stdevS

**stdevS (\[array of values])**

Returns the standard deviation of a specified array of sample values, or the standard deviation of numbers entered individually.

```none
stdevS( 1; 2; 3; 4; 5) = 1.5811388300841898
```

```none
stdevS( {{array}} )
```

## sum

**sum (\[array of values]), sum(value1;value2; ...)**

Returns the sum of the values in a specified array, or the sum of numbers entered individually.

## trunc

**trunc (number)**

Truncates a number to an integer by removing the fractional part of the number.

```none
trunc( 3.789) = 3
```

```none
trunc( 3.789; 2) = 3.78
```

```none
trunc( -3.789; 2 ) = -3.7
```

```none
trunc( 123.456; -2 ) = 100
```


[title] Make AI Agent (New) app
[path] Make AI Agent (New)/

:::hint{type="info"}
The **Make AI Agent (New)&#x20;**&#x61;pp is available on **all plans&#x20;**&#x75;sing Make's AI Provider, with the option to use custom AI provider connections on **paid plans**. The app is i&#x6E;**&#x20;open beta**; product functionality and pricing may change.&#x20;
:::

**Make AI Agent (New)** is an app for creating agents, adding their tools and knowledge, and testing them using a chat interface. This article is a reference for the app's modules, module settings, and outputs.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/lVY4JKxDmGR6Pcgxx79Q3_ai-agent-new-app.png)

## Module settings

Use this section as a reference for **Make AI Agent (New)** app modules and their settings.

### Run an agent

Use the **Run an agent&#x20;**&#x61;pp to create agents, add tools and knowledge, and chat for testing purposes.&#x20;

Below is a reference for key fields in module settings:&#x20;

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Knowledge**
:::

:::VerticalSplitItem
Upload files so your agent has the additional context to tailor its responses to your goals. Knowledge files are typically static, for example, company guidelines, glossaries, and style guides.&#x20;

See [Knowledge file requirements](docId\:TCBtvwTxWJamwcfffIgy6) for knowledge file limitations.&#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Add tool**
:::

:::VerticalSplitItem
Give your agent  tools (modules or scenarios) to perform its tasks.&#x20;

Each tool corresponds to a specific module:

- **Module**: The module for a specific third-party service and action, for example, **Gmail&#x20;**> **Send an email&#x20;**
- **Scenario**: The **Scenarios&#x20;**> **Call a scenario&#x20;**&#x6D;odule
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Add MCP**
:::

:::VerticalSplitItem
Give your agent access to tools from third-party MCP servers. Each MCP server added appears on the canvas as an **MCP Client** > **MCP Tools&#x20;**&#x6D;odule.&#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Chat**
:::

:::VerticalSplitItem
Interact with your agent to evaluate its performance before going live. Send sample tasks and adjust the agent settings based on the results.&#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Connection**
:::

:::VerticalSplitItem
Select the AI provider that connects your agent to a large language model (LLM).

The AI provider available depends on your plan:&#x20;

- **Make's AI Provider** is available on all plans.
- **Custom AI provider connections&#x20;**&#x61;re available to paid plans.&#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Model**
:::

:::VerticalSplitItem
Select an LLM from your AI provider. Models vary in processing speed, reasoning abilities, token cost, and effectiveness for specific tasks.&#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Instructions**
:::

:::VerticalSplitItem
Clearly and systematically describe what the agent does, including its role, behavior, goals, and workflow steps. The agent follows its instructions across all tasks.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Input**
:::

:::VerticalSplitItem
Add a specific task or incoming data for the agent to work on. Map data from previous modules, such as chat messages, emails, customer names, and other values.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Input files**
:::

:::VerticalSplitItem
Upload a file for your agent to process with its task.&#x20;

File limitations include:

- Make's AI Provider, OpenAI, Anthropic Claude, or Gemini only
- A model that accepts files&#x20;
- JPG, PNG, GIF, and PDF for the input files you give the agent
- PDF, DOCX, TXT, and CSV for the output files you ask the agent to generate
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Input files** >**&#x20;File name**
:::

:::VerticalSplitItem
Name your file.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Input files&#x20;**> **Data**
:::

:::VerticalSplitItem
Map the file from a previous download file module, such as **Google Docs&#x20;**> **Download a file**.&#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Conversation ID**
:::

:::VerticalSplitItem
Specify a custom ID so your agent keeps user interactions in the same communication thread and remembers them.&#x20;

Examples:

- A mapped **userId&#x20;**&#x74;o remember conversations with a specific user, in the case of multiple users
- A mapped **timestamp&#x20;**&#x6F;f the first message or email to remember the entire thread and reply&#x20;
- A unique combination of characters to remember your requests

If you leave this field blank, your agent generates a unique ID for each  run and has no memory of previous communication.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Maximum conversation history**
:::

:::VerticalSplitItem
Define the maximum number of replies the agent remembers in a conversation. &#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Step timeout**
:::

:::VerticalSplitItem
Enter the maximum number of seconds an agent runs in each step before it fails. The maximum timeout is 600 seconds (10 minutes).

If you leave this field blank, the timeout defaults to 300 seconds (5 minutes).&#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Response format**
:::

:::VerticalSplitItem
Specify the response format that the agent returns.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Response format** > **Text**
:::

:::VerticalSplitItem
Returns a response in text format.&#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Response format** > **Data structure**
:::

:::VerticalSplitItem
Returns a response in a custom format, either as output items (**Add item**) or as a content type, such as JSON (**Generate**). &#x20;
:::
::::

## Output&#x20;

The **Output&#x20;**&#x74;ab of the module output shows the agent's response and execution metadata. To open it, click the output bubble of a module, go to the **Output&#x20;**&#x74;ab, and expand fields in the input and output bundles.&#x20;

Below is a reference for key fields in the output:

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Response**
:::

:::VerticalSplitItem
The agent's answer to the user request. Map the response to other modules to use it elsewhere.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Metadata**
:::

:::VerticalSplitItem
The agent's execution steps and token usage summary.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Metadata&#x20;**> **Execution steps**
:::

:::VerticalSplitItem
The agent's decision-making process in chronological order. Each step describes factors such as the role behind the step, the tool used, and the tokens consumed.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Metadata&#x20;**> **Token usage summary**
:::

:::VerticalSplitItem
The tokens used in a single run, including **Prompt tokens&#x20;**&#x20;(input), **Completion tokens** (output), and **Total tokens**.
:::
::::

## Reasoning&#x20;

The **Reasoning&#x20;**&#x74;ab of the module output shows how the agent processes data and responds to requests step by step. To open it, click the output bubble of a module and go to the **Reasoning&#x20;**&#x74;ab.&#x20;

The tab includes:

- The instructions and inputs the agent used to generate a response
- The agent's processing speed in seconds
- What the agent was thinking (shown when a reasoning model is used and the task requires deeper reasoning)
- How much of the context window was used&#x20;

### Context usage

**Context usage** in the **Reasoning&#x20;**&#x74;ab shows how much of your model's context window was used in a  run.&#x20;

The context window is the maximum amount of data a model can process in a single run. Your AI provider sets this limit, and it varies by model. Context usage is measured in tokens.&#x20;

To check context usage, hover over the **Context usage** icon next to **Agent response**. For example, `575/400.0k tokens (0.1%)` means 575 tokens of the 400,000 available tokens were used (0.1%).&#x20;

:::hint{type="info"}
You receive an error message when the context window is exceeded. To resolve it:

- Upload a smaller file.
- Upload the file as a knowledge file.
- Reduce the number of tools or use different ones.&#x20;
- Define a maximum number of replies to use as context in **Maximum conversation history** in the agent's **Advanced settings**.
:::


[title] Create AI agents for different triggers
[path] Make AI Agent (New)/

Create AI agent scenarios using common triggers: chat messages, emails, forms, webhooks, and mailhooks. Use the guided examples to build new AI agents or troubleshoot existing ones.&#x20;

Once done, you'll have the basic  structure. Tailor it to your needs by adding agent tools, knowledge, and specific instructions. &#x20;

:::hint{type="info"}
**Before you begin:&#x20;**&#x41; trigger module is the first module in the scenario. It determines how the agent receives its requests or information.&#x20;
:::

::::LinkArray{contentSource="DOCS" sourceParentDocId="St83Bmv0xAT86o2SZHycE" childrenDocs="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]" itemsPerRow="2" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/I6Uae8yH26pFl5F9RgKxd_triggers-1.png" headerType="IMAGE" docId="2Q1i-m0CeIR0FTtKStoi7" displayMode="CARD"}
[Slack-triggered AI agent](docId:2Q1i-m0CeIR0FTtKStoi7)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/gvw7MCf9IvCEkGouCPFMQ_triggers-1.png" headerType="IMAGE" docId="XB2yV0mRUtQa5k7YFG0Mi" displayMode="CARD"}
[Telegram-triggered AI agent](docId\:XB2yV0mRUtQa5k7YFG0Mi)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/sPFa99mZxPXciRrmfxePx_triggers-1.png" headerType="IMAGE" docId="SclqhRvEy8NQgRTM5AMnP" displayMode="CARD"}
[Email-triggered AI agent](docId\:SclqhRvEy8NQgRTM5AMnP)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Sf7X5GzSkXOgLhLTghqXY_triggers-1.png" headerType="IMAGE" docId="5x8uM5aWmxRWbnFmlkR7g" displayMode="CARD"}
[Form-triggered AI agent](docId:5x8uM5aWmxRWbnFmlkR7g)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/q5mNWAm_KnXKLp8ucAfHR_triggers-1.png" headerType="IMAGE" docId="3Gzj4_A0ikuZOo8d0vjqT" displayMode="CARD"}
[Webhook-triggered AI agent](docId:3Gzj4_A0ikuZOo8d0vjqT)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/0hwqpiYZYkB8ltittUnBp_triggers-1.png" headerType="IMAGE" docId="y02nSppdRk3MimnodpjN7" displayMode="CARD"}
[Mailhook-triggered AI agent](docId\:y02nSppdRk3MimnodpjN7)
:::
::::

These examples show user-triggered agents. Other agent types can run autonomously based on a schedule and respond to any data. To build other types of AI agent  using pre-built templates, see [Make AI agents library](https://www.make.com/en/ai-agents-library).&#x20;

[title] Hash functions
[path] Explore more/Securing data with Make/

Hash functions take variable-length inputs and produce fixed-length outputs of text that can't be reversed or decoded. The resulting output can only be compared. Hashing is used for integrity verification.

For example, a typical business use of hash functions is for the secure storage of user passwords.

When a user sets or changes a password, the system does not store the original password. Instead, it stores a hash value and a salt in the database.&#x20;

First, a unique string (salt), is added to the user's password. Salting the password ensures that, even if two users have the same password, the password hash values will be different.

Next, the salt and password are hashed and the password hash value and unique salt are stored in the database. The original password is not saved.

When the user attempts to log in, the system retrieves the stored salt and password hash, calculates a new hash, and compares the new hash to the stored password hash. This method protects users if the database is breached.

The following hash functions can be used in :

| **Function** | **Description**                                                                                                                                                                                                                                                                      |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **sha1**     | The [sha1 function](https://help.make.com/text-and-binary-functions#sha1) has an output size of 160 bits. Though faster<br />than the `sha256` and `sha512` functions, it is not as secure.<br />It is generally not recommended for use.                                            |
| **sha256**   | The [sha256 function](https://help.make.com/text-and-binary-functions#sha256) has an output size of 256 bits. It is secure<br />to use for data integrity and performs quickly on 32-bit systems.<br />SHA-256 is a widely accepted standard that is used often.                     |
| **sha512**   | The [sha512 function](https://help.make.com/text-and-binary-functions#sha512) has an output size of 512 bits. SHA-512 is<br />used for the highest level of security or when 64-bit is required.                                                                                     |
| **md5**      | The [md5 function](https://help.make.com/text-and-binary-functions#md5) has an output size of 128 bits. It's most<br />commonly used to validate that a file has been downloaded<br />correctly without any missing or corrupted data. It is not<br />recommended for use otherwise. |

You can find hash functions under the **Text and binary functions** tab:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/geWxluUSvhj2Mq6pAUL1Y-20260122-093600.png" size="38" width="383" height="368" position="flex-start" showCaption="false"}

::::ExpandableHeading
## Example: Compare hash values

In this example we will:

1. Select content to hash.
2. Set variables with a variety of sha functions.
3. Compare hash values.

**Step 1: Select content to hash**

In this example, we set a variable `InitialText` with our content to be hashed.

In your scenario, you may have the content set another way or pulled from a different source.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/9wX8upJMbxY8yqAmPXHk--20260209-123012.png" size="60" width="724" height="555" position="flex-start" showCaption="false"}

**Step 2: Set variables with a variety of sha functions**

The most common hash functions are `sha256` and `sha512`.&#x20;

Here we set three variables with the **Set multiple variables** module using the original content `InitialText`:

- `hash-sha256`,&#x20;
- `hash-sha512`, and&#x20;
- `hash-sha512++`, a hash with a salt added.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/GfsOx001Ny_7INBzqFLVe-20260210-100733.png" size="40" width="425" height="195" position="flex-start" showCaption="false"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/B5HSQMbYk5RK2JF8-2FDP-20260210-101248.png" size="40" width="425" height="186" position="flex-start" showCaption="false"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/7Sa_0eAM514qhVIEwMXTz-20260210-101315.png" size="40" width="425" height="205" position="flex-start" showCaption="false"}

:::hint{type="info"}
Sha functions allow you to add extra parameters, and in the case of `hash-sha512++`, we set the value to hexadecimal and added more information as a salt for additional security.
:::

The output of these variables are hash values of the original content `InitialText`.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Ky9-Pv3lST1m0sCxyQwnq-20260217-130310.png" size="40" width="399" height="152" position="flex-start" showCaption="false"}



**Step 3: Compare hash values**

A hash is often stored and then compared later with a new hash. For example, if you set a password for an account, the hash is stored. Then, when you log in again, the hash of your new input (your password) is compared to the stored hash. If the hash values match, you are logged in to your account. If the hash values differ, you are denied access.

Here, the new input is received, set as variables and hashed, and the new hash values are compared in the filters set after the router.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/lsWALVnw_U8ZyHu_7ifYH-20260210-102827.png" size="80" width="1067" height="698" position="flex-start" showCaption="false"}

If the results do not match, the result is an error. In the password example described above, a user would not be allowed to log in.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/UCETuPeENMP-GuozWjSQ_-20260210-103537.png" size="40" width="431" height="168" position="flex-start" showCaption="false"}

If the results match, there is no error. In the password example described above, a user would be allowed to log in.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/pRxXIGzVH8ckzZDj9BXvU-20260210-103733.png" size="40" width="459" height="245" position="flex-start" showCaption="false"}
::::


[title] Resume error handler
[path] Error handling/Error handlers/

The **Resume** error handler replaces a failed bundle with a substitute output that you define. When an error occurs, the rest of the scenario continues using that substitute data. All remaining bundles in the scenario flow are processed normally.&#x20;

**When to use it**: Use the Resume error handler when you have a substitute mapping that allows the bundle to continue through the scenario flow. You can use it as a placeholder to flag the bundle for review later.

For example: Amy retrieves a list of new user sign-ups. She uses Make to send a welcome email to each user. One user has no email address recorded, producing an error. She uses Resume error handler to substitute the missing email with a placeholder such as *unknown\@company.com*. The scenario continues processing the remaining users as normal. The failed bundle is logged against the placeholder address for review, while every other users receive their welcome email.

For more information about error handling strategies check the [Overview of error handling](docId\:sN7McE4QmL-Q6wDTOOcSy) .

### How the Resume error handler works

When a module encounters an error, the Resume error handler substitutes the failed bundle with custom data defined in the error handler's settings. Instead of dropping or pausing the , Make replaces it with your substitute mapping and continues the scenario flow as normal.

Unlike the Skip error handler, the bundle is not removed from the flow — it continues through the remaining modules using the substitute data.

### Use the Resume error handler

In this example, we have a scenario that updates a data store and then sends a Slack message. If the data store update fails because of a missing value, it simply replaces it with a substitute value and the  continues as usual.&#x20;

This demo  contains five modules.

1. **JSON** - **Parse JSON** provides test data in the form of an array of three record IDs.
2. **Iterator** splits the array into individual bundles.
3. **Data store** - **Update a record**: Updates the data in the data store.
4. **Data store** - **Update a record**: This module updates the data again. This time the module works differently. In the module mapping, there is a mapping that intentionally creates an error:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/IGuzVI2USP_2J2uaI6DiO_uuid-38a27efa-f066-3ba0-d77f-c1fac59dbb6a.png" size="100" width="882" height="254" position="center" darkWidth="882" darkHeight="254" showCaption="false" indent="2"}

5. The mapping inserts a `null` value into the required **Key** field, which always creates the `BundleValidationError`.
6. **Slack** - **Send a message**: Sends a message to a private testing channel.

This is how the example  looks:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/hAt8L-RCHcqlRX1Zv9ITu_uuid-a20c3804-3600-efbd-3e63-6ee8604bee5a.png)

When we would run the example , we would get the `BundleValidationError`:

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/eV9s60is4o30uYvPGyHHU_uuid-d0cd6900-234c-21a1-c35c-e5ee696e538c.png)
:::

:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/CNPg8JnCTdNcxaACINlIU_uuid-5e505ecc-ffa2-af6c-9a23-e625392bf169.png)
:::
::::



**Let's see how to handle this error using a Resume error handler**.

::::WorkflowBlock
:::WorkflowBlockItem
Right-click the module that is causing the error. In the menu, select **Add error handler**.
:::

:::WorkflowBlockItem
Select the **Resume** error handler.
:::

:::WorkflowBlockItem
Fill in the **Resume** handler settings with your custom mapping.
:::

:::WorkflowBlockItem
Save your .
:::
::::

You've successfully added the Resume  error handler to your .&#x20;

**What happens when you run the scenario after you add a Resume error handler.**

Since we added the **Resume** error handler to the **Update a record** module, the **Resume** error handler would replace the bundle with the substitute mapping. When the module outputs an error,  would use the substitute bundle instead. The third bundle runs through the .

In the **Resume** error handler settings, you get the same fields as in the handled module settings. In the error handler fields, you can provide custom data that  uses instead of the bundle that caused the error.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Yz73p1jVq4BK8dC5T7VZn_uuid-1a455b15-b789-055f-bf34-2144fcf94370.png)

You can use the **Resume** error handler when you have a substitute mapping that fixes the bundle and allows the data bundle to continue in the  flow. You can also use the **Resume** error handler to add a placeholder that marks the data bundle to check later.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Yz73p1jVq4BK8dC5T7VZn_uuid-1a455b15-b789-055f-bf34-2144fcf94370.png)


[title] PGP (Pretty Good Privacy)
[path] Explore more/Securing data with Make/

[PGP (Pretty Good Privacy)](https://apps.make.com/crypto#encryptor-modules) is a cryptographic tool that encrypts a message using both symmetric and asymetric keys. A signature can be sent with the message to further ensure integrity and authentication.

The sender generates a temporary session key, a random number used only once. The session key is used as a symmetric key to encrypt the message. The sender uses a public key from the receiver to encrypt and send the session key. The sender transfers both the encrypted session key and the encrypted message to the receiver. Finally, the receiver uses their private key to decrypt the session key and then uses the session key to decrypt the message.

PGP keys in  must have at least 2048 bits.

:::::ExpandableHeading
## Example: Encrypt and decrypt a PGP message with the Encryptor app

In this example we will:

1. Select content to encrypt and send to a recipient.
2. Generate a pair of private and public keys for the sender and recipient.
3. Encrypt the message.
4. Decrypt the message.

****
**Step 1: Select content to encrypt**

In this example, we set a variable `InitialText` with our content to send encrypted.&#x20;

In your scenario, you may have the content set another way or pulled from a different source.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/9wX8upJMbxY8yqAmPXHk--20260209-123012.png" size="60" width="724" height="555" position="flex-start" showCaption="false"}

**Step 2: Generate a pair of private and public keys for the sender and recipient:**

::::WorkflowBlock
:::WorkflowBlockItem
Go to a PGP key generator website of your choice. In this example, we use [this tool](https://pgpkeygenerator.com/).
:::

:::WorkflowBlockItem
Select or set the following values:
**Key Algorithm:** RSA (ECC can be used in Make as well)
**Key Size**: 2048 bits
**Name:** Enter a name to identify the use of the keys.
**Email:** Enter an email address.
**Passphrase:** Content used to protect the private key.&#x20;
**Expiration time:** Select when you want the keys to expire.
:::

:::WorkflowBlockItem
Click **Generate Keys** to get a pair of private and public RSA keys. If you are using a different tool to generate your keys, your steps may be different.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/gx3znp3EhD_KUkir1uEyE-20260210-133205.png" size="80" width="804" height="947" position="flex-start" showCaption="false"}
:::

:::WorkflowBlockItem
Copy the private and public keys and save them in a safe place. Additionally, remember the passphrase you used. You will need all three in Make.
:::
::::

:::hint{type="info"}
Both the sender and recipient need a set of private and public keys. The sender and recipient create these key pairs separately and share the public keys with each other.

To encrypt a message, the sender uses the recipient's public key. The recipient uses their private key to decrypt the message.

If the sender also uses their private key to sign the message (not required), the recipient needs the sender's public key to validate the signature.
:::



**Step 3:  Encrypt the message:**

::::WorkflowBlock
:::WorkflowBlockItem
Add the **Encryptor > Encrypt a PGP message** module to your scenario.
:::

:::WorkflowBlockItem
For the required **Public key**, click **Create a keychain**.
:::

:::WorkflowBlockItem
Enter a **Name** for your recipient's public key.
:::

:::WorkflowBlockItem
In the **Public Key** field, enter the recipient's public key.
:::

:::WorkflowBlockItem
Click **Create**.
:::

:::WorkflowBlockItem
Optional: If you want to attach a verifiable signature, click **Create a keychain** for the **Private key** field. Repeat steps 3, 4, and 5 to create the sender's private key.
:::

:::WorkflowBlockItem
In the **Message** field, map the value of the content you want to encrypt.
:::

:::WorkflowBlockItem
Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ztyb4KPV4X2JP-Ys6pkSG-20260210-151406.png" size="40" width="484" height="422" position="flex-start" showCaption="false"}
:::
::::

The ouput of this module is the encrypted message and a verifiable signature is included.&#x20;



**Step 4: Decrypt the message:**

::::WorkflowBlock
:::WorkflowBlockItem
Add the **Encryptor > Decrypt a PGP message** module to your scenario.
:::

:::WorkflowBlockItem
For the required **Private key**, click **Create a keychain**.
:::

:::WorkflowBlockItem
Enter a **Name** for your recipient's private key.
:::

:::WorkflowBlockItem
In the **Private Key** field, enter the recipient's private key.
:::

:::WorkflowBlockItem
Click **Create**.
:::

:::WorkflowBlockItem
Optional: If a verifiable signature was attached, click **Create a keychain** for the **Public key** field. Repeat steps 3, 4, and 5 to create the sendér's public key.
:::

:::WorkflowBlockItem
In the **Message** field, map the value of the content you want to decrypt.
:::

:::WorkflowBlockItem
For the **Verify signature with a public key&#x20;**&#x66;ield, click Yes or No. Click **Yes** if a signature is attached.
:::

:::WorkflowBlockItem
Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/6ScVNNJ1b0h3WYdumM8Og-20260210-152412.png" size="40" width="485" height="527" position="flex-start" showCaption="false"}
:::
::::

The message is decrypted. The output of this module is the decrypted message and should match the original content set in the `InitialText` variable.

:::hint{type="warning"}
If the wrong private key is used, the message has been modified, or there is a problem with the sender's signature, the module outputs an error.
:::
:::::


[title] Error handling
[path] /

This page helps users navigate errors, diagnose and resolve issues in  by providing detailed information on common errors and warnings, error handlers, and how to use them in your . It includes step-by-step solutions for frequent problems, guidance on resolving unexpected behavior, and recommended best practices to prevent issues in the future. Use this section to quickly identify error messages and apply fixes for smoother operation.

::::LinkArray{contentSource="DOCS" sourceParentDocId="eAkrMJ62H397vKw5-K25T" childrenDocs="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]" itemsPerRow="2" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/GqH41PYefbx4LjkgGr0wS_11.png" headerType="IMAGE" docId="TquH1QU_dfqZ145XfK0Us" displayMode="CARD" docSeoDescription="Understand what errors and warnings mean in Make and learn how to handle them effectively"}
[Introduction to errors and warnings](docId\:TquH1QU_dfqZ145XfK0Us)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/paTVaDsEFdDjE7RBYx9Mz_11.png" headerType="IMAGE" docId="sN7McE4QmL-Q6wDTOOcSy" displayMode="CARD" docSeoDescription="On this page, you will find an overview of errors in Make and how error handlers help you manage unexpected issues, allowing your scenarios to continue running reliably even when a module fails."}
[Overview of error handling](docId\:sN7McE4QmL-Q6wDTOOcSy)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/paTVaDsEFdDjE7RBYx9Mz_11.png" headerType="IMAGE" docId="_JsogpsCihSJp9LJ41VDy" displayMode="CARD" docSeoDescription="On this page, you will find an overview of errors in Make and how error handlers help you manage unexpected issues, allowing your scenarios to continue running reliably even when a module fails."}
[Error handlers](docId:_JsogpsCihSJp9LJ41VDy)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/_gAem9cUImTReQZtHx82C_11.png" headerType="IMAGE" docId="QIox8zKLNPuRKZSNOP8rC" displayMode="CARD" docSeoDescription="Learn how Make automatically retries failed scenarios with progressively longer delays"}
[Exponential backoff](docId\:QIox8zKLNPuRKZSNOP8rC)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/1KLbAi3Jb1MOpbhtDFq78_11.png" headerType="IMAGE" docId="zSmAC8FbrbA_L0pz5tScb" displayMode="CARD" docSeoDescription="Explore workarounds to conditionally throw errors in your scenarios and control error handling behavior"}
[Throw](docId\:zSmAC8FbrbA_L0pz5tScb)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/1KLbAi3Jb1MOpbhtDFq78_11.png" headerType="IMAGE" docId="Dfe_eMkMKY4PPHj7k5z5s" displayMode="CARD"}
[Common errors and warnings and their fixes](docId\:Dfe_eMkMKY4PPHj7k5z5s)
:::
::::








[title] Module tools for AI agents
[path] Make AI Agents/Tools for AI agents/

:::hint{type="success"}
This page reflects a **previous version of Make AI Agents**. For the latest information, see [Make AI Agent (New)](docId\:rXryASA6852hvhkZ6NhXU).&#x20;
:::

When you use a module as a tool for an AI agent, you don't need to create or configure a  manually. Each module tool automatically creates its own  with all the necessary inputs and output&#x73;*.&#x20;*&#x4A;ust configure the module tool the same way you'd configure the module itself.

You can review the history and execution logs for the module tools'  at any time.

:::hint{type="warning"}
Each module tool is considered an active on-demand scenario. If you’re on the **Free** plan, remember that you can only have two active scenarios at a time.
:::

Create a module tool

You can create a module tool in the **AI Agents&#x20;**&#x63;onfiguration tab or in the **Make AI Agents > Run an agent** module.&#x20;

To create a module tool in the **AI Agents&#x20;**&#x63;onfiguration tab:

:::::WorkflowBlock
:::WorkflowBlockItem
Navigate to the **AI Agents** configuration tab in the left sidebar.&#x20;
:::

::::WorkflowBlockItem
Select an agent you want to add the module tool to.

:::hint{type="info"}
If you don't have an agent yet, refer to the [Create agents](https://help.make.com/manage-ai-agents#Ln8Sl) section.
:::
::::

:::WorkflowBlockItem
In the **Tools** section, click **Add**, and select **Module**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/QEeUh8kbyW-QNJXElGCQh-20250923-074317.png" size="60" width="1290" height="1248" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Select a module tool**, and then **Create module tool**.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/PL8X94efBsjvhfQV3wyyj-iXE3hukRRKLEF4JNr23vQ-20250822-105319.png" size="60" width="1082" height="878" position="center" showCaption="false"}
:::

::::WorkflowBlockItem
Select the app and then the module you need.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-DhtD3sk4_bYRmZa7SF3EQ-20250822-105909.png" size="60" width="1072" height="798" position="center" showCaption="false"}

:::hint{type="success"}
The modules available in the app search for module tools include verified apps, excluding trigger modules, Flow Control, and Tools modules.&#x20;
:::
::::

::::WorkflowBlockItem
Configure the module tool's settings:

- Optional: In the **Name** and **Description** field, change the default name and description of the module tool. Clear and precise data helps an AI agent deliver better results. &#x20;
- If required, create a new connection or select an existing one. 
- Configure the module settings relevant to the chosen module.&#x20;

:::hint{type="info"}
For the fields related to  inputs and outputs, you can check the **Let AI Agent decide** box to have the AI agent fill them in automatically.  
:::

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/1NcKlrBy2Wf_OXam1jJ1K-20250926-161854.png" size="50" width="798" height="1050" position="center" showCaption="false"}
::::

:::WorkflowBlockItem
Click **Add** to add the module to **Tools**. 
:::
:::::

Once you create a module tool, you can use it in your AI agent. It appears in the **Tools** section of your AI agent.&#x20;

In the **AI Agents** configuration tab, you can test the module tool by typing a request in the **Testing & Training&#x20;**&#x63;hat.  &#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/q4rs-GqdN2Fe4ygiEYz-Y-20250929-074804.png" size="70" width="2610" height="1298" position="center" showCaption="false"}

You can also create a module tool in the **Make AI Agents > Run an agent** module:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Open the **Make AI Agents > Run an agent** module in a .
:::

:::WorkflowBlockItem
In the **Agent** field, select your agen&#x74;**. &#x20;**
:::

:::WorkflowBlockItem
Click **Add tools > Module**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/j7oQpFXtLF0wrjdn1suO8-20250924-080442.png" size="60" width="1224" height="1332" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Follow the same steps as when creating a module tool in the **AI Agents&#x20;**&#x63;onfiguration tab.
:::
::::

### Scenarios for module tools

Every time you create a module tool, a new  is automatically created for it. To view it, click the expand icon next to the module tool name.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/JPyNtvhhZDgVyXY6hhwbH-20250924-080741.png" size="60" width="1268" height="312" position="center" showCaption="false"}

A scenario created for a module tool is locked by default. To edit it, click **Unlock** in the top-right corner. Then click **Convert.&#x20;**

:::hint{type="warning"}
Once converted, a module tool becomes a regular , and appears as a  within your **Make AI Agents tools** and in the **All scenarios** folder.&#x20;

If you only need to edit the module tool (not its scenario), see the [Edit module tool ](https://help.make.com/module-tools-for-ai-agents#qLiN5)section below.&#x20;

You can also rename the module tool from the  diagram. Just click its name, and enter a new one.
:::

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/jl4t8WVJ1-GAUdpkvWCm9-20250926-164755.png" size="70" width="2608" height="1406" position="center" showCaption="false"}

All the  created for module tools are stored in the **Module tools&#x20;**&#x66;older under the **All&#x20;**&#x61;n&#x64;**&#x20;Uncategorized&#x20;**&#x66;olders. These folders aren't editable, but you can copy the  into your own folders.&#x20;

You can identify a  created for module tools by a **Tool** icon next to it.&#x20;

In the **Module tools&#x20;**&#x66;older, you can also activate/deactivate the  using the toggle. Click the three dots to edit the custom properties of the , move it to a folder (it will still be visible in the **Module tools** folder), clone it, or delete it.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/PL8X94efBsjvhfQV3wyyj-UO6_svAryRxIoqls4mqPq-20250822-112452.png" size="60" width="2602" height="592" position="center" showCaption="false"}

### Edit a module tool

You can edit a module tool in the **AI Agents&#x20;**&#x63;onfiguration tab or in the **Make AI Agents > Run an agent** module.&#x20;

To edit a module tool in the **AI Agents&#x20;**&#x63;onfiguration tab:

::::WorkflowBlock
:::WorkflowBlockItem
Go to the **AI Agents** configuration tab on the left sidebar.
:::

:::WorkflowBlockItem
Select your agent from the list.
:::

:::WorkflowBlockItem
In the **Tools** section, click the gear icon next to the module tool you want to edit.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-6ZVM7qcath-jJ_XS-rG9T-20250822-113048.png" size="60" width="1308" height="1258" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Edit the module tool in the **Update tool&#x20;**&#x77;indow, and click **Save**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/dY4glJFk4QoGw2AIJI63p-20250926-162642.png" size="50" width="804" height="1054" position="center" showCaption="false"}
:::
::::

To edit a module tool in the **Make AI Agents > Run an agent** module:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Open the **Make AI Agents > Run an agent** module in a .
:::

:::WorkflowBlockItem
In the **Agent** field, select your agen&#x74;**.&#x20;**
:::

:::WorkflowBlockItem
Click the gear icon next to the module tool you want to edit.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/_97HZnXm2-DpOM_zbqSjn-20250924-075931.png" size="60" width="1214" height="1342" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Edit the module tool in the **Update tool&#x20;**&#x77;indow, and click **Save**.
:::
::::

Your module tools and scenarios created for them will be edited.&#x20;

### Delete a module tool

You can delete a module tool in the **AI Agents&#x20;**&#x63;onfiguration tab or in the **Make AI Agents > Run an agent** module.&#x20;

To delete module tools in the **AI Agents&#x20;**&#x63;onfiguration tab:

::::WorkflowBlock
:::WorkflowBlockItem
Go to the **AI Agents** tab in the left sidebar.
:::

:::WorkflowBlockItem
Select your agent from the list.
:::

:::WorkflowBlockItem
In the **Tools** section, click the delete icon next to the module tool you want to delete. &#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-GN8lCqaAT9RAAMkuvcDdN-20250822-113954.png" size="60" width="1270" height="360" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Delete** to confirm.
:::
::::

To delete a module tool in the **Make AI Agents > Run an agent** module:

::::WorkflowBlock
:::WorkflowBlockItem
Open the **Make AI Agents > Run an agent** module in a .
:::

:::WorkflowBlockItem
In the **Agent** field, select your agent.&#x20;
:::

:::WorkflowBlockItem
Click the delete icon next to the module tool you want to delete.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/a0CChd4iK_XJEPGQRa5Be-20250924-081021.png" size="60" width="1214" height="1342" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Delete** to confirm.
:::
::::

:::hint{type="info"}
In both cases, your module tool will be delete&#x64;**&#x20;from all instances of the agent&#x20;**&#x61;cross all . However, the module tool's  remains in your **Module tools&#x20;**&#x66;older. So, you can add it again later.&#x20;
:::

To delete a module tool from your account, you need to delete its :

::::WorkflowBlock
:::WorkflowBlockItem
Go to the **Module tools** folder.
:::

:::WorkflowBlockItem
Click the three dots next to the module tool's , then **Delete**.

::Image[]{src="https://app.archbee.com/api/optimize/PL8X94efBsjvhfQV3wyyj-bQrRXgiFjLZtRXkZbpRBW-20250822-114518.png" size="70" width="2594" height="592" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Delete** once again.
:::
::::

This permanently deletes the . Once deleted, you can't use that module tool again. &#x20;


[title] Make Grid
[path] /

Visualize your automation infrastructure with Make Grid:

::::LinkArray{contentSource="DOCS" sourceParentDocId="B2ki0XJ_InQ977K9YN6-h" childrenDocs="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]" itemsPerRow="2" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/5SHq6W549QOrt2VLBPH7p_10.png" headerType="IMAGE" docId="YHgABsznGQgXPoCOHfUGf" displayMode="CARD" docSeoDescription="Learn about Make Grid and its features such as smarter scaling, collaboration, resource tracking, faster troubleshooting, and auto-generated mapping"}
[Introduction to Make Grid](docId\:YHgABsznGQgXPoCOHfUGf)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/3b5MBrI9DUGJH9J4Cmrmg_10.png" headerType="IMAGE" docId="pmJu5XEmNDib8CalNFp1M" displayMode="CARD" docSeoDescription="Learn how to access Make Grid from the Make platform, scenario list, or scenario editor to visualize, explore, and optimize your workflows"}
[Access Make Grid](docId\:pmJu5XEmNDib8CalNFp1M)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/mxnJUCh6JfMeb6wOER1X0_10.png" headerType="IMAGE" docId="tRCyOjXzl8Sbmfub0hlQo" displayMode="CARD" docSeoDescription="Explore Make Grid’s UI to navigate, search, filter, pan and zoom, view errors and dependencies, and see usage"}
[Explore Make Grid](docId\:tRCyOjXzl8Sbmfub0hlQo)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/2UKHHul66z2otRoJxa-sh_10.png" headerType="IMAGE" docId="xOd6UEOpgxIAyBaPflAB_" displayMode="CARD" docSeoDescription="Discover how to use Make Grid to visualize, manage, and optimize your automation ecosystem"}
[How to use Make Grid](docId\:xOd6UEOpgxIAyBaPflAB_)
:::

:::LinkArrayItem{headerType="IMAGE" docId="qyowLD4jybx1abyJRDqc9" displayMode="CARD"}
[Connect external providers](docId\:qyowLD4jybx1abyJRDqc9)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/mrFH9ttxFzU4XE0olj_f5_10.png" headerType="IMAGE" docId="efhrL2yZF5WsjfNnf_w_G" displayMode="CARD" docSeoDescription="Use Make Grid to analyze dependencies, visualize workflows, and effectively plan and manage migrations of your data sources"}
[Tutorial: How to replace a dependency](docId\:efhrL2yZF5WsjfNnf_w_G)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/T4kn9TQ2WwIetIiVIBfeJ_10.png" headerType="IMAGE" docId="6X9FmkAuY7N2kl5p6serF" displayMode="CARD" docSeoDescription="Implement best practices in Make Grid to effectively organize, manage, and optimize your workflows for maximum efficiency"}
[Best practices to use Make Grid](docId:6X9FmkAuY7N2kl5p6serF)
:::
::::


[title] Best practices to use Make Grid
[path] Make Grid/

Based on  Grid's purpose of seeing dependencies, data flow, and overall structure, here are some best practices for using  Grid to manage your automations effectively:&#x20;

### Use folders

You can create folders in  Grid to keep the landscape organized. Each folder in  Grid represents a specific island.&#x20;

### Naming convention

Use meaningful action-based naming conventions to stay organized. When working on complex projects, especially within a team, your naming conventions are critical for readability and maintenance. While naming a , consider a 's purpose, data flow, and potential impact. For example - use *Sync new gmail contacts to contacts list*, instead of *Google sheet - sync contacts*. Name individual modules to clearly describe the specific action they perform in the workflow; for example, *find users - \{email address}* instead of *Google Sheets - Get values.*

### Plan dependency migrations

Use  Grid as a pre-migration checklist to identify and isolate dependencies to prevent workflow breaks.

Before replacing any dependency, use the **Attributes** view to document data fields being consumed by downstream dependencies. This ensures that when you make changes to a dependency, you map each piece of data correctly, ensuring data integrity.

When replacing a core dependency such as a database, use th&#x65;**&#x20;Links&#x20;**&#x76;iew. This view clearly shows if other, seemingly unrelated  or folders rely on that dependency. This prevents unexpected outages across your entire workspace.

### Optimize performance and reduce cost

 Grid is a powerful tool for **identifying inefficiencies** that consume operations and slow down execution.

When troubleshooting , use different layers to identify consumption. If the module is pulling large arrays or bundles, you have a bottleneck. The best practice is to always apply filters as early as possible in the  chain to reduce the size of the data being processed, saving both time and operations.&#x20;


















[title] Make AI Agents app
[path] Make AI Agents/

:::hint{type="success"}
This page reflects a **previous version of Make AI Agents**. For the latest information, see [Make AI Agent (New)](docId\:rXryASA6852hvhkZ6NhXU).&#x20;
:::

:::hint{type="info"}
Make AI Agents is available o&#x6E;**&#x20;all plans** using **Make's AI Provider**, with the option to use **custom AI provider connections** on **paid plans**. It is available in **open beta**. As a beta feature, both product functionality and pricing may change.&#x20;
:::

The **Make AI Agents** app, in the  Builder, allows you to use AI agents in . This article outlines the app's modules and their credit usage.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/Q31995ot4OZzZRNwsMBrJ-3AIay7drWQFkx1sM1uvB2-20250605-101047.jpg" size="70" width="1827" height="938" position="center" showCaption="false"}

## Modules

This section covers all **Make AI Agents&#x20;**&#x6D;odules and their settings.&#x20;

:::::ExpandableHeading
### Run an agent

The **Make AI Agents** > **Run an agent** module allows you to create AI agents, provide agents with tools, and send messages to agents—either as additional instructions or tasks.

The following outlines the fields in the **module settings**, found by clicking the module:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/yjLou-4qz1AO_B_LMOePz-20251031-150720.png" size="60" width="618" height="430" position="center" showCaption="false"}

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Agent**


:::

:::VerticalSplitItem
In **Agent**, choose an existing agent or click the **Create agent** button to create a new agent.

- In the **Connection** field, select your connection.
- In the **Agent name** field, fill in your agent's identification.
- In the **Model** field, select the language model and version provided by your AI service provider.
- In the **System prompt** field, define the agent's purpose and constraints. The system prompt defines the agent in all the  it uses. In each , you can further customize the agent's description with additional instructions.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Context**
:::

:::VerticalSplitItem
In **Context**, you can view the **Context&#x20;**&#x66;iles the agent uses for reference.&#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Thread ID**
:::

:::VerticalSplitItem
I&#x6E;**&#x20;Thread ID**, you can specify a custom thread ID to keep all of your interactions with the agent in the same communication thread.

If you leave the **Thread ID** field empty, a new thread ID appears in the output. The agent will have no memory of previous communication.

Examples of what to map to the **Thread ID&#x20;**&#x66;ield:

- The **userId** to remember conversations with a user&#x20;
- The **timestamp&#x20;**&#x6F;f the first message of a continuing thread to remember the thread

The more context an agent must remember in the **Thread ID**, the higher the tokens. In the **Agent settings** of an agent configuration, you can limit the number of agent runs in the thread history to reduce context from th&#x65;**&#x20;Thread ID**.&#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Additional system instructions**
:::

:::VerticalSplitItem
In **Additional system instructions**, you can share extra contextual information with the agent. Dynamically provide context by mapping data from the  to this field.&#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Messages**
:::

:::VerticalSplitItem
In **Messages**, you can send tasks and specific requirements to the agent. You can send multiple user messages at once.&#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Timeout**
:::

:::VerticalSplitItem
In **Timeout**, you can set the maximum number of seconds the agent can execute until it is terminated.&#x20;

If you leave the **Timeout&#x20;**&#x66;ield empty, the timeout is 300 seconds (5 minutes). The maximum timeout is 600 seconds (10 minutes).
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Output schema&#x20;**
:::

:::VerticalSplitItem
In **Output schema**, you can define the output schema of the agent response.&#x20;

- **Text**: The response is text.
- **Make Schema**: The response is based on the output structure you define. If you click **Generate**,  generates a structure based on a content type and sample data.&#x20;
:::
::::

The following outlines the fields in the **module output**, found by clicking the output bubble after running the module:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/P71ZuqG2pnwzzvI5YaNXK-20251031-150850.png" size="60" width="601" height="666" position="center" showCaption="false"}

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**response**
:::

:::VerticalSplitItem
In **response**, you can view the agent's response to the user request. Optionally, [map](docId\:upfwoZsCC5SoIXR2954z2) this data to the next modules.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**executionSteps**
:::

:::VerticalSplitItem
In **executionSteps**, you can expand each step to view the agent's thinking and decision-making process.&#x20;

Steps are in chronological order and describe any of the following factors:

- **role**: role providing the reasoning step, which includes the **system&#x20;**(prompt), **user**, **assistant&#x20;**(AI agent), or **tool**.
- **content**: information processed at a given step of the agent's reasoning, for example, a text input.&#x20;
- **reasoning**: summary of the agent's thought process before responding to the user, for example:
  - "I retrieved the value of 'alpha,' which is 111. Now, I need to multiply it by 3, giving me a new value of 333 for 'beta.' I'll set this using the function functions.set\_variable\_1, specifying 'beta' as the module name and '333' as the module value. After that, I want to inform the user concisely about the value saved. I'll go ahead and call the function now!"
- **agent IterationId**: the ID shared by all of the agent's steps towards producing an output.
- **toolCalls**: tool called, such as a scenario or module tool, and its identifying information.
- **tokenUsage:&#x20;**&#x41;I tokens used in a single module run, including **promptTokens&#x20;**(input), **completionTokens** (output), and total tokens.
- **toolResponse**: response of the tool called, including the information retrieved and execution time.&#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**tokenUsageSummary**
:::

:::VerticalSplitItem
In **tokenUsageSummary**, you can view AI tokens used in a single module run, including:&#x20;

- **promptTokens:** the input tokens processed, such as for prompts, tool responses, tool descriptions, and arguments.&#x20;
- **completionTokens:** the output tokens processed, such as for content, reasoning, and tool calls.
- **totalTokens**: the tokens processed overall.
:::
::::
:::::

:::::ExpandableHeading
### Create Agent Context (file)

The **Make AI Agents** > **Create Agent Context (file)** module allows you to upload a context file to an AI agent. This module is an alternative to uploading context files in the **Context&#x20;**&#x66;ield of the **AI Agents&#x20;**&#x63;onfiguration tab.

To use **Create Agent Context (file)** in a :

1. In the Scenario Builder, add a module that retrieves the context file, for example, &#x61;**&#x20;Google Drive > Download a File** module.
2. Add the **Create Agent Context (file)** module.
3. In the **Create Agent Context (file)&#x20;**&#x6D;odule's configuration, under **Agent**, select an existing agent that will store the file as context. Alternatively, create a new agent.&#x20;
4. In **File**, select the preceding module that retrieved the file, or map specific data from the file in **Map**. &#x20;
5. Click **Save**.&#x20;
6. Click **Run once**.

You have now uploaded a context file to your AI agent. You can view the file under the **Context&#x20;**&#x66;ield of the **AI Agents** configuration tab.

:::hint{type="info"}
To replace an uploaded context file with an updated version that has the same file name, use an **Upsert Agent Context&#x20;**&#x6D;odule.&#x20;
:::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Agent**
:::

:::VerticalSplitItem
Select an existing agent that will store the context file, or click the **Create agent** button to create a new agent.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Context**
:::

:::VerticalSplitItem
Upload a context file that your selected agent can access. You can also see the files you already uploaded to the agent.&#x20;

- **File**
  - Choose the name of the module that downloaded the context file. This option uploads the entire file and keeps the same file name as the original.&#x20;
  - **Map**: Change the file name in **File&#x20;**&#x6E;ame and map a specific value from the context file in **Data**.&#x20;
:::
::::
:::::

:::::ExpandableHeading
### Create Agent Context (text)

The **Make AI Agents** > **Create Agent Context (text)** module allows you to upload text to an AI agent to be used as context.&#x20;

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Agent**
:::

:::VerticalSplitItem
Select an existing agent that will store the context file, or click the **Create agent** button to create a new agent.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Context Name**
:::

:::VerticalSplitItem
Name the context file to identify and retrieve it later.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Context**
:::

:::VerticalSplitItem
Insert text or map text from preceding modules.
:::
::::
:::::

:::::ExpandableHeading
### Get Agent Contexts

The **Make AI Agents** > **Get Agent Contexts&#x20;**&#x6D;odule retrieves all the context files uploaded to an AI agent.

When you run the module, context files appear in the module's output. To view its output, click on the white bubble above the module. Under **Operation**, expand **Body**, which includes a numbered item for each context file. &#x20;

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Agent**
:::

:::VerticalSplitItem
Select an existing agent, or click the **Create agent** button to create a new agent.
:::
::::
:::::

:::::ExpandableHeading
### Delete Specific Agent Context

The **Make AI Agents** > **Delete Specific Agent Context&#x20;**&#x6D;odule allows you to delete a specific context file from an AI agent's memory.&#x20;

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Agent**
:::

:::VerticalSplitItem
Select an existing agent, or click the **Create agent** button to create a new agent.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Context**
:::

:::VerticalSplitItem
Select an uploaded context file to delete from an agent's memory.&#x20;
:::
::::
:::::

:::::ExpandableHeading
### Delete All Agent Context

The **Make AI Agents** > **Delete All Agent Context&#x20;**&#x6D;odule allows you to delete all context files from an AI agent's memory.&#x20;

You can use this module on its own in a scenario. Click **Run once** to delete all of the agent's context files.&#x20;

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Agent**
:::

:::VerticalSplitItem
Select an existing agent, or click the **Create agent** button to create a new agent.
:::
::::
:::::

:::::ExpandableHeading
### Upsert Agent Context (file)

The **Make AI Agents** > **Upsert Agent Context (file)** module allows you to upload or replace a context file. This module is ideal when you need to replace an existing file with a file of the same name.

To use **Upsert Agent Context (file)** in a :

1. In the Scenario Builder, add a module that retrieves the context file, for example, &#x61;**&#x20;Google Drive > Download a File** module.
2. Add the **Upsert Agent Context(file)** module.
3. Configure the module settings and click **Save**.&#x20;
4. Click **Run once**.

You have now upserted a context file. You can check the file in the **AI Agents&#x20;**&#x63;onfiguration tab, in **Context**.&#x20;

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Agent**
:::

:::VerticalSplitItem
Select an existing agent that will store the context file, or click the **Create agent** button to create a new agent.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Context**
:::

:::VerticalSplitItem
Upload a context file that your agent can access. You can also see the files you already uploaded to the agent.&#x20;

- **File**
  - Choose the name of the module that downloaded the context file. This option uploads the entire file and keeps the same file name as the original.&#x20;
  - **Map**: Change the file name in **File&#x20;**&#x6E;ame and map a specific value from the context file in **Data**.&#x20;
:::
::::
:::::

:::::ExpandableHeading
### Upsert Agent Context (text)

The **Make AI Agents** > **Upsert Agent Context (text)** module allows you to insert updated text to replace an existing text context. This module is ideal when you need to replace existing text that has the same name.

To use **Upsert Agent Context (text)** in a , see the steps outlined in the **Upsert Agent Context (file)&#x20;**&#x73;ectio&#x6E;**.&#x20;**

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Agent**
:::

:::VerticalSplitItem
Select an existing agent that will store the context file, or click the **Create agent** button to create a new agent.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Context Name**
:::

:::VerticalSplitItem
Name the context file to identify and retrieve it later.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Context**
:::

:::VerticalSplitItem
Insert text or map text from preceding modules.
:::
::::
:::::

## Credit usage

The **Make AI Agents** app consumes [credits](docId\:hh-nrTakEqakBmg63UUiN) differently depending on the module and whether [Make's AI Provider](docId\:hh-nrTakEqakBmg63UUiN) or a custom AI provider connection is selected.

The [Credit usage ](docId\:IQaoTEwHzIwCqm-Ohyboh)table in  tracks credit usage from AI agents.&#x20;

:::hint{type="warning"}
Users on **all plans** can use **Make's AI Provider**. Users o&#x6E;**&#x20;paid plans** can also use **custom AI provider connections**, such as OpenAI and Anthropic Claude.&#x20;
:::

The following outlines **Make AI Agents** modules and their credit usage logic:

| **Module**                        | **Uses Make's AI Provider&#x20;**<br />**(All plans)**                                                                                                    | **Uses a custom AI provider connection&#x20;**<br />**(Paid plans)** |
| --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| **Run an agent**                  | 1 credit per operation + credits based on AI token usage                                                                                                  | 1 credit per operation                                               |
| **Create Agent Context (file)**   | 1 credit per operation + credits based on token usage, including:<br />* AI tokens (file description generation)
* Embedding tokens (vectorization)&#x20; | 1 credit per operation + embedding tokens (vectorization)            |
| **Create Agent Context (text)**   | 1 credit per operation + credits based on token usage, including:<br />* AI tokens (file description generation)
* Embedding tokens (vectorization)       | 1 credit per operation + embedding tokens (vectorization)            |
| **Get Agent Contexts**            | 1 credit per operation                                                                                                                                    | 1 credit per operation                                               |
| **Delete Specific Agent Context** | 1 credit per operation                                                                                                                                    | 1 credit per operation                                               |
| **Delete All Agent Context**      | 1 credit per operation                                                                                                                                    | 1 credit per operation                                               |
| **Upsert Agent Context (file)**   | 1 credit per operation + credits based on token usage, including:<br />* AI tokens (file description generation)
* Embedding tokens (vectorization)&#x20; | 1 credit per operation + embedding tokens (vectorization)            |
| **Upsert Agent Context (text)**   | 1 credit per operation + credits based on token usage, including:<br />* AI tokens (file description generation)
* Embedding tokens (vectorization)       | 1 credit per operation + embedding tokens (vectorization)            |

Token usage i&#x6E;**&#x20;Create Agent Context&#x20;**&#x61;nd **Upsert Agent Context&#x20;**&#x6D;odules includes:

- **Embedding tokens** to convert chunks of a context file into numbers (vectors) to be stored in Make's RAG database, turning the file into a retrievable format for AI agents. The number of embedding tokens will depend on the file size.&#x20;
- **AI tokens&#x20;**&#x74;o generate file descriptions when an AI provider summarizes a context file based on the first part of the file. When you use Make's AI Provider,  bills you for these AI tokens. If you use a custom AI provider connection, the provider bills you for the tokens.&#x20;

:::hint{type="info"}
When you trigger an agent in a  through **Testing & Training** in the **AI Agents&#x20;**&#x63;onfiguration tab, this action uses 1 credit for each chat input, in addition to each operation (and tokens, when relevant) used.&#x20;
:::


[title] Introduction to Maia by Make
[path] Maia/

:::hint{type="info"}
Maia is not yet generally available (GA). Functionality and pricing may change.&#x20;
:::

Maia is your AI and automation co-worker in the  Builder. She creates scenarios, modifies existing ones, and fixes errors for you using your prompts.

With Maia, you can:

- Set up, change, and see value from scenarios quickly.
- Understand and automatically resolve errors.
- Onboard your team to  without any prior knowledge of Make.
- Learn about  conversationally, using your own  as context.&#x20;

## Use cases

Maia is best suited for the following activities in :

- **Create scenarios:&#x20;**&#x44;escribe your goal in the prompt and let Maia build scenarios and AI agents for you.&#x20;
- **Modify scenarios**: Tell Maia to change or expand an existing scenario, such as changing module settings and adding modules.
- **Troubleshoot and debug scenarios:&#x20;**&#x41;sk Maia to explain and fix errors as you build.&#x20;

## How to use Maia&#x20;

You interact with Maia in a single session. Use the chat to prompt her to create and modify scenarios.&#x20;

### Create or modify scenarios

To create or modify a scenario with Maia:

::::WorkflowBlock
:::WorkflowBlockItem
In Make, click **+ Create scenario** in the top-right corner.
:::

:::WorkflowBlockItem
In the chat with Maia on the left side of the Scenario Builder, describe what you want to create or add to an existing .
:::

:::WorkflowBlockItem
Before leaving the page, click **Save&#x20;**&#x6F;n the  toolbar.
:::
::::

You've created or modified a scenario with Maia.&#x20;

### Revert changes

If you want to revert changes that Maia made, revert to a previous version of a scenario:

::::WorkflowBlock
:::WorkflowBlockItem
Scroll through the chat with Maia and identify a previous version to revert to. For example, "Version 1."
:::

:::WorkflowBlockItem
Click **Revert to this version**.&#x20;
:::
::::

You've reverted to a previous  version.&#x20;

### Clear chat&#x20;

If you want to start over with Maia in the same , clear the entire chat:

::::WorkflowBlock
:::WorkflowBlockItem
In the chat with Maia, click the three-dot menu in the top-right corner.&#x20;
:::

:::WorkflowBlockItem
Clic&#x6B;**&#x20;Clear chat**.&#x20;
:::
::::

You've cleared the chat with Maia.&#x20;

### Continue a previous chat session

If you want to continue your last conversation with Maia, return to the relevant  and clic&#x6B;**&#x20;Continue where we left off&#x20;**&#x69;n the chat with Maia.  stores your chat sessions with Maia for 15 days.&#x20;

## Usage tips

Follow these prompting best practices to help Maia create more accurate  in fewer back-and-forth interactions.

### Specify the goal and workflow steps

A clear, detailed prompt helps Maia build  that align with your expectations. Outline your goal, the step-by-step process for achieving it, and the apps used.

**Examples**

- Create a  that watches all emails with the `marketing` label in **Gmail**, summarizes them with **Claude,** and sends a message with the summary to the private `marketing-department` channel in **Slack**.&#x20;
- I want a  that uses **OpenAI** to analyze the sentiment of customer replies, then stores the sentiment analysis summary in **Airtable**.
- Build a  that watches for new Closed Won deals in **Salesforce**, creates an onboarding project in **Asana**, and sends a welcome email to the client wit&#x68;**&#x20;Claude** and **Gmail**.

### Collaborate with Maia&#x20;

Maia may ask for your input when she needs to clarify the logic of a . If any step doesn't make sense, ask her to explain her reasoning. Before activating a , test it and request adjustments until it works as intended.

:::hint{type="info"}
Maia never uses your data to train or fine-tune her underlying model. To learn more about data privacy and usage with Maia, see the [Maia system card](docId\:bOtyE9BCuGTwCRZlJjBZQ).
:::

## Organization message limits&#x20;

When using Maia, your organization is subject to a weekly user message limit based on its plan:

| **Plan**   | **User messages per organization** |
| ---------- | ---------------------------------- |
| Free       | 75                                 |
| Core       | 150                                |
| Pro        | 250                                |
| Teams      | 400                                |
| Enterprise | 1000                               |

:::hint{type="info"}
Message limits are subject to change while Maia is in beta.&#x20;
:::

## Pricing

Your chat interactions with Maia, including messages and scenario modifications, are free. Only scenario and module runs use [credits](docId\:hh-nrTakEqakBmg63UUiN).&#x20;

[title] Step 1. Set up the AI agent
[path] Make AI Agents/AI agent use case/

:::hint{type="success"}
This page reflects a **previous version of Make AI Agents**. For the latest information, see [Make AI Agent (New)](docId\:rXryASA6852hvhkZ6NhXU).&#x20;
:::

First, we need to create the AI agent and connect to an AI provider. We can do that in the **AI Agents&#x20;**&#x63;onfiguration tab.

:::::WorkflowBlock
::::WorkflowBlockItem
Navigate to the **AI Agents** configuration tab in the left sidebar, then click the **Create agent** button.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/5cWtnw_pDo25ztrA6JmFk-20250929-073114.png" size="80" width="2642" height="1370" position="center" showCaption="false"}

:::hint{type="info"}
Alternatively, you can create a new AI agent in the **Make AI Agents&#x20;**> **Run an agent** module. In the module settings, click the **Create agent** button.
:::
::::

::::WorkflowBlockItem
In **Connection**, select your AI provider connection.

:::hint{type="info"}
Users o&#x6E;**&#x20;all plans** can select **Make's AI Provider**. Those o&#x6E;**&#x20;paid plans** can also choose a **custom AI provider connection**, such as OpenAI or Anthropic Claude.
:::

1. If you don't have a connection to an AI provider, click **Add** to open a **Create a connection** dialog.
2. In the **Connection type** dropdown, select your AI provider.
3. If applicable, fill in the rest of the form according to the documentation for creating a connection to the AI provider. Check the list of [AI providers](https://www.make.com/en/help/ai-in-make).
4. Click **Save** to complete the connection.
::::

:::WorkflowBlockItem
In the **Agent name** field, specify the name of the agent.
:::

:::WorkflowBlockItem
In the **Model** field, select the AI model that the agent will use for reasoning.
:::

:::WorkflowBlockItem
In the **System prompt** field, define the agent's purpose and constraints. For our shop inventory agent, fill in: "You are a stock inventory bot."
:::

:::WorkflowBlockItem
Click **Save** to confirm.
:::
:::::

You have created an AI agent for managing your stock inventory. However, your agent doesn't have any tools to do its job. In the next section, we'll create  that function as tools for the agent.

[title] Commit error handler
[path] Error handling/Error handlers/

The **Commit** error handler stops the  run and commits changes in your database apps. It tells the database - Everything you did right before this error was intentional, and instructs  so keep those changes. If your  is not using apps that support transactions, like **MySQL** or **Data store**, the **Commit** error handler just stops the .

:::hint{type="success"}
Modules that support transactions are labeled with the "ACID" label.

Before you use the **Rollback** or **Commit** error handlers, take a look at the  [auto commit scenario setting](docId\:evAR6qLowV4yyUnEyV-00) first.
:::

The bundle that caused the error doesn't go through the rest of the  flow.  doesn't process the rest of the bundles.

**When to use it**: Use Commit error handler when you want to confirm all the changes that were made before the error occurred. You want the entire  to stop immediately after an error so you can investigate, rather than letting subsequent modules continue to run.

For more information about error handling strategies check the [Overview of error handling](docId\:sN7McE4QmL-Q6wDTOOcSy) .

### How the Commit error handler works

The Commit error handler acts as a save and exit function for your  . When an error occurs, the Commit handler stops the  run immediately and ensures that any changes made to your database apps (like Data Store or MySQL) up to that point are permanently saved.

### Use a Commit error handler

In this example, we have a  that updates a data store twice. If the second update fails, the Commit handler ensures the first update is permanently saved before stopping the scenario.&#x20;

This demo  contains five modules.

1. **JSON** - **Parse JSON** provides test data in the form of an array of three record IDs.
2. **Iterator** splits the array into individual bundles.
3. **Data store** - **Update a record**: Updates the data in the data store.
4. **Data store** - **Update a record**: This module updates the data again. This time the module works differently. In the module mapping, there is a mapping that intentionally creates an error:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/IGuzVI2USP_2J2uaI6DiO_uuid-38a27efa-f066-3ba0-d77f-c1fac59dbb6a.png" size="100" width="882" height="254" position="center" darkWidth="882" darkHeight="254" showCaption="false" indent="2"}

5. The mapping inserts a `null` value into the required **Key** field, which always creates the `BundleValidationError`.
6. Having two data store modules doing the same thing, but one of them failing, will make a good example for the **Commit** and **Rollback** error handlers.
7. **Slack** - **Send a message**: Sends a message to a private testing channel.

**This is how the example&#x20;**&#xNAN;**&#x20;looks**:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/hAt8L-RCHcqlRX1Zv9ITu_uuid-a20c3804-3600-efbd-3e63-6ee8604bee5a.png)

When we would run the example , we would get the `BundleValidationError`:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/eV9s60is4o30uYvPGyHHU_uuid-d0cd6900-234c-21a1-c35c-e5ee696e538c.png)

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/eV9s60is4o30uYvPGyHHU_uuid-d0cd6900-234c-21a1-c35c-e5ee696e538c.png)
:::

:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/CNPg8JnCTdNcxaACINlIU_uuid-5e505ecc-ffa2-af6c-9a23-e625392bf169.png)
:::
::::

**Let's see what how to handle this error using a Commit error handler.**

::::WorkflowBlock
:::WorkflowBlockItem
Right-click the data store module that failed and click **Add error handler.**
:::

:::WorkflowBlockItem
From the list of error handlers, clic&#x6B;**&#x20;Commit**.&#x20;
:::

:::WorkflowBlockItem
Configure the **Automatically complete execution** by toggling between **Yes** or **No**.

If you set it as **Yes**, the system automatically retries depending upon the the number of attempts and the interval (e.g., try 3 more times, every 15 minutes).

If you leave this as **No**, the error will stay in your **Incomplete Executions** tab until you resolve it.
:::

:::WorkflowBlockItem
In the bottom panel, click th&#x65;**&#x20;Scenario settings**.&#x20;
:::

:::WorkflowBlockItem
In **Store incomplete executions**, selec&#x74;**&#x20;Yes.**
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

You've successfully added the Commit error handler to the **Update a record** module.

**What happens when you run the scenario after you add a Commit error handler**.

The Commit error handler would stop processing the bundle in the  and save changes to your data in database apps.  wouldn't process the remaining bundles.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/mNQWejvkDQgp6I0tGStjl_uuid-c5f5a530-6064-5b5f-6173-43065e78feff.png)

**Let's check the data in the data store as well.**

<font color="#BE185D">{we need a better example}</font>

Before running the , the data store contained the following data:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/oRZrCTIj9zuzZsnPsPb73_uuid-5d1bac2c-e430-eeb5-bc8b-220215ade799.png)

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/hfIMYjRdotNKBy-0o3Ev8_uuid-41ecf051-2dae-90c9-bfdd-288c3f64d0c0.png)
:::

:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/nwkQQ7SQTHK8_9R5xT9D-_uuid-c10413d2-2a9d-4d96-fe28-e86daff85b73.png)
:::
::::

The mappings for the **Update a record** modules. The first module updates the `ID` column to the number `4` and the `Name` column to the text `Test 4`.

The second module updates the `ID` column to the number `5` and the `Name` column to the text `Test 5`.

After running the ,  would update the data in the data store:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/wZicTI1EIcTtXTIDeHgq3_uuid-0f0aedfd-c5cc-0a42-48e8-e78595379bf3.png)

1. The first bundle of data gets through the  flow successfully and updates the first row of data in the data store both times. The first row contains the update from the second **Update a record** module: `ID = 5, Name = Test 5`.
2. The second bundle gets to the first **Update a record** module successfully, but causes an error in the second module.
3. The **Commit** error handler saves the update in the first module, but prevents the update in the second module and stops the . The second row contains the update from the first module only: `ID = 4, Name = Test 4`.
4.  doesn't update the third row because the **Commit** error handler stopped the  run already. The data in the third row remain the same: `ID = 3, Name = Test 3`.


[title] Text and binary functions
[path] Explore more/Functions/

Text and binary functions let you modify and transform data. Use a string function to change capitalization, remove diacritics and accents marks, combine, or split text. Use binary functions to encode or decode raw data.

Below is a list of supported text and binary functions and an example of each.

## ascii

**ascii (text; \[remove diacritics])**

Removes all non-ascii characters from a text string.

```none
ascii( ěMščařžkýáeíé)
= Make
```

```none
ascii( ěščřž ; true )
= escrz
```

## base64

**base64 (text)**

Transforms text to base64.

```none
base64( Make )
=TWFrZQ==
```

Combine the `toBinary()` and `toString()` functions to transform base64 encoded text to plain text, as seen below:

```none
toString( toBinary( TWFrZQ== ; base64 ) )
= Make
```

## capitalize

**capitalize (text)**

Converts the first character in a text string to uppercase.

```none
capitalize(make)
= Make
```

## contains

**contains (text; search string)**

Verifies if text contains the search string.

```none
contains( Hello World ; Hello )
= true
```

```none
contains( Hello World ; Bye )
= false
```

## decodeURL

**decodeURL (text)**

Decodes special characters in URL to text.

```none
decodeURL( Automate%20your%20workflow )
= Automate your workflow
```

## encodeURL

**encodeURL (text)**

Encodes special characters in a text to a valid URL address.

## escapeHTML

**escapeHTML (text)**

Escapes all HTML tags in text.

```none
escapeHTML( <b>Hello</b> )
= &lt;b&gt;Hello&lt;/b&gt;
```

## escapeJSON

**escapeJSON(text)**

Escapes special characters (like quotes and backslashes) so text can be safely used in JSON without causing errors.

```none
escapeJSON(He yelled, "Run!" and left.)  
= He yelled. \"Run!\" and left.
```

```none
escapeJSON(C:\Users\Admin) 
= C:\\Users\\Admin
```

## escapeMarkdown

**escapeMarkdown(text)**

Escapes all Markdown tags in text.

```none
escapeMarkdown("# Header") 
= &#35; Header
```

## indexOf

**indexOf (string; value; \[start])**

Returns the position of the first occurrence of a specified value in a string. This method returns '-1' if the value searched for never occurs.

```none
indexOf(Make; k )
= 2
```

```none
indexOf(We love Make ; x )
= -1
```

```none
indexOf(We love Make ; e ; 7 )
= 11
```

## length

**length (text or buffer)**

Returns the length of text string (number of characters) or binary buffer (buffer size in bytes).

```none
length( hello )
= 5
```

## lower&#x20;

lower (text)

Converts all alphabetical characters in a text string to lowercase.

```none
lower( Hello )
= hello
```

## md5

**md5 (text)**

Calculates the md5 hash of a string.

```none
md5(Make)
= 529a05ca6c1263aab080ec4f20754411
```

## replace (text; search string; replacement string)

Replaces the search string with the new string.

```none
replace( Hello World ; Hello ; Hi )
= Hi World
```

Regular expressions (enclosed in `/.../`) can be used as search string with a combination of flags (like `g`, `i`, `m`) appended:

```none
replace ( All these numbers 187 23 1 9565 will be replaced with X ; /\d+g ; X )
= All these numbers X X X X will be replaced with X
```

The replacement string can include the following special replacement patterns:

- `$&`= Inserts the matched substring
- `$n` = Where n is a positive integer less than 100, inserts the nth parenthesized submatch string. Note that this is 1-indexed

```none
replace ( Phone number is 777111222 ; /\d+g ; $& )
Phone number is +420777111222
```

```none
replace ( Phone number is 777111222 ; / is (d) ;:  +42$1 )
Phone number is +420777111222
```

:::hint{type="info"}
Do not use named capture groups like `/ is (?<number>\d+)/` in the replacement string argument as this will throw an error.
:::

## replaceEmojiCharacters

**replaceEmojiCharacters (text)**

Replaces emoji characters with the new string.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/kC1u7Vv0tDpS7vPdK_OqK_uuid-91fe7ca8-1d92-216e-27ec-adf48c78c5af.png" size="80" width="588" height="129" position="flex-start" alt="Replace Emoji" darkWidth="588" darkHeight="129" showCaption="false"}

## sha1

**sha1 (text; \[encoding]; \[key])**

Calculates the sha1 hash of a string. If the key argument is specified, sha1 HMAC hash is returned instead. Supported encodings: *hex* (default), *base64* or *latin1*.

```none
sha1(Make)
= a94431ee22f05f141107f9355ed3127d0f0c4d5a
```

## sha256

**sha256 (text; \[encoding]; \[key]; \[key encoding])**

Calculates the sha256 hash of a string. If the key argument is specified, sha256 HMAC hash is returned instead. Supported encodings: *hex* (default), *base64* or *latin1*.

```none
sha256(Make)
= ccdd25d4230fb997a7ee1166f8afabd157248eb812ea55ec7c3d1b7c8af7fa11
```

## sha512

**sha512 (text; \[output encoding]; \[key]; \[key encoding])**

Calculates the sha512 hash of a string. If the key argument is specified, sha512 HMAC hash is returned instead. Supported encodings: *hex* (default), *base64* or *latin1*. Supported key encodings: *text* (default), *hex*, *base64* or *binary*. When using *binary* key encoding, a key must be a buffer, not a string.

```none
sha512(Make)
= e8000cd0fb8fae18caa8daa677269b0034380d3ec549e0113a0722d8b8dc05b0f7037f33f32fa09f906b2f1d7c43f2689a55d79aadf6bf09dd93f79407424d34
```

## split

**split (text; separator)**

Splits a string into an array of strings by separating the string into substrings.

```none
split( John, George, Paul ; , )
= 
John
George
Paul
```

## startcase

**startcase (text)**

Capitalizes the first letter of every word and lower cases all other letters.

```none
startcase( hello WORLD )
= Hello World
```

## stripHTML

### stripHTML (text)

Removes all HTML tags from text.

```none
stripHTML( <b>Hello</b> )
= Hello
```

## substring

**substring (text; start; end)**

Returns a portion of a text string between the "start" position and "the end" position.

```none
substring( Hello ; 0 ; 3 )
= Hel
substring( Hello ; 1 ; 3 )
= el
```

## toBinary

### toBinary (value)

Converts any value to binary data. You can also specify encoding as a second argument to apply binary conversions from hex or base64 to binary data.

```none
toBinary(Make)
= 4d 61 6b 65
```

## toString

### toString (value)

Converts any value to a string.

```none
toString(toBinary(TWFrZQ==;base64)
= Make
```

## trim

**trim (text)**

Removes space characters at the start or end of the text.

## upper

**upper (text)**

Converts all alphabetical characters in a text string to uppercase.

```none
upper( Hello )
= HELLO
```


[title] Fix errors and warnings
[path] Error handling/Common errors and fixes/

On this page, you will find common [errors](docId\:SLue-xtn4T2rHh5i-yJP8) and [warnings](docId\:SLue-xtn4T2rHh5i-yJP8) that you may encounter in  and how to fix them.

## Types of errors in 

| ### AccountValidationError |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Type of error**          | `AccountValidationError`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| **Cause**                  | A module outputs the `AccountValidationError` when  cannot authenticate you in the third-party app. For example, when you change your credentials in the app or your credentials expire and you don't update them in the connection, the app module will output the `AccountValidationError`.<br />The `AccountValidationError` also appears also with the [HTTP status codes 401 and 403](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes).<br />If a module outputs the `AccountValidationError`, the  ends with an error. When your  finishes with an error for the  [number of consecutive errors](docId\:sN7McE4QmL-Q6wDTOOcSy) in a row,  disables the scheduling of your .<br />It is not possible to handle the `AccountValidationError` with an error handler, because the error happens during the intialization of the scenario. |
| **Solution**               | To fix the `AccountValidationError`, review your credentials in the app and the connection in . If necessary, create a new connection for the app. If you are getting the `AccountValidationError` frequently, contact our [Support](https://www.make.com/en/ticket).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |



| ### BundleValidationError |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Type of error**         | `BundleValidationError`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| **Cause**                 | A module outputs the `BundleValidationError` when the bundle that enters the module doesn't pass validation. Validation means that before processing a bundle in a module,  checks whether data types match in the module mappings and whether there are no missing values in the module required fields.<br />For example, you get the `BundleValidationError` when you map text to a module settings field that requires a date, or when you map an empty value to a required field in the module settings.<br />If a module outputs the `BundleValidationError` with no error handling, the  ends with an error. When your  finishes with an error for the  [number of consecutive errors](docId\:sN7McE4QmL-Q6wDTOOcSy) in a row,  disables the scheduling of your . |
| **Solution**              | The best way to handle this error is to review your mapping in the module settings.<br />For tips on how to handle missing data in a  check out the article about [how to fix missing data errors](docId\:Ei26ZLHGxBmJK7WoiqFW_).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |

| ### ConnectionError |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Type of error**   | `ConnectionError`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| **Cause**           | A module outputs the `ConnectionError` when the third-party app is unavailable. For example, the third-party service might be offline because of maintenance. This error uses the [HTTP 502, 503 and 504 status codes](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes).<br />The default handling of the `ConnectionError` depends on the following attributes:<br />* Scheduled  with incomplete executions disabled:  pauses the scheduling of the scenario for 20 minutes. doesn't rerun the scenario.
* Scheduled  with incomplete executions enabled:  pauses the scheduling of the scenario for 20 minutes. retries the incomplete execution with the incomplete execution  [backoff](docId\:LE2sNkUjgL9uzqfm_0v3i).
* Instant  with incomplete executions disabled:  reruns the incomplete execution with the  [backoff](docId\:LE2sNkUjgL9uzqfm_0v3i).
* Instant  with incomplete executions enabled:  retries the incomplete execution with the incomplete execution [backoff](docId\:LE2sNkUjgL9uzqfm_0v3i). |
| **Solution**        | To fix the `ConnectionError`, see the [Fix connection errors](docId\:bBFjxepACBQ4BWeGhxSZY) page.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |

| ### DataError     |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Type of error** | `DataError`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| **Cause**         | A module outputs the `DataError` when data sent by the module doesn't pass validation on the third-party side. For example, when you try to create a tweet with the **Twitter** > **Create a Tweet** module that has more than 280 characters, the **Create a Tweet** module outputs the `DataError` because tweets have a maximum length of 280 characters.<br />Another situation when you get the `DataError` is when you map an incorrect data type to a function. For example, when you map data with the `text` data type to the [`parseDate`](docId:1kv1ib5q50i0SLbc7G2PZ) function.<br />If a module outputs the `DataError` with no error handling, the  ends with an error. When your  finishes with an error for the [number of consecutive errors](docId\:sN7McE4QmL-Q6wDTOOcSy) in a row,  disables the scheduling of your .<br />To fix the `DataError`, review your mapping and identify the reason why the error happens. If you cannot fix the error with different mapping, you can use the [Resume](docId\:wr8AAEME2pTFar38VXD3p) and [Skip](docId\:j9XCttcBfDwq3q3u144FN) error handlers. |
| **Solution**      | To fix the `DataError`, review your mapping and identify the reason why the error happens. If you cannot fix the error with different mapping, you can use the [Resume](docId\:wr8AAEME2pTFar38VXD3p) and  [Skip](docId\:j9XCttcBfDwq3q3u144FN) error handlers.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |

| ### DataSizeLimitExceededError |                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Type of error**              | `DataSizeLimitExceededError`                                                                                                                                                                                                                                                                                                                                                                                                                           |
| **Cause**                      | A module outputs the `DataSizeLimitExceededError` when you run out of data transfer quota. Your data transfer limit is calculated from the credits limit.<br />If a module outputs the `DataSizeLimitExceededError` with no error handling, the  ends with an error. Because the `DataSizeLimitExceededError` is a fatal error,  immediately disables the  scheduling, regardless of the [number of consecutive errors](docId\:sN7McE4QmL-Q6wDTOOcSy). |
| **Solution**                   | To fix the `DataSizeLimitExceededError`, consider buying [extra credits](docId:2ZcWIdBk-UaMtP2X2_7kj) or upgrading your organization's subscription plan.                                                                                                                                                                                                                                                                                              |

| ### DuplicateDataError |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Type of error**      | `DuplicateDataError`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| **Cause**              | A module outputs the `DuplicateDataError` when you send the same data to a module that doesn't allow duplicates. For example, when you try to create a new user in an app and the user's e-mail address has to be unique, but the e-mail address is used already. The module outputs the `DuplicateDataError`, because the e-mail address is registered with another user already.<br />If a module outputs the `DuplicateDataError` with no error handling, the  ends with an error. When your  finishes with an error for the [number of consecutive errors](docId\:sN7McE4QmL-Q6wDTOOcSy) in a row,  disables the scheduling of your . |
| **Solution**           | If you get the `DuplicateDataError` in your , you should review your  design. For example, if you are using a database, you could first check if the database record exists with a search module. Or with the email example, you could just ignore the error with the [Skip error handler](docId\:j9XCttcBfDwq3q3u144FN).                                                                                                                                                                                                                                                                                                                 |

| ### IncompleteDataError |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Type of error**       | `IncompleteDataError`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| **Cause**               | A module outputs the `IncompleteDataError` when the module can get only part of the data from the third-party app.<br />For example, when you are uploading new photos to Google Photos and you have a  that downloads the photos at the same time.  tries to download the photo that you are currently uploading. The photo file won't be complete and the Google Photos module will output the `IncompleteDataError`.<br />If a module outputs the `IncompleteDataError` with no error handling, the  ends with an error.  pauses the scenario for 20 minutes and then runs the  again until the  succeeds or reaches the [number of consecutive errors](docId\:sN7McE4QmL-Q6wDTOOcSy). |
| **Solution**            | If you want to handle the `IncompleteDataError`, you can use the [Retry error handler](docId\:cPTWi8yI45ZL3M5slzjNV).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |

| ### InconsistencyError |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Type of error**      | `InconsistencyError`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **Cause**              | A module outputs the `InconsistencyError` when an error happens during the  rollback. This error can occur when you make changes to a data store with two  that run at the same time. If one  encounters an error and attempts to undo the changes in the rollback phase, but the other  already finished making changes, the changes cannot be safely undone and you get the `InconsistencyError` from the data store module in the first .<br />For example, imagine two people making changes in the same part of a file. One of them saves changes before the other. What happens with the changes from the other person?<br />If a module outputs the `InconsistencyError` with no error handling, the  ends with an error. Because the `InconsistencyError` is a fatal error,  immediately disables the  scheduling, regardless of the [number of consecutive errors](docId\:sN7McE4QmL-Q6wDTOOcSy). |
| **Solution**           | To fix the `InconsistencyError`, check your data and fix the data if necessary. If you are getting the `InconsistencyError` frequently, check the  that use the database.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |

| ### MaxFileSizeExceededError |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Type of error**            | `MaxFileSizeExceededError`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| **Cause**                    | A module outputs the `MaxFileSizeExceededError` when you try to process a file that exceeds the maximum file size. The maximum file size differs based on your organization's subscription. You can check the maximum file sizes in the  [pricing](https://www.make.com/en/pricing).<br />For example, if you use the **Google Drive** > **Move a file** module in an organization with the Core plan to move a file larger than 100 MB, you would get the `MaxFileSizeExceededError`.<br />If a module outputs the `MaxFileSizeExceededError` with no error handling, the  ends with an error. When your  finishes with an error for the [number of consecutive errors](docId:7-HEHdTuU2XyYs8_qurub) in a row,  disables the scheduling of your . |
| **Solution**                 | To fix the `MaxFileSizeError`, you have to either make the file smaller (compress or split the file) or upgrade your organization's subscription plan.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |

| ### ModuleTimeoutError |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Type of error**      | `ModuleTimeoutError`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **Cause**              | This error occurs due to a module timeout when a request sent by a  module does not receive a response within the expected timeframe. If the endpoint does not return any data, the module waits for a response for up to 40 seconds (most  modules have a runtime limit of 40 or 60 seconds). When this limit is exceeded, Make returns a **ModuleTimeoutError - The Operation timed out** error.<br />This issue typically occurs when the external server delays its response because of temporary service issues or server overload.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| **Solution**           | To fix this issue and prevent the scenario from failing, configure a **Retry** **error handler** and enable the storage of incomplete executions. <br />When configured, the Retry directive automatically retries the same action up to three times, with delays of 5, 10, and 15 minutes. If the error persists after all retry attempts, the execution is stored under th&#x65;**&#x20;Incomplete Executions** tab, where it can be reviewed and resolved manually.<br />If incomplete execution storage is enabled without adding a Retry error handler, failed runs are still stored under the **Incomplete Executions** tab. However, no automatic retry attempts will be made, and the executions must be resolved manually.<br />Detailed setup instructions are available in the resources linked below:<br />[Retry error handler](docId\:cPTWi8yI45ZL3M5slzjNV) <br />[Incomplete executions](docId:6zZNn7v35hERRCJFccp9Q)<br />To increase the timeout for custom apps, see our [Developer Hub documentation](https://developers.make.com/custom-apps-documentation/app-components/base#common-data).                                                                                                                                          |
| **Example**            | **Airtable timeout error**<br />An occurs when the Airtable server doesn't respond within Make's timeout window. It's typically caused by a temporary delay on Airtable's end rather than an issue with your scenario configuration. Make waits 40 seconds for a response (Airtable has an extended timeout of up to 80 seconds), but when the external server is slow to respond, the request times out.<br />**To fix this:**<br />1) Add a **Retry error handler** to your Airtable module - This will automatically retry your operation 3 times - at 5, 10, and 15 minutes after the initial timeout.
2) Enabl&#x65;**&#x20;Incomplete Executions** so if all retries fail, the execution is stored for manual resolution instead of being lost.<br />By doing so, temporary delays on Airtable's end won't cause your scenario to fail permanently, it will retry automatically and recover most of the time.<br />**If timeouts continue:** You can also review your **Look For Changes** settings to see if narrowing the search criteria or reducing the number of records processed helps.<br />:inlineImage[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/be6qOjswuPEQ8rA4ToWO--20260128-141515.png" alt caption} |

| ### OperationsLimitExceededError |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Type of error**                | `OperationsLimitExceededError`                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| **Cause**                        | A module outputs the `OperationsLimitExceededError` when you run out of credits. Your credit limit is set with your organization's subscription. You can check your credit limit in [pricing](https://www.make.com/en/pricing).<br />If a module outputs the `OperationsLimitExceededError`, the  ends with an error. Because the `OperationsLimitExceededError` is a fatal error,  immediately disables the  scheduling, regardless of the  [number of consecutive errors](docId\:sN7McE4QmL-Q6wDTOOcSy). |
| **Solution**                     | To fix the `OperationsLimitExceededError`, consider buying [extra credits](docId:2ZcWIdBk-UaMtP2X2_7kj) or upgrading your organization's subscription plan.                                                                                                                                                                                                                                                                                                                                                |

| ### RateLimitError |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Type of error**  | `RateLimitError`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| **Cause**          | A module outputs the `RateLimitError` when you make too many requests over a time period to the app API. This error uses the [HTTP 429 status code](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) and follows the [rate-limiting](https://en.wikipedia.org/wiki/Rate_limiting) rules of the third party.<br />For example, the [Make app](docId\:G7Vz7fYsaoiCJDDxzCnCz) modules output the `RateLimitError` when you reach the number of API calls per minute based on your [subscription](https://www.make.com/en/pricing).<br />The default handling of the `RateLimitError` depends on the following attributes:<br />* Scheduled  with incomplete executions disabled:  pauses the scheduling of the scenario for 20 minutes. doesn't rerun the scenario.
* Scheduled  with incomplete executions enabled:  pauses the scheduling of the scenario for 20 minutes. retries the incomplete execution with the incomplete execution [backoff](docId\:LE2sNkUjgL9uzqfm_0v3i).
* Instant  with incomplete executions disabled:  reruns the incomplete execution with the  [backoff](docId\:LE2sNkUjgL9uzqfm_0v3i).
* Instant  with incomplete executions enabled:  retries the incomplete execution with the incomplete execution [backoff](docId\:LE2sNkUjgL9uzqfm_0v3i). |
| **Solution**       | To fix the `RateLimitError`, see the [Fix rate limit errors](docId\:EQ8GGnx95Q7r047EeLhP3) page.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |

## Types of warnings in &#x20;

| ### RuntimeError  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Type of error** | `RuntimeError`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **Cause**         | A module outputs the `RuntimeError` when the error reported by the third-party app doesn't meet the criteria for any other error type. For example, you get the `RuntimeError` when you use up all your tokens with the **OpenAI** > **Create a Completion** module.<br />If a module outputs the `RuntimeError` with no error handling, the  ends with an error. When your  finishes with an error for the [number of consecutive errors](docId\:sN7McE4QmL-Q6wDTOOcSy) in a row,  disables the scheduling of your . |
| **Solution**      | There's no general rule to fixing the `RuntimeError`. Check the error message in the  history or try to reproduce the error with the [Make DevTool](docId\:bChJZZdDEM-1PyFEx4NPC).<br />The [Overview of error handling](docId\:sN7McE4QmL-Q6wDTOOcSy) topic can help you create your error handling strategy.                                                                                                                                                                                                        |

| ### OutOfSpaceError |                                                                                                                                                                                                                                                                                                                                                                           |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Type of warning     | `OutOfSpaceError`                                                                                                                                                                                                                                                                                                                                                         |
| Cause               | Data store modules output the `OutOfSpaceError` when  cannot store any more data in the data store. You also get the `OutOfSpaceError` when you fill your incomplete execution storage.<br />If a module outputs the `OutOfSpaceError` with no error handling, the  ends with a warning. The  doesn't process the remaining bundles.  will keep scheduling further  runs. |
| Solution            | To fix the `OutOfSpaceError` in a , you can use a backup data store with the [Resume error handler](docId:7xRuGbeY0uTl58ucpwp7v). You should also check the data in the data store or your incomplete execution storage. You can also review the  [pricing](https://www.make.com/en/pricing).                                                                             |

| ### ExecutionInterruptedError |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Type of error**             | `RuntimeError`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **Cause**                     | A module outputs the `ExecutionInterruptedError` when the  runs for more than 45 minutes (10 minutes for the Free subscription). The module that is currently processing data outputs the warning.<br />When a module outputs the `ExecutionInterruptedError` the  ends with a warning. The  doesn't process the remaining bundles.  will keep scheduling further  runs.                                                                                                                                                                                                                                                                                                                                             |
| **Solution**                  | To fix the `ExecutionInterruptedError`, consider strategies to optimize your :<br />* Split your . You can use the combination of the following modules:
* For example, if you are processing a lot of bundles in a  with 20 modules and the  ends with the `ExecutionInterruptedError`, you can split the  into two  with 10 modules each.
* Set the search modules' **Limit** to a lower number to reduce the amount of data processed by the .
* Check the API documentation of the apps you use in the . If the app’s API has a suitable endpoint that supports batch requests, you can use the **JSON aggregator** and the **HTTP** app to send your data in batches. In addition, you save on operation usage. |


[title] Exponential backoff
[path] Error handling/

When a module in your scenario outputs a `ConnectionError`, or `ModuleTimeoutError`,  automatically retries the scenario using exponential backoff — a retry strategy where each failed attempt is followed by a progressively longer waiting period before the next retry. The delays between each scenario reruns depend on whether  [incomplete executions](docId:6zZNn7v35hERRCJFccp9Q) are enabled in your scenario settings.

| **Rerun number** | **Incomplete executions enabled** | **Incomplete executions disabled** |
| ---------------- | --------------------------------- | ---------------------------------- |
| 1                | 1 minute                          | 1 minute                           |
| 2                | 10 minutes                        | 2 minutes                          |
| 3                | 10 minutes                        | 5 minutes                          |
| 4                | 30 minutes                        | 10 minutes                         |
| 5                | 30 minutes                        | 1 hour                             |
| 6                | 30 minutes                        | 3 hours                            |
| 7                | 3 hours                           | 12 hours                           |
| 8                | 3 hours                           | 24 hours                           |

This means that when a module in your  outputs the `ConnectionError` because the third-party service is unavailable,  schedules the rerunning of the  one minute after the error occurs.

If a module during the rerun outputs the `ConnectionError` again,  schedules another rerun after 2 minutes and so on. If the 8th attempt fails,  disables scheduling of the .

:::hint{type="info"}
Until  disables scheduling the , the  follows the run schedule in addition to the exponential backoff reruns (though there are [exceptions](docId:7-HEHdTuU2XyYs8_qurub)).

If you want  to wait with scheduling the next  runs until the reruns finish, enable [sequential processing](docId\:evAR6qLowV4yyUnEyV-00) in  settings.
:::

If you enable the option to store incomplete executions in the  settings,  stores the  run in incomplete executions.

 then schedules  reruns from the incomplete execution data. If all rerun attempts fail,  keeps the  incomplete execution for you to resolve manually.

[title] Sales outreach AI agent use case
[path] Make AI Agent (New)/

In this guide, you'll create a sales outreach agent step by step in . Your agent will:

1. **Watch your Gmail&#x20;**&#x66;or new emails labeled as leads&#x20;
2. **Analyze the email content&#x20;**&#x74;o decide whether the lead is a potential sales opportunity
3. **Research the lead&#x20;**&#x77;ith web scraping to learn more about the lead company
4. **Qualify the lead&#x20;**&#x62;ased on the information gathered
5. **Check your calendar availability&#x20;**&#x66;or a meeting if the lead qualification score is high&#x20;
6. **Draft a personalized email** to the lead&#x20;
7. **Sends the email draft to you** on Slack

::Iframely{originalUrl="https://youtu.be/J2UpfRy7jtY" embedUrl="https://youtu.be/J2UpfRy7jtY" title="Build a sales outreach AI Agent that knows when to book a meeting" html="<div style=&#x22;left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.25%;&#x22;><iframe src=&#x22;https://www.youtube.com/embed/J2UpfRy7jtY?rel=0&#x22; style=&#x22;top: 0; left: 0; width: 100%; height: 100%; position: absolute; border: 0;&#x22; allowfullscreen scrolling=&#x22;no&#x22; allow=&#x22;accelerometer *; clipboard-write *; encrypted-media *; gyroscope *; picture-in-picture *; web-share *;&#x22; referrerpolicy=&#x22;strict-origin&#x22;></iframe></div>"}

## Overview

You'll follow these steps to build your agent:&#x20;

1. Build your AI agent scenario
2. Add tools
3. Test your AI agent
4. Finish with a Slack module

Once you complete the steps, you'll have a sales outreach agent that you can use or extend further, depending on your goals.&#x20;

:::hint{type="info"}
Later, you can tailor this agent to your company guidelines by [adding knowledge](docId\:hA1-tULW54S28IH4StIxr), as shown in the video.&#x20;
:::

## Prerequisites

You must set up the following before you build your agent:&#x20;

- &#x41;**&#x20;Gmail account** with a **label for lead emails&#x20;**&#x63;alled "Leads" or similar
- A **Slack account&#x20;**&#x77;ith a **private channel&#x20;**&#x63;alled "Leads" or similar
- **Google Calendar**

Typically, an external system, such as a form or CRM tool, would automatically send lead emails to your Gmail. For now, send yourself a sample email that looks like a typical lead inquiry and apply the "Lead" label.&#x20;

Additionally, you'll use the instructions below when building your agent. Copy them now so you're ready to give them to your agent in Step 1.&#x20;

:::ExpandableHeading
**Instructions**

You are a Lead Qualification Agent that autonomously processes inbound leads, researches companies, and drafts personalized responses with meeting proposals when appropriate.

INPUT FORMAT

You will receive:

- sender\_email: Email address of the lead
- sender\_name: Name of the person who sent the email
- email\_subject: Subject line of the email
- email\_body: Content of the email
- thread\_id: Gmail thread ID for threading

AVAILABLE TOOLS
Research Tools:

- Research Lead information - Research companies and gather intelligence

Meeting Tools:

- Get Free/Busy information - Get user availability for next 7 days

Email Tools:

- Create email draft - Create Gmail draft response
  Input: To, Subject, Body (MUST BE HTML FORMAT)
  CRITICAL: This tool must ALWAYS be called LAST in your workflow                    &#x20;

CONTEXT
You should always access your context to retrieve the knowledge of the kind of company we are and services we offer

YOUR WORKFLOW

STEP 1: EXTRACT COMPANY DOMAIN

- Extract the domain from sender\_email (everything after @)
- Identify the company name from the domain
- Extract sender name and relevant context from email\_body

STEP 2: RESEARCH THE COMPANY (MANDATORY)

- Call research\_lead\_information with the company domain
- Gather information about:
  - Industry and sector
  - Company size (estimated employees/revenue if available)
  - Products or services offered
  - Recent news, funding, or announcements
  - Potential pain points or business challenges
  - Technology stack or tools they use (if discoverable)

STEP 3: QUALIFY THE LEAD
Analyze the gathered information and assign a qualification score:

HIGH - If 3 or more apply:

- Company in target industry
- Significant company size or budget indicators
- Recent funding or growth signals
- Clear pain point matching your solution
- Specific inquiry or clear intent in email

MEDIUM - If 2 apply:

- Relevant industry but unclear fit
- Some budget indicators
- General inquiry without specifics
- Limited information available

LOW - If most apply:

- Outside target industry
- Very small company or individual
- Generic or spam-like inquiry
- No clear pain points
- Minimal information available

STEP 4: MEETING WORTHINESS ASSESSMENT

Before proceeding, you must evaluate whether this lead warrants a meeting proposal. Consider:

PROPOSE A MEETING IF:

- Qualification score is HIGH AND
- Clear business opportunity exists (budget signals, specific need, decision-maker contact) AND
- The inquiry is specific and actionable (not just information gathering) AND
- There is explicit or implicit request for discussion/demo/call in the email AND
- Timeline indicators suggest near-term decision making

DO NOT PROPOSE A MEETING IF:

- Qualification score is LOW
- Generic inquiry with no specific needs mentioned
- Information-only request that can be handled via email
- Student, academic, or research inquiry with no commercial intent
- Sender appears to be in early exploration phase with no clear timeline
- Red flags present (competitor research, spam patterns, unclear legitimacy)
- MEDIUM qualification without strong engagement signals

MEETING DECISION FRAMEWORK:
Ask yourself: "Would I personally want to spend 30 minutes on this call based on the information available?"

If YES: Proceed to get availability (Step 5)
If NO: Skip to Step 6 (no meeting proposal)

STEP 5: GET CALENDAR AVAILABILITY (ONLY IF STEP 4 DETERMINED MEETING IS WARRANTED)

Step 5A: Get Calendar Availability

- Call get\_freebusy\_information to retrieve available time slots for next 7 days
- Analyze the returned availability data
- Identify 2-3 available 30-minute slots within business hours (10 AM - 5 PM Berlin timezone)
- Prefer slots in the next 3-5 business days
- Avoid early morning (before 10 AM) or late afternoon (after 4:30 PM) slots

STEP 6: DRAFT PERSONALIZED EMAIL RESPONSE

Prepare a personalized email response that:

- Acknowledges their specific inquiry or context from email\_body
- References specific company research (shows you did homework)
- Addresses potential pain points discovered
- Provides relevant value proposition
- Includes clear call-to-action
- Professional but warm tone
- around 250 words

Email structure:

- Greeting with name
- Thank them and acknowledge their specific inquiry
- 1-2 sentences showing company knowledge
- Brief value proposition relevant to their needs
- Clear next step or call-to-action
- Professional signature

IF MEETING SHOULD BE PROPOSED (based on Step 4 and 5):

- Propose 2-3 specific available time slots from the calendar availability
- Format: "I have availability on \[Day, Date] at \[Time] or \[Day, Date] at \[Time]. Would either of these work for you?"
- Frame it as a helpful suggestion for discussion
- Keep tone flexible and accommodating

IF NO MEETING SHOULD BE PROPOSED:

- Provide helpful information or resources
- Offer to schedule a call if they want to discuss further
- Keep door open for future engagement

STEP 7: CREATE EMAIL DRAFT

- Call create\_email\_draft with:
  - To: sender\_email
  - Subject: Re: \[original email\_subject]
  - Body: Your drafted response in HTML format (including meeting time proposals if warranted)

CRITICAL: create\_email\_draft must be called for EVERY lead

HTML EMAIL FORMATTING REQUIREMENTS

When creating email drafts, format the body content in HTML with proper structure:

Basic structure:

Hi \[Name],

\[First paragraph content]

\[Second paragraph content]

\[Closing paragraph with call-to-action]

Best regards,
\[Your name]
\[Your title]

HTML formatting guidelines:

- Wrap all content in  and  tags
- Use inline CSS for styling (font-family, font-size, color, line-height)
- Use  tags for paragraphs with proper spacing
- Use&#x20;
  &#x20;for line breaks within paragraphs
- Use  for emphasis if needed
- Keep styling professional and clean
- Ensure proper closing tags for all elements

IMPORTANT NOTES

- This is a fully autonomous workflow - execute all steps without any user interaction
- ALWAYS research the company before making any decisions
- Apply critical thinking in Step 4 - not every lead deserves a meeting proposal
- Base all decisions on objective criteria and available information
- Keep email drafts personalized - avoid generic templates
- When proposing meeting times, provide 2-3 specific options from available slots
- Format meeting time proposals clearly with day, date, and time
- CRITICAL: Email body content MUST always be in HTML format
- CRITICAL: create\_email\_draft must ALWAYS be called for every lead
- Reference specific details from the original email in your response draft
- Work completely autonomously - no confirmations or user interactions needed
:::

::::::ExpandableHeading
## Step 1. Build your AI agent scenario

To start building, sign in to  and click **Create scenario** at the top.&#x20;

### Add a Gmail trigger

The **Gmail&#x20;**> **Watch emails** module triggers the  where your agent lives. It monitors your inbox for new emails and sends them to the agent to process further.&#x20;

To add the **Gmail&#x20;**> **Watch emails&#x20;**&#x6D;odule:

:::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, click the giant plus.
:::

:::WorkflowBlockItem
In the app search, search **Gmail**, and select **Watch emails**.
:::

:::WorkflowBlockItem
Click the module to open its settings.&#x20;
:::

:::WorkflowBlockItem
In **Connection**, select an existing Gmail connection from the dropdown or click **Add&#x20;**&#x74;o create a new one.&#x20;
:::

:::WorkflowBlockItem
In **Filter type**, select **Simple filter**.&#x20;
:::

:::WorkflowBlockItem
In **Folder**, select **All mail**.&#x20;
:::

:::WorkflowBlockItem
In **Label**, select the label you set up in Gmail for lead emails, such as **Leads**.&#x20;
:::

:::WorkflowBlockItem
In **Criteria**, select **All messages**.&#x20;
:::

:::WorkflowBlockItem
In **Limit**, specify the number of emails to return in each run, such as 5 or 10.&#x20;
:::

:::WorkflowBlockItem
I&#x6E;**&#x20;Content format**, select **Full content**.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

::::WorkflowBlockItem
In the dialog, select the point in time from which to process your inbox data. For example, to process only new emails from now on, selec&#x74;**&#x20;From now on**.&#x20;

:::hint{type="info"}
Once you test this , you can choose when to start processing inbox data at any time. Right-click the **Gmail&#x20;**> **Watch email&#x20;**&#x61;nd select **Choose where to start.**&#x20;
:::
::::

:::WorkflowBlockItem
Click the clock icon on the module to schedule the .&#x20;
:::

:::WorkflowBlockItem
In **Schedule settings**, specify how often your  runs, for example, every day at 9:00.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::

:::WorkflowBlockItem
Clic&#x6B;**&#x20;Run once** on the  toolbar to retrieve email data that you'll map this data in later modules.&#x20;
:::
:::::

You've now added the **Gmail&#x20;**> **Watch emails&#x20;**&#x6D;odule to your AI agent .&#x20;

### Add a Make AI Agent (New) module

Next, add the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule to your :

::::WorkflowBlock
:::WorkflowBlockItem
Click the plus icon next to the **Gmail&#x20;**> **Watch emails&#x20;**&#x6D;odule.&#x20;
:::

:::WorkflowBlockItem
Search for **Make AI Agent (New)&#x20;**&#x61;nd clic&#x6B;**&#x20;Run an agent**. &#x20;
:::

:::WorkflowBlockItem
In the **Run an agent** module settings, in **Connection**, select an existing AI provider connection from the dropdown. Alternatively, click **Add&#x20;**&#x74;o create a new one.&#x20;
:::

:::WorkflowBlockItem
In **Model**, select a model.&#x20;
:::

:::WorkflowBlockItem
In **Instructions**, add the copied instructions from prerequisites to this field.&#x20;
:::

:::WorkflowBlockItem
In **Input**, copy the below input items and add them to the field. These items are email data you want the agent to work on.&#x20;

*sender\_email: "\{\{1.fromEmail}}"*
*sender\_name: "\{\{1.fromName}}"*
*email\_subject: "\{\{1.subject}}"*
*email\_date: "\{\{1.internalDate}}"*
*email\_body: "\{\{1.fullTextBody}}"*
*thread\_id: "\{\{1.threadId}}"*
:::

:::WorkflowBlockItem
Replace the placeholders between the quotation marks: map the output values from the **Gmail&#x20;**> **Watch emails&#x20;**&#x6D;odule that correspond to each input item.&#x20;

Once done, the **Inputs&#x20;**&#x66;ield looks like this:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Jkyjqi7puCOoKDElRPltL-20260128-103123.png" size="66" width="468" height="222" position="center" darkWidth="468" darkHeight="222" showCaption="false"}
:::

:::WorkflowBlockItem
Toggle **Advanced settings**.&#x20;
:::

:::WorkflowBlockItem
In **Response format**, select **Data structure&#x20;**&#x66;rom the dropdown.&#x20;
:::

:::WorkflowBlockItem
In **Response structure**, click **Add item**.&#x20;
:::

:::WorkflowBlockItem
In **Name**, enter "draft\_mail\_id."
:::

:::WorkflowBlockItem
In **Label**, enter "Mail ID."
:::

:::WorkflowBlockItem
In **Description**, copy the following instructions and add them to the field. They tell the agent to take the draft email id.

*After creating the draft mail, you'll get back a JSON like:*
**
*\{*&#xA;*&#x20;       "draftId": "r7956931764211347721",*&#xA;*&#x20;       "id": "19b46f571debca3f",*&#xA;*&#x20;       "threadId": "19b46f571debca3f",*&#xA;*&#x20;       "labelIds": \[*&#xA;*&#x20;           "DRAFT"*&#xA;*&#x20;       ],*&#xA;*&#x20;       "sysFolders": \[*&#xA;*&#x20;           \{*&#xA;*&#x20;               "id": "DRAFT",*&#xA;*&#x20;               "name": "Draft"*&#xA;*&#x20;           }*&#xA;*&#x20;       ]*&#xA;*&#x20;   }*
**
*Pass here the "id" item of the JSON. In the example is "19b46f571debca3f"*
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::
::::

You've now added the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule to your . You'll finish the  with a **Slack&#x20;**&#x6D;odule in a later step.
::::::

:::::ExpandableHeading
## Step 2. Add tools&#x20;

Your sales outreach agent uses three modules as tools:&#x20;

- **Google Calendar&#x20;**> **Get Free/Busy Information**: Checks your calendar for your meeting availability
- **Make AI Web Search&#x20;**> **Generate a response**: Researches the company associated with the lead email address
- **Gmail&#x20;**> **Create a draft email**: Creates an email draft based on the content of the lead email

### Add a Google Calendar module&#x20;

To add the **Google Calendar&#x20;**> **Get Free/Busy Information&#x20;**&#x6D;odule to your agent:

::::WorkflowBlock
:::WorkflowBlockItem
Hover over the plus icon on th&#x65;**&#x20;Run an agent&#x20;**&#x6D;odule and click **Add tool**.&#x20;
:::

:::WorkflowBlockItem
In the app search, search for and click **Google Calendar**.
:::

:::WorkflowBlockItem
Select the **Get Free/Busy Information** module.&#x20;
:::

:::WorkflowBlockItem
In the **Connection&#x20;**&#x64;ropdown, select an existing Google connection or create an new one.&#x20;
:::

:::WorkflowBlockItem
In **Time Range From**, map the `Date` value from the **Gmail&#x20;**> **Watch emails** module. This tells the agent to search your calendar for free slots after the email sent date.&#x20;
:::

:::WorkflowBlockItem
I&#x6E;**&#x20;Time Range To**, select **Let AI Agent decide**. Optionally, click **Add details** and specify your preferred time range, for example, "Within one month after the date."
:::

:::WorkflowBlockItem
In **Calendars**, select **Let AI Agent decide**.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::
::::

You've now added a **Google Calendar&#x20;**> **Get Free/Busy Information module** to your agent.

### Add a Make AI Web Search module&#x20;

To add the **Make AI Web Search&#x20;**> **Generate a response&#x20;**&#x6D;odule to your agent:

::::WorkflowBlock
:::WorkflowBlockItem
Hover over the plus icon on th&#x65;**&#x20;Run an agent&#x20;**&#x6D;odule and click **Add tool**.&#x20;
:::

:::WorkflowBlockItem
In the app search, search for and click **Make AI Web Search**.
:::

:::WorkflowBlockItem
Select the **Generate a response** module.&#x20;
:::

:::WorkflowBlockItem
In **Text**, copy the following instructions and add them to the field.&#x20;

*Research the company associated with the domain for the mail "\{\{1.fromEmail}}"*
*Gather comprehensive lead qualification information including:*
**
*COMPANY BASICS*
*- Official company name*
*- Industry and sector*
*- Company size (number of employees, revenue if available)*
*- Headquarters location*
*- Website and online presence*
**
*BUSINESS INTELLIGENCE*
*- Core products or services offered*
*- Business model (B2B, B2C, SaaS, etc.)*
*- Target market and customer base*
*- Key differentiators or unique value propositions*
**
*RECENT ACTIVITY*
*- Recent news, press releases, or announcements from the last 6 months*
*- Funding rounds, acquisitions, or partnerships*
*- Product launches or major updates*
*- Leadership changes or company milestones*
**
*SIGNALS AND INDICATORS*
*- Growth signals (hiring, expansion, new offices)*
*- Technology stack or tools they use (if discoverable)*
*- Pain points or challenges mentioned in recent content*
*- Budget indicators or financial health signals*
**
*COMPETITIVE CONTEXT*
*- Main competitors in their space*
*- Market position or reputation*
*- Any awards, recognition, or notable achievements*
**
*Focus on recent and relevant information that would help qualify this lead and personalize outreach. Prioritize facts over speculation.*
:::

:::WorkflowBlockItem
Replace the `{{1.fromEmail}}`placeholder between the quotation marks: map the `From (email)`output value from the **Gmail&#x20;**> **Watch emails** module.&#x20;

Once done, the **Text&#x20;**&#x66;ield looks like this:&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/0Q3r3n_tioUbSO4Aycooo-20260128-145403.png" size="60" width="470" height="540" position="center" darkWidth="470" darkHeight="540" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::
::::

You've now added the **Make AI Web Search&#x20;**> **Generate a response&#x20;**&#x6D;odule to your agent.

### Add a Gmail module

To add the **Gmail&#x20;**> **Create a draft email&#x20;**&#x6D;odule to your agent:

::::WorkflowBlock
:::WorkflowBlockItem
Hover over the plus icon on th&#x65;**&#x20;Run an agent&#x20;**&#x6D;odule and click **Add tool**.&#x20;
:::

:::WorkflowBlockItem
In the app search, search for and click **Gmail**.
:::

:::WorkflowBlockItem
Select the **Create a draft email** module.&#x20;
:::

:::WorkflowBlockItem
In the **Connection&#x20;**&#x64;ropdown, select an existing Google connection or create an new one.&#x20;
:::

:::WorkflowBlockItem
In **To**, map the output value from the **Gmail&#x20;**> **Watch emails&#x20;**&#x6D;odule that corresponds to the sender address: `From (email)`.&#x20;
:::

:::WorkflowBlockItem
In **Subject&#x20;**&#x61;nd **Content&#x20;**&#x66;ields, select **Let AI Agent decide**.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::
::::

You've now added the **Gmail&#x20;**> **Create a draft email&#x20;**&#x6D;odule to your agent. Next, test how well the agent works so far.
:::::

:::::ExpandableHeading
## Step 3. Test your AI agent&#x20;

Now that you've added tools to your agent, run your  to test its performance.&#x20;

To test your agent:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Next to **Run once&#x20;**&#x6F;n the  toolbar, click the downward arrow.&#x20;
:::

:::WorkflowBlockItem
In the **Scenario run dropdown**, select a previous successful  run to use its email data as test data.&#x20;
:::

:::WorkflowBlockItem
Click the output bubble of the **Run an agent&#x20;**&#x6D;odule.
:::

:::WorkflowBlockItem
Go to the **Reasoning&#x20;**&#x74;ab to view the tools called and whether they were successful or returned errors.&#x20;
:::

:::WorkflowBlockItem
If any tools returned errors, click their output bubbles to view outputs and identify the issue.&#x20;
:::

:::WorkflowBlockItem
If needed, go back and change any relevant module settings.&#x20;
:::

:::WorkflowBlockItem
Run the  again with steps 1-2 until it runs without errors.&#x20;
:::
::::

You've now tested your agent so it performs as expected. Next, finish with a **Slack&#x20;**>**&#x20;Send a Message** module.&#x20;
:::::

:::::ExpandableHeading
## Step 4. Finish with a Slack module

To finish your AI agent  , add a **Slack&#x20;**> **Send a Message&#x20;**&#x6D;odule that sends the link to the email draft to your private Slack channel for leads.&#x20;

To add the **Slack&#x20;**> **Send a Message** module:

::::WorkflowBlock
:::WorkflowBlockItem
Click the plus icon next to **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule.&#x20;
:::

:::WorkflowBlockItem
In the app search, search for and click **Slack**.
:::

:::WorkflowBlockItem
Select the **Send a message&#x20;**&#x6D;odule.&#x20;
:::

:::WorkflowBlockItem
In **Connection**, select an existing user Slack connection or create an existing one.&#x20;
:::

:::WorkflowBlockItem
In **Channel type**, select **Private channel**.&#x20;
:::

:::WorkflowBlockItem
Select the private Slack channel that you created for leads.&#x20;
:::

:::WorkflowBlockItem
In **Text**, copy the following instructions and add it to the field. This text includes a link to the email draft.&#x20;

*New Lead draft mail from \{\{1.fromEmail}}*
*🔗  \<*[https://mail.google.com/mail/u/0/#drafts?compose](https://mail.google.com/mail/u/0/#drafts?compose)*= \{\{2.jsonResponse}} View drafted answer>*
:::

:::WorkflowBlockItem
Replace the placeholders between the quotation marks:

- \{\{1.fromEmail}}: Map the `From (email)` output value from the **Gmail&#x20;**> **Watch emails&#x20;**&#x6D;odule.&#x20;
- \{\{2.jsonResponse}}: Map the `JSON response` output value from the **Make AI Agent (New)** > **Run an agent** module.

Once done, the **Text&#x20;**&#x66;ield looks like this:&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/tzfueV_rqiBbcZZ0f6vZr-20260128-162745.png" size="60" width="465" height="168" position="center" darkWidth="465" darkHeight="168" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::

:::WorkflowBlockItem
Click **Run once** to check whether you receive the message in your lead Slack channel.&#x20;
:::
::::

You've now added a **Slack&#x20;**> **Send a message** module to your .
:::::

You've now created a sales outreach agent that helps you qualify and contact leads.&#x20;

Next, to build agents just like this one with pre-built templates, see [Make AI agents library](https://www.make.com/en/ai-agents-library).&#x20;

[title] General functions
[path] Explore more/Functions/

General functions let you fine-tune your mapping in a . For example, you can select or leave out items in an array or apply conditional criteria to your mapping.&#x20;

## Functions

The following functions are available in the General functions tab in .

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/C94uXHQSVNurmSyJZEGi--20260323-084043.png" size="50" width="342" height="279" position="flex-start" alt="General functions - available functions" darkWidth="342" darkHeight="279" showCaption="false"}

### equal

**equal(value; value)**

Compares values to see if they are equal.

### set

set (object; path; value)

Sets or adds a value at a specific location in an array or object, leaving the rest of the structure unchanged.

```javascript
set(user;name;John)
set(user;address.city;Prague)
```

### get&#x20;

**get (object or array; path)**

Returns the value path of an object or array. To access nested objects, use dot notation. The first item in an array is index 1.

```javascript
get(array;1+1)
```

```text
get(array;5.raw_name)
```

```text
get(object;raw_name)
```

```text
get(object;raw_name.sub_raw_name)
```

### if&#x20;

**if** **(expression; value1; value2)**

Returns value 1 if the expression is evaluated to be true. Otherwise, it returns value 2.

```text
if(1=1;A;B)
= A
```

```text
if(1=2;A;B)
= B
```

### ifempty

**ifempty (value1; value2)**

Returns value 1 if this value is not empty. Otherwise, it returns value 2.

```text
ifempty(A;B)
= A
```

```text
ifempty(unknown;B)
= B
```

```text
ifempty("";B)
= B
```

### switch

**switch** **(expression; value1; result1; \[value2; result2; ...]; \[else])**

Evaluates one value (called the expression) against a list of values, and returns the result corresponding to the first matching value.

```text
switch(B;A;1;B;2;C;3)
= 2
```

```text
switch(C;A;1;B;2;C;3)
= 3
```

```text
switch(X;A;1;B;2;C;3;4)
= 4
```

### omit&#x20;

**omit (collection; key1; \[key2; ...])**

Removes elements with the given keys from a collection. Returns a collection with the remaining elements. Useful when you want to pass a collection to an API, which expects an exact number of elements in the collection. Using this function, you can make sure your collection meets the requirements of the API.

### pick&#x20;

**pick (collection; key1; \[key2; ...])**

Picks elements with the given keys from a collection. Returns a collection that contains only the picked elements. Useful when you want to pass a collection to an API, which expects an exact number of elements in the collection. Using this function, you can make sure your collection meets the requirements of the API.

## Keywords

The following keywords are available in the General functions tab in .

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/d5pzzNB81U9fwu2CSxC_D-20260323-085226.png" size="50" width="342" height="280" position="flex-start" alt="General functions - available keywords" darkWidth="342" darkHeight="280" showCaption="false"}

### erase

The erase pill inherits the parameter type of the item it replaces and provides correct error handling of the empty value.

- A **string** or **number** with an erase pill results in a `null` value.
- An **array** with an erase pill results in `[]`.
- A **collection** with an erase pill results in `{}`.


[title] Tutorial: How to replace a dependency
[path] Make Grid/

### Objective

The objective of this tutorial is to help you use  Grid to visually analyze  dependencies and plan updates. In this tutorial, you will use  Grid to plan to migrate away from an existing Google Sheets spreadsheet and use another data element, for example, an Airtable base. With the help of  Grid, you can plan changes effectively and ensure a smooth, error-free transition without disrupting existing workflows.

### Requirements

Before using  Grid, ensure that you have an existing  with dependencies.&#x20;

### Step 1: Open your scenario

::::WorkflowBlock
:::WorkflowBlockItem
Log in to .com.
:::

:::WorkflowBlockItem
In the left sidebar, navigate to **Scenarios**.
:::

:::WorkflowBlockItem
From **All scenarios**, click the  that you want to update.

In this example, you plan to replace the Google Sheets spreadsheet with an Airtable base.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/QOLLp4kY1R5VlPorNSnP8-20251119-081235.png)
:::
::::

### Step 2:  Open Make Grid to analyze the scenario and its dependencies

::::WorkflowBlock
:::WorkflowBlockItem
In the  diagram, click the **Grid&#x20;**&#x62;utton.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ANdVjgvEtGdfeUs-L_SQM-20251119-081412.png)
:::

:::WorkflowBlockItem
Once  Grid opens, you can view the  and its dependencies.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/4aLT3oxtV4volJoNOY-Wh-20251119-081853.png)
:::

:::WorkflowBlockItem
In the right side panel, you can view the details of the .

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/709KfUvYxmhwrjJSrU4xa-20251119-082117.png)
:::

:::WorkflowBlockItem
Click on a specific dependency you want to make changes to, such as the Google Sheets spreadsheet in this example.  Grid highlights the  dependencies.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/swx_hsV-01UpZTS5RVRTW-20251119-083040.png)
:::

:::WorkflowBlockItem
Click **Links** to view the  that depend on the selected dependency. In this example, you can view which  read or write to the Google Sheets spreadsheet.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/2Qlua8MQR5_soqqarngh5-20251119-083322.png)
:::

:::WorkflowBlockItem
Click **Attributes** to view where specific attributes of the selected dependency are used. In example, you can view which Google Sheets columns are referenced in which .

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/eMfdHkOMHuFIYkEqweLsU-20251119-083802.png)
:::

:::WorkflowBlockItem
Click **Raw Data** to see the JSON data for the dependency, which is useful for advanced debugging and understanding the data structure.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/gLJ5npv9zgl-bYPq0H-Cv-20251201-141246.png)
:::
::::

 Grid offers a comprehensive visual representation of how a dependency is interconnected within a  and with other . This holistic overview allows you to trace data flows, understand dependencies, and plan changes effectively, minimizing the risk of breaking existing logic or workflow.

### Step 3: Plan the replacement

::::WorkflowBlock
:::WorkflowBlockItem
Identify the new replacement, an Airtable - Upsert a Record module, for example.
:::

:::WorkflowBlockItem
Before making any changes, use the information from the **Attributes&#x20;**&#x61;n&#x64;**&#x20;Links** view to create a clear plan to map the old data attributes to the new dependency. This ensures data integrity.
:::

:::WorkflowBlockItem
Add the new Airtable base to your .
:::

:::WorkflowBlockItem
Reconfigure existing dependencies to read and write to the new replacement.
:::
::::

By thoroughly analyzing your  and workflow with  Grid, you should be able to complete the transition smoothly.

[title] Data stores
[path] Explore more/Data store/

Data stores allow you to store data from a  or transfer data between individual  or  runs. You can use data stores to store data from apps during  execution. Data stores are similar to a simple database.

## Data storage allowance&#x20;

Before creating a data store, take note of your data storage allowance. Total data storage is based on number of operations in your plan, with every 1,000 operations equaling 1 MB of data storage. &#x20;

:::hint{type="info"}
As 1 MB is the minimum size of a data store in , you will need at least 1 MB of data storage available to create a new data store.
:::

Consider the following data storage allowances for data stores, depending on your [plan](https://www.make.com/en/pricing):

::::Tabs
:::Tab{title="Free plan users"}
As a Free plan user, you are entitled to 1 MB of data storage, equaling 1 data store, as the plan includes 1,000 credits per month.&#x20;
:::

:::Tab{title="Enterprise users"}
As an Enterprise user, calculate your total data store by determining your average monthly credits and then dividing your monthly credits by 1,000.

For example, with 1,000,000 credits per year, you have 83.3 MB of data storage available to allocate to your data stores.&#x20;

1,000,000 credits / 12 months = 83,333 credits
83,333 credits / 1,000 = 83.33 MB

Each data store is at least 1 MB in size.
:::

:::Tab{title="All other users"}
As a paid user, calculate your total data storage by dividing your monthly credits by 1,000.

For example, with 20,000 credits, you have 20 MB of data storage (=20,000/1,000) available to allocate to your data stores. Each data store is at least 1 MB in size.&#x20;

Note that a single organization, regardless of plan type, can have a maximum of 1,000 data stores.
:::
::::

To adjust the data storage allocated to your existing data stores, see [Out of space error](docId\:l6duB0QnRcBjBVNhw6-Xk).

## Create a data store

To create a data store:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Data stores**.
:::

:::WorkflowBlockItem
Click **+ Add data store**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/5YUePnbgfe-tN1KmBLZXQ-20251006-142519.png)
:::

:::WorkflowBlockItem
Configure the settings for the new data store.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/cXm-x6jixYpvIrMgZzua7-20251006-143158.png" size="50" width="878" height="652" position="center" showCaption="false"}

| **Field**                   | **Description**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Data store name**         | Enter the name for the data store. For example, `Contacts`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| **Data structure**          | A data structure is a list of the columns for a table that indicates the column name and data type.<br />You have three options:<br />* **Create a data structure**
* Click **Create a data structure&#x20;**&#x69;f you haven't created any yet.
* **Select a data structure that has already been created**
* **Leave the field empty**
* If you don't select a data structure, the database will only contain the primary key. Such a database type is useful if you only want to save keys and are only interested in knowing whether or not a specific key exists in the database.
* **Add a new data structure**
* Click the **Add&#x20;**&#x62;utton to create a new data structure. |
| **Data storage size in MB** | Allocate the size for the data store from your total data storage. The amount can be changed at any time.<br />1 MB is the minimum data storage size per data store.  You can see your available storage space in the text below th&#x65;**&#x20;Data storage size in MB** field.                                                                                                                                                                                                                                                                                                                                                                                                           |


:::
::::

You now have a data store that can be used in your . Click the  icon to see a list of  using the data store.

![Use of data stores in scenarioes](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/RqOEAhyu_8a6HPL4bAzwI-20260316-100011.png)



## Manage the data structure of a data store

### Add a new data structure

During the process of setting up a data store, you can set up a new data structure.

To set up the data structure while adding a data store, click the Add button for the Data structure field

You can access this dialog by clicking the **Add** button when creating or editing the data store:

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/TF4_cm207aN5bJTPtlU_n-20251006-143605.png" size="60" width="1678" height="1398" position="center" showCaption="false"}

|                         |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Data structure name** | Enter the name for the data structure.<br />The data structure name is its unique identifier and cannot be changed later.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| **Specification**       | There are two options for how you can specify the data store columns.<br />* Click the **Add item** button to specify the properties of one column manually.
* Enter the **Name** and **Type** for the data store column and define the corresponding properties.&#xA;**Note:&#x20;**&#x53;ince JavaScript uses the IEEE 754 standard for double-precision, floating-point numbers to store all numeric values, we recommend using type `Text` for storing integers above 14 digits, to avoid rounding off.
* Use the *Generator button* to determine the columns from the sample data you provide.
* For example, the following JSON sample data creates three columns (name, age, phone number) with phone number as a collection of mobile and landline:&#xA;`{   "name":"John",`&#xA;`"age":30,`&#xA;`"phone number": {`&#xA;`"mobile":"987654321",`&#xA;`"landline":"123456789"`&#xA;`}`&#xA;`}` |
| **Strict**              | If enabled, the data structure will be compared to the structure of the payload, and if the payload contains extra items not specified in the data structure, the payload will be rejected.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |

You now have a data structure for your data store. Click the data store icon to see a list of data stores using the data structure.

![Use of the data structure in a data store](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/cUE6709AV5nLiKrI1yb9Z-20260316-100911.png)

Click the  icon to see a list of  using the data structure.

![Use of the data structure in a scenario](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/5WvIHJAIP84_kqFbKe1Oa-20260316-101214.png)



### Update the data structure of a data store

:::hint{type="info"}
Be careful when updating the data structure of a data store. Before updating the structure, make a backup of the data.

Changes in the data structure of a data store might lead to unexpected results.&#x20;
:::

When you want to update the data structure of a data store, you should keep in mind that:

- The data structure field names are unique identifiers of the data store columns. When you rename a field of a data structure,  cannot retrieve the original data in the data store column, because they use a different column identifier.
- You can update the data structure field label anytime without the effects mentioned in the previous point.
- The changes to the data store structure apply only to the new data you put in the data store.  doesn't change or validate the original data to fit the updated structure.

The best approach to updating the data structure of a data store is to create temporary fields with copies of your data. Update the data in the temporary fields and make sure they conform to the final data structure.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/bqQnWTnSvC_L1Z79M2Uv0-20251006-144630.png)

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/7ujKnlwD9zwErwCYAVp5Z-20251006-144854.png" size="40" width="786" height="746" position="center" showCaption="false"}

### Rename a field of the data store structure

You can update the **Label** of a data store structure field anytime.

To change the data store structure field **Name**:

::::WorkflowBlock
:::WorkflowBlockItem
[Create a backup of the data in the data store](docId\:l6duB0QnRcBjBVNhw6-Xk).
:::

:::WorkflowBlockItem
Create a field in your data store with the new name.
:::

:::WorkflowBlockItem
Copy all data from the original column to the new column.
:::

:::WorkflowBlockItem
Update all data in the original column to empty fields. This step prevents storing the data in the original column alongside the data in the new column.
:::
::::

You have put the data from the original data store column into the new data store column. In addition, you have a data store backup to check that the update was successful.

### Change the type of a field of the data store structure

::::WorkflowBlock
:::WorkflowBlockItem
[Create a backup of the data in the data store](docId\:l6duB0QnRcBjBVNhw6-Xk).
:::

:::WorkflowBlockItem
Either create a temporary field for the updated data type, or you can skip this step and update the field type in place.
:::

:::WorkflowBlockItem
Use a conversion function to update the type of all values in the data store column to the new type. For example, to convert `text` to `date`, use the `parseDate` function.
:::
::::

## Data store modules in &#x20;

::::ExpandableHeading
### Add/Replace a Record

Adds or replaces a record in the data store.

| **Field**                    | **Description**                                                                                                                   |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| Data store                   | Select or add the data store where you want to create a record.                                                                   |
| Key                          | Enter the unique key. The key can be used later to retrieve the record. If you leave this field blank, the key will be generated. |
| Overwrite an existing record | Enable this option to overwrite the record. The record you want to overwrite must be specified in the **Key** field above.        |
| Record                       | Enter the desired values to the record's fields.<br />The maximum size of the record in the data store is 15 MB.                  |

:::hint{type="info"}
The module throws an error when you try to add the record which is already in the data store under the same name and the **Overwrite an existing record&#x20;**&#x6F;ption is disabled.
:::
::::

:::ExpandableHeading
### Check the Existence of a Record

Returns the value `true` if the record exists in the specified data store or `false` if the record doesn't exist in the data store.

| **Field**  | **Description**                                                   |
| ---------- | ----------------------------------------------------------------- |
| Data store | Select the data store you want to check for the record existence. |
| Key        | Enter the key of the record you want to check for existence       |
:::

:::ExpandableHeading
### Count Records

Returns the number of records in the selected data store.

| **Field**  | **Description**                                        |
| ---------- | ------------------------------------------------------ |
| Data store | Select the data store whose records you want to count. |
:::

:::ExpandableHeading
### Delete All Records

Deletes all records from the selected data store.

| **Field**  | **Description**                                            |
| ---------- | ---------------------------------------------------------- |
| Data store | Select the data store you want to delete all records from. |
:::

:::ExpandableHeading
### Delete a Record

Deletes a specified record from the selected data store.

| **Field**  | **Description**                                                   |
| ---------- | ----------------------------------------------------------------- |
| Data store | Select the data store you want to check for the record existence. |
| Key        | Enter the key of the record you want to delete.                   |
:::

:::ExpandableHeading
### Get a Record

Retrieves a record from the selected data store.

| **Field**             | **Description**                                                                                             |
| --------------------- | ----------------------------------------------------------------------------------------------------------- |
| Data store            | Select the data store you want to retrieve a record from.                                                   |
| Key                   | Enter the unique key of the record you want to retrieve.                                                    |
| Return Wrapped Output | Choose if you want the output to be returned in the same way that the `Search records` module returns data. |
:::

:::ExpandableHeading
### Search Records

Performs a search for records based on filter settings.

| **Field**                                                                 | **Description**                                                                                                                                                                                                                                           |
| ------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Data store                                                                | Select the data store you want to check for the record's existence.                                                                                                                                                                                       |
| Filter                                                                    | Set the filter for the search.<br />Select the column, operator and required value (search term) for the search.<br />If you use the **datetime** operators, you need to provide a value in a date format. Use the `parseDate` function for this purpose. |
| Sort                                                                      | - Key: Select the column name you want to sort the results by.   &#x20;
- Order : Select whether you want to sort results in ascending or descending order.                                                                                               |
| Limit                                                                     | Set the maximum number of search results  will return during one execution cycle.                                                                                                                                                                         |
| Continue the execution of the route even if the module returns no results | If enabled, the  will not be stopped by this module.                                                                                                                                                                                                      |
:::

:::ExpandableHeading
### Update a Record

Updates a record in the selected data store.

| **Field**             | **Description**                                                                                                                          |
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| Data store            | Select or add the data store where you want to create a record.                                                                          |
| Key                   | Enter the unique key of the record you want to update.                                                                                   |
| Insert missing record | Enable this option to create a new record if the record with the specified key doesn't already exist.                                    |
| Record                | Enter the desired values to the record's fields that you want to update.<br />The maximum size of the record in the data store is 15 MB. |
:::

## Manage records in a data store

 allows you to add, view, update, and delete the records in your data store.

:::ExpandableHeading
### View records

To view the records in your data store, open the **Data store** tab in the left sidebar and click the required **Data store**.&#x20;
:::

:::ExpandableHeading
### Add or edit records

Click **Add** to add new records to the data store. Newly inserted records are highlighted in green.

To change an existing field, hover over it and click the edit icon. &#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/mbm1qnnv6wbP56P80hyFi-20251006-152216.png)

Click **Save&#x20;**&#x74;o save all your changes to the data store. Click **Discard changes** to reset any changes you have made, including added records and edited records.

You cannot use **Discard changes** to get back records that you have deleted.
:::

:::ExpandableHeading
### Delete records

To delete records from your data store, first select the records you want to delete by selecting the check boxes next to the records. Then, click the **Delete** icon.

You cannot roll back deleted records.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/mNgSIHluRX6PlKcgZj_i4-20251006-152905.png)
:::

:::::ExpandableHeading
### Back up data in the data store

When you want to make large-scale changes in your data store, like deleting a large number of records or changing the data store structure, you should make a backup of your data first.

There are two options of how to backup the data in your data store with Make:

- Create a  &#x20;
- Use the [Make API](https://developers.make.com/api-documentation/api-reference/data-stores).

To back up your data using a  :

::::WorkflowBlock
:::WorkflowBlockItem
Clone the data structure of the original data store. Name the data structure to clearly show that it's for the backup data store.
:::

:::WorkflowBlockItem
Create a data store with the backup data structure. Name the data store to clearly show that it's a backup of your data.
:::

:::WorkflowBlockItem
Create a . Name the  to clearly show that it's for backing up data in the data store.
:::

:::WorkflowBlockItem
Add the **Data Store** > **Search Records** module to the . In the **Data Store** field, select the data store which contains the data you want to back up.
:::

:::WorkflowBlockItem
Add the **Data Store** > **Add/Replace Record** module to the .
:::

:::WorkflowBlockItem
Run the .
:::
::::

The backup data store now contains all data from the original data store.

:::hint{type="info"}
You can reduce the number of operations by using the **Text Aggregator** and **CSV** or SQL-processing tools and apps.
:::
:::::

## Troubleshooting

:::::ExpandableHeading
### Restore lost data from your data store

There is no automated process to restore lost values in your data stores. However, there is a manual approach that you can use to fix the issue.

To locate and restore the missing data:

::::WorkflowBlock
:::WorkflowBlockItem
Open the specific scenario where the missing items were stored.
:::

:::WorkflowBlockItem
Review the execution history and identify the instances where items were inserted into the data store.
:::

:::WorkflowBlockItem
Copy the identified missing data into your data store.
:::
::::
:::::

::::ExpandableHeading
### Update the data store structure

There are two challenges that occur when you update the data structure of a data store:

- When you rename a field of the data structure, the data in the field becomes inaccessible.

  If you want to access the data again, add a field to the data store structure with the original field name.

  With the data in the original field accessible again, you can follow the steps to [update the data store structure](docId\:l6duB0QnRcBjBVNhw6-Xk).

- When you change the type of a field in a data structure, the original data keeps the original data type and the new data has the new type.

:::hint{type="info"}
Before updating the data structure of a data store, [create a backup of your data](docId\:l6duB0QnRcBjBVNhw6-Xk).
:::
::::

:::::ExpandableHeading
### Out of space error

You get this error message if you currently have a datastore that has already been assigned your allocated datastore storage.

You can edit any of your existing data stores to free up space.

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Data stores**.
:::

:::WorkflowBlockItem
Click **Edit** next to a data store.

![Edit a data store](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-AO_yOgrMb5jk8zl_k01Yi-20250226-150407.png)
:::

:::WorkflowBlockItem
Reduce the data storage size in the **Data storage size in MB** field.
:::
::::

You can now add a new data store.

:::hint{type="info"}
Make sure that when you create a new data store you do not assign all of your space to only one record unless you need it.
:::


:::::

:::::ExpandableHeading
### Date/time displayed as date for text value

When you input a raw date/time string in ISO format ending with Z in a text-based field of a data store, it will display in a parsed (date) format.&#x20;

Add [functions](docId:1kv1ib5q50i0SLbc7G2PZ) to convert a date in raw ISO format to text:

::::WorkflowBlock
:::WorkflowBlockItem
In the [data structure](docId\:H-nm0PyG893UbiGTe-m-C) of your data store, set the **Type** of the relevant field to Text.
:::

:::WorkflowBlockItem
In the relevant scenario, add a **Data store > Add/replace a record** module.&#x20;

1. In its configuration settings, locate the field that corresponds to the relevant column in the data store.
2. Add the **formatDate() &#x20;**&#x61;nd **toString()&#x20;**&#x66;unctions as shown below, with the raw ISO date as the first input value.

![](https://archbee-image-uploads.s3.amazonaws.com/Q31995ot4OZzZRNwsMBrJ-8TS_wlx_Lq603mtiCPDFU-20250516-090023.jpg)

For more on formatting date and time data, see [Tokens for date/time formatting](docId\:KUmuKVBfixzZTKuZyE7XZ).
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::
::::
:::::


[title] Fix rate limit errors
[path] Error handling/Common errors and fixes/

In , you'll see the `RateLimitError` when requests to an app have exceeded its API rate limit—the maximum number of requests allowed within a certain time period (e.g., 100 requests per minute). When its rate limit is exceeded, the app blocks further requests until the specified timeframe passes. For an example, see the [API rate limits](https://developers.google.com/workspace/sheets/api/limits) for Google Sheets.&#x20;

The rate limit error is common in  with instant triggers (e.g., [webhooks](https://help.make.com/webhooks)), apps that process many records in a short time (e.g., [Google Sheets](https://apps.make.com/google-sheets) or [Airtable](https://apps.make.com/airtable)), and apps that you use multiple times across .&#x20;

This article outlines strategies for preventing rate limit errors in instant , scheduled , and both types. &#x20;

:::hint{type="info"}
The rate limit error in  corresponds to the **HTTP 429 Too Many Requests&#x20;**&#x65;rror code. While  follows the standard error codes and their definitions, third-party apps may not always comply with this standard.
:::

## Strategies by scheduling type&#x20;

When a module returns the rate limit error and no error handler is present,  responds based on the following factors:

- The ﻿  scheduling type&#x20;
- Whether [incomplete executions](https://help.make.com/incomplete-executions) are enabled

The chart below outlines all possible responses to encountering a rate limit error:

| **Scheduling type** | **Incomplete executions disabled**                                                                                         | **Incomplete executions enabled**                                                                                                                   |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| Scheduled           | -  pauses the next  run for 20 minutes.
-  doesn't rerun the incomplete execution.                                         | *  pauses the next  run for 20 minutes.
* ﻿﻿ reruns the incomplete execution with [exponential backoff](https://help.make.com/exponential-backoff). |
| Instant             | ﻿﻿  reruns the incomplete execution from its start with [exponential backoff](https://help.make.com/exponential-backoff).  |  ﻿﻿ reruns the incomplete execution with [exponential backoff](https://help.make.com/exponential-backoff).                                          |

The strategies to avoid rate limit errors depend on whether a  receives data instantly, with instant triggers, or on a scheduled basis.

### Instant scenarios

In instantly triggered , set a [scenario rate limit ](https://help.make.com/schedule-a-scenario#lcstO)to control how often a  runs per minute. This strategy spreads sudden spikes in requests over longer periods, enabling queued requests to be processed at a manageable rate.&#x20;

You can configure a  rate limit in the **Maximum runs to start per minute&#x20;**&#x66;ield. Find this setting by clicking the lightning icon on the instant trigger module or **Schedule setting&#x20;**&#x69;n the scenario toolbar.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj--3fhhcIqYMXp1O_WA5Z2a-20250724-154938.png" size="50" width="1232" height="1010" position="center" darkWidth="1232" darkHeight="1010" showCaption="false"}

:::hint{type="info"}
You can also enable Process data in order or use sleep modules. However, these strategies have limitations and are useful in select cases. See [Advanced strategies](docId\:sNkihIPL3ukvWtRF1kqlO) to learn more.&#x20;
:::

### Scheduled scenarios

In scheduled scenarios (e.g., with [polling triggers](https://help.make.com/types-of-modules#9OKWr)), you can try these strategies, depending on your use case:

**&#x20;Set longer scheduling intervals**

When you expect many data records in a single run, prolong the time between  runs to spread incoming records over a longer period. For example, schedule your  to run every 5 minutes and process 100 rows per run.

You can configure scheduling intervals in **Schedule settings&#x20;**&#x69;n the scenario toolbar.

**Set a low number of records to process per run**

If you require frequent  runs, such as one run per minute, lower the number of records processed per run. A limit of up to 20 records per run is recommended to avoid exceeding rate limits. For example, schedule your  to run every minute and process 20 rows per run.

You can configure a records-per-run limit in a module's settings in the **Limit&#x20;**&#x66;ield.

### Both types  (instant and scheduled scenarios)

Regardless of the  scheduling type, you can do the following to reduce requests and prevent rate limit errors:

- **Use bulk action modules,** such as **Google Sheets** > **Bulk Add Rows** and **Bulk Update Rows**, to process multiple bundles in a single request. For example, requesting once to Google Sheets to add 20 rows to a spreadsheet, rather than 20 times—once per row. &#x20;
- **Use&#x20;**[aggregator ](https://help.make.com/aggregator)**modules&#x20;**&#x74;o merge several bundles into a single bundle.
- **Add a short delay** by adding a [Sleep module](docId\:sNkihIPL3ukvWtRF1kqlO) before an error-causing module if rate limit errors continue.

For more strategies, continue to the next section.&#x20;

## Advanced strategies&#x20;

This section includes more rate-limit error strategies to try when the ones mentioned are less effective or relevant to your use case.&#x20;

### Process data in order

When you enable [Process data in order](docId\:evAR6qLowV4yyUnEyV-00), the trigger module processes incoming data one by one, in the order they arrive, rather than in parallel.  waits until a  run is complete before starting the next one.&#x20;

You can enable Process data in order in **Scenario settings&#x20;**&#x69;n the Scenario Builder.

**Limitations**

Process data in order stops the  in the event of errors, even with [incomplete executions ](https://help.make.com/incomplete-executions)disabled. If a  has incomplete executions and Process data in order enabled, the  pauses until incomplete executions are processed to maintain the order of incoming data.&#x20;

### Sleep module

The[ Sleep module](https://help.make.com/util#Ggpru) delays requests to an app for up to 300 seconds, or 5 minutes. Set the delay to align with the number of requests allowed in the rate limit. For example, if the app is limited to 10 requests per minute, set the delay to 6 seconds.

You can add a **Sleep&#x20;**&#x6D;odule before the module receiving the delayed requests.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/Q31995ot4OZzZRNwsMBrJ-aI9UOJlrjdXeMF0hQCl0y-20250828-102549.png" size="50" width="1057" height="520" position="center" darkWidth="1057" darkHeight="520" showCaption="false"}

Use sleep modules to address rate limit errors in these cases:

- In instant  with multiple modules of the same app
- In  with modules that run multiple times to process many [bundles](https://help.make.com/operations#dQQ3E) (e.g., 10)&#x20;

**Limitations**

Apart from slowing down runtime, **Sleep&#x20;**&#x6D;odules often delay the issues causing rate limit errors rather than solve them. For example, when requests that occur in rapid succession reach the **Sleep&#x20;**&#x6D;odule, the module only delays these problematic requests for a couple of seconds.

### Incomplete executions

When you enable [incomplete executions](https://help.make.com/incomplete-executions), you can address errors later and keep  running.

If a rate limit error occurs with incomplete executions enabled,  automatically reruns the incomplete execution in gradually increasing intervals. In most cases, this automatic rerun solves the issue, and the  run continues as normal. You'll only need to manually resolve errors in case of logical errors (e.g., incorrect mapping, filter conditions, etc.).&#x20;

To enable incomplete executions, select **Yes** in the&#x20;**&#x20;Store incomplete executions&#x20;**&#x66;ield in **Scenario settings**.

:::hint{type="info"}
An app counts the number of requests towards its rate limit in all  using the app.&#x20;

If your  includes a module that consumes many operations, or you frequently use the same module in your , consider checking the app's API rate limit or using the error handling strategies in this article to preemptively avoid frequent  runs.
:::


[title] Webhook-triggered AI agent
[path] Make AI Agent (New)/Create AI agents for different triggers/

This webhook-triggered AI agent  watches for new data sent to a [webhook](docId:6NpTI6yVZkFtbSZMdl9EY) and the agent sends a reply back to the webhook. It is ideal for sending data from third-party services to .

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ZLeD3HAJdNsaS84txyqBK_webhook-triggered-ai-agent.png)

## Prerequisites

- A [Postman account ](https://www.postman.com/)

## Step 1. Add a Custom webhook

The **Webhooks&#x20;**> **Custom webhook** module allows the agent to automatically receive new data from any third-party service.&#x20;

To add the **Custom Webhook&#x20;**&#x6D;odule:

::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, click the giant plus.&#x20;
:::

:::WorkflowBlockItem
In the app search, search for and click **Webhooks**.&#x20;
:::

:::WorkflowBlockItem
Click the **Custom webhook** module.&#x20;
:::

:::WorkflowBlockItem
In **Webhook**, click **Add&#x20;**&#x74;o create a new one.&#x20;
:::

:::WorkflowBlockItem
In the **Create a webhook** dialog, in **Webhook name**, name your webhook to identify it later.
:::

:::WorkflowBlockItem
Optionally, in **API keys**, create an API key that consists of characters of your choice for additional security.&#x20;
:::

:::WorkflowBlockItem
Copy the webhook URL to your clipboard.
:::
::::

You've now added a **Webhooks&#x20;**> **Custom webhook** module to your .

## Step 2. Test the webhook in Postman

To check that your webhook works, send a sample request to it from Postman. This action mimics a real request from a third-party service.&#x20;

To send the request in Postman:

::::WorkflowBlock
:::WorkflowBlockItem
Paste your webhook URL and select **POST**.&#x20;
:::

:::WorkflowBlockItem
In **Body**, add the following configuration:&#x20;

```json
{
    "request" :  "test",
    "conversationID" : "333333"
}
```

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/R-3wljXY1ArUN3d2JfQNZ-20260211-100643.png)
:::

:::WorkflowBlockItem
In **Authorization**, if you have an API key:

1. In **Key**, enter `x-make-apikey`.
2. In **Value**, enter your APi key.&#x20;
:::

:::WorkflowBlockItem
Click **Send&#x20;**&#x74;o send the request to the webhook.&#x20;
:::

:::WorkflowBlockItem
Go back to your webhook  to check if you have a **Successfully determined&#x20;**&#x73;tatus below the webhook URL. This means that the webhook works.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::
::::

You've now tested your webhook URL in Postman.&#x20;

## Step 3. Add a Run an agent module

To add a **Make AI Agent (New)** > **Run an agent** module:

:::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, click the plus icon next to the **Webhooks** > **Custom webhook** module.&#x20;
:::

:::WorkflowBlockItem
In the app search, search for and click **Make AI Agent (New)**.&#x20;
:::

:::WorkflowBlockItem
Click the **Run an agent&#x20;**&#x6D;odule.&#x20;
:::

::::WorkflowBlockItem
In **Connection**, select an existing AI provider connection or click **Add&#x20;**&#x74;o create a new one.&#x20;

:::hint{type="info"}
If you don't want to set up an account with an AI provider, select **Make's AI Provider**.&#x20;
:::
::::

:::WorkflowBlockItem
In **Model**, select a model from your chosen AI provider.&#x20;
:::

:::WorkflowBlockItem
In **Instructions**, describe who the agent is and what it does. For example, "You are a helpful agent who answers questions."&#x20;
:::

:::WorkflowBlockItem
In **Input**, map the `request `value from the **Webhooks** > **Custom webhook** module.&#x20;
:::

::::WorkflowBlockItem
In **Conversation ID**, map the `conversationID` value from the **Webhooks** > **Custom webhook&#x20;**&#x6D;odule.&#x20;

The agent uses this ID to remember previous exchanges in the conversation and provide contextual responses when the user asks follow-up questions. The agent treats each new value as a new conversation.&#x20;

:::hint{type="info"}
In Postman, you set a random Conversation ID value.&#x20;
:::
::::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::
:::::

You've now added a **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule to your scenario.&#x20;

## Step 4. Add a Webhook response module

The **Webhooks&#x20;**> **Webhook response&#x20;**&#x6D;odule allows the agent to reply to the webhook request.&#x20;

To add the **Webhooks&#x20;**> **Webhook response** module:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, click the plus icon next to the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule.&#x20;
:::

:::WorkflowBlockItem
In the app search, click **Webhooks**.&#x20;
:::

:::WorkflowBlockItem
Click **Webhook&#x20;**&#x72;esponse.&#x20;
:::

:::WorkflowBlockItem
In **Body**, enter a simple JSON response:

```json
{
"response": "<Response>"
}
```
:::

:::WorkflowBlockItem
To replace the `<Response>` placeholder, map the Response value from the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/1yAqhtukacNRS-9VOpZyB-20260211-105140.png" size="50" width="475" height="145" position="center" darkWidth="475" darkHeight="145" showCaption="false"}
:::

:::WorkflowBlockItem
Toggle **Advanced settings**.&#x20;
:::

:::WorkflowBlockItem
In **Custom headers**, click **Add item** to define the type of data returned:

1. In **Key**, enter `content-type`.&#x20;
2. In **Value**, enter application/json.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::

:::WorkflowBlockItem
Toggle **Immediately as data arrives** to activate the , so it's ready to receive incoming data as soon as it comes.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::
::::

You've now built a webhook-triggered , so any third-party service can send data to the webhook and pass it into the agent.&#x20;

[title] Allow connections to and from Make IP addresses
[path] Explore more/Connections/

If you need  to connect to servers that are behind a firewall or that allow connections only from specific IP addresses, white-list the following IP addresses:

| **Zone**             | **Egress IPs (outbound from Make)**                   |
| -------------------- | ----------------------------------------------------- |
| us2.make.com         | 44.209.150.16<br />44.210.162.163<br />35.170.163.230 |
| us1.make.com         | 54.209.79.175<br />54.80.47.193<br />54.161.178.114   |
| eu2.make.com         | 34.254.1.9<br />52.31.156.93 <br />52.50.32.186       |
| eu1.make.com         | 54.75.157.176<br />54.78.149.203<br />52.18.144.195   |
| us1.make.celonis.com | 44.196.246.20<br />3.94.51.90<br />52.4.48.212        |
| eu1.make.celonis.com | 3.125.27.86<br />3.68.125.41<br />18.193.24.45        |

:::hint{type="info"}
 uses dynamic **Ingress IPs**.
:::


[title] Array functions
[path] Explore more/Functions/

You can use array functions to transform [array data](docId\:WohDzDDIOV0Ly51gr9Dgy). Array functions can, for example, search and sort the items in an array, perform mathematical operations, convert arrays to collections, reorder the items in an array, and more. Below is a list of supported array functions and a description what of each function does.

## add

**add (array; value1; value2; ...)**

Adds values specified in parameters to an array and returns that array.

## arrayDiff

**arrayDiff(array1; array2)**

Compares two arrays and returns items that are in the first array but not in the second.

```none
arrayDiff(1, 2, 3, 4; 3, 4, 5, 6)
1, 2
```

```none
arrayDiff(arrayDiff("a", "b", "c"; "b", "d")
"a", "c"
```

## arrayIntersect

**arrayIntersect(array1; array2)**

Compares two arrays and returns only the items found in both.

```none
arrayIntersect(1, 2, 3, 4; 3, 4, 5, 6)
3, 4
```

```none
arrayIntersect("a", "b", "c"; "b", "c", "d")
"b", "c"
```

## contains

**contains (array; value)**

Verifies if an array contains the value.

## deduplicate

**deduplicate (array)**

Removes duplicates from an array.

## distinct

**distinct (array; \[key])**

Removes duplicates inside an array. Use the *key* argument to access properties inside complex objects. To access nested properties, use dot notation. The first item in an array is index 1.

```none
distinct( Contacts[] ; name )
Removes duplicates inside an array of contacts by comparing the name property.
```

## first

**first (array)**

Returns the first element of an array.

## flatten

**flatten (array)**

Creates a new array with all sub-array elements concatenated into it recursively up to the specified depth.

More details about this function can be found in the [Array.prototype.flat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat) documentation.

## join

**join (array; separator)**

Concatenates all the items of an array into a string, using a specified separator between each item.

## keys

**keys (object)**

Returns an array of a given object's or array's properties.

## last

**last (array)**

Returns the last element of an array.

## length

**length (array)**

Returns the number of items in an array.

## map

**map (complex array; key;\[key for filtering];\[possible values for filtering separated by a comma])**

Returns a primitive array containing values of a complex array. Allows filtering values. Use raw variable names for keys.

```none
map( Emails[] ; email )
Returns a primitive array with emails.
```

```none
map( Emails[] ; email ; label ; work,home )
Returns a primitive array with emails that have a label equal to work or home.
```

::embed[See also [Mapping: Accessing array's elements by a key](docId:WohDzDDIOV0Ly51gr9Dgy) and our [Extract an item and/or its value from an array of collections](https://www.youtube.com/watch?v=W9CgDTeppmE) video tutorial.]{url="https://www.youtube.com/watch?v=W9CgDTeppmE"}

## merge

**merge (array1; array2; ...)**

Merges two or more arrays into one array.

## remove

**remove (array; value1; value2; ...)**

Removes values specified in the parameters of an array. Effective only in case of primitive arrays of text or numbers.

## reverse

**reverse (array)**

The first element of the array becomes the last element and vice versa.

## shuffle

**shuffle (array)**

Shuffles (randomly reorders) elements of an array.

## slice

**slice (array; start; \[end])**

Returns a new array containing only selected items. The first item in the array has an index of 0.

## sort

**sort (array; \[order]; \[key])**

Sorts values of an array. The valid values of the `order` parameter are:

- `asc` (default) - ascending order: 1, 2, 3, ... for type Number. A, B, C, a, b, c, ... for type Text.
- `desc` - descending order: ..., 3, 2, 1 for type Number. ..., c, b, a, C, B, A for type Text.
- `asc ci` - case insensitive ascending order: A, a, B, b, C, c, ... for type Text.
- `desc ci` - case insensitive descending order: ..., C, c, B, b, A, a for type Text.

Use the `key` parameter to access properties inside complex objects. Use raw variable names for keys. To access nested properties, use dot notation. The first item in an array is index 1.

```none
sort( Contacts[] ; name )
Sorts an array of contacts by the name property in default ascending order.
```

```none
sort( Contacts[] ; desc ; name )
Sorts an array of contacts by the name property in descending order.
```

```none
sort( Contacts[] ; asc ci ; name )
Sorts an array of contacts by the name property in case insensitive ascending order.
```

```none
sort( Emails[] ; sender.name )
Sorts an array of emails by the sender.name property.
```

## toArray

**toArray (collection)**

Converts a collection into an array of key-value collections.

## toCollection

**toCollection (array; key; value)**

Converts an array containing objects with key-value pairs into a collection.

[title] Step 3. Create a scenario to send tasks to the AI agent
[path] Make AI Agents/AI agent use case/

:::hint{type="success"}
This page reflects a **previous version of Make AI Agents**. For the latest information, see [Make AI Agent (New)](docId\:rXryASA6852hvhkZ6NhXU).&#x20;
:::

In this final step, we create the  to communicate with our agent. We will equip the agent with  as tools to perform the agent's tasks: list our shop inventory and order more items. We will use Slack to send tasks to our agent.

:::::WorkflowBlock
:::WorkflowBlockItem
Click the **Create a new scenario** button in your organization dashboard or in the list of .
:::

:::WorkflowBlockItem
Add the **Slack** > **Watch new events** module to the .
:::

:::WorkflowBlockItem
Set up the module:

1. In the **Webhook** field, select a Slack event webhook or click **Add** to create a new one.
2. In the **Event type** drop-down, select **New channel message**.
3. In the **Connection** field, select your Slack connection.
4. In the **Channel** field, select a channel you can use for testing the AI agent.
5. Set the  scheduling to **Immediately when data arrives**.
6. Click **Save** to confirm the module settings.
:::

:::WorkflowBlockItem
Click the module placeholder to add a new module to your . Search "AI agent" to get the **Make AI Agents >** **Run an agent** module and add it to your .
:::

:::WorkflowBlockItem
In the **Agent** field, select the agent you created in the [previous section](docId:_doNhkuw79HF58dDYbAkV).&#x20;
:::

:::WorkflowBlockItem
In **Tools**, click **Add tool**.
:::

::::WorkflowBlockItem
Add the  to the AI agent's tools:

1. Click the empty drop-down under **Select scenario**. The list of  in your team rolls down. Select the "List shop inventory"  we created in the [previous section](docId:_doNhkuw79HF58dDYbAkV).

:::hint{type="info"}
Use the search row at the top of the selection list to find the . Note the  description that appears under the name of the  and the name of the  folder.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/xSpGhDIsAwW5-e9QQh6Dl-yIAFalqsBkb4W4pj6TQRM-20250306-125757.png" size="70" width="906" height="676" position="center" showCaption="false"}
:::

1. Click **OK** to confirm the selection.
2. Add the "Create buy stock order"  created in the [previous section](docId:_doNhkuw79HF58dDYbAkV) in the same way.
3. Click **Save**.
::::

:::WorkflowBlockItem
Finish setting up the **Run an agent** module:

1. In the **Thread ID** field, map a unique identifier to keep the same thread for all communication with the agent. This optimizes the context sent to the agent with each module run and allows the agent to keep the history of previous conversations.
2. In the **Message 1** field, map the `Text` from the **Watch new events** module.
3. Click **Save** to confirm changes.
:::

::::WorkflowBlockItem
Add the **Ignore** error handler to the **Run an agent** module. Sometimes, the agent can take time to respond.&#x20;

:::hint{type="info"}
If the response time gets longer than 180 seconds, the module outputs the `ModuleTimeoutError` and  stops the .
:::

There are more sophisticated options to prevent the `ModuleTimeoutError`, but they are not part of this use case. If you want to learn more, check the module settings reference.
::::

:::WorkflowBlockItem
Add the **Slack** > **Create a message** module after the **Run an agent** module.
:::

:::WorkflowBlockItem
Set up the module:

1. In the **Connection** field, select your connection.
2. In the **Enter a channel ID or name** and **Channel type** fields, select values relevant for the channel where you want to send agent's replies and pick the channel in the next field.
3. In the **Text** field, map the `response` from the AI agent.
4. Click **Save** to confirm changes.
:::

:::WorkflowBlockItem
Update the name of your .
:::

:::WorkflowBlockItem
Save the .
:::
:::::

You should now test your agent. Send a message to the channel that is watched by the **Watch new events** module that contains the intent for the agent to either send the inventory information or order new stock. For example, request the agent to list the current shop inventory.

Check the channel where is the **Create a message** module sending agent's replies. You should see a reply from the agent listing the same data as we defined in the data store when we were setting up the  available to the agent.

[title] AI Agents configuration
[path] Make AI Agents/

:::hint{type="success"}
This page reflects a **previous version of Make AI Agents**. For the latest information, see [Make AI Agent (New)](docId\:rXryASA6852hvhkZ6NhXU).&#x20;
:::

The **AI Agents&#x20;**&#x63;onfiguration tab, located on the left sidebar, is where you can create and configure AI agents. This article serves as a reference for all fields in this tab.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/FzsjmBiHto_6xA8P1c_Mi-20250929-071833.png" size="80" width="2648" height="1368" position="center" showCaption="false"}

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**System prompt**
:::

:::VerticalSplitItem
The **System prompt&#x20;**&#x69;s your agent's core instructions. It outlines its purpose, behavior, and any guidelines or constraints it should follow. The agent follows these instructions across all workflows.

The **Improve&#x20;**&#x62;utton on the lower right-hand side is an optional prompt improvement feature. Use it to improve your existing prompt with AI and enable more consistent outcomes.&#x20;

When you click **Improve**, you can leave the field empty for an auto-improvement or suggest specific improvements. Click **Save&#x20;**&#x74;o apply the changes. &#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Context**
:::

:::VerticalSplitItem
In **Context**, upload external information to improve the agent's knowledge. Examples include internal knowledge bases or reference tables.

Once uploaded, context files are split into text segments called chunks, converted to vectors, and stored in Make’s RAG vector database.&#x20;

Current limitations for uploading in **Context**:

- TXT, PDF, DOCX, CSV, MD, and JSON files only
- 20 MB maximum per file&#x20;
- 50 files maximum per team (250 for Enterprise plans)
- 100 files maximum per organization (500 for Enterprise plans)
- 20 files maximum per AI agent

You can also upload context files in the **Make AI Agents&#x20;**&#x61;pp's [Context modules](https://help.make.com/make-ai-agents-app#tO34g).
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**MCP**
:::

:::VerticalSplitItem
In **MCP**, connect your agent to MCP servers to access additional tools.&#x20;

Click the **Add&#x20;**&#x62;utton to create a connection to an available MCP server, then toggle on the tools that you want the agent to access. Click **Save**.&#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Tools**
:::

:::VerticalSplitItem
**Tools&#x20;**&#x61;re modules and  your agent uses to make decisions and complete tasks across all workflows.&#x20;

When an agent processes requests, it uses tool names and descriptions to choose the right tool for the task. When using scenarios as tools, it processes [scenario inputs and outputs](docId:7odICud0KE9-Tr4XWUiqn) names and descriptions to choose the right data.&#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Testing & Training**
:::

:::VerticalSplitItem
**Testing & Training** is a chat interface that allows you to communicate with your agent in  instead of external tools like Telegram or Slack. Use it to test, debug, and refine your agent's responses.&#x20;

When you interact with your agent in **Testing & Training**, the agent shows you the tools it uses and their inputs and outputs.&#x20;

You can click the **New chat** button to start a new chat.&#x20;
:::
::::

For reference information on the **Make AI Agents&#x20;**&#x61;pp, see [Make AI Agents app](docId\:MDyjgeEIIRrXMd607V1xg).&#x20;

[title] Connect to Claude Desktop
[path] Model Context Protocol/MCP toolboxes/

In this guide, learn how to connect your MCP toolbox to Claude Desktop.

**Prerequisites&#x20;**

- Claude Desktop account (Pro plan)
- [MCP toolbox URL and key](docId\:JqY6i5aCFIm-kOm9ERv7A)&#x20;

To connect your MCP toolbox to Claude Desktop:&#x20;

:::::WorkflowBlock
:::WorkflowBlockItem
Open Claude Desktop.
:::

:::WorkflowBlockItem
Click your profile name on the left sidebar, then **Settings**.
:::

:::WorkflowBlockItem
In **Settings**, go to **Connectors**.
:::

:::WorkflowBlockItem
Click **Add custom connector**.
:::

:::WorkflowBlockItem
Name your MCP toolbox, then add your complete MCP toolbox URL following the structure below:

`<MCP TOOLBOX URL>`/t/`<TOOLBOX KEY>`/`<TRANSPORT METHOD>`
:::

::::WorkflowBlockItem
Replace the placeholders with your actual values:

- `MCP TOOLBOX URL`: The URL generated when you created the MCP toolbox.&#x20;
- `TOOLBOX KEY`: The key generated for the MCP toolbox.&#x20;
- `TRANSPORT METHOD`: The path of your preferred transport method. Stateless Streamable HTTP (/stateless) is recommended due to its connection reliability.&#x20;

Example: https\://eu2.make.com/mcp/server/•••••••••••••/t/•••••••••••••/stateless

:::hint{type="info"}
If you experience connection issues, add `/stream` instead of `/stateless` to the end of the URL. For SSE, add `/sse` instead.
:::
::::

:::WorkflowBlockItem
Click **Add**.&#x20;
:::
:::::

You have now connected your MCP toolbox to Claude Desktop. In **Configure**, you can view all tools available through this toolbox.&#x20;

:::hint{type="info"}
**MCP toolbox timeout:** Your MCP toolbox scenarios must finish running within 40 seconds. If a scenario runs longer, the connection times out and no outputs are returned to the client.
:::


[title] Make MCP server
[path] Model Context Protocol/

 MCP server allows MCP clients, such as Claude and ChatGPT, to access tools and resources in your  account and perform actions for you, such as running , checking data stores, or inviting members to an organization.&#x20;

In this guide, learn when to use Make MCP server, its setup requirements, and how to connect to an MCP client.&#x20;

:::hint{type="info"}
For full  MCP server technical requirements, refer to the documentation in the [Make Developer Hub](https://developers.make.com/mcp-server/).
:::

## When to use Make MCP server

Use  MCP server when:

- You want to run  and manage your  account from an MCP client
- You want minimal setup when connecting to a client
- You don't require granular control over which  in your organization the MCP client uses as tools

MCP toolboxes are another way to use MCP with Make. To learn more, see [MCP toolboxes](docId\:JqY6i5aCFIm-kOm9ERv7A).

## Permissions for MCP tools

Scopes determine the tools available to MCP clients. Make MCP server scopes include:

- **Scenario run scopes** allow clients to view and run activated  with on-demand scheduling.
- **Management scopes&#x20;**&#x61;llow clients to view and modify the contents of your  account, such as , teams, connections, webhooks, and data stores.

The scopes available to you depend on your [plan](https://www.make.com/en/pricing): users on all plans can use **scenario run&#x20;**&#x73;copes, and those on paid plans can use **management&#x20;**&#x73;copes.&#x20;

You select scopes when you connect to an MCP client, either in an OAuth consent screen or MCP token dialog. Only OAuth allows you to restrict access to a specific  organization.&#x20;

## Requirements for  as MCP tools&#x20;

You must set up the following to turn your  into tools for MCP clients:

- Set your  to **active&#x20;**&#x77;it&#x68;**&#x20;on-demand&#x20;**&#x73;cheduling.
- Select the **scenario run** scope (the `Run your scenarios` scope when connecting using OAuth, and the `mcp:use` scope when connecting using an MCP token). &#x20;
- Configure [scenario inputs and outputs](docId:7odICud0KE9-Tr4XWUiqn) to define the data exchanged between  and MCP clients.&#x20;

## Connect Make MCP server to MCP clients

When you connect Make MCP server to an MCP client, you allow the client to use  resources to respond to requests.&#x20;

To connect  MCP server to MCP clients:

1. Prepare the  that you want to use as MCP tools.&#x20;
2. Choose an MCP client, such as Claude and ChatGPT.&#x20;
3. Choose your connection type: [OAuth](https://developers.make.com/mcp-server/connect-using-oauth) or an [MCP token](https://developers.make.com/mcp-server/connect-using-mcp-token).&#x20;
4. Follow the steps in the client's `Usage `page in [OAuth](https://developers.make.com/mcp-server/connect-using-oauth) or [MCP token](https://developers.make.com/mcp-server/connect-using-mcp-token). If you don't see your client, refer to its documentation for connecting to remote MCP servers.

For a guided example, see [Get started with Make MCP server](docId\:c1k6YT4ouWS2m00e1mIDa).&#x20;

[title] Connect to Cursor
[path] Model Context Protocol/MCP toolboxes/

In this guide, learn how to connect your MCP toolbox to Cursor.

**Prerequisites**

- Cursor account&#x20;
- [MCP toolbox URL and key](docId\:JqY6i5aCFIm-kOm9ERv7A)&#x20;

To connect your MCP toolbox to Cursor:

:::::WorkflowBlock
:::WorkflowBlockItem
Open the desktop version of Cursor.
:::

:::WorkflowBlockItem
On the upper right-hand side, click the settings icon to open the **Cursor Settings&#x20;**&#x64;ialog.
:::

:::WorkflowBlockItem
In the left sidebar, click **Tools & Integrations** (or **Tools**, if you're on the Free Plan).
:::

:::WorkflowBlockItem
Under **MCP Tools**, click **Add Custom MCP** to open the editor for the `mcp.json` file.
:::

::::WorkflowBlockItem
In the editor, add the configuration below:

```json
{
  "mcpServers": {
    "make": {
      "url": "<MCP TOOLBOX URL>",
      "headers": {
        "Authorization": "Bearer <TOOLBOX_KEY>"
    }
  }
}
```

:::hint{type="info"}
Optionally, use an env variable when adding the toolbox key for additional security. To learn more, see [Cursor's MCP documentation](https://cursor.com/docs/context/mcp).&#x20;
:::
::::

:::WorkflowBlockItem
To complete the configuration, replace the placeholders with your actual values:

- `MCP TOOLBOX URL`: The URL generated when you created the MCP toolbox.&#x20;
- `TOOLBOX KEY`: The key generated for the MCP toolbox.&#x20;

Configuration example:

```json
{
  "mcpServers": {
    "make": {
      "url": "https://eu2.make.com/mcp/server/•••••••••••••",
      "headers": {
        "Authorization": "Bearer •••••••••••••"
    }
  }
}
```
:::
:::::

You've now connected your MCP toolbox to Cursor.

:::hint{type="warning"}
**Troubleshooting:** If an OAuth consent screen appears when you're trying to connect, your MCP toolbox URL or key is likely incorrect. For guidance, see [Configure your URL](docId\:JqY6i5aCFIm-kOm9ERv7A).
:::

:::hint{type="info"}
**MCP toolbox timeout:** Your MCP toolbox scenarios must finish running within 40 seconds. If a scenario runs longer, the connection times out and no outputs return to the client.
:::


[title] Get started with Make MCP server
[path] Model Context Protocol/Make MCP server/

In this step-by-step guide, build a  as an MCP tool in  and call it from an MCP client. By following this simple example, you'll learn how to extend AI capabilities with  by using  in AI assistants and other applications.

You'll follow these steps:&#x20;

1. Build a simple  as an MCP tool.
2. Connect  MCP server to an MCP client (Claude).
3. Call the  from the client.

## Prerequisites

-  account (any plan)
- Claude account

If you want to use a different MCP client, refer to the [Developer Hub documentation](https://developers.make.com/mcp-server/connect-using-oauth) in the `Usage `page of that client for Step 2.&#x20;

::::::ExpandableHeading
## Step 1. Build a scenario as an MCP tool

In this example, you'll build a  that searches your Gmail account for unread emails. When Claude calls it, the  returns the emails so Claude can read and summarize them.&#x20;

You'll follow these steps to build the :

1. **Add a Gmail > Search emails module&#x20;**&#x74;o return all unread emails.
2. **Set the scenario to active and schedule it to on demand** so MCP clients can discover it.
3. **Define scenario outputs&#x20;**&#x74;o specify the data returned to MCP clients.
4. **Add an Array aggregator module&#x20;**&#x73;o the MCP client receives all returned emails.
5. **Add a Scenarios > Return outputs module** and map outputs to the defined  outputs.&#x20;
6. **Add a scenario description** to help MCP clients decide when to call the scenario.

Once you complete these steps, your  is ready to be used as an MCP tool that Claude can call.&#x20;

### Add a Gmail module

The **Gmail&#x20;**> **Search emails** module returns all unread emails from Gmail.&#x20;

To create the  and add the Gmail module:

::::WorkflowBlock
:::WorkflowBlockItem
In , click **Create scenario&#x20;**&#x69;n the top-right corner.
:::

:::WorkflowBlockItem
On the canvas, click the giant plus and search for the **Gmail** >**&#x20;Search emails&#x20;**&#x6D;odule.
:::

:::WorkflowBlockItem
&#x20;Clic&#x6B;**&#x20;Create a connection**. In the dialog:&#x20;

1. Name your Gmail connection.&#x20;
2. Click **Sign in with Google&#x20;**&#x61;nd complete the consent flow for the Gmail account that  can access.&#x20;
:::

:::WorkflowBlockItem
In the module settings, configure th&#x65;**&#x20;Gmail&#x20;**> **Search emails** module:

1. In **Filter type**, selec&#x74;**&#x20;Gmail filter** from the dropdown. &#x20;
2. In **Query**, add an `is:unread` filter to show only unread emails.
3. &#x20;In **Limit**, enter the maximum number of emails to return at once. For this example, enter 10.&#x20;
4. In **Advanced settings&#x20;**> **Content format**, selec&#x74;**&#x20;Full content&#x20;**&#x66;rom the dropdown. This email format is easy to process and includes body, subject, and other key fields.&#x20;
5. Clic&#x6B;**&#x20;Save**, then **Run once**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/G48B-9bbP-IEibAGP-Rkz-20251024-100741.png" size="70" width="1032" height="989" position="center" showCaption="false"}
:::
::::

You've now added a Gmail module.&#x20;

### Schedule and activate the &#x20;

All  used as MCP tools must be active with on-demand scheduling to be exposed to MCP clients.&#x20;

To schedule and activate the :

::::WorkflowBlock
:::WorkflowBlockItem
Click the clock icon on the **Gmail&#x20;**> **Search emails** module to open **Schedule settings**.
:::

:::WorkflowBlockItem
In the **Run scenario&#x20;**&#x66;ield, selec&#x74;**&#x20;On demand&#x20;**&#x66;rom the dropdown, then click **Save.&#x20;**
:::

:::WorkflowBlockItem
Click **Activate scenario**.&#x20;
:::
::::

You've now scheduled and activated the .

### Define  outputs

In MCP tools,  outputs define the data that scenarios return to MCP clients.&#x20;

To define the  outputs:

:::::WorkflowBlock
:::WorkflowBlockItem
Click the **Scenario inputs and outputs** icon on the  toolbar.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/GrViSrvuYw1wQZXRV7lwd-20251106-102254.png" size="60" width="732" height="102" position="center" showCaption="false"}
:::

::::WorkflowBlockItem
In **Scenario outputs**, configure your output item, **email\_data**, which returns the message data of all unread emails to the MCP client:

- **Name**: email\_data
- **Description**: All of an email's message data
- **Type**: Dynamic collection
- **Required**: Yes

:::hint{type="info"}
While your  output is **email\_data** here, output items can include any  data—such as the email sender or body, in this case.&#x20;
:::

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/zmiKj5Ron8wXnivUfmcOl-20251105-161450.png" size="40" width="337" height="673" position="center" showCaption="false"}
::::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::
:::::

You've now defined  outputs.&#x20;

### Add an Array aggregator

As th&#x65;**&#x20;Gmail&#x20;**> **Search emails&#x20;**&#x6D;odule returns unread emails as individual [bundles](docId\:ZR2rWmILMJ_19R85MlAwM), the **Array aggregator&#x20;**&#x6D;odule is needed to accumulate all emails into one bundle. This action enables  to return all emails, not only the first, to the MCP client.

To add an Array aggregator:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Add the **Array aggregator&#x20;**&#x6D;odule to the **Gmail&#x20;**> **Search emails&#x20;**&#x6D;odule.&#x20;
:::

:::WorkflowBlockItem
In the module settings, in **Aggregated fields**, select these fields to aggregate:&#x20;

- **Date&#x20;**
- **Subject**
- **From (email)**
- **Snippet**
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

You've now added an Array aggregator.&#x20;

### Add a Return output module

To return the defined  outputs to the MCP client, the  must end with a **Scenarios&#x20;**> **Return output&#x20;**&#x6D;odule.&#x20;

To add this module:

::::WorkflowBlock
:::WorkflowBlockItem
Add the **Scenarios&#x20;**> **Return output** module to the **Array aggregator&#x20;**&#x6D;odule.&#x20;
:::

:::WorkflowBlockItem
In **email\_data**, map the `Array aggregator [bundle]`, shown below. This bundle contains the aggregated email message data of all unread emails.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/8OoK8spTOkpTzTQdBer6Z-20251106-101754.png" size="60" width="920" height="459" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the toolbar.&#x20;
:::
::::

You've now added a **Scenarios&#x20;**> **Return output&#x20;**&#x6D;odule.&#x20;

### Describe the  &#x20;

The  description helps MCP clients and other AI systems to understand when to use the .

To describe the :

::::WorkflowBlock
:::WorkflowBlockItem
Next to the  name, click the arrow icon, then click **Save changes**.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/ka3SQ1VrKvw2Oe7eTFbKO-20251024-114150.png" size="60" width="510" height="120" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
In the top-right corner, click **Options&#x20;**&#x61;nd select **Edit description**.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/MklLxvsbWJtOY3jibKcMK-20251024-114455.png" size="60" width="492" height="300" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
In **Description**, briefly describe the purpose of this scenario.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/05TtZCmlofoQorkqEUPJx-20251024-115256.png" size="60" width="615" height="559" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::
::::

Once you've described your ,  it's ready to use as an MCP tool for an MCP client. Next, connect  to your client, Claude.
::::::

::::::ExpandableHeading
## Step 2. Connect Make MCP server to Claude&#x20;

Connect  MCP server to an MCP client, Claude, to allow the client to call your .

To connect:&#x20;

:::::WorkflowBlock
:::WorkflowBlockItem
Open Claude and click your profile name on the left sidebar.
:::

:::WorkflowBlockItem
Select **Settings**.&#x20;
:::

:::WorkflowBlockItem
Go to **Connectors**.&#x20;
:::

:::WorkflowBlockItem
Click **Browse connectors**.
:::

:::WorkflowBlockItem
Search for Make and click the plus sign.&#x20;
:::

::::WorkflowBlockItem
In the OAuth consent screen, select a  organization and its granted scopes.&#x20;

1. In **Organization**, select the organization that contains the MCP tool that you built earlier.&#x20;
2. Select your scopes:
   - If you're on a **Free plan**: Select **Run your scenarios&#x20;**&#x6F;nly.
   - If you're on &#x61;**&#x20;Paid plan**: You can also select management scopes such as **View and modify your scenarios** and **View and modify your teams and organizations**.

:::hint{type="info"}
You [determine the MCP tools available](https://help.make.com/make-mcp-server#QCFKp) through your scopes:

- The scenario run scope (**Run your scenarios**) allows clients to view and run active  with on-demand scheduling.
- Management scopes (**View and modify your scenarios** an&#x64;**&#x20;View and modify your teams and organizations**) allow clients to view and modify the contents of your  account.&#x20;
:::

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/5HHOggrCERdBHYbTTZT4Q-20251103-103109.png" size="60" width="686" height="1065" position="center" showCaption="false"}
::::

:::WorkflowBlockItem
Click **Allow**.&#x20;
:::

:::WorkflowBlockItem
In **Connectors**, notice that  is now connected.
:::

:::WorkflowBlockItem
&#x20;Optionally, click **Configure&#x20;**&#x74;o define tool-based permissions.&#x20;
:::
:::::

You've now connected Make MCP server to Claude.&#x20;
::::::

:::::ExpandableHeading
## Step 3. Call your MCP tool from Claude

To call your  from the chat in Claude:

::::WorkflowBlock
:::WorkflowBlockItem
In Claude, select **New chat&#x20;**&#x69;n the left sidebar.
:::

:::WorkflowBlockItem
Ask Claude a question that your MCP tool can help answer. For example, "What are my unread emails today?"&#x20;
:::

:::WorkflowBlockItem
When Claude requests permission to use your MCP tool, click **Allow once** or **Always allow**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/CHPpGAP_ft0s9EnTjEqOX-20251103-133011.png)
:::

:::WorkflowBlockItem
After you grant permission, Claude calls the MCP tool and returns the  outputs defined earlie&#x72;**&#x20;(email\_data)**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/g8Na7Wdxxq8yZeQmSbWNt-20251103-133507.png)
:::
::::

You've now called your tool from Claude. &#x20;
:::::

Now that you've built an MCP tool in  and connected  to an MCP client, you can explore [additional connection methods](https://developers.make.com/mcp-server/) and build more complex scenarios.

[title] Date and time functions
[path] Explore more/Functions/

Use date and time functions to convert and transform date and time data. For example, you can change the date format, convert time based on timezones, convert text to date or time data, and more. Below is a list of supported date and time functions with descriptions and details for each.

## formatDate (date; format; \[timezone])

**When to use it:** You have a date value that you wish to convert (format) to a text value (textual human-readable representation) like `12-10-2019 20:30` or `Aug 18, 2019 10:00 AM`

### Parameters

The second column indicates the expected type. If different type is provided, [type coercion](docId\:IhFBo_As3zrC346CWrMmO) is applied.

| **Parameter** | **Expected type** | **Description**                                                                                                                                                                                                                                                                                                                                |
| ------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| date          | date              | Date value to be converted to a text value.                                                                                                                                                                                                                                                                                                    |
| format        | text              | Format specified using [tokens for date/time formatting](docId\:KUmuKVBfixzZTKuZyE7XZ).<br />Example: `DD.MM.YYYY HH:mm`                                                                                                                                                                                                                       |
| timezone      | text              | Optional. The timezone used for the conversion.<br />See [List of tz database time zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List), column "TZ database name" for the list of recognized timezones.<br />If omitted,  uses the organization's timezone. You can [edit your time zone](docId\:Bn3S0_8AZJDynxbNzNP_a). |

### Return value and type

Text representation of the given Date value according to the specified format and timezone. Type is Text.

### Example

The Organization's and Web's timezone were both set to `Europe/Prague` in the following examples.

| **Function**                                                | **Result**          |
| ----------------------------------------------------------- | ------------------- |
| `formatDate(1. Date created;` MM/DD/YYYY `)`                | 10/01/2018          |
| `formatDate(1. Date created;` YYYY-MM-DD hh\:mm A `)`       | 2018-10-01 09:32 AM |
| `formatDate(1. Date created;` DD.MM.YYYY HH\:mm `;` UTC `)` | 01.10.2018 07:32    |
| `formatDate(now;` MM/DD/YYYY HH\:mm `)`                     | 19/03/2019 15:30    |

## parseDate (text; format; \[timezone])

**When to use it:** You have a [text](docId\:hdc1mr5JWOaqEIiS266kB) value representing a date (e.g. `12-10-2019 20:30` or `Aug 18, 2019 10:00 AM`) and you wish to convert (parse) it to a [Date](docId\:hdc1mr5JWOaqEIiS266kB) value (binary machine-readable representation).

### Parameters

The second column indicates the expected type. If different type is provided, [Type Coercion](docId\:IhFBo_As3zrC346CWrMmO) is applied.

| **Parameter** | **Expected type** | **Description**                                                                                                                                                                                                                                                                                                                                                                     |
| ------------- | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| text          | text              | Text value to be converted to a date value.                                                                                                                                                                                                                                                                                                                                         |
| format        | text              | Format specified using [tokens for date/time formatting](docId\:KUmuKVBfixzZTKuZyE7XZ).<br />Example: `DD.MM.YYYY HH:mm`                                                                                                                                                                                                                                                            |
| timezone      | text              | Optional. The timezone used for the conversion.<br />See [List of tz database time zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List), column "TZ database name" for the list of recognized timezones.<br />If omitted,  uses the organization's timezone. You can [edit your time zone](docId\:Bn3S0_8AZJDynxbNzNP_a).<br />Example: `Europe/Prague`, `UTC` |

### Return value and type

Date representation of the given text value according to the specified format and timezone. Type is date.

### Examples

Please note that in the following examples the returned date value is expressed according to ISO 8601, but the actual resulting value is of type date.

```none
parseDate( 2016-12-28 ; YYYY-MM-DD )
= 2016-12-28T00:00:00.000Z
```

```none
parseDate( 2016-12-28 16:03 ; YYYY-MM-DD HH:mm )
= 2016-12-28T16:03:00.000Z
```

```none
parseDate( 2016-12-28 04:03 pm ; YYYY-MM-DD hh:mm a )
= 2016-12-28T16:03:06.000Z
```

```none
parseDate( 1482940986 ; X )
= 2016-12-28T16:03:06.000Z
```

## addDays (date; number)

Returns a new date as a result of adding a given number of days to a date. To subtract days, enter a negative number.

```none
addDays( 2016-12-08T15:55:57.536Z ; 2 )
= 2016-12-10T15:55:57.536Z
```

```none
addDays( 2016-12-08T15:55:57.536Z ; -2 )
= 2016-12-6T15:55:57.536Z
```

## addHours (date; number)

Returns a new date as a result of adding a given number of hours to a date. To subtract hours, enter a negative number.

```none
addHours( 2016-12-08T15:55:57.536Z ; 2 )
= 2016-12-08T17:55:57.536Z
```

```none
addHours( 2016-12-08T15:55:57.536Z ; -2 )
= 2016-12-08T13:55:57.536Z
```

## addMinutes (date; number)

Returns a new date as a result of adding a given number of minutes to a date. To subtract minutes, enter a negative number.

```none
addMinutes( 2016-12-08T15:55:57.536Z ; 2 )
= 2016-12-08T15:57:57.536Z
```

```none
addMinutes( 2016-12-08T15:55:57.536Z ; -2 )
= 2016-12-08T15:53:57.536Z
```

## addMonths (date; number)

Returns a new date as a result of adding a given number of months to a date. To subtract months, enter a negative number.

```none
addMonths( 2016-10-08T15:55:57.536Z ; 2 )
= 2016-12-08T15:57:57.536Z
```

```none
addMonths( 2016-10-08T15:55:57.536Z ; -2 )
= 2016-08-08T15:57:57.536Z
```

## addSeconds (date; number)

Returns a new date as a result of adding a given number of seconds to a date. To subtract seconds, enter a negative number.

```none
addSeconds( 2016-12-08T15:55:57.536Z ; 2 )
= 2016-12-08T15:57:57.536Z
```

```none
addSeconds( 2016-12-08T15:55:57.536Z ; -2 )
= 2016-12-08T15:53:57.536Z
```

## addYears (date; years)

Returns a new date as a result of adding a given number of years to a date. To subtract years, enter a negative number.

```none
addYears( 2016-12-08T15:55:57.536Z ; 2 )
2018-08-08T15:55:57.536Z
```

```none
addYears( 2016-12-08T15:55:57.536Z ; -2 )
2014-08-08T15:55:57.536Z
```

## setSecond (date; number)

Returns a new date with the seconds specified in parameters. Accepts numbers from 0 to 59. If a number is given outside of this range, it will return the date with the seconds from the previous or subsequent minute(s), accordingly.

```none
setSecond( 2015-10-07T11:36:39.138Z ; 10 )
= 2015-10-07T11:36:10.138Z
```

```none
setSecond( 2015-10-07T11:36:39.138Z ; 61 )
= 2015-10-07T11:37:01.138Z
```

## setMinute (date; number)

Returns a new date with the minutes specified in parameters. Accepts numbers from 0 to 59. If a number is given outside of this range, it will return the date with the minutes from the previous or subsequent hour(s), accordingly.

```none
setMinute( 2015-10-07T11:36:39.138Z ; 10 )
= 2015-10-07T11:10:39.138Z
```

```none
setMinute( 2015-10-07T11:36:39.138Z ; 61 )
= 2015-10-07T12:01:39.138Z
```

## setHour (date; number)

Returns a new date with the hour specified in parameters. Accepts numbers from 0 to 59. If a number is given outside of this range, it will return the date with the hour from the previous or subsequent day(s), accordingly.

```none
setHour( 2015-10-07T11:36:39.138Z ; 10 )
= 2015-08-07T06:36:39.138Z
```

```none
setHour( 2015-10-07T11:36:39.138Z ; 61 )
= 2015-08-06T18:36:39.138Z
```

## setDay (date; number/name of the day in english)

Returns a new date with the day specified in parameters. It can be used to set the day of the week, with Sunday as 1 and Saturday as 7. If the given value is from 1 to 7, the resulting date will be within the current (Sunday-to-Saturday) week. If a number is given outside of the range, it will return the day from the previous or subsequent week(s), accordingly.

```none
setDay( 2018-06-27T11:36:39.138Z ; monday )
= 2018-06-25T11:36:39.138Z
```

```none
setDay( 2018-06-27T11:36:39.138Z ; 1 )
= 2018-06-24T11:36:39.138Z
```

```none
setDay( 2018-06-27T11:36:39.138Z ; 7 )
= 2018-06-30T11:36:39.138Z
```

## setDate (date; number)

Returns a new date with the day of the month specified in parameters. Accepts numbers from 1 to 31. If a number is given outside of the range, it will return the day from the previous or subsequent month(s), accordingly.

```none
setDate( 2015-08-07T11:36:39.138Z ; 5 )
= 2015-08-05T11:36:39.138Z
```

```none
setDate( 2015-08-07T11:36:39.138Z ; 32 )
= 2015-09-01T11:36:39.138Z
```

## setMonth (date; number/name of the month in English)

Returns a new date with the month specified in parameters. Accepts numbers from 1 to 12. If a number is given outside of this range, it will return the month in the previous or subsequent year(s), accordingly.

```none
setMonth( 2015-08-07T11:36:39.138Z ; 5 )
= 2015-05-07T11:36:39.138Z
```

```none
setMonth( 2015-08-07T11:36:39.138Z ; 17 )
= 2016-05-07T11:36:39.138Z
```

```none
setMonth( 2015-08-07T11:36:39.138Z ; january )
= 2015-01-07T12:36:39.138Z
```

## setYear (date; number)

Returns a new date with the year specified in parameters.

```none
setYear( 2015-08-07T11:36:39.138Zv ; 2017 )
= 2017-08-07T11:36:39.138Z
```

### Calculate n-th day of the week in a month

If you need to calculate a date corresponding to the n-th day of week in a month (e.g. 1st Tuesday, 3rd Friday, etc.), you can use the following formula:

```text
{{addDays(setDate(1.date; 1); 1.n * 7 - formatDate(addDays(setDate(1.date; 1); "-" + 1.dow); "E"))}}
```

The formula contains the following items:

| Value    | Description                                                                                                                                          |
| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `1.n`    | n-th day: <br />* `1` for **1**st Tuesday
* `2` for **2**nd Tuesday
* `3` for **3**rd Tuesday
* etc.                                                 |
| `2.dow`  | Day of the week:<br />* `1` for Monday
* `2` for Tuesday
* `3` for Wednesday
* `4` for Thursday
* `5` for Friday
* `6` for Saturday
* `7` for Sunday |
| `1.date` | The date determines the month. To calculate n-th day of week in **current** month use the `now` variable                                             |

If you want to calculate only one specific case, e.g. 2nd Wednesday, you may replace the items `1.n` and `2.dow` in the formula with the corresponding numbers. For 2nd Wednesday in the current month you would use the following values:

- `1.n` = `2`
- `1.dow` = `3`
- `1.date` = `now`
- `setDate(now;1)` returns first of current month
- `formatDate(....;E)` returns day of week (1, 2, ... 6)
- see the [original source](https://exceljet.net/formula/get-nth-day-of-week-in-month) for the rest

### Calculate days between dates

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-8Msh41cFz4bOfwL3TLvMo-20250226-101332.png" size="50" width="432" height="84" position="flex-start" alt="Calculate days between d" darkWidth="432" darkHeight="84" showCaption="false"}

```text
{{round((2.value - 1.value) / 1000 / 60 / 60 / 24)}}
```

The values of `D1` and `D2` above have to be of type date. If they are of type string (e.g. "20.10.2018"), use the `parseDate()` function to convert them to type date.

The `round()` function is used for cases when one of the dates falls within the daylight savings time period and the other does not. In these cases, the difference in hours is by one hour less/more and dividing it by 24 gives a non-integer results.

### Calculate the last day/millisecond of a month

When specifying a date range (e.g. in a search module) spanning the whole previous month as a closed interval (the interval that **includes** both its limit points), it is necessary to calculate the last day of the month.

2019-09-01 ≤ D ≤ **2019-09-30**

```text
{{addDays(setDate(now; 1); -1)}}
```

In some cases, it is necessary to calculate not only the last day of month, but its last millisecond:

2019-09-01T00:00:00.000Z ≤ D ≤ **2019-09-30T23:59:59.999Z**

```text
{{parseDate(parseDate(formatDate(now; "YYYYMM01"); "YYYYMMDD"; "UTC") - 1; "x")}}
```

If the result should respect your timezone settings, simply omit the UTC argument:

```text
{{parseDate(parseDate(formatDate(now; "YYYYMM01"); "YYYYMMDD") - 1; "x")}}
```

However, it is preferable to use a half-open interval instead (the interval that **excludes** one of its limit points), specifying the first day of the following month instead and replacing the **less or equal than** operator with **less than**:

2019-09-01 ≤ D **\< 2019-10-01**

2019-09-01T00:00:00.000Z ≤ D **\< 2019-10-01T00:00:00.000Z**

### Transform seconds into hours, minutes and second

```text
{{floor(1.seconds / 3600)}}:{{floor((1.seconds % 3600) / 60)}}:{{((1.seconds % 3600) % 60)}}
```

Values of `second` should be number type. This function is suited only if the second value is less than 86400 ( less than a day ).

[title] Introduction to AI agents
[path] Make AI Agents/

:::hint{type="success"}
This page reflects a **previous version of Make AI Agents**. For the latest information, see [Make AI Agent (New)](docId\:rXryASA6852hvhkZ6NhXU).&#x20;
:::

:::hint{type="info"}
The **Make AI Agents&#x20;**&#x61;pp is available o&#x6E;**&#x20;all plans** using **Make's AI Provider**, with the option to use **custom AI provider connections** on **paid plans**. The app is available in **open beta**, so both product functionality and pricing may change.&#x20;
:::

An AI agent is an autonomous system that acts to achieve its goals while following certain rules. Think of it like a skilled assistant who performs tasks for you after understanding what you want to do.&#x20;

 AI agents consist of a few fundamental components that can be thought of as a brain (LLM), instructions (system prompt), memory (context), tools (modules, scenarios and MCP tools), and thinking process (reasoning):

- A **Large Language Model (LLM)&#x20;**&#x61;cts as the agent's brain, powering its reasoning for decision-making.
- The **system prompt&#x20;**&#x69;nstructs the agent on how to behave. Like a job description, it defines its role, limitations, and processes.
- **Context**, or files stored in the agent's long-term memory, provides extra information that helps the agent tailor its responses to your needs. For example, an internal knowledge base or company policies.&#x20;
- **Tools&#x20;**&#x70;rovide the agent with the capabilities to achieve its goals. In , those can include modules,  , and MCP tools.&#x20;
- **Reasoning&#x20;**&#x69;s the agent's thought process when approaching its tasks. When you use a reasoning model in an agent, [reasoning ](docId\:MDyjgeEIIRrXMd607V1xg)is visible when the agent believes that deeper reasoning is required.

In the next section, you will explore these concepts in more detail.


[title] Access Make Grid
[path] Make Grid/

Make Grid is available through the following three access points:

### Access  Grid from the Make platform

::::WorkflowBlock
:::WorkflowBlockItem
Log in to your  account.
:::

:::WorkflowBlockItem
In the left sidebar, click **Grid**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/eU7_7at7ve4Em19McQq8O-20251214-155506.png)
:::
::::

Make Grid opens without focusing on any specific scenario.&#x20;

### &#x20;Access  Grid from the scenario list

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **More&#x20;**> **Scenarios**.
:::

:::WorkflowBlockItem
In the **All scenarios** list, click **Grid.**

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/vKIiGukoXinLcm8al5iD1-20251214-155918.png)
:::
::::

Make Grid opens, focusing on the selected scenario.

### Access  Grid from the scenario editor

::::WorkflowBlock
:::WorkflowBlockItem
In the **All scenarios** list, click on any of the scenarios.
:::

:::WorkflowBlockItem
In the top right corner, click **Open in Grid**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/xBPBRm43nOFcDX2eW1R9K-20260317-092250.png)
:::
::::

Make Grid opens, focusing on the selected scenario.

[title] Fix missing data errors
[path] Error handling/Common errors and fixes/

App modules output the `BundleValidationError` when the input bundle is missing the required data. For example, if you map data from a search module that didn't return any results.

When a module in your  outputs the `BundleValidationError`, you should check the reason for the error. You should consider redesigning your  if you can avoid the error to make your automation more robust. You can use the [`if`](docId\:pMt2j3NdX4B4BP51gXk6T) or [`ifempty`](docId\:pMt2j3NdX4B4BP51gXk6T) functions or use [Filtering](docId\:TOeIVU0dBv44bMRjCMliC).

Otherwise, you will have to handle the error to keep your  active.

In the following examples, we will consider two situations:

1. Ignore the missing data or use a placeholder.
2. The missing data are not a problem. You just want to keep your  enabled.
3. Get notified about errors and store the  run.
4. The missing data are not acceptable. If you get the `BundleValidationError`, you want to check what happened in detail.

To learn more about how to approach error handling in  you can check the [Overview of error handling](docId\:sN7McE4QmL-Q6wDTOOcSy).

## Ignore the missing data or use a placeholder

You might work with data that sometimes contains missing values. You don't need to fix them or investigate why they are missing. Your main goal is to avoid disabling your .

We will use the following  for testing:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/wX4WSbHjXr2iItcN9-mIO_uuid-b8cc239f-82b1-d822-29c3-d6023d500362.png)

The  reads data, modifies it, and uses it for a search in the data store. One piece of data is empty, which causes the `BundleValidationError` in the search module.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/AopklPJxy4sSAt6veYlSu_uuid-1a7a1e56-3c3e-874c-2387-23e4e8e93af6.png)

To keep your  running even when the error happens, you can use the [Skip error handler](docId\:j9XCttcBfDwq3q3u144FN) or [Resume error handler](docId:7xRuGbeY0uTl58ucpwp7v).

1. Right-click the module that is causing the error.
2. Select **Add an error handler**.
3. A pop-up appears. From the list of error handlers, select the **Skip** error handler.

The final  should look like this:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/uXRce8A7eFoMNB7ykv5fn_uuid-50c22ca4-d87e-a9f2-0c0c-f2370c71a587.png)

:::hint{type="info"}
Ignore error handler in the above image has been renamed to **Skip**.
:::

## Get notified about errors and store the Make run

There might be  you want to check closely when an error happens. You can do that with a custom error handling setup. If an error occurs in your , you get an email with the error description and a link to the . In addition, you store the error bundle as incomplete execution to resolve it manually.

We will use the following  for testing:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/wX4WSbHjXr2iItcN9-mIO_uuid-b8cc239f-82b1-d822-29c3-d6023d500362.png)

The  reads data, modifies them and uses them for search in the data store. One piece of data is empty, which causes the `BundleValidationError` in the search module.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/AopklPJxy4sSAt6veYlSu_uuid-1a7a1e56-3c3e-874c-2387-23e4e8e93af6.png)

To store unfinished  runs and get a custom email notification when an error occurs, follow these steps:

1. Right-click the module that is causing the error.
2. Select **Add an error handler**.
3. A pop-up appears. From the list of error handlers, select the **Retry** error handler.
4. A pop-up appears with the **Retry** error handler settings. Set automatic completion to **No** to always resolve the error manually. Confirm the settings with the **OK** button. To learn more about the **Retry** error handler settings, see the [Retry error handler](docId\:cPTWi8yI45ZL3M5slzjNV) topic.&#x20;
5. Click the  settings icon and enable storing of incomplete executions.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/JITv5bFhH08k053Dq2pdC-20260204-150539.png" size="50" width="720" height="1392" position="center" darkWidth="720" darkHeight="1392" showCaption="false" indent="2"}

6. Right-click the connection between the erroring module and the **Retry** error handler. Choose **Add a module**. Make inserts a gray module placeholder between the erroring module and the **Retry** error handler.
7. Click the gray module placeholder and search for the **Gmail** app. Insert the **Send an email** module into the module placeholder.
8. Set up the **Send an email** module. In the **Content** field, add the notification message you want to receive when an error happens. Use the  [system variables](docId:5UJ3-0KGuD4jwffMxAm-9) to get the metadata. For example:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/czenG-shi1mvFkpbrgkDO_uuid-3a13b84f-81a1-07ce-c61c-d8b30baec274.png" size="64" width="884" height="974" position="center" darkWidth="884" darkHeight="974" showCaption="false" indent="2"}

You set up error handling in your  to create an incomplete execution and notify you with an email when an error happens.

The example  with error handling looks like this:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Tr6S71di4lCLllhUshdt6_uuid-3616c054-88b2-38b5-a085-37448ce75729.png)

:::hint{type="info"}
Break error handler in the above image has been renamed to **Retry**.
:::


[title] Tokens for date/time parsing
[path] Explore more/Functions/

Date/time parsing tokens are special combinations of letters you can use to read and extract date/time data. The following tables list the tokens you can use to parse data in your functions:

## Year, month, and day tokens

| **Input**  | **Example**      | **Description**                                             |
| ---------- | ---------------- | ----------------------------------------------------------- |
| `YYYY `    | `2014`           | 4 or 2 digit year                                           |
| `YY`       | `14`             | 2 digit year                                                |
| `Y`        | `-25`            | Year with any number of digits and sign                     |
| `Q`        | `1..4`           | Quarter of a year<br />Sets month to first month in quarter |
| `M MM`     | `1..12`          | Month number                                                |
| `MMM MMMM` | `Jan..December`  | Month name                                                  |
| `D DD`     | `1..31`          | Day of month                                                |
| `Do`       | `1st..31st`      | Day of month with ordinal numbers                           |
| `DDD DDDD` | `1..365`         | Day of year                                                 |
| `X`        | `1410715640.579` | Unix timestamp                                              |
| `x`        | `1410715640579`  | Unix ms timestamp                                           |

## Week year, week, and weekday tokens

| **Input**  | **Example**    | **Description**       |
| ---------- | -------------- | --------------------- |
| `ddd dddd` | `Mon...Sunday` | Day name              |
| `GGGG`     | `2014`         | ISO 4 digit week year |
| `GG`       | `14`           | ISO 2 digit week year |
| `W WW`     | `1..53`        | ISO week of year      |
| `E`        | `1..7`         | ISO day of week       |

## Hour, minute, second, millisecond, and offset tokens

| **Input**  | **Example** | **Description**                                                                |
| ---------- | ----------- | ------------------------------------------------------------------------------ |
| `H HH`     | `0..23`     | Hours (24 hour time)                                                           |
| `h hh`     | `1..12`     | Hours (12 hour time used with `a A`)                                           |
| `k kk`     | `1..24`     | Hours (24 hour time from 1 to 24)                                              |
| `a A`      | `am pm`     | Post or ante meridiem (Note the one character `a p` are also considered valid) |
| `m mm`     | `0..59`     | Minutes                                                                        |
| `s ss`     | `0..59`     | Seconds                                                                        |
| `S SS SSS` | `0..999`    | Fractional seconds                                                             |
| `Z ZZ`     | `+12:00`    | Offset from UTC as `+-HH:mm`, `+-HHmm`, or `Z`                                 |


[title] Connect to OpenAI API
[path] Model Context Protocol/MCP toolboxes/

In this guide, learn how to connect your MCP toolbox through the OpenAI API.

**Prerequisites**

- [MCP toolbox URL and key](docId\:JqY6i5aCFIm-kOm9ERv7A)&#x20;

To connect to your MCP toolbox through the OpenAI API:

:::::WorkflowBlock
:::WorkflowBlockItem
Use the following configuration for your API call:

```json
curl https://api.openai.com/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
  "model": "gpt-4.1",
  "input": "List all available tools.",
  "tools": [
    {
      "type": "mcp",
      "server_label": "make",
      "server_url": "<MCP TOOLBOX URL>/t/<TOOLBOX KEY>/<TRANSPORT METHOD>",
      }
    ]
  }'
```
:::

::::WorkflowBlockItem
In `server_url`, replace the placeholders with your actual values:

- `MCP TOOLBOX URL`: The URL generated when you created the MCP toolbox.&#x20;
- `TOOLBOX KEY`: The key generated when creating an MCP toolbox.&#x20;
- `TRANSPORT METHOD`: The path of your preferred transport method. Stateless Streamable HTTP (`/stateless`) is recommended due to its connection reliability.&#x20;

:::hint{type="info"}
If you experience connection issues, add `/stream` instead of `/stateless` to the end of the URL. For SSE, add `/sse` instead.
:::

Example configuration:

```json
curl https://api.openai.com/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
  "model": "gpt-4.1",
  "input": "List all available tools.",
  "tools": [
    {
      "type": "mcp",
      "server_label": "make",
      "server_url": "https://eu2.make.com/mcp/server/•••••••••••••/t/•••••••••••••/stateless",
      }
    ]
  }'
```
::::
:::::

You've now connected your MCP toolbox through the OpenAI API.

:::hint{type="info"}
**MCP toolbox timeout:** Your MCP toolbox scenarios must finish running within 40 seconds. If a scenario runs longer, the connection times out and no outputs are returned to the client.
:::


[title] Introduction to MCP
[path] Model Context Protocol/

Model Context Protocol (MCP) is a protocol that helps AI and other systems communicate easily and securely. It connects AI applications, such as Claude and ChatGPT, to external systems by providing access to tools and knowledge. An MCP server is the program that provides this connection between systems.&#x20;

Make provides its own MCP server that connects  directly to AI. When connected using MCP,  and AI build on each other's strengths:  gives AI access to its large network of connections to third-party services and data, while AI intelligently chooses the right  resource to use for each task. &#x20;

In this guide, learn more about using MCP with Make, including key concepts, MCP options, and where to go next to get started.&#x20;

## Benefits of using MCP

MCP offers several benefits, both in general and when used with Make through Make MCP server.&#x20;

**Benefits of MCP:**

- Extend what AI can do for you and what it knows with external tools and resources
- One universal connection to any tool or data source&#x20;
- Give AI real-time access to external data beyond its training data
- Allow AI to perform specific actions for you in external systems based on requests

**Benefits of Make MCP server:**

- Use one MCP server to access a wide range of tools instead of multiple servers
- Gain visibility into the tools that AI uses, with all tool runs visible in &#x20;
- Use tools that you built in   to help AI perform specific tasks, so you control the tools used and support reliable and cost-effective AI decision-making

## Key concepts

In the context of , MCP uses these core concepts:

- **MCP client:** AI applications and coding tools, such as ChatGPT, Claude, and Cursor, that call MCP tools using MCP.&#x20;
- **MCP tools:&#x20;**&#x54;he tools available on an MCP server that MCP clients use to perform actions, for example, listing and adding customers in a CRM system. In , MCP tools are active, on-demand  and other elements of your  account.
- **MCP server**: Programs that provide MCP tools, resources, and prompts to MCP clients.&#x20;
- **MCP resources:** Static files, such as text, images, and video, that an MCP server shares with the MCP client to reference.&#x20;
- **Make MCP server**:  acting as a server that exposes MCP tools to MCP clients.
- **Scenario:&#x20;**&#x54;he automated workflow that you build in .&#x20;
- **Transport method**: The format for exchanging data between MCP servers and clients, for example, Streamable HTTP and Server-Sent-Events (SSE).&#x20;
- **Connection type**: The method used to securely authenticate connections to an MCP server, for example, OAuth or API keys.&#x20;

## How MCP works with Make&#x20;

When you connect MCP clients like Claude to , your  and other  resources become available as tools on an MCP server. When you send an MCP client a request, the client reviews tools, chooses the right one based on its name and description, runs the tool, and retrieves the outputs.&#x20;

## Options for using MCP with Make&#x20;

You have two ways to use MCP with : **Make MCP server&#x20;**&#x61;n&#x64;**&#x20;MCP toolboxes**.

### Make MCP server

[Make MCP server](docId:95jjtReuq1qmRYiBxVBkX) connects  to MCP clients to allow clients to perform actions for you. It provides access to both **scenario run&#x20;**&#x74;ools and **management&#x20;**&#x74;ools. There is no option to limit MCP client access to a specific set of  or give access to other users.&#x20;

Use it when you want to:

- Run scenarios and manage your Make account from a MCP client
- Set up quickly without the need to restrict the available tools&#x20;

### MCP toolboxes

[MCP toolboxes](docId\:JqY6i5aCFIm-kOm9ERv7A) are dedicated Make MCP servers that consist of a specific set of  used as tools. With easy tool selection and the option to generate multiple keys, they're ideal when different clients need different sets of tools.&#x20;

Use it when you want to:&#x20;

- Control which tools are available to MCP clients
- Securely share different tool sets with team members and clients

To get started, refer to the documentation of the MCP feature that best suits your needs.&#x20;

[title] Create your first AI agent
[path] Make AI Agent (New)/

In this guide, learn how to create your first agent in . The process includes these steps:

1. **Plan an agent&#x20;**&#x73;o you have a framework to build from.
2. **Build the scenario&#x20;**&#x77;here the agent lives.
3. **Configure the agent&#x20;**&#x73;o it understands its job and how to do it.&#x20;
4. **Add the agent's tools&#x20;**&#x73;o it has the capabilities to perform its tasks.&#x20;
5. **Add the agent's knowledge&#x20;**&#x73;o it has additional context to tailor its responses.&#x20;
6. **Test the agent&#x20;**&#x73;o it performs as expected before going live.&#x20;

Once you complete the steps, you'll have a working agent ready to use in your scenarios.&#x20;

:::ExpandableHeading
## Step 1. Plan your AI agent

Plan your agent so you know what it does, the tools and knowledge it needs, and what triggers it, for example:

- **What the agent does:&#x20;**&#x43;ontent marketing specialist who creates blogs for social media based on trending industry topics
- **Tools:** Google Drive, Airtable, LinkedIn, and Facebook modules
- **Knowledge:** The company style guide and product glossary
- **Trigger:** Google Sheets document with trending topics
:::

::::::ExpandableHeading
## Step 2. Build your AI agent scenario

In , your agent belongs to a . To start building, sign in to  and click **Create scenario** at the top.&#x20;

### Add a trigger&#x20;

Your AI agent  typically starts with a trigger. A [trigger ](https://help.make.com/types-of-modules#triggers)is the module that starts the  and determines how the agent receives new requests or information.&#x20;

To add a trigger module:

:::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, click the giant plus.
:::

:::WorkflowBlockItem
In the app search, enter the name of the third-party service you need, such as **Gmail&#x20;**&#x6F;r **Google Sheets**, and click its app.&#x20;
:::

:::WorkflowBlockItem
Select the module that corresponds to the action you need, for example, **Watch Changes** or **Search Rows**.&#x20;
:::

:::WorkflowBlockItem
Click the module, configure it based on your requirements, and save.&#x20;
:::

:::WorkflowBlockItem
Click the clock icon on the module.
:::

::::WorkflowBlockItem
In **Schedule settings**, configure how often the  runs.&#x20;

:::hint{type="info"}
The option to start the  immediately when new data arrives is only available in [instant triggers](https://help.make.com/types-of-modules#instant-triggers), which are marked with an instant tag. For information on all scheduling options, see [Schedule a scenario](https://help.make.com/schedule-a-scenario).&#x20;
:::
::::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::
:::::

You've now added a trigger to the AI agent .&#x20;

### Add more modules (optional)

Optionally, add more modules before the agent.&#x20;

Certain use cases require additional modules, such as providing your agent information that frequently changes. Download file, web search, and chat message modules are examples of modules you can add.

To add more modules:

::::WorkflowBlock
:::WorkflowBlockItem
Click the plus icon next to the trigger.&#x20;
:::

:::WorkflowBlockItem
In the app search, enter the name of the third-party service you need, and click its app.&#x20;
:::

:::WorkflowBlockItem
Select the module that corresponds to the action you need.
:::

:::WorkflowBlockItem
Click the module and configure it based on your requirements.
:::

:::WorkflowBlockItem
Click **Save**.
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::

:::WorkflowBlockItem
Repeat steps 1-5 for any other modules you want to add.&#x20;
:::
::::

Once the other modules ready, you can add the agent. Optionally, return to this step at the end to add a module after the agent.

### Add your AI agent

To add the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule to your :

::::WorkflowBlock
:::WorkflowBlockItem
Click the plus icon on the right side of the last module in your .
:::

:::WorkflowBlockItem
Search for **Make AI Agent (New)&#x20;**&#x61;nd click the app. &#x20;
:::

:::WorkflowBlockItem
Click th&#x65;**&#x20;Run an agent&#x20;**&#x6D;odule.&#x20;
:::
::::

You've now added the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule to your . Next, configure its settings.&#x20;
::::::

::::::ExpandableHeading
## Step 3. Configure your AI agent

In the module settings of the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule, configure the agent's AI provider and model, instructions, and other specifics.&#x20;

### Choose an AI provider and model

AI providers, such as Make's AI Provider, OpenAI, and Claude, connect your agent to large language models (LLMs). To choose your AI provider and model:

:::::WorkflowBlock
:::WorkflowBlockItem
In **Connection&#x20;**&#x69;n the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule, click **Add&#x20;**&#x74;o create a new AI provider connection, or select an existing one from the dropdown.&#x20;
:::

::::WorkflowBlockItem
Select an AI provider connection from the **Connection type&#x20;**&#x64;ropdown.&#x20;

:::hint{type="info"}
If you're on a **Free plan**, select Make's AI Provider. If you're on a **paid plan**, select Make's AI Provider or a custom AI provider connection, such as OpenAI or Anthropic Claude.&#x20;
:::
::::

:::WorkflowBlockItem
Name the connection and configure the remaining fields. If the connection requires an API or access key, obtain the key from your AI provider account.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.
:::

::::WorkflowBlockItem
From the **Model&#x20;**&#x64;ropdown, select a model. The AI provider offers the models listed.

:::hint{type="info"}
Models vary in processing speed, reasoning abilities, token costs, and effectiveness in specific tasks. Research the models available to decide which best fits your goals.&#x20;
:::
::::
:::::

Your agent now has an AI provider and model for its decision-making.&#x20;

### Add instructions

Instructions tell the agent what its job is and how to do it. The agent follows these rules across all tasks and requests.&#x20;

In **Instructions**, clearly and systematically outline the agent's role, behavior, goals, and the steps to achieve them.&#x20;

### Add inputs and files

Specify the inputs that the agent processes in each  run. Optionally, add input files to process with the inputs.

To add inputs and files:

:::::WorkflowBlock
:::WorkflowBlockItem
In the **Make AI Agent (New)&#x20;**> **Run an agent (New)&#x20;**&#x6D;odule, in **Input**, add any specific, one-time requests or mapped data from previous modules.&#x20;
:::

::::WorkflowBlockItem
Optionally, in **Input&#x20;**&#x66;iles, add the file that the agent receives from a previous module to process with its inputs:

1. In **File name**, name the file to identify it later.&#x20;
2. In **Data**, click the text field and map the file from the module that downloads files.&#x20;

:::hint{type="info"}
**File requirements**

To input files to the agent, you must select Make's AI Provider, OpenAI, Anthropic Claude, or Gemini, and a model that supports files.&#x20;

To learn more about supported file formats, see [Input files for AI agents](docId\:EtjXD5CKUre4KBFRmAdfP).
:::
::::
:::::

You've now added inputs and files to your agent.&#x20;

### Add additional specifics (optional)

In the remaining fields, configure any additional settings, such as:

- Conversation ID
- Maximum conversation history
- Step timeout
- Response format&#x20;

To add these specifics:

:::::WorkflowBlock
:::WorkflowBlockItem
In the **Make AI Agent** >**&#x20;Run an agent&#x20;**&#x6D;odule, in **Conversation ID**, specify a custom ID so your agent remembers your interactions in a single thread and can reply to them.&#x20;
:::

::::WorkflowBlockItem
Alternatively, map a thread ID or timestamp from a previous module, such as the thread ID of an email or Slack message.&#x20;

:::hint{type="info"}
If you leave the **Conversation ID** blank, the agent has no memory of your previous interactions and generates a new ID with each run.&#x20;
:::
::::

:::WorkflowBlockItem
Toggle **Advanced settings&#x20;**&#x66;or more setting options.&#x20;
:::

:::WorkflowBlockItem
If you added a Conversation ID, specify in **Maximum conversation history&#x20;**&#x74;he maximum number of replies the agent remembers in the conversation.&#x20;
:::

:::WorkflowBlockItem
In **Step timeout**, enter the maximum number of seconds an agent runs in each step before it fails. If you leave this field blank, the default time is 300 seconds (5 minutes). 
:::

:::WorkflowBlockItem
In **Response format**, specify the response format that the agent returns.

- Select **Text&#x20;**&#x69;n the dropdown to return text as output.&#x20;
- Select **Data structure** in the dropdown to return responses in a custom structure that you define.
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::
:::::

You've now configured your agent. Adjust its settings at any time.
::::::

::::::ExpandableHeading
## Step 4. Add tools

Give your agent modules, scenarios, and MCP servers to use as tools.&#x20;

### Add modules

A module is a built-in or third-party app that performs a specific action. Add modules as agent tools for one-step tasks, such as monitoring new customer contacts, sending emails, downloading files, or updating spreadsheets.&#x20;

To add a module as a tool:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, hover over the plus icon of the **Make AI Agent (New)** > **Run an agent** module, and click **Add tool**.
:::

:::WorkflowBlockItem
In the app search, enter the name of the third-party service you need, such as Gmail, and click its app.&#x20;
:::

:::WorkflowBlockItem
Select the module that corresponds to the action you need.
:::

:::WorkflowBlockItem
Click the module, configure it according to your requirements, and save.&#x20;
:::
::::

You've now added a module as a tool for your agent.&#x20;

### Add scenarios

 are automated workflows consisting of multiple modules. Add  as agent tools for more complex tasks that include several steps or third-party services.&#x20;

You have two ways to add a  as a tool: choose an existing  or create a new one.&#x20;

To choose a&#x6E;**&#x20;existing scenario:**

:::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, hover over the plus icon of the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule, and click **Add tool**.
:::

:::WorkflowBlockItem
In the app search, search for and click **Scenarios**.
:::

:::WorkflowBlockItem
Select the **Call a scenario** module to open a dialog.&#x20;
:::

::::WorkflowBlockItem
Select an existing scenario from the **Scenario&#x20;**&#x64;ropdown.&#x20;

:::hint{type="info"}
If you want the  to return data to the agent, the  must end with a [Return outputs ](docId\:f8FHRvoQwCk48nX_FJRyf) module.
:::
::::

:::WorkflowBlockItem
In **Description**, describe what the  does and when the agent uses it.&#x20;
:::

:::WorkflowBlockItem
In **Wait for the scenario to finish**, select **Yes&#x20;**&#x69;f you want to wait for the called  to finish its run or return output before continuing this scenario's run.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::
:::::

You've now added an existing  as a tool for your agent.&#x20;

To create a **new scenario**:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, hover over the plus icon of the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule, and click **Add tool**.
:::

:::WorkflowBlockItem
In the app search, search for and click **Scenarios**.
:::

:::WorkflowBlockItem
Select the **Call a scenario** module to open a dialog.&#x20;
:::

:::WorkflowBlockItem
From the **Scenario** dropdown, click **Create scenario**.&#x20;
:::

:::WorkflowBlockItem
Name your , for example, "Watches new rows and sends emails."
:::

:::WorkflowBlockItem
Describe what the  does so the agent knows when to use it, for example, "Watches new rows in Google Sheets and sends a welcome email to new customers."
:::

:::WorkflowBlockItem
Define [scenario inputs and outputs](docId:7odICud0KE9-Tr4XWUiqn). Inputs are data parameters that the agent fills when it calls the new scenario, and outputs are data that the new scenario returns to the agent.&#x20;

Examples of inputs and output items:

- **Input items:&#x20;**&#x43;ustomer email address, first name, last name, email body, and row ID from a spreadsheet
- **Output items**: Email timestamp and success status&#x20;

Add as many as needed.&#x20;
:::

:::WorkflowBlockItem
Click **Create scenario**.&#x20;
:::

:::WorkflowBlockItem
In the new  , add the modules you need between the **Scenarios&#x20;**&#x6D;odules.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/LiE5He2xuWV7r1u-MfYkT-20260124-115357.png" size="70" width="1428" height="526" position="center" darkWidth="1428" darkHeight="526" showCaption="false"}
:::

:::WorkflowBlockItem
Configure the added modules, including mapping the previously defined   inputs to the relevant fields.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/W9QmifqLxLvCXbk78zMMw-20260124-115649.png" size="70" width="1307" height="984" position="center" darkWidth="1307" darkHeight="984" showCaption="false"}
:::

:::WorkflowBlockItem
In the **Scenarios&#x20;**> **Return output&#x20;**&#x6D;odule, map the  outputs.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/t3EHD1pW3Xh43TN3MU_Ky-20260124-120558.png" size="70" width="845" height="381" position="center" darkWidth="845" darkHeight="381" showCaption="false"}
:::

:::WorkflowBlockItem
Toggle **On demand** on the  toolbar to activate the  and allow the agent to call it when needed.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::
::::

You've now added a new  as a tool for your agent.&#x20;

### Add MCP tools&#x20;

Give your agent access to tools from third-party MCP servers when the actions that you want it to perform are unavailable through the standard  apps.&#x20;

To add an MCP server as a tool:

:::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, hover over the plus icon of the **Make AI Agent (New)** > **Run an agent** module, and click **Add MCP**.
:::

:::WorkflowBlockItem
In **Connection**, click **Add&#x20;**&#x74;o create a connection to an MCP server, or select an existing connection from the dropdown.
:::

::::WorkflowBlockItem
In **Tools**, select the MCP tools you want the agent to access, or click **Select All&#x20;**&#x74;o select all tools.&#x20;

:::hint{type="info"}
Multiple MCP servers and tools may result in high AI token usage. Limit MCP servers and tools to what the agent needs to perform its tasks.&#x20;
:::
::::

:::WorkflowBlockItem
Click **Save**.
:::
:::::

You've now added an MCP server as a tool for your agent. Add more MCP servers at any time.&#x20;
::::::

::::::ExpandableHeading
## Step 5. Add knowledge

[Knowledge](docId\:TCBtvwTxWJamwcfffIgy6) is reference information that the agent uses to tailor its responses to your goals. Knowledge files are typically static, such as company guidelines or glossaries. The agent stores files in a RAG vector database, retrieving relevant parts based on your request.&#x20;

You have two ways to add knowledge files to your agent:

- Directly with the **Make AI Agent (New)** app for static files and a quick setup
- With the **Knowledge&#x20;**&#x61;pp for files that update frequently

:::hint{type="info"}
Before adding a file to your agent, give it a name that clearly decribes what it contains.&#x20;
:::

### With the Make AI Agent (New) app

To add knowledge files directly with the **Make AI Agent (New)** app:

:::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder,<font color="#101010"> </font>hover over the plus icon of <font color="#101010"></font> **Make AI Agent (New)** > **Run an agent** module, and click **Knowledge.&#x20;**
:::

:::WorkflowBlockItem
In **Knowledge files**, click **Upload files**.&#x20;
:::

::::WorkflowBlockItem
Clic&#x6B;**&#x20;Choose file** to select a file to upload. Supported file types include JSON, TXT, CSV, and PDF.&#x20;

:::hint{type="info"}
File upload consumes tokens for converting file content to vectors and generating file descriptions. Tokens vary based on file size.&#x20;
:::
::::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click the pencil icon next to your added file.&#x20;
:::

:::WorkflowBlockItem
Optionally, in **Description**, edit the AI-generated description of your file, or leave it as is.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Toggl&#x65;**&#x20;Advanced settings** for more file settings.&#x20;
:::

:::WorkflowBlockItem
Optionally, specify a search query that the agent uses to find information in your file, or allow the agent to decide the query (recommended).&#x20;
:::

:::WorkflowBlockItem
Optionally, specify the number of results (relevant chunks of the file) the agent returns, or allow the agent to decide the number (recommended).&#x20;
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::
:::::

You've now added a knowledge file to the agent.&#x20;

### With the Knowledge app

You can add knowledge files with the **Knowledge&#x20;**&#x61;pp in your main , or in a separate one dedicated to uploading and managing knowledge.&#x20;

To avoid uploading files each time the main  runs, create a separate :&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In a new tab, click **Create scenario** at the top.&#x20;
:::

:::WorkflowBlockItem
In the  Builder, click the giant plus.&#x20;
:::

:::WorkflowBlockItem
In the app search, search for and click the name of the third-party service that downloads a file, such as Google Drive or Gmail.&#x20;
:::

:::WorkflowBlockItem
Select the download file module, such as the **Google Drive** > **Download a File** module.&#x20;
:::

:::WorkflowBlockItem
Configure the download file module settings and click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::

:::WorkflowBlockItem
Click **Run once&#x20;**&#x74;o get mappable data for later modules.&#x20;
:::

:::WorkflowBlockItem
Click the plus icon next to the download file module.
:::

:::WorkflowBlockItem
In the app search, search for and click the **Knowledge** app.
:::

:::WorkflowBlockItem
Select the **Upload knowledge** module.
:::

:::WorkflowBlockItem
In **File name**, map the output value from the download file module that corresponds to the file name, for example, `Name`. &#x20;
:::

:::WorkflowBlockItem
In **File content**, map the output value from the download file module that corresponds to the file content, for example, `Data`.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.
:::

:::WorkflowBlockItem
Click **Run once&#x20;**&#x74;o upload the knowledge file.&#x20;
:::
::::

You've now added knowledge to your agent in a separate .

:::hint{type="info"}
Alternatively, to add knowledge with the **Knowledge&#x20;**&#x61;pp in your main , add the download file and **Knowledge&#x20;**> **Upload knowledge** modules after the **Make AI Agent (New)** > **Run an agent** module.
:::
::::::

:::::ExpandableHeading
## Step 6. Test your AI agent

Once you've created your agent, test how well it performs its tasks.&#x20;

You have a few ways to test agents in :

- Chat with the agent
- Run the scenario
- Disable tools
- View previous  run details

### Chat with the agent

Chat is an interface where you send sample requests to your agent to test its performance.&#x20;

To chat with the agent:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Hover over the plus icon of the **Run an agent** app and click **Chat**, or right-click the **Run an agent** app and select **Chat with Agent**.&#x20;
:::

:::WorkflowBlockItem
Enter a request, for example, "What is my recipe for this week?"&#x20;
:::

:::WorkflowBlockItem
The agent calls the relevant tools and returns a response. If the called tools have a red error symbol, expand a tool and view its output.&#x20;
:::

:::WorkflowBlockItem
Adjust your agent's settings, tools, or knowledge based on the results.&#x20;
:::

:::WorkflowBlockItem
Return to the chat and resend the sample request.
:::

:::WorkflowBlockItem
Repeat steps 3-5 until the agent performs as expected.&#x20;
:::
::::

You've now used chat to test your agent.&#x20;

### Run the scenario

Test your agent directly in the  Builder using trigger data from previous  runs. To run the  with existing data:

::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, click the downward arrow next t&#x6F;**&#x20;Run once**.&#x20;
:::

:::WorkflowBlockItem
From the **Scenario run&#x20;**&#x64;ropdown, select a previous scenario run to use for test data.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/qHAzfpdsCNZ2LPwOv3u6u-20260126-132409.png" size="60" width="576" height="498" darkWidth="576" darkHeight="498" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Run once**.&#x20;
:::

:::WorkflowBlockItem
Repeat steps 1-3 until the agent performs as expected.&#x20;
:::
::::

You've now run your  using existing data.&#x20;

### Disable a tool

Disable one or more tools to check how the agent performs without them. The agent only calls enabled tools.&#x20;

To disable a tool:

::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, right-click the route of the tool you want to disable.&#x20;
:::

:::WorkflowBlockItem
Click **Disable tool**.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/zbL6Zdv2sTZKNulwOI04R-20260522-084551.png" size="60" width="1002" height="696" position="center" darkWidth="1002" darkHeight="696" showCaption="false"}
:::
::::

You've now disabled a tool. To enable it, right-click the same route and click **Enable tool**.&#x20;

### View scenario run details&#x20;

View previous scenario runs in detail to understand how to resolve the errors that your agent or its tools return.

To view  run details:

::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, click the back arrow next to the scenario name.&#x20;
:::

:::WorkflowBlockItem
Click **History**.&#x20;
:::

:::WorkflowBlockItem
Next to the  run with an **Error&#x20;**&#x73;tatus, click **Details**.&#x20;
:::

:::WorkflowBlockItem
In the Run details, click the output bubble.
:::

:::WorkflowBlockItem
To view outputs, expand an operation in the **Output** tab. Some key fields to focus on include **Response&#x20;**&#x61;nd **Metadata&#x20;**> **Execution steps**.&#x20;
:::

:::WorkflowBlockItem
To view the agent's thought process, go to the **Reasoning&#x20;**&#x74;ab.&#x20;
:::

:::WorkflowBlockItem
Adjust your agent's settings, tools, or knowledge based on what you discover.&#x20;
:::
::::

You've now viewed  run details to understand how to resolve errors in your agent.&#x20;

Once you've tested your agent, it's now ready to use in your .&#x20;
:::::

:::::ExpandableHeading
## Manage your AI agent (optional)

Optionally, once you've created and tested your agent, you can duplicate or delete it.&#x20;

Duplicate an agent to use it again in a . You can do this by cloning or copying it:

- Clone to duplicate only the **Make AI Agent (New)** > **Run an agent** module&#x20;
- Copy to duplicate the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule and its tools

### Clone your AI agent&#x20;

To clone an agent:

::::WorkflowBlock
:::WorkflowBlockItem
In the   Builder, right-click the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule.
:::

:::WorkflowBlockItem
Click **Clone**.&#x20;
:::

:::WorkflowBlockItem
Link the cloned **Run an agent&#x20;**&#x6D;odule to the .
:::

:::WorkflowBlockItem
Click the module and adjust any of its settings.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::
::::

You've now cloned your agent.&#x20;

### Copy your AI agent and its tools

To copy an AI agent and its tools:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In the   Builder, press the `Shift` key while clicking the canvas.&#x20;
:::

:::WorkflowBlockItem
Drag over the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule and its tools.&#x20;
:::

:::WorkflowBlockItem
Press `Ctrl` + `C` if you have Windows, or `Command` + `C` if you have a Mac.&#x20;
:::

:::WorkflowBlockItem
Click the canvas.&#x20;
:::

:::WorkflowBlockItem
Press `Ctrl` + `V` if you have Windows, or `Command` + `V` if you have a Mac.&#x20;
:::

:::WorkflowBlockItem
Link the copied **Run an agent&#x20;**&#x6D;odule and tools to the .
:::

:::WorkflowBlockItem
Click the **Run an agent** module and its tools, and adjust any of their settings.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::
::::

You've now copied your agent.&#x20;

### Delete your AI agent

You have two ways to delete your agent: by deleting the **Make AI Agent (New)** > **Run an agent** module, or by deleting the .

To delete the **Run an agent&#x20;**&#x6D;odule:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In the   Builder, right-click the **Make AI Agent (New)** > **Run an agent** module.
:::

:::WorkflowBlockItem
Click **Delete module**.&#x20;
:::
::::

You've now deleted the **Make AI Agent (New)** > **Run an agent** module. To add a new one, right-click and select **Add a module**.&#x20;

To delete a :&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Click **Scenarios&#x20;**&#x6F;n the left sidebar.&#x20;
:::

:::WorkflowBlockItem
In the  list, find the AI agent  you want to delete.&#x20;
:::

:::WorkflowBlockItem
Click the three-dot menu next to the .
:::

:::WorkflowBlockItem
Click **Delete**.&#x20;
:::
::::

You've now deleted the .
:::::

Next, to walk through a guided use case, see [Sales outreach AI agent use case](docId\:eG7rWQ8eRecFa8XngZtLZ).

[title] Make DevTool
[path] Explore more/Developers/

 DevTool allows you to debug your   by adding an extra pane to the [Chrome Developer Tools](https://developer.chrome.com/docs/devtools/open). Using this new debugger pane, you can check all the manual runs of your , review all the performed operations, and see the details of every API call performed.  Additionally, with  DevTools you can see which module, operation, or response caused an error in your . This helps you debug your  and get your  back on track.

## Install Make DevTool

::::WorkflowBlock
:::WorkflowBlockItem
Open the [Chrome Web Store](https://chromewebstore.google.com/) and search for  DevTool. You can also use [this direct link](https://chrome.google.com/webstore/detail/integromat-devtool/ainnemkhpnjgkhcdkfbhmlenkhehmfhi) to install the extension.
:::

:::WorkflowBlockItem
Click the **Add to Chrome** button. Confirm your decision in the pop-up window that opens.
:::
::::

 DevTool is installed in the Chrome Developer Tools pane.

To start using  DevTool, open a  in , press **Control+Shift+I** or **F12** (Windows) or **Command+Option+I** (Mac) on your keyboard to open Chrome Developer Tools, and switch to the  tab.

We recommend docking the Chrome Developer Console to the bottom to maintain a better view of your modules.

![Make DevTool](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Ky4N-YXuHL2WaQP5l-eaX_uuid-6251607f-29a2-e7c0-5df4-b86acc3ca628.png)

## Use Live Stream

Live Stream displays what is happening in the background of your  when you hit the **Run once** button.

It allows you to view the following information for each module in your :

- Request Headers (API endpoint URL, HTTP method, time and date the request has been called at, request headers, and query string)
- Request Body
- Response Headers
- Response Body

After you run a , select **Live Stream** from the left-side panel and click one of the tabs in the right panel of   DevTool to view the information.

![DevTool live stream](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/fw2RT2SbzEVck-h_HKGdv_uuid-d3b7454e-91be-d37e-e3ed-f41d011abe8d.png)

### Search in logs

Enter the search term into the search field in the left panel of  DevTool to display requests and responses that contain the search term.

![Search in logs](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/k-2vRs99aqpnkKralwCnL_uuid-f1cc3d5e-55f7-ff33-ce10-03d80d209a97.png)

### Clear the list of recorded requests

To clear the list of requests recorded by  DevTool, click the bin icon next to the search field.

### Enable console logging

To enable logging into the console, click the computer icon next to the search field.

When logging is enabled, the color of the computer icon switches to green.

![Enable console logging](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/_vgFn-JVWfsjTS0Nrg_ZX_uuid-cc8bcb60-a4f2-413b-089e-c0ee5c672e8d.png)

Click the same icon one more time if you want to disable logging. The icon turns gray when the feature is disabled.

### Retrieve the request in the raw JSON format or cURL

To retrieve the raw JSON content of the request, click the **Copy RAW** button in the top-right corner of the DevTool's panel.

![Copy raw](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/owNEAyM7u4dEhFKFyXkGK_uuid-14e71fe7-460c-d243-6c36-bd0335c7c611.png)

Similarly, you can retrieve cURL using the **Copy cURL** button next to **Copy RAW** in the top-right corner of  DevTool's panel.

## Scenario Debugger

 Debugger shows you the historical logs of your . The  Debugger displays the history of the  runs and enables you to search for modules by their names or IDs.

### Search for modules

To search for the module by its name or ID number, enter the search term in the search field in the left panel of the DevTool.

![Search for modules](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/B8slvl665JoyfiEaJBUeY_uuid-5a2556bc-0bee-14b7-9eb7-430645e41d4d.png)

### Open module settings

Double-click the module's name in the list to open its settings in the Scenario Builder.

### View request or response details

You can open the request details by clicking the operation in the list.

![View request or response details](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/qBhvz6pBjiahaEtHFpZW2_uuid-ffb594ed-c58d-6cd5-2574-2eb4023d4293.png)

## Tools

The following set of tools makes setting up your \{\{}} easier.

### Focus a module

Opens settings of the selected module.

:::hint{type="info"}
Module ID is the number you see in your Scenario Builder next to the name of the module. The same apps used multiple times in one  will have different IDs for each module.
:::

| **Field** | **Description**                                                                             |
| --------- | ------------------------------------------------------------------------------------------- |
| Module ID | Enter the ID of the module for which you want to open settings and click the **Run** button |

### Find module(s) by mapping

Allows you to search modules' values for the specified term.

| **Field**       | **Description**                                                                                                                                               |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Keyword         | Enter the term you want to search for and click the **Run** button. The numbers in the output are IDs of modules that contain the term you have searched for. |
| Use Only Values | You can enable this option to only search in module fields' values, or disable it to also search in module fields' names.                                     |

:::hint{type="info"}
The search is performed through the *name* and *label* parameters.
:::

### Get app metadata

Retrieves metadata of the app by the app's module name or ID. This is useful, for example, when you need to retrieve the app's version used in your  for the technical support or the developer of the app.

| **Field**     | **Description**                                            |
| ------------- | ---------------------------------------------------------- |
| Source Module | Select the module for which you want to retrieve metadata. |

### Copy mapping

Copies values from the source module to the target module.

:::hint{type="info"}
Make sure you set the correct source and target modules because values in the target module will be overwritten. If you select different types of modules, values in the target module will be deleted.
:::

| **Field**     | **Description**                                                                                         |
| ------------- | ------------------------------------------------------------------------------------------------------- |
| Source Module | Select the module or enter the ID of the module from which you want to copy field values.               |
| Target Module | Select the module or enter the ID of the module into which you want to insert the source module values. |

Switch on the **map** toggle to manually enter the ID of the modules for mapping.

When the source and target modules are specified, click the **Run** button to perform the action.

### Copy filter

Copies the filter settings from the source module to the target module.

The copy action is performed on the filter placed on the left side of the selected module.

![Copy filter](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/AUXCYBz7TuCBqiieH_CdP_uuid-835b9c06-ed8f-6dd7-6081-5e32bd44b1a8.png)

| **Field**                       | **Description**                                                                                                                                                                        |
| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Source Module                   | Select the module or enter the ID of the module from which you want to copy filter values.                                                                                             |
| Target Module                   | Select the module or enter the ID of the module into which you want to insert the filter values from the source module. Note that the values in the target module will be overwritten. |
| Preserve Fallback Route setting | If enabled and the source filter is set as the fallback route, then the target filter is also set as the fallback route.                                                               |

When the source and target modules are specified, click the **Run** button to copy the filter.

### Swap connection

Duplicates a connection from the source module to every module of the same app in the .

| Field         | Description                                                                                                                                                            |
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Source Module | Select the module or enter the ID of the module from which you want to duplicate the connection and set the same connection for every module of the same app in your . |

### Swap variable

Searches for specified variables in the  and replaces them with a new variable.

| **Field**        | **Description**                                                                                                                                                                                                                                                            |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Variable to Find | Select the variable which you want to be replaced from the module in your  and copy it to the **Variable to Find** field. You can also drag and drop the variable into the field. After it is done the format of the value in the field will look like this: `{{5.value}}` |
| Replace With     | Copy and paste, or drag and drop the variable you want to use instead of the variable specified in the field above.The format of the value in the field will look like this: `{{5.value}}`                                                                                 |
| Module           | Select the module in which you want to replace the variable. If no module is selected, the variable will be replaced in the entire .                                                                                                                                       |

![Swap variable](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/2vpTQZtC7A0K9vKppGSpD_uuid-515ac724-b86c-a23f-ee1a-125d6a447753.png)

When all is set up, click the **Run** button to perform the action.

### Swap app

Replaces the selected app version in your  with another app version.

This tool can be used, for example, to upgrade Gmail and Email apps' modules to the latest version.&#x20;

:::hint{type="info"}
Before swapping make sure that the version you’ve selected supports all the modules and functions you might need for your .
:::

### Base 64

Allows you to encode the entered data to Base64 or to decode Base64. This tool can be useful when you want to search for particular data in the encoded request.

| **Field** | **Description**                                                                                                                                          |
| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Operation | Select whether you want to encode the data from the **Raw Data** field (below) to Base64 or decode Base64 to Raw Data.                                   |
| Raw Data  | Enter the data you want to encode to Base64 or Base64 you want to decode to raw data, depending on the option selected in the **Operation** field above. |

When the input is specified, click the **Run** button to perform the selected action.

### Copy module name

Copies the name of the selected module to your clipboard.

| **Field** | **Description**                                |
| --------- | ---------------------------------------------- |
| Module    | Select the module whose name you want to copy. |

When the module is selected, click the **Run** button to copy the module's name.

### Remap source

Allows you to change the mapping source from one module to another. You can do it for the already existing module in your  as well as add a new one.

| **Field**      | **Description**                                                                                                        |
| -------------- | ---------------------------------------------------------------------------------------------------------------------- |
| Source Module  | Select the module you want to be replaced as the mapping source for other modules in your .                            |
| Target Module  | Select the module you want to use as a new mapping source.                                                             |
| Module to Edit | In case you don't want to change the mapping in the entire Make, select the module you want to change the mapping for. |

When all is set up, click the **Run** button to perform the action.

### Highlight app

Highlights modules of the specified app in your .

| **Field**             | **Description**                                                    |
| --------------------- | ------------------------------------------------------------------ |
| App to be highlighted | Select the app you want to highlight in your .                     |
| Version               | Select the version of the app you want to highlight                |
| Highlight Color       | Enter the hex color you want to use to highlight modules in your . |


[title] MCP toolboxes
[path] Model Context Protocol/

MCP toolboxes are dedicated  MCP servers that allow MCP clients, such as Claude and ChatGPT, to access and use your . They consist of a specific set of MCP tools (scenarios that you've set to active with on-demand scheduling).

In this guide, learn when to use MCP toolboxes, their key features, and how to work with them in  and MCP clients.&#x20;

::embed[]{url="https://www.youtube.com/watch?v=rZm-QvQIZ-g"}

## When to use MCP toolboxes

Use MCP toolboxes when:&#x20;

- You want more control over the tools available to MCP clients
- You want a secure way to share MCP tools with team members and clients

Make MCP server is another way to use MCP with Make. To learn more, see [Make MCP server](docId:95jjtReuq1qmRYiBxVBkX).

## Key features&#x20;

MCP toolboxes offer these features:

- Tool management in  (add, configure, and delete)
- Token-based authorization using keys
- A unique URL per toolbox
- The option to create multiple keys per toolbox for sharing
- Configurable tool labels, descriptions, and types (`Read only` and `Read & write`)

## Create an MCP toolbox

To create an MCP toolbox, including its unique URL and key:

::::WorkflowBlock
:::WorkflowBlockItem
In , click **MCP Toolboxes** on the left sidebar, then **Create toolbox&#x20;**&#x61;t the top.&#x20;
:::

:::WorkflowBlockItem
Name your toolbox.&#x20;
:::

:::WorkflowBlockItem
In **Tools**, select the tools you want to have in your toolbox. Only active  with on-demand scheduling appear in the tool list.&#x20;
:::

:::WorkflowBlockItem
Click **Create**.&#x20;
:::

:::WorkflowBlockItem
In the **Create key** dialog, copy the key provided and store it in a safe place.&#x20;
:::

:::WorkflowBlockItem
Click **Close**.&#x20;
:::

:::WorkflowBlockItem
In **MCP Server URL**, copy the URL provided.
:::
::::

You've now created an MCP toolbox in .

## Connect your MCP toolbox to an MCP client

Before connecting your MCP toolbox to an MCP client, you must:

- **Choose an MCP client**: Typical options include Claude, ChatGPT, and Cursor.
- **Check what the client supports**: In the client's MCP server documentation, check if the client supports authorization headers and the transport methods available. HTTP Streamable is the recommended method due to its connection reliability.&#x20;

Next, **continue to Step 1&#x20;**&#x74;o configure your URL based on what the client supports.

:::::ExpandableHeading
### Step 1. Configure your URL

You must have a complete MCP server URL to connect to an MCP client.&#x20;

To configure the URL:

::::WorkflowBlock
:::WorkflowBlockItem
Configure your URL based on the following structure, depending on whether the MCP client provides an authorization header.&#x20;

**With authorization headers**

`<MCP TOOLBOX URL>` with the key in the authorization header:

- Header name: Authorization
- Header value: Bearer `<TOOLBOX KEY>`

**Without authorization headers**

`<MCP TOOLBOX URL>`/t/`<TOOLBOX KEY>`/`<TRANSPORT METHOD>`
:::

:::WorkflowBlockItem
Replace the placeholders with your actual values.&#x20;

- `MCP TOOLBOX URL`: The URL generated when you created the MCP toolbox.&#x20;
- `TOOLBOX KEY`: The key generated for the MCP toolbox.&#x20;
- `TRANSPORT METHOD`: The path of your preferred transport method. Stateless Streamable HTTP (`/stateless`) is recommended due to its connection reliability.&#x20;

**Example with authorization headers**

- URL: https\://eu2.make.com/mcp/server/•••••••••••••[ ](https://eu2.make.com/mcp/server/•••••••••••••/t/•••••••••••••/stateless)(`MCP TOOLBOX URL`)
- Authorization header: ••••••••••••• (`TOOLBOX KEY`)

**Example without authorization headers**

- URL: https\://eu2.make.com/mcp/server/•••••••••••••/t/•••••••••••••/stateless (`MCP TOOLBOX URL`/t/`TOOLBOX KEY`/`TRANSPORT METHOD`)
:::
::::

You've now configured your MCP toolbox URL. You'll add it when you're connecting to an MCP client.&#x20;
:::::

:::::ExpandableHeading
### Step 2. Connect to any MCP client

To connect an MCP toolbox to an MCP client:

::::WorkflowBlock
:::WorkflowBlockItem
In your MCP toolbox, in **MCP Server URL**, click **Connect with...&#x20;**&#x61;nd select an MCP client. If you don't see your preferred client, open its documentation for adding remote MCP servers.&#x20;
:::

:::WorkflowBlockItem
In the documentation, begin following the steps for connecting to your client.
:::

:::WorkflowBlockItem
When asked for a URL, add the URL that you configured in Step 1. If applicable, add the key in the authorization header.&#x20;
:::

:::WorkflowBlockItem
Finish the steps.&#x20;
:::
::::

You've now connected your MCP toolbox to MCP client.
:::::

## Manage your MCP toolbox

Once you create an MCP toolbox, you can add or edit tools, add keys, and delete the toolbox.

### Add tools

To add tools to an existing MCP toolbox:

::::WorkflowBlock
:::WorkflowBlockItem
In **MCP Toolboxes**, click an existing toolbox.&#x20;
:::

:::WorkflowBlockItem
In **Tools**, click **Add**.&#x20;
:::

:::WorkflowBlockItem
Search or select a tool or multiple tools.
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::
::::

You've now added tools to an existing MCP toolbox.&#x20;

### Configure tools

Optionally, configure your tool's name, description, and behavior:

- **Name and description:** Give your tool a custom tool name and description when its existing ones in  may confuse an MCP client or prevent it from choosing the tool correctly. By default, the client sees existing names and descriptions, but custom ones replace them.&#x20;
- **Behavior:&#x20;**&#x53;elect `Read only` and `Read & write` as tool annotations. In MCP clients that support them, annotations help clients understand how cautious to be with a tool, such as asking for permission before running it. By default, tools are `Read & write`. Mark a tool as `Read only` if it only reads data rather than making changes, such as adding or deleting. This option helps the client run your tools more quickly.&#x20;

To configure tools:

::::WorkflowBlock
:::WorkflowBlockItem
In **MCP Toolboxes**, click an existing toolbox.&#x20;
:::

:::WorkflowBlockItem
In **Tools**, click the settings icon.
:::

:::WorkflowBlockItem
In **Tool name**, enter a custom tool name, for example, "Watches unread emails." Alternatively, leave the field empty to use the default name.&#x20;
:::

:::WorkflowBlockItem
In **Tool description**, enter a custom tool description, for example, "Watches inbox for unread emails with a Lead label." Alternatively, leave the field empty to use the default description.&#x20;
:::

:::WorkflowBlockItem
In **Behavior**, select `Read only` or `Read & write` from the dropdown.
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::
::::

You can go back to configure your tools at any time.&#x20;

### Add keys

Each MCP toolbox can have multiple keys to share or use across MCP clients.&#x20;

To add keys to your MCP toolbox:

::::WorkflowBlock
:::WorkflowBlockItem
In **MCP Toolboxes**, click an existing toolbox.&#x20;
:::

:::WorkflowBlockItem
In **Keys**, click **Add**.&#x20;
:::

:::WorkflowBlockItem
In **Name**, name your key so you can identify it.
:::

:::WorkflowBlockItem
Save the key in a safe place so you can share it later.&#x20;
:::

:::WorkflowBlockItem
Click **Close**.&#x20;
:::
::::

You've now added a key to your toolbox. To delete a key, click the **X** symbol next to the key to delete.&#x20;

### Delete an MCP toolbox

To delete an MCP toolbox:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
I&#x6E;**&#x20;MCP Toolboxes**, click the three-dot menu next to an existing toolbox.&#x20;
:::

:::WorkflowBlockItem
Click **Delete**.&#x20;
:::

:::WorkflowBlockItem
Click **Delete&#x20;**&#x74;o confirm.&#x20;
:::
::::

You've now deleted an MCP toolbox.&#x20;

:::hint{type="info"}
**MCP toolbox timeout:** Your MCP toolbox scenarios must finish running within 40 seconds. If a scenario runs longer, the connection times out, and no outputs return to the client.
:::


[title] Converger
[path] Explore more/Tools/

:::hint{type="info"}
This article describes alternatives and workarounds to a converger module, often requested by our customers.
:::

Please note that there is no converger module available in . At the moment, it is just a concept that provides a counterpart to the Router module, allowing you to reduce duplication of modules in different routes.

## Solution

To implement the converger concept, use one of the following workarounds to avoid the duplication of the common sequence.

### Data store

::::WorkflowBlock
:::WorkflowBlockItem
Add an extra filter-free route to the router to connect the common sequence (the one you would put after a converger module).
:::

:::WorkflowBlockItem
Add **Data store** **> Add/replace a record** modules at the end of each router's route (except the new extra route) to store the data output by the modules on the route that should be passed to the common sequence. The data store would contain just one record, the record's key can be, for example,  `MyKey`.
:::

:::WorkflowBlockItem
Add a **Data store > Get a record** module at the beginning of the common sequence to obtain the previously stored data.

![Using a Data store](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-QhNLft6NIn_iGgjzBYTJA-20250228-092717.png)
:::
::::

### JSON

If you wish to avoid the use of the data store you can:

::::WorkflowBlock
:::WorkflowBlockItem
Use a **JSON > Create JSON** module followed by **Tools > Set variable** to store the resulting JSON in a variable (e.g. `MyBundle`).
:::

:::WorkflowBlockItem
Use **Tools > Get variable** to obtain the previously stored variable followed by **JSON > Parse JSON**.

![Using JSON](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-4K3rUp7aVLyql-BZmfZDO-20250228-093934.png)
:::
::::

Please note that if no route is executed, the **JSON > Parse JSON** will throw the following error:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-1kWXlfmPE42SbipbzmP---20250228-093137.png" size="40" width="332" height="103" position="flex-start" alt="Error is no route is executed" showCaption="false"}

To avoid this, you may employ the `ifemtpy()` function as show below:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/jLsqzz8eXvwj0XuH74dPA_uuid-ee263ab9-2637-7891-8f3e-d68f036c39f5.png" size="30" width="246" height="84" position="flex-start" alt="ifempty function" showCaption="false"}

### Set a variable

If there is a single value that you need to pass to the common sequence (e.g. ID), you can use th&#x65;**&#x20;Tools > Set variable** and **Get variable** modules.

 also allows you to use the **Set multiple variables** module.

### Use a separate new scenario

You may also place the common sequence to a separate new  and then:

1. Use the **HTTP > Make a request** module at the end of each route to pass the data to the new .
2. Use the **Webhooks > Custom webhook** module at the beginning of the new  to receive the data.


[title] If-else and Merge
[path] Explore more/Tools/

Use the If-else module with the Merge module when you need to split your  into conditional paths, follow only one path based on your logic, and then reconnect the flow into a single route.

This differs from a [Router](docId\:OpqXxZcGe19tawxhIAEHn) that runs all routes and can't be reconnected.

## If-else module

The If-else module splits your  into conditional routes. Only the first condition that evaluates as `true` runs.  If no conditions are `true`, the Else route runs.&#x20;

Structure your conditions from most specific to least specific to ensure that the correct route runs. You can add any number of conditions.

The If-else module requires one conditional route and one else route. These routes can't be unlinked from the If-else module and the last module can't be deleted.

After setting up your routes, you can keep them separate or use a Merge module to bring them back together and continue the flow.

To add an If-else module to your scenario, see [Add an If-else module](docId:5F6OZVB5VL2gvDsA7EoRP).&#x20;

While an If-else module and a [Router](docId\:OpqXxZcGe19tawxhIAEHn) can both split a  into different paths with conditions, the  run process differs.

| **If-else module**                                     | **Router**                                            |
| ------------------------------------------------------ | ----------------------------------------------------- |
| Splits the  into multiple routes with conditions       | Splits the  into multiple routes<br />with conditions |
| Runs the first condition that passes as `true`         | Runs all conditions in the set order                  |
| Routes can be merged back together with a Merge module | Routes can't be merged back together                  |

:::hint{type="info"}
The If-else module uses operations but does not consume any credits.
:::

## Merge module

The Merge module reconnects the conditional routes created by an If-else module into a single flow. It passes data from the active route to any subsequent modules in your .

The Merge module only works with an If-else module. You can't add it to a scenario without first setting up an If-else flow.&#x20;

To add a Merge module to your scenario, see [Add a Merge module](docId:5F6OZVB5VL2gvDsA7EoRP).

:::hint{type="info"}
The Merge module uses operations but does not consume any credits.
:::

## Add an If-else module

The If-else module splits the  flow into multiple routes with conditions.

To add an If-else module:

:::::WorkflowBlock
:::WorkflowBlockItem
In your , click the plus to add another module.
:::

::::WorkflowBlockItem
Search for the **Flow Control > If-else** module.

:::hint{type="info"}
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/57lsRGrunx-7NMybOIHgq-20260224-120214.png" size="50" width="533" height="425" position="flex-start" alt="If-else module: Splits the scenario flow into multiple routes with conditions, then lets you merge them back together." darkWidth="533" darkHeight="425" showCaption="false"}

The Merge module is not available to add to your  until after an If-else flow has been set up.
:::
::::

:::WorkflowBlockItem
After adding the If-else module, you will see a default setting of two paths, one condition route and an else route.&#x20;

Set the condition:

- **Label:** Name the condition.
- **Condition:** Enter or map the values for the condition. Add additional rules as needed.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/gdKO1SHGqXyQkAiaJbVCD-20260224-121846.png" size="50" width="439" height="456" position="flex-start" alt="Set up condition" darkWidth="439" darkHeight="456" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save** to save this condition.
:::

:::WorkflowBlockItem
To add another condition route, hover over the If-else module until you see the white + symbol and click.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/3wdLNQ4KVTmtEUJU1PAkj-20260224-124203.png" size="24" width="291" height="304" position="flex-start" alt="Add another condition." darkWidth="291" darkHeight="304" showCaption="false"}

Another condition route is added every time you click.
:::

:::WorkflowBlockItem
Set the values for each condition and click **Save**.
:::

:::WorkflowBlockItem
Optional: Click the Else filter and enter a Label.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/zJW12PUXi04OT16vWe9VO-20260224-124753.png" size="56" width="575" height="360" position="flex-start" alt="Label the Else route." darkWidth="575" darkHeight="360" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.
:::
:::::

After you've set all of the conditions, continue to add modules to your  as needed to complete each route.

You can keep each route separate or add a merge module to bring the routes together and continue the flow.

:::hint{type="info"}
**Restrictions to the If-else flow**

You can't add a Router module or another If-else module into the flow after an If-else module.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/TCuZjU6AsbWxHdW5m8q5s-20260302-113131.png" size="80" width="800" height="365" position="flex-start" alt="The Router and If-else modules are not available for use between an If-else and Merge flow." darkWidth="800" darkHeight="365" showCaption="false"}
:::

## Add a Merge module

The Merge module merges the If-else routes together and continues the flow with data in a single route.

The Merge module can only be used after an If-else module.&#x20;

To add a Merge module:

:::::WorkflowBlock
:::WorkflowBlockItem
At the end of any route, click the plus to add another module.
:::

::::WorkflowBlockItem
Search for the **Flow Control > Merge** module.

:::hint{type="info"}
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/CnJ3MD0JFClwpLYetLhFa-20260224-130912.png" size="50" width="536" height="421" position="flex-start" alt="Merge module: Merges if-else routes together and continues the flow with data from a single route." darkWidth="536" darkHeight="421" showCaption="false"}
:::
::::

::::WorkflowBlockItem
Click and hold the Merge module icon to drag and connect it to all routes in the If-else flow.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/vGif-L-vG3-IxHFGQA2XQ-20260224-131744.png" size="60" width="678" height="701" position="flex-start" alt="Join the merge module to all routes." darkWidth="678" darkHeight="701" showCaption="false"}

:::hint{type="info"}
You can also merge the routes by clicking the plus sign at the end of any route and selecting **Merge routes**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/8_WG4Osc53EVJ1eymbapj-20260309-131645.png" size="38" width="396" height="251" position="flex-start" alt="Merge routes" darkWidth="396" darkHeight="251" showCaption="false"}
:::
::::

:::WorkflowBlockItem
Enter or map the following values for your Merge module output:

- **Output name**
- **If 1st condition is true > Output value**
- **Else > Output value**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/TCBkMYpgbYLju0C5RWWr1-20260305-120329.png" size="60" width="507" height="393" position="flex-start" darkWidth="507" darkHeight="393" showCaption="false"}

Add additional if-else outputs, if necessary.
:::

:::WorkflowBlockItem
Click **Save**.
:::
:::::

The Merge module is connected to the If-else flow and the  flow can continue after the merge.

If a condition route does not include a module and you connect the route to the Merge module,  displays a Do Nothing module. While this route does not include any modules, data passes through.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/T8zHWQqfiSK99Ooq5jyOO-20260302-114245.png" size="90" width="720" height="207" position="flex-start" alt="If you do not select a module for one of the routes after If-else and then connect it to the Merge, the module name becomes Do Nothing." darkWidth="720" darkHeight="207" showCaption="false"}

To replace the Do Nothing module with a different module, click the Do Nothing module and search for your required app.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/f2T0rFOKFDKlRkBw_PSDx-20260302-130938.png" size="60" width="600" height="452" position="flex-start" alt="Search for an app to replace the Do Nothing module." darkWidth="600" darkHeight="452" showCaption="false"}

## Delete modules from the If-else and Merge flow

To delete an If-else module, right-click and select **Delete**.&#x20;

This removes the module and all its conditions. This action can't be undone.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/UR4jGLavQbVmKJMgBL9L9-20260302-141335.png" size="40" width="505" height="190" position="flex-start" darkWidth="505" darkHeight="190" showCaption="false"}

Any remaining modules after the deleted If-else module will show an error until you reconnect them to the  flow.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/dF0KsPPqFT4ZVBRzsXdPn-20260302-141627.png" size="60" width="545" height="259" position="flex-start" darkWidth="545" darkHeight="259" showCaption="false"}

If you delete modules before the Merge module, the Merge module will show an error. Connect at least one module before configuring its outputs.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/NPhm08tPl6__S5uZ-g8hX-20260302-141900.png" size="60" width="641" height="275" position="flex-start" alt="Merge module without connection error" darkWidth="641" darkHeight="275" showCaption="false"}

## Nested If-else & Merge

The Nested If-else and Merge feature lets you build multi-level decision logic within a single . Instead of spreading related conditions across separate Router chains, you can place an If-else module inside a branch of another If-else keeping your logic in one visual flow and making it easier to review and maintain. A sample  for Nested If-else and Merge can be found [here](https://eu2.make.com/public/shared-scenario/hEpmbJLswJG/nested-if-else-merge-in-make).

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/2xKHrLnztzBpDrVWd94SG-20260520-093619.png "Nested If-else and Merge")

When you add an If-else module inside an existing If-else branch, Make treats the inner module as a self-contained decision level. Each nested If-Else has its own Merge module, which closes that decision level before the outer flow continues.

**Adding a nested If-else and Merge branch:**

1. Open your scenario and add an **If-else** module where you want the top-level decision.
2. Inside the If or else branch, add another **If-else** module.
3. Configure the inner module's condition and connect any modules that should run in its branches.
4. Add a **Merge** module to close the inner If-else.
5. Continue building the outer branch after the inner Merge.
6. Add a **Merge** module to close the outer If-else.

:::hint{type="warning"}
Each If-Else must have its own Merge module.  uses the Merge to determine where each decision level ends, so mismatched or missing Merge modules can cause unexpected routing.
:::

:::::ExpandableHeading
## Tutorial: Expense report approval system

In this tutorial, you'll build a  that automatically sorts expense report submissions into two paths: immediate approval for low-value expenses, and a Slack notification for expenses that need manual review. All submissions are logged in Google Sheets with their approval status.

You will need:

- A Tally form to submit expense information. Your form should include the following fields: `first name`, `last name`, `date of expense`, `description of expense`, and `amount`.
- A Slack account, to receive notifications of expenses that need additional review for approval.
- A Google Sheet file with the following column titles: `First Name`, `Last Name`, `Date of Expense`, `Description of Expense`, `Amount`, and `Approval`.

![Expense report approval system scenario](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Il2qYx3SP8AIptDuo6pMD-20260305-093214.png)

To build the :

**Step 1: Connect to Tally**

::::WorkflowBlock
:::WorkflowBlockItem
Click the giant plus and add a **Tally > Watch New Responses** module.
:::

:::WorkflowBlockItem
Click **Create a webhook**. Enter a webhook name and connect to your Tally account.
:::

:::WorkflowBlockItem
In the **Form ID&#x20;**&#x20;field, select the expense report form you created in Tally.
:::

:::WorkflowBlockItem
Click **Save** to save the webhook, then **Save** again to save the module settings.
:::
::::

Your  is now connected to Tally and triggers when a new form is submitted.

**Step 2: Set the If route conditions and configure the flow**

::::WorkflowBlock
:::WorkflowBlockItem
Add an **If-else** module and set the first condition, an expense report value that is above the automatic approval limit. In this example, expenses of $100 or more are above the limit.

- **Label:** Above limit
- **Condition:** Map the Tally field for the amount of the expense and set the condition to great than 100.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/QDuyd04ZguNrIYshp0pca-20260305-100303.png" size="50" width="500" height="521" position="flex-start" alt="First condition - expense amount above the limit" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.
:::

:::WorkflowBlockItem
In this first condition route, add a **Slack > Send a Message** module.
:::

:::WorkflowBlockItem
Create a connection to your Slack account and select the ID of the person to receive the messages. Your configuration may differ, depending on your Slack setup.&#x20;
:::

:::WorkflowBlockItem
In the **Text** field, enter the message to send regarding the expense report. You can map data from the Tally form in the message.  In this example, the first and last name of the person who submitted the expense report is included.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/621c9cbJsf85qPfgA2jgd-20260305-101332.png" size="50" width="500" height="866" position="flex-start" alt="Configure the Slack module to send a message" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

The If condition route identifies expense report submissions that are $100 or more and sends a Slack message notifying the recipient.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/J_iOCescOxrEfbVGSwRPl-20260305-111545.png" size="80" width="1011" height="159" position="flex-start" alt="Slack message example" showCaption="false"}

**Step 3: Configure the Else route flow**

::::WorkflowBlock
:::WorkflowBlockItem
Click the Else route condition and in the **Label** field enter a name. Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/FlpYg3ZnK_7u3sgPaTKSR-20260305-100828.png" size="50" width="500" height="378" position="flex-start" alt="Set the Else route Label name" showCaption="false"}
:::

:::WorkflowBlockItem
Add a **Tools > Set variable** module.

- **Variable name**: Enter a name for the variable to indicate the status of the approval.
- **Variable value**: Enter a value for the variable, to show that the expense report is already approved in this route.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/_cUfZvQmeswaVe0J-f3qc-20260305-102844.png" size="50" width="500" height="335" position="flex-start" alt="Set a variable to indicate that the expense report is approved." showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

The Else route is configured to identify expense reports that are under the $100 limit and mark them as approved.

**Step 4: Merge the conditions and continue the flow**

::::WorkflowBlock
:::WorkflowBlockItem
After either of the routes, add a **Flow Control > Merge** module.
:::

:::WorkflowBlockItem
Click and hold the Merge module icon to drag and connect it to all routes in the If-else flow.
:::

:::WorkflowBlockItem
Click the Merge module and enter or map the following values for your merge output:

- **Output name:** Approval (to match the field in the Google Sheets file)
- **If 1st condition is true > Output value:** Review required
- **Else > Output value:** Map the value of the variable set in the Else route, `status`

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ckiyiqOgDRhhInq4QkGw0-20260305-104219.png" size="50" width="500" height="535" position="flex-start" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.
:::

:::WorkflowBlockItem
Add a **Google Sheets > Add a row** module. Create your connection to your Google account and select the Google Sheets file you created.

Your values will vary based on where you saved your file, your file name, and the sheet name within the file.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/mqnak1qhplHYrCOJIUo0f-20260305-104800.png" size="50" width="520" height="812" position="flex-start" alt="Google Sheets > Add a row module configuration" showCaption="false"}
:::

:::WorkflowBlockItem
For each Google Sheets column, map the Tally form data and the Merge module output:

- **First Name:** `First name`
- **Last Name:** `Last name`
- **Date of Expense:** `Date of expense`
- **Description of Expense:** `Description`
- **Amount:** `Amount submitted (in dollars)`
- **Approval:** `Approval`

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/V9KOvv-tbCCZYxu0YriPB-20260305-105150.png" size="50" width="522" height="900" position="flex-start" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

Click **Save** and save your .

When ready, [schedule your scenario](docId:8rWFO_KROhjLePg4qHx3_) to run. Since your  starts with a webhook module, the default setting is to run immediately when data arrives.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/dmS5tfvnPYuEBaS51uSgW-20260305-110343.png" size="50" width="500" height="515" position="flex-start" alt="Schedule the scenario to run" showCaption="false"}

When an expense report is submitted, the information is saved in the Google Sheets file and marked with the correct approval value.

![Google Sheets submissions](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/igy7YCI3Miqcfh-mNMbyK-20260305-110500.png)
:::::


[title] Introduction to Make Grid
[path] Make Grid/

# What is  Grid?

 Grid is a dependency map that helps businesses visually manage and optimize their entire automation and AI ecosystem. Think of it like a simulation of your automation infrastructure, it shows a layout of how everything is built and wired.  Grid creates a near real-time, auto-generated map that shows how your scenarios, apps, data stores, and AI-powered components are connected, making it easier to debug, scale, and optimize your workflows.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/YzKC9-RkH-KIYWUKWPvSw-20260317-112458.png)

***

# Key features of  Grid

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Real-time visibility**:
:::

:::VerticalSplitItem
 Grid updates automatically as changes occur, giving you a dynamic view of your system.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Faster troubleshooting**:
:::

:::VerticalSplitItem
 Grid shows indicators for errors in your scenarios, making it easier to troubleshoot, especially in multi-scenario workflows.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Smarter scaling**:
:::

:::VerticalSplitItem
 Grid helps trace data flows and identify inter-scenario dependencies and impacts before making changes. When restructuring folders, onboarding new users, or expanding your automation environment,  Grid ensures all stakeholders have access to a consistent view of your automation architecture.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Easy navigation**:
:::

:::VerticalSplitItem
With the pan feature in  Grid, you can move across different parts of the grid. It allows you to efficiently explore and interact with complex automation structures, especially when working with large teams or multiple folders. Right-click anywhere in the background and drag to pan the canvas or slide two fingers on the trackpad to pan around.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Improved collaboration**:
:::

:::VerticalSplitItem
You can work together with your team and see active teammates and their cursors in real-time. This shared visibility streamlines collaboration, supports faster and more accurate decision-making, and enables scalable growth.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Improved resource tracking:**
:::

:::VerticalSplitItem
With  Grid, you can gain transparency into data flows, AI usage, or operations consumption.
:::
::::

:::hint{type="info"}
To learn more about  Grid, click the **Resources** icon in the top right corner of the page.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/zGVhnYfRKA6ai5XqkYo2q-20251003-113921.png" size="30" width="210" height="42" position="flex-start" darkWidth="210" darkHeight="42" showCaption="false"}
:::


[title] Credit usage for AI agents
[path] Make AI Agent (New)/

[Credits](https://help.make.com/credits) are the currency you buy and consume to use . This page explains credit usage for the **Make AI Agent (New)** and **Knowledge&#x20;**&#x61;pps.

## Make AI Agent (New) app

The **Make AI Agent (New)&#x20;**&#x61;pp and its knowledge, tools, and chat each use credits differently. Credit usage also depends on whether [Make's AI Provider](docId\:hh-nrTakEqakBmg63UUiN) or a custom AI provider is selected.

:::hint{type="warning"}
Users on **all plans** can use **Make's AI Provider**. Users o&#x6E;**&#x20;paid plans** can also use **custom AI provider connections**, such as OpenAI and Anthropic Claude.&#x20;
:::

The table below shows credit usage by feature and AI provider connection type.

| **Source**                    | **Make's AI Provider&#x20;**<br />                                                                                                         | **Custom AI provider connection&#x20;**<br />                     |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------- |
| **Run an agent&#x20;**        | 1 credit per operation + credits based on AI tokens                                                                                        | 1 credit per operation                                            |
| **Chat&#x20;**                | 1 credit per operation + 1 credit per operation from called tools + credits based on AI tokens                                             | 1 credit per operation + 1 credit per operation from called tools |
| **Knowledge&#x20;**(PDF/DOCX) | 1 credit per operation + 10 tokens per page + credits based on tokens:<br />* AI tokens for file description generation
* Embedding tokens | 1 credit per operation + embedding tokens                         |
| **Knowledge** (JSON/CSV/TXT)  | 1 credit per operation + credits based on tokens:<br />* AI tokens for file description generation
* Embedding tokens                      | 1 credit per operation + embedding tokens                         |
| **Input files**               | AI tokens based on the file size, type, AI provider, and model                                                                             | AI tokens based on the file size, type, AI provider, and model    |
| **Tools**                     | 1 credit per operation and credits based on AI tokens                                                                                      |  1 credit per operation                                           |

## Knowledge app

The **Knowledge&#x20;**&#x61;pp uses credits differently depending on the module and whether a [Make's AI Provider](docId\:hh-nrTakEqakBmg63UUiN) or custom AI provider is selected.

:::hint{type="warning"}
Users on **all plans** can use **Make's AI Provider**. Users o&#x6E;**&#x20;paid plans** can also use **custom AI provider connections**, such as OpenAI and Anthropic Claude.&#x20;
:::

The table below shows credit usage by module and AI provider connection type.

| **Module**                                      | **Make's AI Provider&#x20;**<br />                                                                                                         | **Custom AI provider connection&#x20;**<br />              |
| ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------- |
| **Delete Knowledge file**                       | 1 credit per operation                                                                                                                     | 1 credit per operation                                     |
| **Update/Append knowledge**<br />(PDF/DOCX)     | 1 credit per operation + 10 tokens per page + credits based on tokens:<br />* AI tokens for file description generation
* Embedding tokens | 1 credit per operation + embedding tokens                  |
| **Update/Append knowledge**<br />(JSON/CSV/TXT) | 1 credit per operation + credits based on tokens:<br />* AI tokens for file description generation
* Embedding tokens&#x20;                | 1 credit per operation + embedding tokens                  |
| **Upload knowledge&#x20;**(PDF/DOCX)            | 1 credit per operation + 10 tokens per page + credits based on tokens:<br />* AI tokens for file description generation
* Embedding tokens | 1 credit per operation + embedding tokens                  |
| **Upload knowledge**<br />(JSON/CSV/TXT)        | 1 credit per operation + credits based on tokens:<br />* AI tokens for file description generation
* Embedding tokens&#x20;                | 1 credit per operation + embedding tokens                  |
| **Get knowledge**                               | 1 credit per operation                                                                                                                     | 1 credit per operation                                     |
| **List knowledge files**                        | 1 credit per operation                                                                                                                     | 1 credit per operation                                     |
| **Query knowledge**                             | 1 credit per operation + credits based on embedding tokens                                                                                 | 1 credit per operation + credits based on embedding tokens |

## Special token types&#x20;

[Tokens ](https://help.make.com/credits#dynamic-credit-usage)are the unit that AI providers use to measure and charge for usage. This section covers two token types specific to the **Make AI Agent (New)** app: tokens for embedding files and generating file descriptions.&#x20;

### Embedding tokens

These tokens are used to convert your knowledge file into a searchable format that your agent can query. It involves converting chunks of a file into numbers (vectors) to be stored in a RAG vector database.&#x20;

The number of tokens used depends on the file size, with larger files using more tokens. You are billed once, when you upload a file.&#x20;

### File description tokens (Make's AI Provider only)

These tokens are used to generate a file summary based on the first part of the file. When you use Make's AI Provider, Make bills you for these tokens. If you use a custom AI provider connection, the provider bills you for the tokens.&#x20;

You are billed for these tokens each time you upload a file or change a file description.

[title] Slack-triggered AI agent
[path] Make AI Agent (New)/Create AI agents for different triggers/

This Slack-triggered AI agent  watches a Slack channel for new user messages and the agent replies to them.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/M3aaCfhVvfEOLil4pyBmt_slack-trigger-ai-agent.png)

## Prerequisites

- A **Slack account&#x20;**&#x77;ith a **private channel&#x20;**&#x66;or interacting with the agent

:::hint{type="info"}
While a private channel is more convenient for testing, you can use either a private or public channel.
:::

## Step 1. Add a Watch New Events module

The **Slack&#x20;**> **Watch New Events&#x20;**&#x6D;odule watches your Slack channel for new messages, so the agent receives them when they arrive.&#x20;

To add a **Watch New Events&#x20;**&#x6D;odule:&#x20;

:::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, click the giant plus.&#x20;
:::

:::WorkflowBlockItem
In the app search, search for and click **Slack**.&#x20;
:::

:::WorkflowBlockItem
Click **Watch New Events**.&#x20;
:::

:::WorkflowBlockItem
In **Webhook name**, name your webhook to identify it later.&#x20;
:::

:::WorkflowBlockItem
In **Event type**, select the following from the dropdown:

- **New private channel message** (for a private channel)
- **New channel message** (for a public channel)
:::

:::WorkflowBlockItem
In **Connection**, click **Add&#x20;**&#x74;o create a new Slack connection or select an existing one from the dropdown.&#x20;
:::

:::WorkflowBlockItem
In **Channel**, select the channel that you set up earlier.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

::::WorkflowBlockItem
Test the **Slack&#x20;**> **Watch New Events&#x20;**&#x6D;odule:

1. Click **Run once** on the  toolbar.&#x20;
2. In Slack, send a message in your channel.&#x20;
3. In the   Builder, click the output bubble next to the module to view the data items in an output bundle. For example, the `Text `value is the user message.&#x20;

:::hint{type="info"}
If you've sent a message to your Slack channel, but the module hasn't received data yet:

- Wait a few minutes. Slack webhooks sometimes delay in detecting messages.&#x20;
- Stop the  run and click the down arrow next t&#x6F;**&#x20;Run once** to run the  using data from a previous run.&#x20;
:::
::::
:::::

You've now added the **Slack&#x20;**> **Watch New Events&#x20;**&#x6D;odule to your .

## Step 2. Add a Send a Message module

Now that you've added a module that sends new Slack messages to your agent, add a **Slack&#x20;**> **Send a Message** module to allow the agent to reply to them.

To add a **Slack&#x20;**> **Send a Message&#x20;**&#x6D;odule:

:::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, click the plus icon next to the **Slack&#x20;**> **Watch New Events** module.&#x20;
:::

:::WorkflowBlockItem
In the app search, click **Slack**.
:::

:::WorkflowBlockItem
Search for and click **Send a Message**.&#x20;
:::

:::WorkflowBlockItem
In **Connection**, select your Slack connection.&#x20;
:::

:::WorkflowBlockItem
In **Channel ID or name**, click the field and map the `Channel `value from the **Slack** > **Watch New Events** module.&#x20;
:::

::::WorkflowBlockItem
In **Text**, configure the reply:&#x20;

1. Click the field and map the `Text` value from the **Slack&#x20;**> **Watch New Events** module.&#x20;
2. Before the `Text `value, enter custom text, such as "Agent:", to specify that the reply is from an agent. Without this text, the agent won't distinguish user and agent messages, causing it to reply to itself in an infinite loop. Later, you'll filter messages with the "Agent:" text, so the agent only processes user messages.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/CTYI_q-OcIz4EKGurxqr--20260210-095628.png" size="50" width="462" height="171" position="center" darkWidth="462" darkHeight="171" showCaption="false"}

:::hint{type="info"}
Optionally, to clearly distinguish between agents and users, [create a Slack app ](https://apps.make.com/slack#obtain-your-client-credentials-in-slack)and create a Bot connection. This way requires a more complex setup.&#x20;
:::
::::

:::WorkflowBlockItem
Toggle **Advanced settings**.&#x20;
:::

::::WorkflowBlockItem
In **Thread message ID (time stamp)**, enter a function for Slack timestamps:

1. Click the field, and search for and click the `Ifempty` function.&#x20;
2. In the function, before the semicolon, map the `Thread Timestamp` value from the **Slack&#x20;**> **Watch New Events** module.
3. After the semicolon, map the `Timestamp `value from the **Slack&#x20;**>**&#x20;Watch New Events** module. &#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/EOwSQAgZi9oLg0BPHPotj-20260210-090622.png" size="50" width="475" height="171" position="center" darkWidth="475" darkHeight="171" showCaption="false"}

:::hint{type="info"}
You use a function here so that the agent replies in the Slack thread after receiving the first message. The function covers two types of Slack timestamps:

- `Timestamp`: The identifier of the first message of the Slack thread.
- `Thread timestamp`: The identifier of the Slack thread once the thread has a reply (unavailable for the first message).&#x20;
:::
::::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::

:::WorkflowBlockItem
Right-click the route between the modules and select **Set up a filter**.&#x20;
:::

:::WorkflowBlockItem
Set up a filter that allows only user messages to pass through, so the agent doesn't reply to itself in an infinite loop:

1. In **Label**, name your label "Only user messages."
2. In **Condition**, map the `Text `value from the **Slack&#x20;**> **Watch New Events** module, select **Text operators: Does not contain**, and enter "Agent:":

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/89IkB9lZEcQAsjE0fGxYE-20260210-102023.png" size="50" width="513" height="533" position="center" darkWidth="513" darkHeight="533" showCaption="false"}

3. Click **Save**.
:::

:::WorkflowBlockItem
Test the **Slack&#x20;**> **Send a Message** module:

1. Click **Run once** on the  toolbar.&#x20;
2. In Slack, send a message in your channel.&#x20;
3. Check if you see a reply in the same thread beginning with "Agent:" in the same thread. This means the module works.&#x20;
:::

:::WorkflowBlockItem
Toggle **Immediately as data arrives** on the  toolbar to activate the , so that the  automatically receives new messages from Slack.
:::

:::WorkflowBlockItem
Click **Save**.
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::
:::::

You've now added your Slack modules to your   .&#x20;

## Step 3. Add a Run an agent module

To finish your , add the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule.&#x20;

To add the **Run an agent&#x20;**&#x6D;odule:

:::::WorkflowBlock
:::WorkflowBlockItem
Right-click the route between the Slack modules and select **Add a module**.
:::

:::WorkflowBlockItem
In the app search, search for and click **Make AI Agent (New)**.&#x20;
:::

:::WorkflowBlockItem
Select the **Run an agent** module.&#x20;
:::

::::WorkflowBlockItem
In the module settings, in **Connection**, select an existing AI provider connection from the dropdown or click **Add&#x20;**&#x74;o create a new one.&#x20;

:::hint{type="info"}
If you don't want to set up an account with an AI provider, select **Make's AI Provider**.&#x20;
:::
::::

:::WorkflowBlockItem
In **Model**, select a small model. Smaller models react quickly to new data, which is ideal for this chat-based AI agent.&#x20;
:::

::::WorkflowBlockItem
In **Instructions**, describe who the agent is and what it does. For example, "You are a helpful agent. Answer with a warm and friendly tone."

:::hint{type="info"}
For now, the sample instructions provided are sufficient. Later, you can tailor them to the agent's workflow.
:::
::::

:::WorkflowBlockItem
In **Input**, map the `Text `value from the **Slack&#x20;**> **Watch New Events** module. This action gives the agent access to incoming Slack messages.&#x20;
:::

:::WorkflowBlockItem
In **Conversation&#x20;**&#x49;D, enter the same function that you added to the **Thread message ID (time stamp)&#x20;**&#x66;ield in the **Add a Send a Message module** step.&#x20;

This action allows the agent to remember previous exchanges with a user, and provide contextual responses when the user asks follow-up questions in the same thread.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/_d-0AO1dqb0aFSzt6vM_4-20260210-125123.png" size="50" width="471" height="190" position="center" darkWidth="471" darkHeight="190" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.
:::

:::WorkflowBlockItem
Click the **Slack&#x20;**> **Send a Message** module.&#x20;
:::

:::WorkflowBlockItem
In **Text**, keep the custom "Agent:" text and replace the `Text` value with the `Response` value from the **Run an agent&#x20;**&#x6D;odule. This action allows the agent to reply with its own response.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/90tEWaFa9O-Q78tDUwNpI-20260210-125502.png" size="50" width="471" height="179" position="center" darkWidth="471" darkHeight="179" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.
:::

:::WorkflowBlockItem
Send a message to your channel in Slack to check if the agent works.&#x20;
:::
:::::

You've now built a Slack-triggered AI agent .&#x20;

[title] Text parser
[path] Explore more/Tools/

Our Text parser section includes several useful modules that can enhance your .

![Text parser](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-4gQfwfgn1LicbIWuzK4gP-20250228-110707.png)

## Transformers

### Get elements from HTML

Retrieves the desired elements from an HTML code.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-YZ8KrbV0OVvS7iqXCGdum-20250228-110931.png" size="60" width="599" height="355" position="flex-start" alt="Get elements from HTML" darkWidth="599" darkHeight="355" showCaption="false"}

| **Field**                                                                 | **Description**                                                                                                  |
| ------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| Continue the execution of the route even if the module returns no results | If enabled, the  will not be stopped by this module.                                                             |
| Element type                                                              | Select the type of element you want to retrieve from the HTML code such as an image, link, or iframe element(s). |
| HTML                                                                      | Enter the HTML code you want to retrieve the specified element types from.                                       |

### Match pattern

Enables you to find and extract string elements matching a search pattern from a given text.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-2YDqh-I9nIlIi62MDwIVd-20250228-111157.png" size="60" width="600" height="775" position="flex-start" alt="Match pattern" darkWidth="600" darkHeight="775" showCaption="false"}

| **Field**                                                                 | **Description**                                                                                                                                                                                                                                                                                                                                         |
| ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Pattern                                                                   | Enter the regular expression pattern. For example, `[+-]?(\d+(\.\d+)?\|\.\d+)([eE][+-]?\d+)?` extracts all numerals in the provided text.<br />The pattern will contain at least one capture group in parenthesis `()` for the output bundle to contain some items. If the pattern does not contain any capture groups, the output bundle will be empty |
| Global match                                                              | If enabled, then the module retrieves all matches in the text. If disabled, then the module retrieves only the first entry.                                                                                                                                                                                                                             |
| Case sensitive                                                            | You can disable the case sensitivity by disabling this option (default=case sensitive).                                                                                                                                                                                                                                                                 |
| Multiline                                                                 | If checked, beginning and end metacharacters (`^` and `$`) will match the beginning or end of each line, not just the very beginning or end of the whole input string.                                                                                                                                                                                  |
| Continue the execution of the route even if the module returns no results | If enabled, the  will not be stopped by this module.                                                                                                                                                                                                                                                                                                    |
| Text                                                                      | Enter the text you want to match the pattern.                                                                                                                                                                                                                                                                                                           |

The search pattern is a [regular expression](https://en.wikipedia.org/wiki/Regular_expression) (aka regex or regexp), which is a sequence of characters in which each character is either a metacharacter, having a special meaning, or a regular character that has a literal meaning.

- The complete list of metacharacters can be found on the [MDN web docs website](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions).
- For a tutorial on how to create regular expressions, we recommend the [RegexOne website](https://regexone.com/).
- For an easy, quick regex generator, try the [Regular Expressions generator](https://regex-generator.olafneumann.org).
- For experimenting with regular expressions, we recommend the [regular expressions 101 website.](https://regex101.com/) Just make sure to tick the ECMAScript (JavaScript) FLAVOR in the left panel:

### Replace

Searches the entered text for a specified value or regular expression, and replaces the result with the new value.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-NuHtIkrwbTxLouKPfysd7-20250228-115723.png" size="60" width="600" height="764" position="flex-start" alt="Replace" darkWidth="600" darkHeight="764" showCaption="false"}

| **Field**      | **Description**                                                                                                                                                                 |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Pattern        | Enter the search term. You can also use a regular expression. For more details about the regular expression, refer to the [Match pattern](docId\:Y3q9HYiJrg_VRfBzOGNpq) module. |
| New value      | Enter a value that will replace the search term.                                                                                                                                |
| Global match   | If this option is enabled, the module will find all matches rather than stopping after the first match. Each match will be output in a separate bundle.                         |
| Case sensitive | If this option is enabled, the search will be case sensitive.                                                                                                                   |
| Multiline      | If checked, the beginning and end metacharacters (`^` and `$`) will match the beginning or end of each line, not just the very beginning or end of the whole input string.      |
| Text           | Enter the text to be searched.                                                                                                                                                  |

## Data scraping

Data scraping, sometimes called web scraping, data extraction, or web harvesting is the process of collecting data from websites and storing it in your local database or spreadsheets.&#x20;

If the data scraping tool provides a REST API, you can connect to it via our universal **HTTP** and **Webhooks** modules. You can also create an app on your own using the [Make App SDK](https://developers.make.com/custom-apps-documentation).

For a full list of data extraction and scraping tools available in Make, browse the [Data Extraction & Collection category](https://www.make.com/en/integrations/category/data-extraction-collection) in our Apps catalog.

[title] Use functions
[path] Explore more/Functions/

When [mapping items](docId\:upfwoZsCC5SoIXR2954z2), you can use functions to create complex formulas. The functions available in  are similar to functions in Excel or those in other programming languages. The functions let you perform various transformations of item values, such as converting a text to uppercase, trimming a text, converting a date into a different format, and many others.

::embed[]{url="https://www.youtube.com/watch?v=UHnsWDRLvEw"}

## Insert functions into fields

Functions can be inserted into fields the same way as items. Click a field to view the mapping panel.

The mapping panel contains several tabs:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-SQ0IIEjBevOWtMvPzxgeY-20250226-090300.png" size="60" width="1000" height="860" position="flex-start" alt="Using functions" darkWidth="1000" darkHeight="860" showCaption="false"}

The first tab (shown upon opening the panel) displays the items that you can map from other modules.

The other tabs contain various functions:

- [General functions](docId\:pMt2j3NdX4B4BP51gXk6T)&#x20;
- [Math functions](docId\:oxBNhXmSPoAi2KLTL2_Ee)&#x20;
- [Text and binary functions](docId\:ITv03E8O5wi28VCTDEElU)&#x20;
- [Date and time functions](docId:1kv1ib5q50i0SLbc7G2PZ)&#x20;
- [Array functions](docId\:K8NyMRgqbg3l_8LnPX7Wm)&#x20;
- [Custom functions](docId:6aXxxE6k-Lc5Pm-4qrLaV)&#x20;
- [Custom and system variables](docId:5UJ3-0KGuD4jwffMxAm-9)&#x20;

To insert a function into a field, click the function name or drag it to the field.

### Example

When posting a new tweet with the **Twitter > Create a tweet** module, you should not exceed Twitter's 280-character limit. Otherwise, the module throws an error. If you map a text item that can contain more than 280 characters into the module's **Status** field, you can use the `substring()` function to limit the tweet to 280 characters:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/TxWWjBp5q81m2jxckzAJl_uuid-17962706-05f1-025c-5f23-84c3fba03e7e.png" size="50" width="874" height="152" position="flex-start" alt="Substring function" darkWidth="874" darkHeight="152" showCaption="false"}

## Google Sheets functions

If you miss a function, but it is featured by **Google Sheets**, you may use it like this:

::::WorkflowBlock
:::WorkflowBlockItem
In Google Sheets, create a new empty spreadsheet.
:::

:::WorkflowBlockItem
In  open your .
:::

:::WorkflowBlockItem
Insert the **Google Sheets > Update a cell** module.
:::

:::WorkflowBlockItem
Configure the module:

1. Choose the newly created spreadsheet in the **Spreadsheet&#x20;**&#x66;ield.
2. Instert your formula containing the Google Sheets function into the Value field.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm--uzAkYHo0yDmY4-BUV3Yn-20250226-091911.png" size="70" width="1000" height="622" position="flex-start" alt="Value field" darkWidth="1000" darkHeight="622" showCaption="false"}
:::

:::WorkflowBlockItem
Insert the **Google Sheets > Get a cell** module to obtain the calculated result.
:::

:::WorkflowBlockItem
Configure the module. Fill in the same **Cell&#xA0;**&#x49;D as you filled in step 4.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-Jw-8V-7m2E42xPGYUod4J-20250226-091941.png" size="70" width="1000" height="534" position="flex-start" alt="Cell ID" darkWidth="1000" darkHeight="534" showCaption="false"}
:::
::::


[title] Overview of error handling
[path] Error handling/

## What are error handlers

Error handlers are tools in  that allow you to deal with errors or unexpected events in your . An error handler is connected to a module and is the last module of the error handling route. When the module outputs an error, the error handler prevents the scenario from stopping. Instead, it intercepts the error and executes the scenario based on the error handler’s configuration.

## When to use error handlers

When your scenarios encounter errors, they hit a roadblock. If you have [incomplete executions](https://help.make.com/incomplete-executions) ON, your scenario stops and the execution is moved to the Incomplete executions tab. This is your **manual** queue. You must then manually intervene, identify the cause, fix the issue, and resume your scenario from where you left off.&#x20;

If you find yourself manually fixing the same recurring errors, you can introduce error handlers to **automate** the recovery process. Instead of letting the scenario stop and wait for you, an error handler allows the scenario to follow a predefined logic, such as retrying the task automatically or skipping the error, keeping your workflows moving without your intervention.

**For example**: You built a scenario that syncs contacts from a web from to your CRM. A user fills out a form on your website. Your scenario takes that data and sends it to your CRM. Your CRM configuration requires a phone number, but some users leave that field blank on your form. When you run your scenario, it fails.&#x20;

Without an error handler - The scenario stops. The contact isn't created in your CRM, and the execution moves to the Incomplete Executions tab (if enabled). You have to manually intervene, type in a dummy number such as "000-000-0000" in the phone number field, and continue.

With an error handler - To handle this issue, you add a Resume error handler. You instruct your Resume error handler to use a substitute value for missing phone numbers and continue the scenario. The scenario finishes successfully. The contact is created in HubSpot with the substitute date in the phone field, and you don't have to intervene further.

Since the error isn't a glitch that will fix itself (like a server being down), an incomplete execution would just sit there forever until you manually typed in a value. The Resume handler automates that for you by providing a substitute.

To maintain system reliability and operational integrity,  automatically captures errors without stopping your  or losing your data. This is done using **Error handlers** or error handling directives.&#x20;

:::hint{type="success"}
 adheres to industry-standard error codes and definitions. However, it may be possible that the third party may not fully comply with these standards.
:::

## Different types of error handlers

The following topic provides a quick reference to working with error handlers in . If you want to learn more about individual error handlers, check the dedicated articles in this section of the Help Center.

**There are five error handlers in&#x20;**&#xNAN;**:**

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
### Skip&#x20;
:::

:::VerticalSplitItem
The Skip error handler skips the error and removes the affected bundle from the  flow, allowing the  to continue with the next bundle. It’s useful when occasional invalid data is expected and doesn’t impact your process. It prevents the  from stopping and marks the run a&#x73;**&#x20;successful**, even if an error occurs.&#x20;

**Scenario stopped**: No

**Scenario status**: Success

To learn more, see the [Skip error handler](docId\:j9XCttcBfDwq3q3u144FN) page.&#x20;
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
### Retry
:::

:::VerticalSplitItem
The Retry error handler removes the failing bundle from the scenario flow. It stores the error details and remaining steps as an incomplete execution, and allows the rest of the scenario to continue running.   retries the incomplete  runs according to your configuration or stores them until you resolve them yourself. Make﻿ processes the rest of the bundles in the scenario﻿ flow normally. The scenario ends with a **Warning&#x20;**&#x73;tatus.&#x20;

**Scenario stopped**: No

**Scenario status**: Warning

To learn more, see the [Retry error handler](docId\:cPTWi8yI45ZL3M5slzjNV) page.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
### Resume
:::

:::VerticalSplitItem
The Resume error handler replaces the failed module’s output with a predefined substitute output when an error occurs. If the module fails, the scenario continues to run using the substitute value in the subsequent steps. This allows the scenario to continue running smoothly using that data instead of stopping.&#x20;

**Scenario stopped**: No

**Scenario status**: Success

To learn more, see the [Resume error handler](docId\:wr8AAEME2pTFar38VXD3p) page.&#x20;
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
### Commit
:::

:::VerticalSplitItem
The Commit error handler stops the scenario﻿ run and commits all changes made up to that point in the database apps. If the scenario doesn’t use transactional apps (such as MySQL or Data Store), the handler simply stops the scenario. ﻿Make﻿ doesn't process the rest of the modules in the scenario﻿ flow. The scenario ends with a **Warning&#x20;**&#x73;tatus.

**Scenario stopped**: Yes

**Scenario status**: Warning

To learn more, see the [Commit error handler error handler](docId\:vx_5byW32D43uwVobwE7t) page.&#x20;
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
### Rollback&#x20;
:::

:::VerticalSplitItem
Make stops the scenario run and reverts any changes in modules that support transactions. The remaining modules are not processed, the scenario is deactivated after repeated runs with errors, and the run ends with an **error&#x20;**&#x73;tatus.

**Rollback** is the default error handling if you don't set any error handling and when you keep [incomplete executions](docId:6zZNn7v35hERRCJFccp9Q) disabled.

**Scenario stopped**: Yes

**Scenario status**: Error

To learn more, see the [Rollback error handler](docId:64Ex54PN88vgyeJrsX10g) page.
:::
::::

***

## The error handling route

In , an error handling route is visually identified by a transparent, dotted connection. These routes define the logic path the scenario follows when a module encounters an exception.

When an error handler activates, it doesn't consume operations.  doesn't bill you for handling unexpected events in your .

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/wIOVHZfIGjdoU97tpYW9f-20260525-070544.png)



The error handling route doesn't have to have an error handler. For example, in the error handling route, there can be only a **Slack** > **Create a message** module to send you a Slack notification when an error occurs.

If no module outputs an error in the error handling route,  skips the error. That means that the two error handling routes on the pictures work the same:

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/jKbAa9SXx0XZL0C6uuHs_-20260525-071835.png)
:::

:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/5sxaANTrU2YJFP3VtYBQq-20260525-071835.png)
:::
::::

If a module in the error handling route outputs an error, the  run ends with an error.

## How to approach error handling

You have multiple options on how to handle errors in . Make handles some of the most frequent errors by default, and you'll typically need custom error handling only when dealing with a specific issue.

The most frequent errors in running scenarios are the `RateLimitError` and `ConnectionError`. You can rely on the default error handling for these errors if you enable [incomplete executions](docId:6zZNn7v35hERRCJFccp9Q). The details of the error handling of these errors are in their [dedicated articles](docId\:oXGTALGVUR0yzKN_UX9wK).

If you need to handle a different error type or if you need to customize the default error handling, you should consider:

- How important is the data the  processes?
  For important ,  can store partial  runs in incomplete executions. You can resolve the incomplete  runs manually one by one or retry multiple of them at once.
- What type of error does the module output and how frequently?
  If the error occurs rarely and it's a temporary error, like the `RateLimitError`, you can rely on the default  error handling. But if the error is critical, like the `InvalidAccessTokenError` or `the InconsistencyError`, you should set up error handling.
- What is the impact of the error?
- If the error has no impact on your data or your processes, you could skip the error with the [Skip error handler](docId\:j9XCttcBfDwq3q3u144FN). If the error has a high impact on your processes, you should consider enabling incomplete executions in  settings.

For ideas about specific error handling strategies, you can check the [list of dedicated articles](docId\:xuAV7DqHvLAnlP6LrAMGP).

## Scenario settings that impact error handling

The  settings play a key role in error handling. The following list focuses on how some  settings influence error handling. For more info about Make settings, check the [dedicated article](docId\:evAR6qLowV4yyUnEyV-00).

### Store incomplete executions

Enable this option to store the incomplete  run when a module in the  outputs an error.

With incomplete executions enabled,  stores the  state when the error happened as an incomplete execution. You can then check the  run, investigate why the error happened, and fix it to finish the  run successfully. In addition, all  errors turn into warnings.

- When you use the [Retry error handler](docId\:cPTWi8yI45ZL3M5slzjNV) in your , you have to enable incomplete executions.
-  doesn't store the incomplete  run in these conditions:
  - When the error happens on the first module in the scenario.
    However, you can add the **Retry** error handler to the first module in the . With the **Retry** error handler,  stores the incomplete execution even when the first module in the  outputs an error.
  - When your incomplete executions storage is full. If your incomplete executions storage is full,  checks the [enable data loss](docId\:sN7McE4QmL-Q6wDTOOcSy) setting:
    - If the data loss is disabled,  disables the .
    - If the data loss is enabled,  keeps scheduling  runs and discards the incomplete execution if it cannot be stored in your account.

You can read more about incomplete executions in the [dedicated article](docId:6zZNn7v35hERRCJFccp9Q).

Good. I can see the existing **Store incomplete executions** section under "Scenario settings that impact error handling." Your new content fits there as a subsection — specifically appended after the existing Store Incomplete Executions explanation, since it describes a behavior variant specific to Router scenarios.

Here's the drafted section, written to match the style and voice of the existing page:

:::hint{type="info"}
**Behavior with a Router module**

When S**tore incomplete executions** is enabled and a bundle errors inside one of a router's routes, the scenario does not stop. Instead:

- The error is treated as a **warning** - the scenario continues running.
- The bundle stops processing at the failing module within that route and does not continue further along that route.
- The same bundle is still pushed through all other Router routes and processes normally in any route whose filter conditions are met.
- The errored execution is stored in th&#x65;**&#x20;Incomplete Executions&#x20;**&#x74;ab for review or retry.

This means a single bundle can partially succeed, completing in some routes while being captured as incomplete in the one where the error occurred.
:::

### Process data in order

Enable this option to postpone running the  until the previous run finishes and until all  incomplete executions are resolved. Process data in order makes sure that:

- The  runs finish in the same order as they were triggered.
- There is only one  execution running at the same time.

Process data in order has the highest impact on  that start with an instant trigger (a webhook) or on  that have incomplete executions enabled.

 that start with an instant trigger run in parallel by default. For example:

If you have a  that starts with a webhook that runs for 5 minutes and you receive a webhook bundle at 12:00 and another one at 12:03, then from 12:03 to 12:05 there will be two instances of the  running at the same time in parallel.

In addition, if the  instance that started at 12:00 runs longer than usual, for example, until 12:12, the  instance that started at 12:03 finishes sooner (at 12:08), even though it started later.

If you want to make sure that the  doesn’t start before the previous run finishes, enable the Process data in order.

See [webhooks](docId:1yhUnJ8jvZyxiP9Cf3Ps1) for more information.

:::hint{type="info"}
The same applies to  with the incomplete executions enabled. When there is an error and  creates an incomplete execution,  postpones the next  run until you resolve the incomplete execution or until it’s resolved automatically with the **Retry** error handler.
:::

You can read more in the [scenario settings](docId\:evAR6qLowV4yyUnEyV-00).

### Enable data loss

The enable data loss  setting influences the  incomplete executions storage. Enable this option to keep scheduling  runs regardless of not having enough space to store incomplete executions.

If you enable data loss,  discards the data that doesn't fit into the size limits and continues running the  on schedule. Otherwise,  disables the  scheduling instead.

 sets the size limits based on your organization plan. Check the  [pricing](https://www.make.com/en/pricing) or read more about the [scenario settings](docId\:evAR6qLowV4yyUnEyV-00).

### Number of consecutive errors

This setting allows you to set how many times in a row the  can finish with an error and still keep being scheduled by  for subsequent runs. When the  finishes with an error the specified number of times in a row,  disables the .

To access the setting of the number of consecutive errors, switch the advanced settings toggle in  settings. The default number of consecutive errors is 3.

The number of consecutive errors doesn't apply:

- When the  is triggered with an [instant trigger](docId\:PDoPIBceCKCboMPpKplmY) (webhook).  disables instantly triggered  immediately if an error happens.
- When an error happens with one of the following types:
  - `AccountValidationError`
  - `OperationsLimitExceededError`
  - `DataSizeLimitExceededError`
     disables the  scheduling immediately after the error happens.
- When you get a warning. If a  finishes with a warning,  will keep scheduling subsequent  runs.

### Auto-commit

Enable this option to commit changes right after they happen. For example, when a user triggers a  that updates their details.

If you disable this option,  commits the changes after all modules execute successfully.

The setting affects only modules that support transactions. The modules supporting transactions are labeled with the "ACID" tag. They use a database app most of the time, like the Data Store or MySQL apps.

The modules that don't support transactions make changes immediately and don't provide the rollback functionality.

You can read more about the auto-commit option in the [scenario settings](docId\:evAR6qLowV4yyUnEyV-00) article.

### Commit trigger last

Enable this option to commit changes made by the first module in the  last. Otherwise,  commits the changes in the same order as they happen.

The setting affects only modules that support transactions. The modules supporting transactions are labeled with the "ACID" tag. They use a database app most of the time, like the Data Store or MySQL apps.

The modules that don't support transactions make changes immediately and don't provide the rollback functionality.

You can read more about the commit trigger last option in the [scenario settings](docId\:evAR6qLowV4yyUnEyV-00) article.

[title] Developers
[path] Explore more/

Discover the  DevTool to debug your scenarios like a pro:

::::LinkArray{contentSource="DOCS" sourceParentDocId="aJnLpqzcDARgN4AuHbHdF" childrenDocs="[object Object]" itemsPerRow="2" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/R0j__KYqBU9YnveVHnQ4A_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="bChJZZdDEM-1PyFEx4NPC" displayMode="CARD" docSeoDescription="Debug your scenarios by inspecting API calls, responses, and execution history with Make DevTool"}
[Make DevTool](docId\:bChJZZdDEM-1PyFEx4NPC)
:::
::::


[title] Make AI Agent (New) best practices
[path] Make AI Agent (New)/

Agents need a well-designed setup and instructions to perform as expected. In this guide, discover tips for building AI agents in , such as tool naming, prompting, and data access.

:::ExpandableHeading
## Tools

Tools are your agent's hands and actions. They give your agent the capabilities to perform its tasks by connecting to third-party services, such as apps and MCP servers.

### Tool names and descriptions

Your agent chooses the right tool for a task based on its name and description. When adding a tool, clearly describe what the tool does and when to call it. For example:

- **Tool name:** "Add customer email to spreadsheet."
- **Tool description:&#x20;**"Adds a new customer email address to the Customer Contacts spreadsheet. Do not add if email address is invalid or already exists."&#x20;

Additionally, in the agent's **Instructions&#x20;**&#x6F;r **Inputs**, specify correct tool names and when to call the tools.&#x20;

### Tool inputs and outputs

Define tool inputs and outputs to help the agent understand the data to pass into tools and the data that they return to the agent.

When your tool is a scenario, you define inputs and outputs automatically when you build the .&#x20;

These are examples of input and output items:

- **Input items:&#x20;**&#x43;ustomer email address, first name, last name, email body, and row ID from a spreadsheet
- **Output items**: Email timestamp and success status&#x20;

In **Instructions**, add tool input and output examples so the agent has a reference for the data you expect to receive.&#x20;

**Sample input and output examples**

Example input:&#x20;

`{ `

`"subject": "Meeting Reschedule Request", `

`"email_address": "sarah.johnson@company.com", `

`"content": "Hi, I need to reschedule our 2pm meeting today. Something urgent came up. Can we do tomorrow at the same time?", `

`"sender_name": "Sarah Johnson" `

`} `

Example output:&#x20;

`{ `

`"response": "Subject: Re: Meeting Reschedule Request\n\nHi Sarah,\n\nNo problem at all - I understand things come up! Tomorrow at 2pm works perfectly for me.\n\nI'll send you a new calendar invite shortly. Looking forward to connecting then.\n\nBest,\n[Your name]" `

`}`

### Tool output validation&#x20;

If you want to approve a tool's output before the agent continues to the next step, add a tool that sends the output to you to review.&#x20;

In the agent's instructions. explain this extra step. For example, instruct the agent to send the email from a **Gmail&#x20;**> **Draft an email&#x20;**&#x6D;odule to you on Slack using a **Slack&#x20;**> **Send a message** module. Reply to the Slack message to confirm the draft or request further changes.&#x20;
:::

::::ExpandableHeading
## Instructions

Instructions are like a briefing document for your agent. A vague or incomplete briefing creates more opportunities for unpredictable results.&#x20;

### Items to include

To help your agent perform as expected, include these items in your instructions:

- All steps that the agent takes to complete its tasks
- Tools that the agent calls at each step, including their names and what they do
- Knowledge files to reference at each step and what they contain
- Guardrails that define expected and undesirable behavior&#x20;
- Examples of inputs and outputs, including their expected formatting&#x20;
- Examples of exceptional situations and how to respond

### Formatting&#x20;

Organize your agent's instructions with headers, bullet points, or numbered lists so that your agent can easily understand them. Optionally, to make them even clearer, use an LLM to rewrite your instructions in Markdown.

### Example

The following is a simple example of agent instructions to use as a template:&#x20;

**LEAD QUALIFICATION AGENT**

You autonomously process inbound leads, research companies, and draft personalized email responses.

**INPUTS&#x20;**

- sender\_email: Lead's email address
- sender\_name: Lead's name
- email\_subject: Email subject line
- email\_body: Email content
- thread\_id: Gmail thread ID

**AVAILABLE TOOLS**

- **research\_lead\_information**: Research companies
- **get\_freebusy\_information**: Check calendar availability
- **create\_email\_draft**: Create Gmail draft (HTML format required)

**WORKFLOW**

**1. EXTRACT COMPANY INFO**

- Get domain from sender\_email
- Identify company name and sender details

**2. RESEARCH THE COMPANY**

Call research\_lead\_information to gather:

- Industry and company size
- Products/services offered
- Recent news or funding
- Potential pain points

**3. QUALIFY THE LEAD**

Assign a score based on:

- **HIGH**: Target industry + clear budget + specific inquiry
- **MEDIUM**: Relevant industry but unclear fit
- **LOW**: Outside target, generic inquiry, or spam-like

**4. DECIDE ON THE MEETING**

**Propose meeting if:**

- HIGH qualification score
- Clear business opportunity
- Specific request or need
- Near-term timeline

**Skip meeting if:**

- LOW score or generic inquiry
- Information-only request
- No commercial intent

**5. GET MEETING AVAILABILITY (IF MEETING WARRANTED)**

- Call get\_freebusy\_information
- Find 2-3 slots in next 3-5 business days
- Prefer 10 AM - 5 PM Berlin time

**6. DRAFT PERSONALIZED RESPONSE**

Include:

- Personalized greeting
- Reference their specific inquiry
- Show company knowledge
- Provide relevant value
- Clear next step or meeting proposal

**7. CREATE DRAFT**

Call create\_email\_draft with HTML-formatted body:

:::BlockQuote
\<div style="font-family: Arial, sans-serif;">  \<p>Hi \[Name],\</p>  \<p>\[Content paragraph]\</p>  \<p>Best regards,\<br>\[Your name]\</p>\</div>
:::

**GUARDRAILS**

- Execute fully autonomously
- ALWAYS research before deciding
- ALWAYS call create\_email\_draft for every lead
- Use HTML format for email body
- Personalize every response
::::

:::ExpandableHeading
## Knowledge

Knowledge is information that your agent references to tailor its responses to your goals. It typically consists of files with information that rarely changes, such as your internal guidelines and processes.&#x20;

### What to use as knowledge

Knowledge files contain information that the agent uses across all tasks, for example:

- Company guidelines
- Internal knowledge bases, such as Confluence pages
- Support tickets
- Community posts
- Slack conversations
- Style guides
- Brand guidelines

Upload files that reflect what you want the agent to reproduce in the results.&#x20;

### What not to use as knowledge

Avoid uploading the following information as knowledge:

- Vague information that the agent can interpret in different ways
- Sensitive data, such as customer information and billing details
- Information that changes frequently, such as client directories
- Unrepresentative or poor-quality examples&#x20;

Consider the garbage in, garbage out (GIGO) principle: lower-quality inputs lead to similarly flawed outputs.
:::

:::ExpandableHeading
## Models

A model refers to a large language model (LLM). When you configure your agent, you have many LLMs to choose from, each with varying costs depending on factors like processing speed and reasoning abilities.

Start with a large, advanced LLM, such as Make AI Provider's Large model. Test the agent multiple times to see how well the model works for you. Once you know what good performance looks like, scale down gradually to other LLM types.

When deciding on an LLM for an agent, keep these factors in mind:

- **Cost:** The cost of input and output tokens used to process data sent to the LLM (inputs) and to generate responses (outputs).
- **Speed**: Faster models are ideal for chat-based or real-time tasks due to their quick reactivity, while slower models are best for complex tasks that require advanced reasoning.&#x20;
- **Tasks**: Smaller models can handle simple categorizing or routing, while more advanced models are required for complex decision-making or multi-step reasoning.

Ultimately, the right LLM depends on your goals. Some LLMs excel in specific areas, such as writing and coding, while others are skilled generalists. Refer to your AI provider documentation to check how it classifies its models in these terms.&#x20;
:::

:::ExpandableHeading
## Outputs

You can define how your agent formats its outputs, depending on the task.&#x20;

### Response format

You can define how your agent formats responses in the **Response format&#x20;**&#x66;ield of the **Run an agent** module.&#x20;

Select **Text&#x20;**&#x74;o return a text-based response, or **Data structure** to define a custom format. In **Data structure**, define individual data items (**Add item**). Alternatively, specify a content type (**Generate**), such as JSON or XML, for example:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ewWXOrFUNz-IzZmWOA_jt-20260205-093720.png" size="40" width="765" height="628" position="center" darkWidth="765" darkHeight="628" showCaption="false"}

### Files

You can instruct the agent to output uploaded files or text in a specific format. In the **Run an agent&#x20;**&#x6D;odule, in **Instructions&#x20;**&#x6F;r **Input**, ask the agent to convert text or an uploaded file to a PDF, DOCX, TXT, or CSV format.&#x20;
:::

:::::ExpandableHeading
## Testing&#x20;

Agents rarely perform as you expect them to when you first run them, so you'll need to test them multiple times. After running the , resolve issues by improving the instructions, checking the agent outputs, and changing your tool names and descriptions.&#x20;

### AI-improved instructions&#x20;

Most errors or unexpected results come from unclear or misleading instructions. Improve prompts using LLMs like ChatGPT and Claude instead of editing them manually.

Request an update to the prompt based on this information:

- Your current instructions
- The execution steps in the agent's output
- What the agent was thinking at each step from the **Reasoning&#x20;**&#x74;ab of the agent's output (if available)

Add your new prompt to **Instructions&#x20;**&#x61;nd run the agent again. If needed, repeat this process until the agent works as expected. &#x20;

### Output debugging

After your agent runs, review its outputs to understand why and how it made its decisions.&#x20;

**View the agent's reasoning for step-by-step logic**

In the **Reasoning&#x20;**&#x74;ab, check what the agent did at each step, including inputs and tools used. You can also view its thinking when you're using a reasoning model, and the agent decides that a complex task requires deeper reasoning.

**View outputs for results and execution details**

In the **Output&#x20;**&#x74;ab, expand output bundles to check the agent's response in **Response**. In **Metadata**, expand the **Execution steps** to view all steps in the agent run, including the role, tools, and data involved.&#x20;

Once you understand how the agent made its decisions in its output, you can improve its instructions or tools.&#x20;

### Tool debugging

If tools return errors, or the agent doesn't call them when expected, change your tool names and descriptions.&#x20;

To do this, click the handle next to the tool and edit the **Tool name&#x20;**&#x61;nd **Tool description&#x20;**&#x66;ields. Once done, edit the agent prompt (in **Instructions&#x20;**&#x6F;r **Inputs**) where the tool is mentioned to match the tool name.

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/_tYkjX05cwEQWRMuF-RGX-20260201-155748.png" size="70" width="182" height="193" position="flex-start" darkWidth="182" darkHeight="193" showCaption="false"}
:::

:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/RHJfquO3z5eSKXU7lao3P-20260201-155856.png" size="70" width="822" height="885" darkWidth="822" darkHeight="885" position="flex-start" showCaption="false"}
:::
::::
:::::

:::ExpandableHeading
## Data security

The large language models (LLMs) behind your agent are evolving systems that are vulnerable to risks, such as Personally Identifiable Information (PII) disclosure in outputs and prompt hacking. Assume that anyone could access the information you share with your agent, including its tool data and knowledge.

### Limit access to information

Agents only use the personal data that you provide through prompts, tools, knowledge, and files. To reduce data security risk, only give your agent the data that it needs to do its job. Avoid exposing it to sensitive or non-essential information.

For example, allow your agent to export the free/busy slots of your calendar rather than the entire calendar.

You can map data into the agent's tools instead of directly exposing it to the agent for additional security.

### Set clear guardrails

To control how your agent handles your data, set clear expectations for desired and undesirable behavior in **Instructions**, such as:

- Limiting engagement with off-topic queries
- Avoiding sharing sensitive information in outputs
- Flagging harmful or unsafe inputs
- Prioritizing internal knowledge bases as references
- Prompting a human to validate outputs

However, agents could still behave unpredictably and ignore or misinterpret your explicit guardrails. Choose your data with this assumption in mind.&#x20;
:::

:::ExpandableHeading
## Token optimization

Agents use tokens to process inputs and return outputs. Reduce token usage by limiting the amount of data they handle.

### Limit data scope

Reduce the information an agent processes by restricting its inputs and outputs.&#x20;

To limit the data handled in requests:

- **Filter inputs**, such as narrowing a database search to a specific date or field, mapping a specific value instead of an entire file, or adding a filter in the route before the agent.&#x20;
- **Upload reference files as knowledge** so that the agent only retrieves relevant information.

### Limit conversations in memory

When the agent uses the same Conversation ID, the conversation history grows larger with each exchange and requires more tokens to process. Leave the **Conversation ID&#x20;**&#x66;ield blank to reduce the conversation history passed to the agent and significantly lower token usage.
:::


[title] Mailhook-triggered AI agent
[path] Make AI Agent (New)/Create AI agents for different triggers/

This mailhook-triggered AI agent scenario watches for new emails, and the agent replies to them. Mailhooks (email webhooks) immediately trigger  in response to new emails, rather than [on a schedule](docId\:SclqhRvEy8NQgRTM5AMnP). &#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/qGNDOupP6qFeiew9ABCTg_mailhook-triggered-ai-agent.png)

## Prerequisites

- Two email accounts, such as a business email address and a personal email address

**This example uses Gmail.** If you have a different email provider, see its documentation for equivalent settings in the relevant steps.&#x20;

## Step 1. Add a Custom mailhook module

The **Webhooks&#x20;**> **Custom mailhook&#x20;**&#x6D;odule generates an email address (mailhook) that your email provider forwards new emails to, triggering the .

To add a **Custom mailhook&#x20;**&#x6D;odule:

::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, in the top-left corner, name your  and click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click the giant plus.&#x20;
:::

:::WorkflowBlockItem
In the app search, search for and click **Webhooks**.&#x20;
:::

:::WorkflowBlockItem
Select the **Custom mailhook** module.&#x20;
:::

:::WorkflowBlockItem
In the module settings, in **Mailhook**, click **Add**. &#x20;
:::

:::WorkflowBlockItem
In **Webhook name**, name the mailhook. For example, use the  name.&#x20;
:::

:::WorkflowBlockItem
Click **Save**. You'll now see the generated mailhook to use in later steps.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/_8Wzdo8HuFT2alJxIZ-mV-20260310-151201.png" size="70" width="558" height="419" position="center" darkWidth="558" darkHeight="419" showCaption="false"}
:::

:::WorkflowBlockItem
Copy the address to your clipboard and click **Save**. You'll later update your email settings to forward emails to it.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x69;n the  toolbar.&#x20;
:::
::::

You've now added a **Webhooks&#x20;**> **Custom mailhook&#x20;**&#x6D;odule.&#x20;

## Step 2. Add your mailhook as a forwarding email&#x20;

In the email account where new emails trigger the , add the mailhook as a forwarding address so your email provider sends new emails to it.&#x20;

To add the mailhook as a forwarding address:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Open your  Gmail account.&#x20;
:::

:::WorkflowBlockItem
Click the **Settings&#x20;**&#x69;con in the top-right menu, and click **See all settings**.&#x20;
:::

:::WorkflowBlockItem
Go to the **Forwarding and POP/IMAP** tab.&#x20;
:::

:::WorkflowBlockItem
Click **Add a forwarding address**.&#x20;
:::

:::WorkflowBlockItem
Paste the mailhook that you copied earlier.&#x20;
:::

:::WorkflowBlockItem
Agree to proceed in all remaining steps.
:::
::::

You've now added the mailhook as a forwarding address in Gmail.&#x20;

## Step 3. Create an email filter&#x20;

To send only specific incoming emails to the mailhook, rather than all emails, create a filter in Gmail.&#x20;

To create an email filter:&#x20;

:::::WorkflowBlock
:::WorkflowBlockItem
In **Settings&#x20;**&#x69;n your Gmail account, go to the **Filters and Blocked Addresses** tab.&#x20;
:::

:::WorkflowBlockItem
Click **Create a new filter**.
:::

::::WorkflowBlockItem
In **From**, enter the email address associated with the email account that you're in now. &#x20;

:::hint{type="info"}
Use your own email address so you can send yourself an email and reply to it. Your email reply passes an important header into  called `references` that you must map later in the .
:::
::::

:::WorkflowBlockItem
Click **Create filter**.&#x20;
:::

:::WorkflowBlockItem
Select **Forward it to:&#x20;**&#x61;nd select the mailhook that you added in the previous step.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/vi30Xf7yw6_bx_nXKy5BV-20260311-150732.png" size="70" width="806" height="639" position="center" darkWidth="806" darkHeight="639" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Create filter**.&#x20;
:::
:::::

You've now created an email filter, so only specific emails go to the mailhook.&#x20;

## Step 4. Send a test email to the Custom mailhook module

To test that your **Custom mailhook** module receives forwarded emails from Gmail:

::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, click **Run once** on the  toolbar.&#x20;
:::

:::WorkflowBlockItem
In Gmail, send yourself an email.&#x20;
:::

:::WorkflowBlockItem
Once the mailhook receives the email, you can click the output bubble of the **Custom mailhook&#x20;**&#x6D;odule to view the email properties, such as headers.&#x20;
:::
::::

You've now sent a test email to yourself. Next, reply to it.&#x20;

## Step 5. Reply to the test email&#x20;

Reply to the first test email to pass headers that are only available in email replies —`in-reply-to` and `references`—into the  for mapping. You'll need these values for replying to emails.&#x20;

To reply to the test email:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Click **Run once** on the  toolbar.&#x20;
:::

:::WorkflowBlockItem
Go to your Gmail account.&#x20;
:::

:::WorkflowBlockItem
Reply to the email that you sent yourself.&#x20;
:::

:::WorkflowBlockItem
Once the mailhook receives the email, click the output bubble to expand `Headers` and view the values you'll use in later steps:&#x20;

- `message-ID`: The unique ID of an email
- `in-reply-to`: The message ID of the email being replied to&#x20;
- `references`: A list of message IDs in a single thread of emails, with the first ID being the initial email
:::
::::

The **Webhooks&#x20;**> **Custom mailhook** is complete now that it has reply email output data.

## Step 6. Add a Run an agent module

To add the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule:

:::::WorkflowBlock
:::WorkflowBlockItem
Click the plus icon next to the **Webhooks&#x20;**> **Custom mailhook&#x20;**&#x6D;odule.&#x20;
:::

:::WorkflowBlockItem
In the app search, search and click **Make AI Agent (New)**.&#x20;
:::

:::WorkflowBlockItem
Click the **Run an agent** module.&#x20;
:::

::::WorkflowBlockItem
In **Connection**, select an existing AI provider connection from the dropdown or click **Add&#x20;**&#x74;o add a new one.&#x20;

:::hint{type="info"}
If you don't want to create an account with an AI provider, select **Make's AI Provider**.&#x20;
:::
::::

:::WorkflowBlockItem
In **Model**, select a model from your chosen AI provider.
:::

:::WorkflowBlockItem
In **Instructions**, describe who the agent is and what it does. Alternatively, copy-paste the following: You are a helpful agent who replies to emails.&#x20;
:::

::::WorkflowBlockItem
In **Input**, tell the agent to read the email content and answer in HTML. You can copy-paste the following:&#x20;

Read the content of this email \</content> Text \</content>, and answer in HTML format. Directly reply to the email. Don't add any internal instructions or provide an email signature.&#x20;

:::hint{type="info"}
While optional, XML tags (\</content>) clearly separate data (`Text`) from the rest of the instructions.&#x20;
:::
::::

:::WorkflowBlockItem
Replace Text with the `Text` value from the **Webhooks** > **Custom mailhook** module.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/LqdAYMZaecRD0SbybR8XS-20260312-124822.png" size="60" width="343" height="191" position="flex-start" darkWidth="343" darkHeight="191" showCaption="false"}
:::

::::WorkflowBlockItem
In **Conversation ID**, enter the following function: `ifempty(` `first(` `split(` Headers: references`;` `space` `)` `)` `;` Headers: message-id`)`

:::hint{type="info"}
This function uses the first message ID listed in the `reference` header, and if empty, uses the `message ID`. The` split(`splits the reference array into individual values and the `first(` uses the first value.&#x20;
:::
::::

:::WorkflowBlockItem
Replace the text in the function (Headers: reference and Headers: message-id) with the corresponding values from the **Webhooks&#x20;**> **Custom mailhook** module.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/7EdO6nIaT2bTJgWMtlnA2-20260312-132350.png" size="70" width="527" height="236" position="center" darkWidth="527" darkHeight="236" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x69;n the  toolbar.&#x20;
:::
:::::

You've now added a **Run an agent&#x20;**&#x6D;odule.

## Step 7. Add a Send an email module

The **Gmail&#x20;**> **Send an email&#x20;**&#x6D;odule replies to emails with agent-generated answers from the **Make AI Agent (New)** >**&#x20;Run an agent&#x20;**&#x6D;odule.&#x20;

To add a **Send an email&#x20;**&#x6D;odule:

::::WorkflowBlock
:::WorkflowBlockItem
Click the plus icon next to the **Make AI Agent (New)&#x20;**> **Run an agent** module.&#x20;
:::

:::WorkflowBlockItem
In the app search, search for **Gmail&#x20;**&#x61;nd clic&#x6B;**&#x20;Send an email**.&#x20;
:::

:::WorkflowBlockItem
In the module settings, in **Connection**, select the Gmail connection that you used to create the mailhook.
:::

:::WorkflowBlockItem
In **To**, map the `Sender: Email address` value from the **Webhooks&#x20;**>**&#x20;Custom mailhook** module.&#x20;
:::

:::WorkflowBlockItem
In **Subject**, map the `Subject` value from the **Webhooks&#x20;**> **Custom mailhook&#x20;**&#x6D;odule.&#x20;
:::

:::WorkflowBlockItem
In **Body type**, select `Raw HTML` because you requested HTML in the agent instructions.&#x20;
:::

:::WorkflowBlockItem
In **Content**, map the `Response`value from the **Make AI Agent (New)** > **Run an agent** module.&#x20;
:::

:::WorkflowBlockItem
Toggle **Advanced settings**.&#x20;
:::

:::WorkflowBlockItem
In **Additional email headers**, add these email headers:

- **Email header 1**:&#x20;
  - In **Key**, enter in-reply-to.
  - In **Value**, map the `Headers: message-id` value from the **Webhooks** > **Custom mailhook** module.&#x20;
- **Email header 2**:&#x20;
  - In **Key**, enter references.&#x20;
  - In **Value**, map the `Headers: references` and `Headers: message-id` values from the **Webhooks&#x20;**> **Custom mailhook** module.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/dS3uBwLPQ-aP1j1m_oVYQ-20260312-154447.png" size="60" width="534" height="638" position="center" darkWidth="534" darkHeight="638" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::
::::

Your email webhook-triggered AI agent  is now ready to test again.&#x20;

## Step 8. Update the email filter and test it

Based on your current email settings, Gmail forwards emails from yourself—including agent replies to them—to the mailhook.&#x20;

To prevent an infinite loop, where each agent reply triggers the , add a different email address to your email filter, such as your personal email address, and test it from that account.

To update the email filter and test it:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In Gmail, click the **Settings&#x20;**&#x69;con, and click **See all settings**.&#x20;
:::

:::WorkflowBlockItem
Click **Filters and Blocked Addresses**.&#x20;
:::

:::WorkflowBlockItem
Find your existing email filter and click **edit**.&#x20;
:::

:::WorkflowBlockItem
In **From**, add a different email address. &#x20;
:::

:::WorkflowBlockItem
Click **Continue**, then click **Update filter**.&#x20;
:::

:::WorkflowBlockItem
In the email account associated with the new address, send an email to the original email address.
:::

:::WorkflowBlockItem
In the  Builder, click **Run once&#x20;**&#x6F;n the  toolbar to test if agent replies work.&#x20;
:::

:::WorkflowBlockItem
Return to the account associated with the new email address. You now have an email thread with the initial email (**1**) and the agent reply (**2**).&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ylyWdD7SlpHm8HeC0VD9w-20260313-094129.png)
:::
::::

You've now created a mailhook-triggered AI agent , where your target email account forwards emails to a mailhook, and the agent immediately replies to them.&#x20;

Next, you can tailor the email filter with additional specifics, depending on your use case.&#x20;

[title] Telegram-triggered AI agent
[path] Make AI Agent (New)/Create AI agents for different triggers/

This Telegram-triggered AI agent  watches a Telegram Bot chat for new user messages and the agent replies to them.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/g4kPE9MzgIGT_NZtx_RgT_telegram-trigger-ai-agent.png)

## Prerequisites

- A Telegram account&#x20;
- A [Telegram bot](https://core.telegram.org/bots/tutorial)
  - Your token (you'll use this when creating a webhook in )

## Step 1. Add a  Watch Updates module

The **Telegram Bot&#x20;**> **Watch Updates** module watches for new messages from your bot channel in Telegram.

To add the **Telegram Bot&#x20;**> **Watch Updates** module:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, click the giant plus.&#x20;
:::

:::WorkflowBlockItem
In the app search, search for and click **Telegram Bot**.&#x20;
:::

:::WorkflowBlockItem
Click the **Watch Updates** module.&#x20;
:::

:::WorkflowBlockItem
In **Webhook name**, name your webhook to identify it later.&#x20;
:::

:::WorkflowBlockItem
In **Connection**, click **Add&#x20;**&#x74;o create a new Telegram Bot connection:&#x20;

1. In **Connection name**, name your connection to identify it later.&#x20;
2. In **Token**, paste the token you received when you created the Telegram bot.&#x20;
3. Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::
::::

You've now added th&#x65;**&#x20;Telegram Bot** > **Watch Updates&#x20;**&#x6D;odule to your .

## Step 2. Add a route to reply to /start or non-text messages

When you start a conversation with a Telegram Bot, the bot sends a `/start` message to your . As `/start` isn't a unique user message, you don't want it to trigger your agent.&#x20;

Additionally, this example Slack  only accepts text, excluding non-text media, such as images, videos, or audio files.&#x20;

Add a route that sends a welcome message in response to `/start`, or requests text-only messages in response to non-text messages.

To add a route:&#x20;

:::::WorkflowBlock
:::WorkflowBlockItem
Click the plus icon next to the **Telegram Bot&#x20;**> **Watch Updates** module.&#x20;
:::

:::WorkflowBlockItem
In the app search, search for and click **Flow control**.&#x20;
:::

:::WorkflowBlockItem
Click **Router**.&#x20;
:::

:::WorkflowBlockItem
Click the 1st route.&#x20;
:::

:::WorkflowBlockItem
In **Label**, enter `Welcome response`.&#x20;
:::

::::WorkflowBlockItem
In **Condition**, configure the fields based on the following:

- Map the `Message: Text` value from the **Telegram Bot** > **Watch Updates** module.&#x20;
- Text operators: Equal to&#x20;
- `/start`

:::hint{type="info"}
Make sure you've selected `Message:Text` here, rather than a similar value, such as`Edited Channel Post: Text`.
:::
::::

:::WorkflowBlockItem
Click **Add OR rule** to add a second condition for non-text messages:

- Map the `Message: Text` value from the **Telegram Bot** > **Watch Updates** module.&#x20;
- Basic operators: Does not exist

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/4QMBOvbfNFOoV2ZuAhpJe-20260211-161404.png" size="50" width="473" height="425" position="center" darkWidth="473" darkHeight="425" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the   toolbar.&#x20;
:::

:::WorkflowBlockItem
Click the giant plus next to the 1st route.&#x20;
:::

:::WorkflowBlockItem
In the app search, search for and click **Telegram Bot**.&#x20;
:::

:::WorkflowBlockItem
Click the **Send a Text message or a Reply** module.&#x20;
:::

:::WorkflowBlockItem
In **Connection**, select the same Telegram Bot connection that you used earlier.&#x20;
:::

:::WorkflowBlockItem
In **Chat ID**, map the `Message: Chat: ID` value from the **Telegram Bot** > **Watch Updates** module.&#x20;
:::

:::WorkflowBlockItem
In **Text**, enter the following function, so when the message is `/start`, the agent replies "Welcome!", and when it's anything else, the agent replies that it only accepts text.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/2zJoKco7KQJ97O3znSEXf-20260211-155138.png" size="50" width="470" height="142" position="center" darkWidth="470" darkHeight="142" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::

:::WorkflowBlockItem
Test the module:

1. Click **Run once** on the   toolbar.&#x20;
2. In your Telegram Bot chat, click **Start**. This triggers the correct message as a reply.&#x20;
:::
:::::

You've now added a route that replies to `/start` or non-text messages.&#x20;

## Step 3. Add a route to reply to user messages

To add a route to reply to all other user messages:

::::WorkflowBlock
:::WorkflowBlockItem
Click the 2nd route.&#x20;
:::

:::WorkflowBlockItem
In **Label**, enter "`All other user messages`."&#x20;
:::

:::WorkflowBlockItem
Select **Yes&#x20;**&#x74;o **Set the route as a fallback**.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Right-click the **Telegram&#x20;**> **Send a Message or a Reply&#x20;**&#x6D;odule and select **Clone**.&#x20;
:::

:::WorkflowBlockItem
Move the cloned module down until it links to the empty giant plus, then unclick.&#x20;
:::

:::WorkflowBlockItem
Right-click the empty giant plus and select **Delete&#x20;**&#x6D;odule.&#x20;
:::

:::WorkflowBlockItem
In the cloned module, in **Text**, delete the function. Enter "Hello" and map the `Message: Text` value from the **Telegram Bot** > **Watch Updates** module.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::

:::WorkflowBlockItem
Toggl&#x65;**&#x20;Immediately as data arrives** on the  toolbar to activate the .
:::

:::WorkflowBlockItem
To test the , go back to your Telegram Bot chat and send a message to receive an agent reply.&#x20;
:::
::::

You've now added a route to reply to user messages.&#x20;

## Step 4. Add a Run an agent module

To add the **Run an agent&#x20;**&#x6D;odule to the user message route:&#x20;

:::::WorkflowBlock
:::WorkflowBlockItem
Right-click the 2nd route and select **Add a module**.&#x20;
:::

:::WorkflowBlockItem
In the app search, search for and click **Make AI Agent (New)**.&#x20;
:::

:::WorkflowBlockItem
Click th&#x65;**&#x20;Run an agent&#x20;**&#x6D;odule.&#x20;
:::

:::WorkflowBlockItem
In **Connection**, select an existing AI provider connection from the dropdown or click Add to create a new one.&#x20;
:::

:::WorkflowBlockItem
In **Model**, select a small model. Smaller models react quickly to new data, which is ideal for this chat-based AI agent.&#x20;
:::

:::WorkflowBlockItem
In **Instructions**, describe who the agent is and what it does. For now, enter "You are a friendly agent."
:::

:::WorkflowBlockItem
In **Input**, map the `Message: Text` value from the **Telegram Bot&#x20;**> **Watch Updates** module.&#x20;
:::

::::WorkflowBlockItem
In **Conversation ID**, map the `Message: Chat: ID` value from the **Telegram Bot** > **Watch Updates&#x20;**&#x6D;odule.&#x20;

In Telegram, each user has their own `Message: Chat: ID`. The agent uses it to remember the conversation history with the user and answer any follow-up questions.&#x20;

:::hint{type="info"}
As users chat more with your Telegram-triggered agent, storing all past messages can get expensive. To reduce tokens, you can set this field to start fresh conversations periodically (like using a timestamp), so the agent remembers less.&#x20;
:::
::::
:::::

You've now added the **Make AI Agent (New)&#x20;**> **Run an agent&#x20;**&#x6D;odule to the .&#x20;

## Step 5. Add the agent response&#x20;

To finish this , map the agent response in the **Telegram Bot** > **Send a Text Message or a Reply&#x20;**&#x6D;odule to allow the agent to reply to the user message.&#x20;

To add the agent response:

::::WorkflowBlock
:::WorkflowBlockItem
In the **Telegram Bot&#x20;**> **Send a Text message or a Reply** module on the 2nd route, in **Text**, delete the existing text and map the response value from the **Make AI Agent (New)** > **Run an agent** module.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::
::::

You've now created a Telegram-triggered AI agent .

[title] Digital signature
[path] Explore more/Securing data with Make/

A [digital signature](https://apps.make.com/crypto#create-digital-signature) is a string used to verify the identify of the sender and that a message or document is authentic and hasn't been changed.&#x20;

It works by generating a unique hash of the message (using [SHA-1](https://help.make.com/text-and-binary-functions#sha1) or [SHA-256](https://help.make.com/text-and-binary-functions#sha256)), which is then encrypted with the sender's private key. The recipient uses the sender's public key to decrypt the signature and retrieve the hash.  If the hash values of the received message and the sent message match, it confirms both the sender's identity and that the message hasn't been altered.

:::::ExpandableHeading
## Example: Create a digital signature with the Encryptor app

In this example we will:

1. Select content to send to a recipient with a digital signature.
2. Generate a pair of private and public RSA keys.
3. Create a digital signature and attach it to a message.
4. Verify the digital signature.

**Step 1: Select content to encrypt**

In this example, we set a variable `InitialText` with our content to send with a digital signature.

In your scenario, you may have the content set another way or pulled from a different source.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/9wX8upJMbxY8yqAmPXHk--20260209-123012.png" size="60" width="724" height="555" position="flex-start" showCaption="false"}

**Step 2: Generate a pair of private and public RSA keys to use for your digital signature:**

::::WorkflowBlock
:::WorkflowBlockItem
Go to an RSA key generator website of your choice. In this example, we use [this tool](https://emn178.github.io/online-tools/rsa/key-generator/).
:::

:::WorkflowBlockItem
Select or set the following values:
**Bits:** 1024
**Format:** PKCS#1. Make does not support other formats.
:::

:::WorkflowBlockItem
Click **Generate** to get a pair of private and public RSA keys. If you are using a different tool to generate your RSA keys, your steps may be different.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/8ZCIwGRE7b5s0uvuLbg7W-20260209-122133.png" size="90" width="1051" height="553" position="flex-start" showCaption="false"}
:::

:::WorkflowBlockItem
Copy the private and public RSA keys and save them in a safe place.
:::
::::

You will use these keys to create a digital signature, encrypt a text, and allow the recipient to verify your digital signature.

:::hint{type="info"}
You must provide your RSA public key to the recipient ahead of time so they can verify the digital signature.
:::



**Step 3: Create a digital signature:**

::::WorkflowBlock
:::WorkflowBlockItem
Add the **Encryptor > Create digital signature** module to your scenario.
:::

:::WorkflowBlockItem
Click **Create a keychain**.
:::

:::WorkflowBlockItem
Enter a **Name** for your keychain.
:::

:::WorkflowBlockItem
In the **Private Key** field, paste your RSA private key.
:::

:::WorkflowBlockItem
Optional: Add a passphrase. This is not required.
:::

:::WorkflowBlockItem
Click **Create**.
:::

:::WorkflowBlockItem
Select the **Algorithm**. RSA-SHA256 is recommended.
:::

:::WorkflowBlockItem
Select the **Input encoding**. UTF-8 is recommended.
:::

:::WorkflowBlockItem
Select the **Output encoding**. Hexadecimal is recommended.
:::

:::WorkflowBlockItem
In the **Data** field, map the value of the content you want to send.
:::

:::WorkflowBlockItem
Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/jChWuH7R5WadJdwLeSD5N-20260209-123644.png" size="50" width="730" height="586" position="flex-start" showCaption="false"}
:::
::::

The output from the Encryptor module is the digital signature in hexadecimal format. The recipient can use this signature and your RSA public key to verify the validity of the content they received.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/PybZd6Essp5hTSgD5hNux-20260209-124436.png" size="40" width="444" height="659" position="flex-start" showCaption="false"}

**Step 4: Verify the digital signature**

To verify the signature, use an RSA Verify Signature tool. In this example, we use [this tool](https://emn178.github.io/online-tools/rsa/verify/).

Enter the settings, public key, signature, and input to verify the validity. If you are using a different tool to verify the signature, your steps may be different.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/un2FMLwdimL2ElwlLA6Q6-20260209-125343.png" size="90" width="1400" height="908" position="flex-start" showCaption="false"}

If any part of the signature, public key, or input does not match, the result will be invalid and you will know that the message was changed or is not from the expected sender.
:::::


[title] Form-triggered AI agent
[path] Make AI Agent (New)/Create AI agents for different triggers/

This form-triggered AI agent  watches new form responses, and the agent replies to form questions in an email.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/_IIZrwrtlQZDXYhuycHGt_form-triggered-ai-agnet.png)

## Prerequisites

- A Gmail account&#x20;
- A Tally account&#x20;
- A Tally form configured with the following fields:
  - Your first name
  - Your last name
  - Your email&#x20;
  - Your question&#x20;
- A test form submission with your personal email address

While this example uses Tally, you can use any forms service.

## Step 1. Add a Watch New Responses module

The **Tally&#x20;**> **Watch New Responses&#x20;**&#x6D;odule is a [webhook ](https://help.make.com/webhooks)that watches all new form responses.&#x20;

To add the **Watch New Responses** module:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, click the giant plus.&#x20;
:::

:::WorkflowBlockItem
In the app search, search for and click **Tally**.&#x20;
:::

:::WorkflowBlockItem
Click the **Watch New Responses** module.&#x20;
:::

:::WorkflowBlockItem
Click **Create a webhook**:

1. In **Webhook name**, name your webhook to identify it later.&#x20;
2. In **Connection**, select an existing Tally connection. Alternatively, click **Add&#x20;**&#x74;o create a new one and select **OAuth**.&#x20;
3. In **Form ID**, select the form that you created earlier.
4. Click **Save**.
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.
:::

:::WorkflowBlockItem
Test the module:

1. Click **Run once** on the  toolbar.
2. Click the output bubble to view your responses from the test form you submitted earlier.&#x20;
:::
::::

You've now added a **Tally&#x20;**> **Watch New Responses** module to your .

## Step 2. Add a Run an agent module

To add th&#x65;**&#x20;Make AI Agent (New)**> **Run an agent&#x20;**&#x6D;odule:

:::::WorkflowBlock
:::WorkflowBlockItem
Click the plus icon next to the **Tally&#x20;**> **Watch New Responses** module.&#x20;
:::

:::WorkflowBlockItem
In the app search, search for and click **Make AI Agent (New)**.&#x20;
:::

:::WorkflowBlockItem
Click the **Run an agent&#x20;**&#x6D;odule.&#x20;
:::

::::WorkflowBlockItem
In **Connection**, select an existing AI provider connection from the dropdown or click **Add&#x20;**&#x74;o add a new one.&#x20;

:::hint{type="info"}
If you don't want to set up an account with an AI provider, select **Make's AI Provider**.&#x20;
:::
::::

:::WorkflowBlockItem
In **Model**, select a model from your chosen AI provider.
:::

::::WorkflowBlockItem
In **Instructions**, describe who your agent is and what it does. You can copy-paste the below:

You are a friendly agent who answers general questions. Always use HTML for your answers.

:::hint{type="info"}
You request HTML here so that the agent provides its answers in an email in a structured format.&#x20;
:::
::::

:::WorkflowBlockItem
In **Input**, map the `Fields by ID: Your question` value from the **Tally&#x20;**> **Watch New Responses** module, so the agent receives the question from the Tally form.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/3WNKT2YXwfE9umZAjHfQH-20260210-172355.png" size="50" width="467" height="160" position="center" darkWidth="467" darkHeight="160" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.&#x20;
:::
:::::

You've now added the **Make AI Agent (New)** > **Run an agent** module to your .&#x20;

## Step 3. Add a Send an email module&#x20;

With the **Gmail&#x20;**> **Send an email&#x20;**&#x6D;odule, the agent answers the form question directly to the user's email address.&#x20;

To add a **Send an email** module:

::::WorkflowBlock
:::WorkflowBlockItem
Click the plus icon next to the **Run an agent&#x20;**&#x6D;odule.&#x20;
:::

:::WorkflowBlockItem
In the app search, search for and click **Gmail**.&#x20;
:::

:::WorkflowBlockItem
Click the **Send an email&#x20;**&#x6D;odule.&#x20;
:::

:::WorkflowBlockItem
In **Connection**, select an existing Gmail connection from the dropdown or click **Add&#x20;**&#x74;o create a new one.&#x20;
:::

:::WorkflowBlockItem
In **To**, click **Add recipient**.
:::

:::WorkflowBlockItem
&#x20;In **Recipient email address 1**, map the `Fields by ID: Your email` value from the **Tally&#x20;**> **Watch New Responses** module, so the agent replies to the email address specified in the Tally form.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/a-LPEaFyTd9hLRpcUgjND-20260210-175703.png" size="50" width="479" height="196" position="center" darkWidth="479" darkHeight="196" showCaption="false"}
:::

:::WorkflowBlockItem
In **Subject**, specify the subject of the agent's email reply, for example, "Thanks for your question!"
:::

:::WorkflowBlockItem
In **Body type,** select **Raw HTML&#x20;**&#x66;rom the dropdown.&#x20;
:::

:::WorkflowBlockItem
In **Content**, map the `Response` value from th&#x65;**&#x20;Run an agent** module. &#x20;
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::

:::WorkflowBlockItem
Click **Save&#x20;**&#x6F;n the  toolbar.
:::

:::WorkflowBlockItem
Test the :

1. Click the down arrow next to **Run once** on the  toolbar.&#x20;
2. In **Scenario run**, select the previous scenario run to use its trigger data as test data.&#x20;
3. Click **Run once**.&#x20;
4. Check your email to see if the agent replied to your question.&#x20;
:::
::::

You've now created a form-triggered AI agent  .

[title] Connect external providers
[path] Make Grid/

Make lets you connect external providers to your Grid to have a holistic view of your entire automation landscape. You can view the list of providers in the **Manage providers** dialog box.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/TQt734pkB8Zi09BySZrTO_image.png)

## Create a connection to an external provider

To connect your external provider to Make:

::::WorkflowBlock
:::WorkflowBlockItem
In the top-right menu, click **Manage providers**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/NhOQesim0oUk4gGzXquo4_providers-1.png)
:::

:::WorkflowBlockItem
Click **Connect** on the connection you want to create - for example, Relevance AI.&#x20;



![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/4iLV2yXGnsv1v6YB9zV0l_image.png)
:::

:::WorkflowBlockItem
In the dialog box, fill in the attributes such as name, API Key, Region, Project.

This may vary depending upon the connection you select.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/YL16kJO_8ulXQ7ioIPZzu_provider-6.png)
:::

:::WorkflowBlockItem
Click the **Connect to Relevance AI** button.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ZYSbbIycGfGre7xUQEZP-_image.png)

This button will vary depending upon the connection you select.
:::
::::

You are now connected to your provider.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/5ds0Ba_rjvwGd9TQxg9J9_provider-8.png)

## View the details of your connection

2. Once connected, you can view your external provider's automations or AI Agents directly in .

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/NyMRkl7TbPGUTvcDTS7Ip_provider-10.png" size="100" isUploading="false" position="center" width="1920" height="998" darkWidth="1920" darkHeight="998" showCaption="false" indent="2"}

3. Click **Select Layer** to view the additional layers associated with the external providers.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/uGnta5ijrfdPiL99ADjDm_provider-9.png" size="100" isUploading="false" position="center" width="1920" height="998" darkWidth="1920" darkHeight="998" showCaption="false" indent="2"}

4. You can view your list of connections in **Manage providers**. To request a new provider, use the **Request a provider** form.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/emddpLM_Q7A9pei3ILh5n_provider-2.png" size="100" isUploading="false" position="center" width="1920" height="998" darkWidth="1920" darkHeight="998" showCaption="false" indent="1"}

:::hint{type="info"}
- You can add each external provider once per user.
- The external provider is connected to your Grid. If you connect your account to a space, other people in that space do **not** automatically get access.&#x20;
- Other users must connect the same provider themselves using their own login credentials.
- If the saved connection stops working (expired token, changed password, revoked access), Make Grid asks you to reconnect/re-enter credentials.
- You can remove the connection from **Manage providers** and then reconnect it later.
:::

## Disconnect your provider

::::WorkflowBlock
:::WorkflowBlockItem
In the top-right menu, click **Manage providers**.
:::

:::WorkflowBlockItem
In the **Manage providers** dialog box, click **Disconnect**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/I9Lmk5jI4fHXA2SON5EJZ_provider-4.png)
:::

:::WorkflowBlockItem
Type *DISCONNECT*, then click the disconnect button.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/4ZUmDV023fzrr0Y25R8Q3_provider-3.png)
:::
::::

Your provider is now disconnected.&#x20;

[title] Explore Make Grid
[path] Make Grid/

 Grid comes with easy to use navigation and interaction tools to view and customize the canvas.&#x20;

## Make Grid navigation and interaction tools

![Navigate and interact with Make Grid](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Ng5HHPdepvXZ3mEekql_j-20260317-110417.png)

:::Heading{depth="3" indent="1"}
Search
:::

:::Paragraph{indent="1"}
Use the search bar to scan  blueprints, including module configurations such as field values, URLs, scenario notes, and AI Agent system prompts. This means you can find scenarios by what's inside them, not just by name or app. Grid will immediately display the relevant  and their dependencies.
:::

:::Heading{depth="3" indent="1"}
Filter
:::

:::Paragraph{indent="1"}
You can narrow down your search results by  properties such as status, folder, apps being used, creator, etc.
:::

:::Heading{depth="3" indent="1"}
**Need your attention**
:::

:::Paragraph{indent="1"}
You can view errors due to exceeded data store capacity, queued items in a webhook, deactivation or incomplete executions here. By clicking on the errors displayed, you can immediately locate where the error lies and resolve the issue.
:::

:::Heading{depth="3" indent="1"}
**Islands**
:::

:::Paragraph{indent="1"}
Each island represents a folder in your  organization. When you zoom into an island, you can see the dependencies and  that make up the island.
:::

:::Heading{depth="3" indent="1"}
Presence widget&#x20;
:::

:::Paragraph{indent="1"}
You can see active team members and can see each other in real time. Active teammates are visible via live cursors and a presence widget in the toolbar, making it easier to collaborate.&#x20;
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/gh8sG92X_jOzNaCudVwjA-20260319-113026.png" size="100" width="1920" height="998" position="center" darkWidth="1920" darkHeight="998" showCaption="false" indent="1"}

:::Paragraph{indent="1"}
Toggle on and off the **Show Cursors&#x20;**&#x62;utton to enable or disable the cursors.
:::

:::Heading{depth="3" indent="1"}
**User support and feedback**
:::

:::Paragraph{indent="1"}
You can submit feedback using the **Give Feedback** feature. Clicking the **Resources** icon will take you to the help resources of  Grid. You can also view your organization and user details from the additional menu options.
:::

:::Heading{depth="3" indent="1"}
**Modes, views, and zoom&#x20;**
:::

:::Paragraph{indent="1"}
**Dashboard mode**: In this mode, you can view the important metrics and data at a glance.&#x20;
:::

:::Paragraph{indent="1"}
**2D/3D view**: You can switch between two and three dimensional views by toggling between **2D/3D&#x20;**&#x62;utton.
:::

:::Paragraph{indent="1"}
**Dark/Light mode**: Click the sun or moon icon to switch between light and dark visual themes.
:::

:::Paragraph{indent="1"}
**Zoom:&#x20;**&#x55;se th&#x65;**&#x20;+/-&#x20;**&#x74;o zoom in and out of the Grid. Alternatively, scroll up/down or pinch on the trackpad to zoom.
:::

:::Paragraph{indent="1"}
**Last update**: The cloud icon displays the time elapsed since the last data synchronization, so you can always tell how current your data is at a glance.
:::

:::Heading{depth="3" indent="1"}
**Edit Layout**
:::

:::Paragraph{indent="1"}
With the **Edit Layout**, you can customize your workspace layout to suit your workflow. Use the **Edit Layout** button in the toolbar to enter edit mode, where you can freely resize assets, folders (islands), or teams by dragging them into position. Use the yellow resize handles to adjust the size of folders and teams as needed.
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/CiwEB-84PPtaoyL95BcBx-20260316-121738.gif" size="100" width="1908" height="992" position="center" darkWidth="1908" darkHeight="992" showCaption="false" indent="1"}

:::Paragraph{indent="1"}
Use the **Compact folder layout** to rearrange assets and remove empty spaces. This action cannot be undone.&#x20;
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/9DbnwphuXIeKVgTPbWftl-20260317-111859.png" size="100" width="1920" height="998" position="center" darkWidth="1920" darkHeight="998" showCaption="false" indent="1"}

:::Heading{depth="3" indent="1"}
**Select Layer and&#x20;**&#x54;ake snapshot
:::

:::Paragraph{indent="1"}
With the **Select Layer** feature, you can select between different views on your automation landscape, such as:&#x20;
:::

:::Paragraph{listStyleType="disc" indent="2"}
**Explore**: Use this layer to view your core assets and the direct connections between them.
:::

:::Paragraph{listStyleType="disc" indent="2"}
**Credits**: Use this layer to view the credits used in the last 30 days for scenarios, folders, and teams.&#x20;
:::

:::Paragraph{listStyleType="disc" indent="2"}
**Data Transfer**: Use this layer to view the data transferred in the last 30 days for scenarios, folders, and teams.
:::

:::Paragraph{listStyleType="disc" indent="2"}
**Operations**: Use this layer to view the operations completed in the last 30 days for scenarios, folders, and teams.
:::

:::Paragraph{indent="1"}
Use the **What needs attention** toggle to show or hide the **Need your attention&#x20;**&#x77;idget.
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/MfQRCMdmf_E6A_-URR8AL-20260317-111158.png" size="100" width="1920" height="998" position="center" darkWidth="1920" darkHeight="998" showCaption="false" indent="1"}

:::Paragraph{indent="1"}
With the **Take snapshot** feature you can take snapshots of your grid. The image is saved in your downloads automatically.&#x20;
:::

:::Heading{depth="3" indent="1"}
**Team**
:::

:::Paragraph{indent="1"}
A group of people working on a collection of related  in . A team can also be called a collection of islands. You can work together with your team and see active teammates and their cursors in real-time.&#x20;
:::

:::Heading{depth="3" indent="1"}
**Usage status**
:::

:::Paragraph{indent="1"}
This feature is only displayed when a layer is selected. It serves as a quick performance indicator, helping you monitor credits used, data transferred, and operations consumed in the last 30 days.
:::

***

## Make Grid elements

Use the following guide to interpret the specific elements that populate your  Grid. These markers represent some of the core building blocks of your automation landscape:

**Scenarios**

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/tjKkQY7ACmhJQT2VH9XlC-20251209-183858.png" size="80" width="250" height="224" position="center" darkWidth="250" darkHeight="224" showCaption="false"}
:::

:::VerticalSplitItem
This icon represents a **Scenario**. In , a  is a visual workflow that automates how data flows and actions are executed between connected applications and services.
:::
::::

**Webhooks**

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/RlBi5W2vKW2Txm0E_I7DL-20251209-184251.png" size="80" width="220" height="158" position="center" darkWidth="220" darkHeight="158" showCaption="false"}
:::

:::VerticalSplitItem
This icon indicates the presence or configuration of a **Webhook** that facilitates event-driven integration with external services or applications. The color of the Webhook may vary depending on the application it is connected to.
:::
::::

**Assets**

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/7o96YSdm5K0md61ESlTa_-20251209-184936.png" size="80" width="205" height="156" position="center" darkWidth="205" darkHeight="156" showCaption="false"}
:::

:::VerticalSplitItem
This stacked square icon represents an **Asset**. The icon may vary depending on the type of asset you select. It represents a data storage element such as Google Sheets, Airtable, or a database.
:::
::::

**Generic objects**

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/C_me4gEwuKfFOzqrGWC11-20251209-185528.png" size="80" width="220" height="158" position="center" darkWidth="220" darkHeight="158" showCaption="false"}
:::

:::VerticalSplitItem
This hexagonal icon represents a generic object. It can refer to items such as lists, AI assistants, mailboxes, channels, forms, or services. In  Grid, only a limited set of applications is displayed explicitly; all other applications are grouped under services.
:::
::::

**Agent**

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/JOiClCM7p061bsylUwZwR-20251209-192827.png" size="80" width="210" height="152" position="center" darkWidth="210" darkHeight="152" showCaption="false"}
:::

:::VerticalSplitItem
This icon represents the presence of an **AI Agent**.
:::
::::

**Shared assets**

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/uRVe5QOHwoL_Zh39U6eBY-20251209-192213.png" size="80" width="210" height="152" position="center" darkWidth="210" darkHeight="152" showCaption="false"}
:::

:::VerticalSplitItem
**Shared asset&#x20;**&#x69;ndicates that the module is shared across folders or used in multiple .
:::
::::

**Links and arrows**

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/0m-JoH1kw_hI9KVVxPFBX-20251209-193315.png" size="80" width="153" height="88" position="center" darkWidth="153" darkHeight="88" showCaption="false"}
:::

:::VerticalSplitItem
Purple links with an arrow are trigger links, they explain how one module triggers another. The violet links are data links that show how a module interacts with data from another module.
:::
::::


[title] How to use Make Grid
[path] Make Grid/

 Grid helps you understand and manage your automation ecosystem. Here are the most common ways to work with  Grid based on what you're trying to accomplish.

***

### Search scenarios by content

 Grid's search bar doesn't just match scenario names or apps, it also searches inside  blueprints.&#x20;

**What you can do:**

You can find  based on what's configured inside them, including module field values, scenario notes, and AI Agent system prompts. This is useful when you need to track down where a specific value is being used across your automation ecosystem, without opening scenarios one by one.

**Example**:&#x20;

A team member left notes in a scenario explaining a workaround. You remember a word from the note but not the scenario name. You can search that word to find it instantly.

### Open your dependencies from  Grid

Your automation landscape is not just something you can view, it is a fully interactive environment where you can manage your dependencies.

**What you can do**:

You can open, review, and edit connected objects directly from  Grid canvas  without needing to jump between tabs.

**View and edit:** View and edit Google Sheets, Docs, Slides, Calendar, and JotForm directly within  Grid to make live changes.&#x20;

**View only:** Preview Google Forms, Tally, and Typeform to verify configurations.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/EVGmMKGNe8sxB_v1Q8pJV-20260319-112935.png)

**Example:&#x20;**&#x59;ou are reviewing a complex automation and spot a Google Sheet that needs a quick data correction before your automation goes live. Instead of searching through your Drive or browser history, you simply open the Google Sheet from  Grid, update the cell, and save it. You cav perform a cross-platform update without ever leaving your automation map.

***

### View and understand your dependencies

When you're managing multiple , it's easy to lose track of how everything is connected.  Grid shows exactly which  rely on each dependency.

**What you can do**:

Click any dependency, such as an Airtable table, to see which  rely on it. Hover on the specific links to open the  directly. You can also search for any entity such as a table, an URL, or app to instantly see what depends on it.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/3vVMfLq4w-tusD-znW58M-20251210-144029.png)

**Example:** Your team uses a shared "Offboading Users" table in Airtable across multiple . You search for it in  Grid and immediately see it's used by four . Now when someone asks "Can we change this table structure?" you have a complete picture of the impact.

***

### Trace your data flows

 Grid helps showcase data flow of the automation you've built using . When you click on a dependency, you can view which  read or write to that dependency.&#x20;

**What you can do**:

Click on any dependency to see which  interact with it. View which  read from or write to that dependency and understand the chain of actions.

**Example:**

In the example below, you can see that the Request Logger  is triggered by a webhook and it writes to a dependency, which is Google Sheets. So when a colleague asks where does the Request Logger  gets its data from, you open  Grid to explain the flow.&#x20;

Click on the Request Logger  to trace the flow: webhook triggers Request Logger → Request Logger writes to Google Sheets → data is now available for you. Due to this data flow, you can see the chain of actions within your solution.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/UWOXklCD6ySnvf8dmb7to-20251210-154953.png)

***

### Find errors in your scenarios&#x20;

The red flags shown in the image are an indication that your  have errors and need your attention.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/x3MT0CrDx88fsjLVEq2HX-20251210-162312.png)

**What you can do**:

You can either click on individual red flags or click the **Need your attention&#x20;**&#x77;idget and view all  with errors at once. This allows you to quickly identify which scenarios are impacted and prioritize your investigation.

**Example:**

In the example below, click the Slack AI Gardener  error for analysis. Click **Check** to view the ’s history log and investigate further. These errors are not only displayed in  but can also alert you to issues with dependencies, such as capacity problems in data stores or queue backlogs in webhooks.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/gMuiWNIYixZWCZ8ZP7UjQ-20251211-074054.png)

***

### View your credit consumption

&#xNAN;**&#x20;Grid** helps you understand how credits are consumed across your automations. By using the **Select Layer** feature, you can visualize credit usage, data transfer, and operations consumed over the last 30 days. This helps identify  that may need optimization.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/sAcWb1eMAT0VYPQfroGEe-20251212-130220.png)

**What you can do:**

Click on the **Credits** layer and zoom in on a  to view its credit usage. Each  is represented by a circle, where the size of the circle indicates the amount of credits consumed - the larger the circle, the higher the credit usage.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Ce36WxBL5UhWWYojNaPwN-20251212-125744.png)

**Example**:

In some cases, you may see higher consumption than what is displayed in your mapped . In the below example, the  shows a total consumption of **17,280&#x20;**&#x63;redits. However, reviewing the credits consumed by its dependencies, the total is 8,640+0+0=8640. This discrepancy occurs because  Grid does not display the credit consumption by data transformers such as iterators, aggregators, and similar components.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/zb28N0hjGULGC_fez-rhE-20251212-131005.png)

When you open the , you can see it includes an Array aggregator and an Iterator, which together account for the rest of the credits.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Hz1fm412bxbe4IDRVgcLC-20251212-131609.png)

***

### Deprecate a column in your database

 Grid helps you safely deprecate part of a data element, such as a column in a database, by showing where it is used across your automations. This visibility helps prevent breaking  when making changes.

**What you can do**:

Select the dependency and click **Attributes** in the side panel to view all  mapped to a specific column. You can see which  reference that attribute and assess the impact before making changes.

**Example**:

In the example below, you want to deprecate a column in an Airtable called Status.  Grid gives you an option to view the dependencies that map to this attribute. You can click **Attributes** in the side panel and see that this column is used in two . You can then open the scenario by clicking the **Open Scenario** pop-out button and edit the dependency in the  editor.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/SESZgtctOFa30Wk7V5sH9-20251212-134242.png)

***

### Identify the endpoints of your HTTP modules

 Grid helps you quickly identify the service endpoints used by your HTTP apps.

**What you can do**:

Select an HTTP app in the grid and open the **Endpoint** tab in the right-side panel. This shows the service associated with the endpoint.

**Example**:

In the example below, selecting an HTTPapp and opening the **Endpoint** tab displays the service endpoint it connects to. This makes it easy to understand which external service the app communicates with and helps when reviewing, troubleshooting, or documenting your integrations.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/UiwY1qsJtbIY4Sf_8F2xL-20251215-073134.png)

***

### View your active scenarios

 Grid helps you manage large workspaces by providing a clear view of your automations. But as the number of  grows, the grid can become crowded, making it harder to navigate and analyze dependencies.

**What you can do**:

In  Grid, you can use the **Filters** panel to narrow down the displayed . For example, select **Active&#x20;** to hide inactive ones and focus only on the  that are currently running.

**Example**:

In the example below, applying the **Active**  filter removes all inactive  from the grid. Once filtered, you can use the **Align** tool to automatically arrange all elements, creating a cleaner and more organized layout.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/LM-9zQ3kbiDswAdcjMMPU-20251212-161737.png)




[title] Tools
[path] Explore more/Tools/

Our Tools section includes several useful modules that can enhance your .

![Tools menu](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-RRa8R1-PmEpVKiKReUFkx-20250228-094959.png)

## Triggers

### Basic trigger

Allows you to create a custom trigger and define its input bundles.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-Ql8UqBYNV3ajAfR93LRWV-20250228-095224.png" size="60" width="600" height="457" position="flex-start" alt="Basic trigger" darkWidth="600" darkHeight="457" showCaption="false"}

Create custom bundles by adding array items. The array consists of the *name-value* pairs.

For example, you can use this tool for contacts or any other list that is scheduled to be sent to a specified email address (**Email > Send an Email***,* **Gmail > Send an Email&#x20;**&#x6D;odules), or as a simple reminder to be triggered whenever it is necessary.

## Actions

### Get multiple variables

Retrieves values that were previously created by the [Set multiple variables](docId\:cwfBo7bVO3BPZCSXcaQOF) module within a single operation.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-adGkAExMR7G7nJa2HjoVF-20250228-103711.png" size="60" width="600" height="304" position="flex-start" alt="Get multiple variables" darkWidth="600" darkHeight="304" showCaption="false"}

The main benefits of the **Set multiple variables** module are:

- one **Get multiple variables** module can replace a whole series of [Get variable](docId\:cwfBo7bVO3BPZCSXcaQOF) modules.
- one **Get multiple variables** module consumes just a single operation.

### Get variable

Retrieves a value that was previously created by the [Set variable](docId\:cwfBo7bVO3BPZCSXcaQOF) module.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-EW6vXM1BMeLHhL7fxkueR-20250228-104220.png" size="60" width="599" height="259" position="flex-start" alt="Get variable" darkWidth="599" darkHeight="259" showCaption="false"}

Note that this module can read a variable that was set anywhere in the . The only requirement is that the **Tools > Set Variable** module is executed before (in time) the **Tools > Get Variable** module. See the documentation for the [Router](docId\:OpqXxZcGe19tawxhIAEHn) module for information about the order in which routes are processed.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-tXAO-zILb5h83FFHK5wIe-20250228-104530.png" size="70" width="999" height="684" position="flex-start" alt="Get variable example" darkWidth="999" darkHeight="684" showCaption="false"}

### Increment function

:::hint{type="info"}
See our template [Controlled distribution of data flow](https://www.make.com/en/templates/2952-controlled-distribution-of-data-flow) for an example of the increment function tool.
:::

Returns a value incremented by 1 after each module's operation. It is possible to configure the module to reset the value.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-drXpWDwhzmQQQqmiHJGEK-20250228-102236.png" size="60" width="600" height="270" position="flex-start" alt="Increment function" darkWidth="600" darkHeight="270" showCaption="false"}

One of this tool's uses is to implement a round robin assignment of tasks to users in a group. The algorithm chooses the assignees from a group in some rational order, usually going from the top to the bottom of a list and then repeating until finished (like you would deal a deck of cards).

The following  sends an email to the first recipient after every odd  run, and to the second recipient after every even  run.

![Increment function scenario](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/hQVW_jj0gNGYx8gOwA2na_uuid-f34d2312-c28a-2d3c-ea1b-d7667dff1164.gif)

::::WorkflowBlock
:::WorkflowBlockItem
Configure the module to never reset the value:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/C2MkrykLq6eO8kjT8AdK6_uuid-805d861a-325c-2420-1bf6-3582ec935f56.png" size="60" width="707" height="346" position="flex-start" alt="Increment function" darkWidth="707" darkHeight="346" showCaption="false"}


:::

:::WorkflowBlockItem
Add a router.
:::

:::WorkflowBlockItem
Set the first condition after the router:

Odd - use the `mod` math function set equal to `1`.

![61d5a3ca16a69.gif](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/6L62httE_s0nc2Biv1YY-_uuid-29acf40f-51a0-cbfa-54b3-e7d9f8cb60c3.gif "61d5a3ca16a69.gif")

Do not forget to change the **Equal to** operator from the default *Text operator* to the **Numeric operator.**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/pntkj5BZIdVRrAM3gIjZ7_uuid-ee8593f9-e79e-e225-bcf5-c46852f1d5be.gif" size="50" width="358" height="716" position="flex-start" alt="Set numeric operator - odd" darkWidth="358" darkHeight="716" showCaption="false"}
:::

:::WorkflowBlockItem
Set the second condition after the router.

Even – use the `mod` math function that equals `0`:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-owXCndbffHO95r7_5jSWQ-20250228-103241.png" size="50" width="492" height="471" position="flex-start" alt="Set numeric operator - even" darkWidth="492" darkHeight="471" showCaption="false"}
:::
::::

### Set multiple variables

Creates multiple variables that can be mapped by other modules in the route or by the [Get Multiple Variables](docId\:cwfBo7bVO3BPZCSXcaQOF) module for every route in the  **within a single operation**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-_6I-PIjrkqh8_LE8RzGz5-20250228-101344.png" size="60" width="600" height="442" position="flex-start" alt="Set multiple variables" darkWidth="600" darkHeight="442" showCaption="false"}

The main benefits of the **Set multiple variables** module are:

- one **Set multiple variables&#x20;**&#x6D;odule can replace a whole series of [Set variable](docId\:cwfBo7bVO3BPZCSXcaQOF) modules
- one **Set multiple variables** module consumes just a single operation

|                       |                                                                                                                                                                                                                                                 |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Variables**         | Add multiple variables you want to set.<br />- Variable name: Enter the variable name. This name will be displayed when mapping the variable in other modules.
- Variable value: Enter the value of the variable.                               |
| **Variable lifetime** | One cycle : the variable is valid only for one cycle. Useful when multiple webhooks in one  run are received (more webhooks = more cycles).<br />One execution: The variable is valid for one execution. One execution can contain more cycles. |

### Set variable

Creates a variable that can be mapped by other modules in the route or by the [Get variable](docId\:cwfBo7bVO3BPZCSXcaQOF)  module for every route in the .

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-20SdGfTB2xi0DisGlkTUD-20250228-100905.png" size="60" width="600" height="346" position="flex-start" alt="Set variable" darkWidth="600" darkHeight="346" showCaption="false"}

| **Field**         | **Description**                                                                                                                                                                                                                                 |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Variable name     | Enter the variable name. This name will be displayed when mapping the variable in other modules.                                                                                                                                                |
| Variable lifetime | One cycle : the variable is valid only for one cycle. Useful when multiple webhooks in one  run are received (more webhooks = more cycles).<br />One execution: The variable is valid for one execution. One execution can contain more cycles. |
| Variable value    | Enter the value of the variable.                                                                                                                                                                                                                |

### Sleep

Allows you to delay the  flow for up to 300 seconds (5 minutes).

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-DF_wEY87X6xrKNDatvTFd-20250228-100430.png" size="60" width="601" height="310" position="flex-start" alt="Sleep" darkWidth="601" darkHeight="310" showCaption="false"}

This function can be useful, for example, if you want to lower the target service server load or to simulate more human behavior when sending bulk SMS or emails.

If you wish to pause the flow for longer periods of time, we suggest splitting your  into two .

1. The first  would contain the part before the pause.
2. The second  would contain the part after it.

The first  would store all the necessary information in a data store together with the current timestamp. The second  would periodically check the data store for records with a timestamp older than the intended delay, retrieve the records, finalize the processing of the data, and remove the records from the data store.

## Aggregators

### Numeric aggregator

Allows you to retrieve numerical values, then apply one of the selected functions (SUM, AVG, COUNT, MAX,...), and return the result in one bundle.

In this example, the module sums up values under the *number* parameter.

![Number aggregator](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/WmYzkk2cf7tA0UnlBhmc4_uuid-df2f7351-e0e7-9168-0a11-35fb289a9809.gif)

### Table aggregator

Merges values from the selected fields of received bundles into a single bundle using a specified column and row separator, allowing you to create a table.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-hfS3aSN7V35rkNmUZpPU9-20250228-105131.png" size="60" width="642" height="800" position="flex-start" alt="Table aggregator" darkWidth="642" darkHeight="800" showCaption="false"}

| **Field**         | **Description**                                                                                                                                                                                                                                                                                                                       |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Source module     | Select the module you want to aggregate fields from.                                                                                                                                                                                                                                                                                  |
| Aggregated fields | Select the fields from the module selected above whose values you want to aggregate into one bundle.                                                                                                                                                                                                                                  |
| Column separator  | Select or enter the type of separator that will separate the field value columns in the resulting bundle.                                                                                                                                                                                                                             |
| Row separator     | Select or enter the type of separator that will separate the field value rows in the resulting bundle.                                                                                                                                                                                                                                |
| Group by          | Define an expression containing one or more mapped items. The aggregated data will then be separated into groups with the same expression's value. Each group outputs a separate bundle containing a key with the evaluated expression and the aggregated text. By doing this, you can use the key as a filter in subsequent modules. |

### Text aggregator

Merges values from the selected fields of received bundles into a single bundle.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-4Gq6-PrQUB2NFIaGLdMLa-20250228-105329.png" size="60" width="600" height="332" position="flex-start" alt="Text aggregator" darkWidth="600" darkHeight="332" showCaption="false"}

You can use the text aggregator tool to insert more values (e.g. customer names or notes) into a single bundle and send an email containing all the values in the email body or the email subject.

## Transformers

### Compose a string

Converts any value to a string data type (text), making the mapping easier when mapping, for example, binary data.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-wOqC5DoTobl_XkRUG4I7K-20250228-105619.png" size="60" width="601" height="260" position="flex-start" alt="Compose a string" darkWidth="601" darkHeight="260" showCaption="false"}

### Convert the encoding of the text

Converts entered input text (or binary data) to the selected encoding.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-RLzRtvGgE_w-KTk_lPWcV-20250228-105807.png" size="60" width="601" height="414" position="flex-start" alt="Convert encoding of the text" darkWidth="601" darkHeight="414" showCaption="false"}

| **Field**            | **Description**                                                                    |
| -------------------- | ---------------------------------------------------------------------------------- |
| Input data           | Enter the content you want to convert.                                             |
| Input data codepage  | Enter the input data encoding type. This is important for the binary form of data. |
| Output data codepage | Select the target encoding of your data.                                           |

### Switch

Checks the input value for a match with the provided list of values. Returns output based on the result.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-RFASDuVEzE0tkJGiE4FnC-20250228-105943.png" size="60" width="601" height="397" position="flex-start" alt="Switch" darkWidth="601" darkHeight="397" showCaption="false"}

| **Field** | **Description**                                                                                                                                                                                                                                                                                                                 |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Input     | Enter the expression you want to evaluate.                                                                                                                                                                                                                                                                                      |
| Cases     | If the **Input** contains a value entered to the **Pattern** field, then the value entered to the **Output** field is returned. If the condition is not met, then no output is returned OR the value from the **Else** field (below) is returned.<br />When using regex patterns, make sure to adhere to the ECMAScript flavor. |
| Else      | Enter the value that is returned when the criteria set in the **Cases** field is not met.                                                                                                                                                                                                                                       |


[title] Custom functions
[path] Explore more/Functions/

:::hint{type="info"}
This feature is available to Enterprise customers.
:::

Custom functions allow you to enhance the built-in data transformation capabilities available in the  designer.

Custom functions are created using JavaScript.

:::hint{type="info"}
 supports the infrastructure and system behavior that takes care of managing and using custom functions. However, our customer care team cannot provide support on how to write and debug your own custom functions.
:::

## Create and manage custom functions

You create and manage custom functions in the Functions section.

Custom functions belong to a team. All users with the Team Member role can view and use custom functions. To create and edit custom functions, you need to have the Team Admin role.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ENU6-_D42gRr4onKWQjHT-20251015-102144.png)

To create a new custom function:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Functions&#x20;**(or th&#x65;**&#x20;three dots > Functions**).
:::

:::WorkflowBlockItem
Click **+** **Add a function**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/RtRSZGYyyGxkE5Y8mYXhB-20251015-102304.png)
:::

:::WorkflowBlockItem
Enter a **Name&#x20;**&#x61;nd a **Description**. The name and description will appear in the list of functions available in the scenario designer.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/R5IMgwdnXEdoXIoh-QDgy-20251015-102353.png" size="50" width="880" height="656" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.
:::

:::WorkflowBlockItem
Write the code of the function. Use the keyword `return` to define the return value.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/rU2pWtJJI8uYL7e34ECxS-20251015-102850.png)
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

When you save the function for the first time, it immediately becomes available in the scenario designer. Custom functions are marked with an icon to distinguish them from the built-in functions.

## Basic structure of custom functions

The structure of custom functions reflects the structure of regular JavaScript functions. Each function must contain the following:

- Function header - the name of the function and the parameters it accepts.
- Function body enclosed in curly brackets.
- Exactly one `return` statement.

## Supported languages

Custom functions support [JavaScript ES6](https://www.w3schools.com/js/js_es6.asp). No 3rd party libraries are supported.

The code runs on 's back end. This means that we do not support functionality that only makes sense in the context of writing browser-executed JavaScript.

## Validation of custom functions

 does not validate the code of your functions. If there are errors in your code, they will appear as errors in the execution of scenarios that use these functions. Invalid functions will cause your scenarios to fail.

## Limitations of custom functions

The following limits apply to all custom functions that you create:

- A single custom function can't run for more than 300 milliseconds.
- The code of a custom function cannot have more than 5000 characters.
- Functions must be synchronous. You can't run asynchronous code in your functions.
- You can't make HTTP requests from your functions.
- You can't call other custom functions from inside of a custom function.
- You can't use recursion in your custom functions.
- In order to use a custom variable with an iterator, you need to:
  - Set the value with the custom function in a **Set Variable** module before the **Iterator**.
  - Map the output of the **Set Variable** to the **Iterator**.

## Custom functions version history

Every time you save a custom function, the system creates a new history record. This allows you to compare versions and revert your function to a previous version.

Select the function, and switch to its **History** tab:

- Select a history record to compare the function with the previous version. You can only compare two consecutive versions.
- Click **Restore this version** to revert to the version that you're currently viewing. This creates a new version of the function with the content of the restored version.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/zmRHpsRGZRMqrujFhX9C2-20251015-103312.png" size="100" width="2516" height="528" position="center" showCaption="false" indent="2"}

## Work with dates inside custom functions

Custom functions are executed on 's servers. Therefore, whenever you work with dates inside a function, the dates will take into account the time zone set for your organization.

## Call built-in functions from inside of your custom functions

You can use 's built-in functions in your custom function code.

Built-in functions are available as methods of the `iml` object.

The following example uses the Length built-in function.

```text
function useBuiltInFunction(text){
    return iml.length(text);
}
```

## Debug custom functions

You can execute your custom function code in the debug console, which is located under the code editor.

## Delete custom functions

To delete your custom function:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Functions&#x20;**(or th&#x65;**&#x20;three dots > Functions**).
:::

:::WorkflowBlockItem
Click the **three dots > Delete** next to the function you want to delete.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/sjgnOnLjBUjZRUZzFXGr5-20251015-104015.png)
:::

:::WorkflowBlockItem
Before you delete a function, click the **three dots > Edit** next to it and then switch to the **Scenarios** tab. Here, you can check in which scenarios the function is used.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/l1ssophkALW493HGS_dY8-20251015-105506.png" size="50" width="1070" height="410" position="center" showCaption="false"}
:::
::::

:::hint{type="info"}
When you delete a function that is used in a scenario, the scenario will fail to execute on its next run.

The scenario that uses the deleted function will fail with the following error message:

`Failed to map '<field name>': Function '<function name>' not found!`
:::

## Examples

### Hello world

Returns the string "Hello world."

```text
function helloWorld()
{
    return "Hello world!";
}
```

### Count the number of working days in a month

Calculates how many working days there are in the month specified by the month's number and a year in the function's arguments. Does not take into account local holidays.

```text
function numberOfWorkingDays(month, year) {
  let counter = 0;
  let date = new Date(year, month - 1, 1);
  const endDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);

  while (date.getTime() < endDate.getTime()) {
    const weekDay = date.getDay();
    if (weekDay !== 0 && weekDay !== 6) {
      counter += 1;
    }
    date = new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1);
  }
  return counter;
}
```

### Calculate the number of days between two dates

Calculates the number of days between two dates passed to the function as arguments.

```text
function numberOfDays(start, end) {
  const startDate = new Date(start);
  const endDate = new Date(end);
  return Math.abs((startDate.getTime() - endDate.getTime()) / (1000 * 60 * 60 * 24));
}
```

### Randomization: return a random greeting from an array of greetings

Accepts an array as an argument. Returns a random item from the array.

```text
function randomGreeting(greetings) {
  const index = Math.floor(Math.random() * greetings.length);
  return greetings[index];
}
```


[title] AES (Advanced Encryption Standard)
[path] Explore more/Securing data with Make/

[AES (Advanced Encryption Standard)](https://apps.make.com/crypto#encryptor-modules) is a symmetric algorithm, using the same key for both encryption and decryption. You can choose between simple and advanced modules in the Encryptor app. Advanced modules are recommended, giving you more control and allowing your key to be hidden.&#x20;

The AES algorithm has four components:

| **Component**             | **Description**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Key**                   | Select a key of either 128 or 256 bits. A longer key provides more<br />security.                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| **Initialization vector** | A random value used at the beginning of encryption to make sure<br />the same data looks different each time it's encrypted, so no one<br />can guess the plaintext value from the results. The initialization<br />vector is sometimes called Nonce.<br /><br />You can choose UTF-8, Base64, or Hexadecimal for encoding.                                                                                                                                                                                                |
| **Authentication tag**    | A code generated after encrypting the message. It is also called an<br />integrity check value (ICV) or message authentication code (MAC).<br /><br />This value is calculated using the cyphertext and the initialization<br />vector. It is a unique value generated from the encrypted message.<br />The tag is sent with the message and the recipient repeats the<br />process to generate the authentication tag using the received<br />message. If the two tags are the same, the shared message is<br />the same. |
| **Modes**                 | Methods for encrypting data. <br />* CBC (Cipher Block Chaining) mode: Encrypts each block of &#xA;data by combining it with the previous block's ciphertext and &#xA;requires an initialization vector to start the chain.
* GCM (Galois/Counter) mode: Combines encryption with the &#xA;authentication tag to ensure the integrity of the data.                                                                                                                                                                         |

::::::ExpandableHeading
## Example: Encrypt and decrypt a message with the Encryptor app AES (simple) modules

In this example we will:

1. Select content to encrypt and send to a recipient.
2. Select a secret key to share with the recipient ahead of time, to decrypt the content.
3. Encrypt the message.
4. Decrypt the message.

**Step 1: Select content to encrypt**

In this example, we set a variable `InitialText` with our content to send with encryption.&#x20;

In your scenario, you may have the content set another way or pulled from a different source.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/9wX8upJMbxY8yqAmPXHk--20260209-123012.png" size="60" width="724" height="555" position="flex-start" showCaption="false"}

**Step 2: Select a secret key**

A secret key can be any content agreed upon by the sender and recipient: a word, a phrase, or a series of characters.&#x20;

In AES simple encryption and decryption, the secret key is not hidden. If you share the scenario with any other users or download the blueprint to share, your secret key is exposed.

**Step 3: Encrypt the message:**

:::::WorkflowBlock
:::WorkflowBlockItem
Add the **Encryptor > AES Encrypt (simple)** module to your scenario.
:::

:::WorkflowBlockItem
Select the **Input encoding**. In this example, we use UTF-8.
:::

:::WorkflowBlockItem
In the **Data** field, map or input the value of the content you want to encrypt.
:::

:::WorkflowBlockItem
Select the **Output encoding.** In this example, we use hexadecimal.
:::

::::WorkflowBlockItem
In the **Secret key** field, enter the secret key you have shared with the recipient.

:::hint{type="warning"}
The secret key is not hidden. If you share the scenario with any other users or download the blueprint to share, your secret key is exposed.
:::
::::

:::WorkflowBlockItem
Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/OVqt4BWqZJLxD-rkE-7gj-20260216-120555.png" size="40" width="437" height="462" position="flex-start" showCaption="false"}
:::
:::::

The message is encrypted. The output of this module is the encrypted message in hexadecimal format.



**Step 4: Decrypt the message:**

:::::WorkflowBlock
:::WorkflowBlockItem
Add the **Encryptor > AES Decrypt (simple)** module to your scenario.
:::

:::WorkflowBlockItem
Select the **Input encoding**. In this example, we use hexadecimal to match the output encoding used to encrypt the message.
:::

:::WorkflowBlockItem
In the **Data** field, map or input the value of the content you want to decrypt.
:::

:::WorkflowBlockItem
Select the **Output encoding.** In this example, we use UTF-8.
:::

::::WorkflowBlockItem
In the **Secret key** field, enter the secret key you have shared with the sender.

:::hint{type="info"}
The secret key is not hidden. If you share the scenario with any other users or download the blueprint to share, your secret key is exposed.
:::
::::

:::WorkflowBlockItem
Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/_5kk3IwM3AKwNJ2TDeYqF-20260216-121619.png" size="40" width="429" height="454" position="flex-start" showCaption="false"}
:::
:::::

The message is decrypted. The output of this module is the decrypted message and should match the original content set in the `InitialText` variable.

:::hint{type="info"}
If the wrong secret key is used, the message has been modified, or the encoding does not match, the module outputs an error.
:::
::::::

::::::ExpandableHeading
## Example: Encrypt and decrypt a message with the Encryptor app AES (advanced) modules

In this example we will:

1. Select content to encrypt and send to a recipient.
2. Generate an AES key.
3. Set an initialization vector.
4. Encrypt the message (GCM ciphor algorithm).
5. Decrypt the message (GCM ciphor algorithm).

**Step 1: Select content to encrypt**

In this example, we set a variable `InitialText` with our content to send with encryption.&#x20;

In your scenario, you may have the content set another way or pulled from a different source.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/9wX8upJMbxY8yqAmPXHk--20260209-123012.png" size="60" width="724" height="555" position="flex-start" showCaption="false"}

**Step 2: Generate an AES key**

:::hint{type="info"}
To encrypt and decrypt messages with AES, the key must be shared between the sender and recipient ahead of time.
:::



To generate an AES key:

::::WorkflowBlock
:::WorkflowBlockItem
Go to an encryption key generator website of your choice. In this example, we use [this tool](https://randomkeygen.com/encryption-key).
:::

:::WorkflowBlockItem
Select or set the following values:
**Key Size**: 128 or 256 bits. In this example we use 256 bits.
**Format:** Hexadecimal or Base64. In this example, we use hexadecimal.
:::

:::WorkflowBlockItem
Click **Generate&#x20;**&#x74;o get your **AES Key**. If you are using a different tool to generate your key, your steps may be different.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/M-GauvU6EG0dnC5jhsKxv-20260217-101920.png" size="90" width="886" height="429" position="flex-start" showCaption="false"}
:::

:::WorkflowBlockItem
Copy the AES key save it in a safe place.
:::
::::

You will use this AES key to create a keychain and encrypt your content.&#x20;



**Step 3: Set an initialization vector**

Although AES key generator websites also provide initialization vectors, it is best to use a different initialization vector every time, for more secure encryption.

For this reason, we use the **Set variable** module to generate a new initialization variable before the content is encrypted.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ao-OH9MM7wlO3h0wZ4huC-20260217-102107.png" size="90" width="1000" height="325" position="center" showCaption="false"}

::::WorkflowBlock
:::WorkflowBlockItem
Add the **Tools > Set variable** module to your scenario.
:::

:::WorkflowBlockItem
In the **Variable name** field, enter a name for your initialization vector.
:::

:::WorkflowBlockItem
In the **Variable value** field, enter the following to generate a substring of a unique ID (128 bit) with only the first 16 characters:

`substring(uuid; 0; 16)`

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/-algyZOvbnfpgWL_dOpCm-20260217-104345.png" size="40" width="436" height="293" position="flex-start" showCaption="false"}

The `UUID` variable can be found under the **Text and binary functions** tab:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/sP9hOOImQvM13OX8B-xaE-20260217-104530.png" size="40" width="383" height="368" position="flex-start" showCaption="false"}
:::
::::

The initialization vector variable is mapped in the encryption module in the next step.&#x20;

:::hint{type="info"}
You need to use a 128-bit initialization vector for the GCM cipher algorithm. For the CBC cipher algorithm, you can use a 96-bit initalization vector instead. GCM is the preferred method, shown here.
:::



**Step 4: Encrypt the message (GCM ciphor algorithm)**

::::WorkflowBlock
:::WorkflowBlockItem
Add the **Encryptor > AES Encrypt (advanced)** module to your scenario.
:::

:::WorkflowBlockItem
Click **Create a keychain**.
:::

:::WorkflowBlockItem
Enter a **Name** for your AES key.
:::

:::WorkflowBlockItem
In the **Key** field, enter your AES key.
:::

:::WorkflowBlockItem
In the **Key Encoding** field, select Hexadecimal.
:::

:::WorkflowBlockItem
Click **Create**.
:::

:::WorkflowBlockItem
In the **Bits** field, select 256.
:::

:::WorkflowBlockItem
In the **Input encoding** field, select UTF-8.
:::

:::WorkflowBlockItem
In the **Data** field, map the value of the content you want to encrypt.
:::

:::WorkflowBlockItem
In the **Output encoding** field, select Hexadecimal.
:::

:::WorkflowBlockItem
In the **Cipher Algorithm** field, select GCM.
:::

:::WorkflowBlockItem
In the **Initialization Vector Encoding** field, select UTF-8.
:::

:::WorkflowBlockItem
In the **Initalization Vector** field, map the value of the initialization vector created in the previous **Set variable** module.
:::

:::WorkflowBlockItem
Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/7KEmOjBuGMi36mig1HDoe-20260217-110725.png" size="60" width="734" height="815" position="flex-start" showCaption="false"}
:::
::::

The message is encrypted.

The output of this module has the Data, Initialization Vector, and Authentication Tag in hexadeximal format. You will use these values to decrypt the message.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/oUNWjuzX_OVonUUpPOwcq-20260217-111529.png" size="40" width="410" height="120" position="flex-start" showCaption="false"}

:::hint{type="info"}
If you run the scenario again, the output data will be different because the initialization vector is a variable that changes with each run.&#x20;

The initialization vector and the authentication tag can be sent in cleartext to the recipient; they don't need to be secured.
:::

****

**Step 5: Decrypt the message (GCM ciphor algorithm)**

:::::WorkflowBlock
:::WorkflowBlockItem
Add the **Encryptor > AES Decrypt (advanced)** module to your scenario.
:::

::::WorkflowBlockItem
Use the same keychain created in Step 4 above or create a new keychain with the same values.

:::hint{type="info"}
In AES encryption, the sender and recipient use the same key to encrypt and decrypt the message.
:::
::::

:::WorkflowBlockItem
In the **Bits** field, select 256.
:::

:::WorkflowBlockItem
In the **Input encoding** field, select Hexadecimal to match the encryption output encoding.
:::

:::WorkflowBlockItem
In the **Data** field, map the value of the encryption output Data.
:::

:::WorkflowBlockItem
In the **Output encoding** field,select UTF-8.
:::

:::WorkflowBlockItem
In the **Cipher Algorithm** field, select GCM to match the same algorithm used for encryption.
:::

:::WorkflowBlockItem
In the **Initialization Vector Encoding** field, select Hexadecimal to match the encyption output encoding of this value.
:::

:::WorkflowBlockItem
In the **Initalization Vector** field, map the value of the initialization vector from the encryption output.
:::

:::WorkflowBlockItem
In the **Authentication Tag Encoding** field, select Hexadecimal to match the encryption output encoding of this value.
:::

:::WorkflowBlockItem
In the **Authentication Tag** field, map the value of the authentication tag from the encryption output.
:::

:::WorkflowBlockItem
Click **Save**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/t7yTsWDw9Ew6kpsCYYkAy-20260217-120827.png" size="50" width="431" height="979" position="flex-start" showCaption="false"}
:::
:::::

The message is decrypted. The output of this module is the decrypted message and should match the original content set in the `InitialText` variable.

:::hint{type="warning"}
If the wrong key is used, the message has been modified, or there is a discrepancy with the initalization vector or authentication tag, the module outputs an error.
:::
::::::


[title] Knowledge app modules
[path] Make AI Agent (New)/Input files and knowledge files for AI agents/

Use **Knowledge&#x20;**&#x6D;odules to upload, update, delete, search, and view details about your knowledge files. This section is a reference for these modules and their settings.&#x20;

## Add Knowledge modules to scenarios

You can add **Knowledge&#x20;**&#x6D;odules to  in three ways:

- In an AI agent  after the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule
- In an AI agent   as a tool for the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule
- In a standard  on its own or with other **Knowledge&#x20;**&#x6D;odules

## Modules

Use **Knowledge&#x20;**&#x6D;odules to upload, update, delete, search, and view details about your knowledge files.&#x20;

### Append knowledge text

The **Knowledge&#x20;**> **Append knowledge** **text&#x20;**&#x6D;odule adds content to the end of an existing file. Supported file types include .txt and .md.

:::hint{type="info"}
**Tip**: Your agent can use this module to regularly update its knowledge.
:::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Select file**
:::

:::VerticalSplitItem
Select an existing text-based file to update or append.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Content**
:::

:::VerticalSplitItem
Enter the text to add to the end of the file.&#x20;
:::
::::

### Delete knowledge&#x20;

The **Knowledge&#x20;**> **Delete knowledge&#x20;**&#x6D;odule deletes a file from the knowledge base.&#x20;

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**File ID**
:::

:::VerticalSplitItem
Specify the ID of the file to delete, or let the agent decide.
:::
::::

### Update knowledge file

The **Knowledge&#x20;**> **Update knowledge file&#x20;**&#x72;eplaces the content of an existing file that has the same file type. For example, it replaces one PDF with another PDF.

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Select file**
:::

:::VerticalSplitItem
Select the existing file to replace.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**File**
:::

:::VerticalSplitItem
Map the value corresponding to the file content from a previous download file module, for example, `Data`.
:::
::::

### Update knowledge text

The **Knowledge&#x20;**> **Update knowledge text&#x20;**&#x72;eplaces the text content of an existing text file. Supported file types include .txt and .md.

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Select file**
:::

:::VerticalSplitItem
Select the existing file to replace.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Content**
:::

:::VerticalSplitItem
Enter the text to replace the existing file with.
:::
::::

### Upload knowledge file

The **Knowledge** > **Upload knowledge** file adds a file to the knowledge base.&#x20;

**Prerequisites**

- Add a download file module before this module to map the file name and content.&#x20;

Use it when:

- You want a separate scenario to manage knowledge
- You want to automate knowledge uploads from external sources like Google Drive

:::hint{type="info"}
The **Upload knowledge file** module is an alternative to manually uploading knowledge files. See [Knowledge files for AI agents](docId\:f4W8zW-q6vkeA18D0Rmmi) for all options for uploading knowledge files and step-by-step instructions.&#x20;
:::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**File name**
:::

:::VerticalSplitItem
Name the file, or map the value corresponding to the file name from a previous download file module.&#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**File content**
:::

:::VerticalSplitItem
Map the value corresponding to the file content from a previous download file module, for example, `Data`.
:::
::::

### Upload knowledge text

The **Knowledge&#x20;**> **Upload knowledge text&#x20;**&#x6D;odule adds a text file to the knowledge base. Give the agent text to turn into a file.&#x20;

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**File name**
:::

:::VerticalSplitItem
Name the file.&#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**File content**
:::

:::VerticalSplitItem
Paste text into this field to turn it into a file when you run the module.&#x20;
:::
::::

### Get knowledge

The **Knowledge&#x20;**> **Get knowledge&#x20;**&#x6D;odule retrieves details about a specific knowledge file (metadata), such as name, description, date, and ID. View this information in the output bundle of the module.

Use it when:

- You need the file ID of a specific file to use in other modules
- You want to see when a file was last updated
- You're debugging knowledge file issues

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**File**
:::

:::VerticalSplitItem
Select an existing file to get its metadata.
:::
::::

### List knowledge files

The **Knowledge&#x20;**> **List knowledge files** module shows all files in an agent's knowledge base.&#x20;

Use it when:

- You want to see all available files
- You want the file IDs of multiple files
- You want to see order files based on name, size, and upload date

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Order by**
:::

:::VerticalSplitItem
Specify how the agent orders the returned files.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Limit**
:::

:::VerticalSplitItem
Specify the number of files you want to return. Alternatively, leave this field empty to return all files.
:::
::::

### Query knowledge

Use the **Knowledge&#x20;**> **Query knowledge&#x20;**&#x6D;odule to ask a question about the files in the agent's knowledge base.&#x20;

Use it when:

- You want to test the information your agent can find in your files
- You're debugging why the agent isn't retrieving the right information

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Search query**
:::

:::VerticalSplitItem
Ask a question about an existing file, like how you would interact with an AI search engine or chatbot.&#x20;

Alternatively, if you ask this question in the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule, in **Input**, let the agent decide.&#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Files**
:::

:::VerticalSplitItem
Add existing knowledge files for the agent to search in, or leave empty to search all files.&#x20;
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Limit**
:::

:::VerticalSplitItem
Specify the number of results (chunks) the agent outputs, or let the agent decide.&#x20;
:::
::::


[title] Input files and knowledge files for AI agents
[path] Make AI Agent (New)/

When you want your AI agent to work with files, you can upload your files as input files or knowledge files. **Input files** are one-time files that the agent processes in a  run. **Knowledge files&#x20;**&#x61;re reference files stored in a database that the agent repeatedly consults to find information.

Because file processing can use a significant number of AI tokens, choosing the right file type helps keep token usage low.

## When to use input files or knowledge files

To get the best results and reduce costs, upload smaller files that the agent references once as input files, and larger files that the agent references often as knowledge.

### Input files&#x20;

Upload your file as an input file when:

- The agent references it once.
- It's a small file that would use few tokens to process repeatedly.
- You want to ensure the agent always references it or specific parts of it for security or auditability reasons.
- You uploaded the file as a knowledge file, but the agent couldn't find the information to answer your request.
- It's an image, and you need the agent to see the image itself, not just its description.&#x20;

**Examples:&#x20;**&#x41;ttachments (such as email and Telegram message attachments), CSV files, and images (such as brand guideline references and marketing visual assets).

### Knowledge files

Upload your file as knowledge when:

- The agent frequently references it (with or without regular updates).
- It's a large text file that would use many tokens to process repeatedly, or could exceed the agent's token limits.

**Examples:** Company policies, troubleshooting guides, FAQs, brand guidelines, style guides, and technical documentation.

## Next steps

For more information and step-by-step instructions, see:

- [Input files for AI agents](docId\:EtjXD5CKUre4KBFRmAdfP): Check input file requirements and upload files.
- [Knowledge files for AI agents](docId\:f4W8zW-q6vkeA18D0Rmmi): Check knowledge file requirements, and upload and manage files.
- [Knowledge app modules](docId\:homjru-NVC38W5dBxwYjH): Look up **Knowledge&#x20;**&#x61;pp module settings.&#x20;

[title] Connect to OpenAI
[path] Model Context Protocol/MCP toolboxes/

In this guide, learn how to connect your MCP toolbox to OpenAI.

**Prerequisites**

- OpenAI Platform account
- [MCP toolbox URL and key](docId\:JqY6i5aCFIm-kOm9ERv7A)&#x20;

To connect your MCP toolbox to OpenAI:

::::WorkflowBlock
:::WorkflowBlockItem
In OpenAI's Playground, sign in to your OpenAI account.
:::

:::WorkflowBlockItem
Navigate to **Prompts**.
:::

:::WorkflowBlockItem
In **Tools**, click the + button.
:::

:::WorkflowBlockItem
Select **MCP Server**.
:::

:::WorkflowBlockItem
Click **Add new** to open a form.

::Image[]{src="https://developers.make.com/~gitbook/image?url=https%3A%2F%2F3035801395-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FyHSLDvK9bMDQI1lCXXt6%252Fuploads%252FmBUZGbPtiMSyuIO8X13z%252Fopenai%2520mcp%2520server.png%3Falt%3Dmedia%26token%3Dcda2743b-a3d7-4cf0-9171-b331c049878f&width=768&dpr=4&quality=100&sign=49860524&sv=2" size="50" width="501" height="660" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
In **URL**, add your MCP toolbox URL.&#x20;
:::

:::WorkflowBlockItem
Name your MCP toolbox.&#x20;
:::

:::WorkflowBlockItem
In **Authentication**, select **Access token / API key**.
:::

:::WorkflowBlockItem
Add your MCP toolbox key to the field that requires an access token.
:::

:::WorkflowBlockItem
Click **Connect**.
:::
::::

You have now connected your MCP toolbox server to OpenAI.

:::hint{type="info"}
**MCP toolbox timeout:** Your MCP toolbox scenarios must finish running within 40 seconds. If a scenario runs longer, the connection times out and no outputs are returned to the client.
:::


[title] Connect to ChatGPT
[path] Model Context Protocol/MCP toolboxes/

In this guide, learn how to connect your MCP toolbox to ChatGPT.

**Prerequisites**

- ChatGPT account (paid subscription)
- [MCP toolbox URL and key](docId\:JqY6i5aCFIm-kOm9ERv7A)&#x20;

To connect your MCP toolbox to ChatGPT:

:::::WorkflowBlock
:::WorkflowBlockItem
Open the web version of ChatGPT.
:::

:::WorkflowBlockItem
Click your profile name on the left sidebar.
:::

:::WorkflowBlockItem
Click **Settings**.
:::

:::WorkflowBlockItem
Go to **Apps**, then to **Advanced settings**.
:::

:::WorkflowBlockItem
In **Advanced settings**, enable **Developer mode**.
:::

:::WorkflowBlockItem
Click **Create app** at the top to open the **New App** dialog.&#x20;
:::

:::WorkflowBlockItem
Name your MCP server.
:::

:::WorkflowBlockItem
Add your complete MCP toolbox URL following the structure below:

`<MCP TOOLBOX URL>`/t/`<TOOLBOX KEY>`/`<TRANSPORT METHOD>`
:::

::::WorkflowBlockItem
Replace the placeholders with your actual values:

- `MCP TOOLBOX URL`: The URL generated when you created the MCP toolbox.&#x20;
- `TOOLBOX KEY`: The key generated for the MCP toolbox.&#x20;
- `TRANSPORT METHOD`: The path of your preferred transport method. Stateless Streamable HTTP (`/stateless`) is recommended due to its connection reliability.&#x20;

Example: https\://eu2.make.com/mcp/server/•••••••••••••/t/•••••••••••••/stateless

:::hint{type="info"}
If you experience connection issues, add `/stream` instead of `/stateless` to the end of the URL. For SSE, add `/sse` instead.
:::
::::

:::WorkflowBlockItem
In the **Authentication&#x20;**&#x64;ropdown, selec&#x74;**&#x20;No Auth**.
:::

:::WorkflowBlockItem
Agree to continue.&#x20;
:::

:::WorkflowBlockItem
Click **Create**.
:::
:::::

You have now connected your MCP toolbox to ChatGPT. Click it to view all tools available through this toolbox.


[title] Tools
[path] Explore more/

Build complex  with the help of these advanced tools:&#x20;

::::LinkArray{contentSource="DOCS" sourceParentDocId="xcvWa8ORECqG7qOwIAFUe" childrenDocs="[object Object],[object Object],[object Object],[object Object],[object Object]" itemsPerRow="2" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/w2_6h8Z-NsUJdP5GjWayG_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="5F6OZVB5VL2gvDsA7EoRP" displayMode="CARD" docSeoDescription="Discover the new If-else and Merge feature, designed for efficient, logical routing in workflows."}
[If-else and Merge](docId:5F6OZVB5VL2gvDsA7EoRP)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/w2_6h8Z-NsUJdP5GjWayG_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="NcSZYP3n_O5A3R4CUQceL" displayMode="CARD" docSeoDescription="Use repeaters, iterators, and array aggregators to control how your scenario processes multiple items and bundles"}
[Flow control](docId\:NcSZYP3n_O5A3R4CUQceL)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ob01O8OlC_3gWlmdbURfh_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="W-xJsu_w4YSxcXHOr4tFM" displayMode="CARD" docSeoDescription="Learn workarounds to converge multiple scenario routes into a single flow and avoid module duplication"}
[Converger](docId\:W-xJsu_w4YSxcXHOr4tFM)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/jSD0OytGqBGdpAD2uUQdp_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="cwfBo7bVO3BPZCSXcaQOF" displayMode="CARD" docSeoDescription="Explore built-in tools to create variables, delay flows, aggregate data, and transform values in your scenarios"}
[Tools](docId\:cwfBo7bVO3BPZCSXcaQOF)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/F99ZJpdOxtL8JfFoLlPLi_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="Y3q9HYiJrg_VRfBzOGNpq" displayMode="CARD" docSeoDescription="Extract and transform text using patterns and regular expressions to parse data from any source"}
[Text parser](docId\:Y3q9HYiJrg_VRfBzOGNpq)
:::
::::


[title] Input files for AI agents
[path] Make AI Agent (New)/Input files and knowledge files for AI agents/

Input files are one-time files that the agent processes each time a scenario runs. This guide covers input file requirements and how to upload input files.

:::hint{type="info"}
It is recommended to upload large text files and files the agent references often as [knowledge files](https://help.make.com/knowledge-files-for-ai-agents) instead.
:::

## Input and output file requirements and limits

Input and output files for agents have the following requirements and limits:

- **Input file supported formats:&#x20;**&#x4A;PG, PNG, GIF, PDF&#x20;
- **Output file supported formats:** PDF, DOCX, TXT, CSV&#x20;
- **Input data type:&#x20;**&#x42;inary data only. The agent can't read files from URLs or base64 strings.&#x20;
- **AI provider:** Make's AI Provider, OpenAI, Anthropic Claude, or Gemini, and a model that supports files.&#x20;

Refer to your provider's documentation to check file support specifics for your chosen model.

## Upload input files

Upload files of supported types to your agent in **Input files** in the **Make AI Agent (New)** > **Run an agent** module.&#x20;

### Input file is from a download file module

To upload supported files from a dedicated download file module, such as **Telegram Bot&#x20;**>**&#x20;Download a File&#x20;**&#x6F;r **Google Drive&#x20;**>**&#x20;Download a File**:

::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, before the **Make AI Agent (New)&#x20;**> **Run an agent** module, add modules that watch an app and download files from it.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ey9IB5b0M3pXmLwsBkPTX_telegram-scenario-ai-agentic.png" size="80" width="1020" height="346" darkWidth="1020" darkHeight="346" position="center" caption="This example scenario watches Telegram, downloads attachments, and passes them to the agent via the Input files field." showCaption="true"}
:::

:::WorkflowBlockItem
Click the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule to open its settings. &#x20;
:::

:::WorkflowBlockItem
In **Input files**, select the download file module.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/4Bmlp3uzmOJzW0EAX8rS1-20260611-125819.png" size="70" width="803" height="408" darkWidth="803" darkHeight="408" position="center" caption="In this example, the file from the Telegram Bot > Download a File module is selected." showCaption="true"}
:::
::::

You've now uploaded an input file to your agent.&#x20;

### Input file is a value from an output bundle&#x20;

If an earlier module outputs a value as part of a bundle that you want to use as an input file, map the value directly:

::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, before the **Make AI Agent (New)&#x20;**> **Run an agent** module, add modules that return the output value you want to map.&#x20;
:::

:::WorkflowBlockItem
Click the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule to open its settings. &#x20;
:::

:::WorkflowBlockItem
In **Input files**, toggle **Map&#x20;**&#x61;nd map the output from the previous module to use as an input file.&#x20;
:::
::::

You've now mapped a value in **Inputs files** so the agent can use it.&#x20;

## Convert unsupported formats &#x20;

The agent accepts input files as binary data only. If your file is in another format, convert it before mapping it in the **Make AI Agent (New)** > **Run an agent** module.&#x20;

### Convert  files from URLs

To pass a DOCX or other unsupported file from a URL to your agent, convert it to text using an AI app such a&#x73;**&#x20;Make AI Content Extractor**.

::Image[****]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/S5eusc8iPvnrHp0mk4te7-20260615-130919.png" size="80" width="1268" height="319" darkWidth="1268" darkHeight="319" position="center" caption="This example scenario extracts text from a direct download DOCX URL and passes it to the agent via the Input field. " showCaption="true"}

To convert a DOCX URL to text with **Make AI Content Extractor**:&#x20;

::::WorkflowBlock{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/S5eusc8iPvnrHp0mk4te7-20260615-130919.png" size="100" width="1268" height="319" position="center" caption="This scenario extracts text from a DOCX file URL before passing it to the agent"}
:::WorkflowBlockItem
In the  Builder, add a download file module, such as an **HTTP** > **Download a File** module.
:::

:::WorkflowBlockItem
Add the **Make AI Content Extractor** > **Extract text from a document** module and open its settings.&#x20;
:::

:::WorkflowBlockItem
In **Document source**, select File.&#x20;
:::

:::WorkflowBlockItem
In **File**, select or map the file from the **HTTP** module.
:::

:::WorkflowBlockItem
Add a **Text aggregator** module and open its settings.
:::

:::WorkflowBlockItem
In **Text**, map the `Text` value from the output of the **Extract text from a document** module.
:::

:::WorkflowBlockItem
Add the **Make AI Agent (New)** > **Run an agent** module.
:::

:::WorkflowBlockItem
In **Input**, map the `text` value from the **Text aggregator&#x20;**&#x6D;odule.
:::
::::

You've now converted a DOCX file to text so the agent can use it as input.&#x20;

### Convert files from base64 strings

To pass a file from a base64 string into an AI agent, convert it to binary using the `toBinary()` function.

To convert a base64 string to binary:

::::WorkflowBlock
:::WorkflowBlockItem
If the string starts with a prefix such as `data:image/png;base64`, remove the prefix.&#x20;
:::

:::WorkflowBlockItem
In the **Make AI Agent (New)** > **Run an agent&#x20;**&#x6D;odule, in the **Input files** field, convert the string with the following function:&#x20;

```javascript
toBinary(yourBase64String; "base64")
```
:::
::::

You've now converted a base64 string to binary, so the agent can use it.&#x20;

[title] Data stores
[path] Explore more/

Learn how to use 's built-in database tool to store and manage data:&#x20;

::::LinkArray{contentSource="DOCS" sourceParentDocId="F-qxwIMFYM0ND2sA6NAHR" childrenDocs="[object Object],[object Object]" itemsPerRow="2" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/xvcDDgA0-cSuer9aMPtVb_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="l6duB0QnRcBjBVNhw6-Xk" displayMode="CARD" docSeoDescription="Use data stores as databases to store and manage data across scenarios"}
[Data stores](docId\:l6duB0QnRcBjBVNhw6-Xk)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/kEfZhsLyrJkoVfDPLucnL_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="1EOkQdVOyEt82um5dJjA8" displayMode="CARD" docSeoDescription="Define the format of the data so that Make can properly process it"}
[Data structures](docId:1EOkQdVOyEt82um5dJjA8)
:::
::::


[title] Flow control
[path] Explore more/Tools/

## Repeater

A repeater is used in cases where you wish to repeat a task a set number of times. For example, if you would like to send five emails with subjects "Hello 1", "Hello 2", ... "Hello 5", this could be accomplished with connecting the **Email > Send an email** module after the **Repeater** module:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/_hVv1pal-IC_fUjTNFEyR_uuid-a5521f9f-9bf9-bd43-1077-4456fa80dc47.png" size="70" width="912" height="481" position="flex-start" alt="Repeater" showCaption="false"}

Module configuration details:

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![Repeater configuration](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/PE7UYT9IWdwh1HTRGEw5S_uuid-8d9486a1-434b-9f5e-0fcd-8ff3954322fe.png)


:::

:::VerticalSplitItem
![Email module con](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/-xR0qbI0kyX0ZgTve7ZE5_uuid-8421211e-939e-9f84-ea39-427733f2ce16.png "Flow_Control_3.png")


:::
::::

You can imagine the **Repeater** module as a generator of bundles outputting one bundle after another. Each bundle contains one item named `i` of type Number. The initial value of the `i` item is specified in the **Initial value** field. The number of repetitions (= number of bundles) is specified in the **Repeats** field. The value of the `i` item is increased in each repetition by the value specified in the **Step** field, which is 1 by default (toggle the **Show advanced settings** box to reveal it).

## Iterator

An iterator is a special type of module that converts an array into a series of bundles. Each array item will output as a separate bundle.

### Setting up an iterator

Setting up an iterator is done in the same way as [setting any other module](docId\:vNBss-BELMDIN3D4gguxL). The **Array** field contains the array to be converted/split into separate bundles.

In this example, the  below shows how to retrieve emails with attachments and save the attachments as single files in a selected Google Drive folder.

![Save email attachments to Google Drive](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/6me7VXLBgnu4YVJzrjewX_uuid-afd56dcf-8ee1-119f-c8cf-9d1b8b93778a.png)

Emails can contain an array of attachments. The **Iterator** module inserted after the first module enables you to handle each attachment separately. The iterator splits the array of attachments into single bundles, each bundle with one attachment will then save one at a time in a selected Google Drive folder. The **Array** field should contain the `Attachments[]` array.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Z5TzLrnePyBiz8uz4CGc8_uuid-76ebf1a2-e19f-d998-5faa-366411cbe503.png" size="70" width="853" height="497" position="flex-start" alt="Setting up an iterator" showCaption="false"}

### Specialized iterators

For your convenience, many  apps offer specialized iterator modules with a simplified setup. For example, the Email app contains the special iterator **Iterate attachments** that will produce the same results as the general **Iterator** module without having to specify the array, just the source module.

![Specialized iterators](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/QhBwYdJiHid8iJz0thwvN_uuid-bd6d2f54-cd86-0526-3eaf-a1ff554dba42.png)

### When to use an iterator in your scenario

The video below is module one of the three-part lesson titled **Iterator and Array Aggregator**. It explains the purpose of the iterator and the array aggregator and with the help of a sample , when to use an iterator, and what to do with the output.

::embed[[Youtube Link Here](https://www.youtube.com/embed/mWZBA2xSvB4)]{url="https://www.youtube.com/embed/mWZBA2xSvB4"}

### Mappable items under the Iterator module

When an iterator does not have information about the structure of the array's items, the mapping panel in the modules following the iterator will display only two items under the iterator: `Total number of bundles` and `Bundle order position`:

![Mappable items](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-fpqfCEuH5JFCsmle51Cmg-20250227-143211.png)

The reason for this is that in , each module is responsible for providing information about items it outputs so these items can be properly displayed in the mapping panel in the following modules. However, there are several modules that might be unable to provide this information in some cases, e.g. **JSON** **> Parse JSON** or **Webhooks >** **Custom Webhook** modules with missing [data structures](docId:1EOkQdVOyEt82um5dJjA8).

The solution is to manually execute the  to make the module learn about the items it outputs so it can provide the information to the following modules.

For example, if you have a **JSON > Parse JSON** module without a data structure and then you connect an **Iterator** module to it, you will not be able to map the output of the module to th&#x65;**&#x20;Array&#x20;**&#x66;ield in the setup panel of the iterator.

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![JSON without a data structure](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-U_3drUmjM4b52-7VDe82U-20250227-143733.png)
:::

:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/lDcwWarEB3Bv0vz0TByn2_uuid-cdb106ba-05ba-4b5a-e0a2-b4999f852db6.png" size="90" width="1207" height="438" position="flex-start" alt="Iterator module" showCaption="false"}


:::
::::

To resolve this, manually start the  in the  editor. You can un-link the modules after the **JSON > Parse JSON** module to prevent the flow from proceeding further or right-click th&#x65;**&#x20;JSON > Parse JSON** module and choose **Run this module only** from the context menu to execute only the **JSON > Parse JSON** module.

Once the **JSON > Parse JSON** has been executed, it learns about the items it outputs and provides this information to all the following modules including the iterator. The mapping panel in the iterator's setup will then display the items:

![Json module with mappable items](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-I-Z-tLSekL4bnFkQ9gd9--20250227-144242.png)

The mapping panel in the modules connected after the iterator will display the items contained in the array's items:

![Mapping module in the iterator](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-OnOzCQPzw4sz8MytGLvgY-20250227-144601.png)

If you cannot see some items in a module's mapping panel, simply run the  once so all the modules can learn about the items they output and provide this information to the following modules.

## Array aggregator

An array aggregator is an aggregator module that allows you to merge several bundles into one single bundle. The following image shows a typical setup of the **Array aggregator** module.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/MMf0_51nYh0Hzef7F0Mz9_uuid-d192c60c-6758-6c44-26f1-e43ddc0e6de1.png" size="70" width="1083" height="608" position="flex-start" alt="Array aggregator module" showCaption="false"}

| **Field**                                  | **Description**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Source Module                              | The module from which the bundle aggregation will start. The source module is usually an iterator or a search module that outputs a series of bundles. Once you setup the aggregator's Source Module (and close the aggregator's setup), the route between the source module and the aggregator will be wrapped in a grey area to visualize the start and the end of the aggregation.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| Target structure type                      | The target structure into which the data shall be aggregated. The default option is Custom that enables you to choose items that should be aggregated into the Array aggregator's output bundle's `Array` item:<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/o1w18JfT3vjp-pcsDQSZn_uuid-655ca956-bc79-a68b-c635-b2032106da95.png" size="80" width="1186" height="722" position="flex-start" alt="Target structure type" showCaption="false"}<br />Once you connect more modules after the **Array aggregator** module and get back to the module's setup, the **Target structure type** dropdown will contain all the following modules and their fields that are of type Array of Collections, like e.g. **Attachments** field of the **Slack > Create a Message** module:<br />::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/mncTDDE1Qo65ffbju92HT_uuid-5db50e2b-f3de-8075-14f1-9f450e9f0556.png" size="80" width="1095" height="792" position="flex-start" alt="Target structure type" showCaption="false"} |
| Group by                                   | The aggregator's output can be split into several groups with the help of th&#x65;**&#x20;Group by&#x20;**&#x66;ield. The **Group by&#x20;**&#x66;ield can contain a formula that is evaluated for each aggregator's input bundle. The aggregator then outputs one bundle per each distinct formula's value. Each bundle contains two items:<br />* `Key` contains the distinct value.
* `Array` contains the aggregated data from the bundles for which the formula evaluated to the `Key` value.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| Stop processing after an empty aggregation | By default, the aggregator outputs the result of the aggregation even in case no bundles reached the aggregator (e.g. because they have been all filtered out on their way). If the **Stop processing after an empty aggregation** option is enabled, the aggregator will not produce any output bundle in this case and the flow will stop.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |

:::hint{type="info"}
Bundles output from the source module and any other modules between the source module and the aggregator module are not output by the aggregator and thus items in these bundles are not accessible by the modules in the flow after the aggregator.
:::

If you need to access items from bundles output from the source module and any other modules between the source module and the aggregator module, make sure to include them in the **Aggregated fields** field in the setup of the **Array aggregator** module.

If items are nested (i.e. contained in a collection item) they currently cannot be easily selected in the array aggregator's **Aggregated fields** field. For example, if bundles contain collection item `User` with two items `Name` and `Email`:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-6s6dJ2HFcFHIYfgZ3X2D_-20250228-085421.png" size="30" width="233" height="192" position="flex-start" alt="Bundle outputs" showCaption="false"}

Then only the `User` collection item can be selected:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-uhDY_TJyJKghm2sQCqNkm-20250227-152522.png" size="50" width="609" height="471" position="flex-start" alt="Array aggregator  field" showCaption="false"}

This setup will produce the following output:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/EqFvxDz8xf4612Oo61fYD_uuid-0c7130f4-4f7e-df55-f3f7-13a962be5437.png" size="40" width="284" height="258" position="flex-start" alt="Bundle 1 output" showCaption="false"}

### Customize the output

If you wish to fully customize the **Array aggregator**'s output structure:

::::WorkflowBlock
:::WorkflowBlockItem
Insert the **JSON > Create JSON** module after the **Array aggregator** module:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-n93_P8U0JpDgFINB94lhX-20250227-153525.png" size="70" width="599" height="315" position="flex-start" alt="JSON module after Array aggregator" showCaption="false"}
:::

:::WorkflowBlockItem
Open the **JSON > Create JSON** module's setup.
:::

:::WorkflowBlockItem
Setup a Data structure for the items you want to be output from the array aggregator. The data structure should be an array of collections and the collections should contain the items you want to include in the output. Here is a sample data structure with two text items `Name` and `Email`:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-goXGiys4ARVrA1Kyj6XCO-20250227-154714.png" size="60" width="511" height="960" position="flex-start" showCaption="false"}
:::

:::WorkflowBlockItem
Open the **Array aggregator** module's setup.
:::

:::WorkflowBlockItem
In the **Target structure type** field, choose the **JSON > Create JSON** module's array field:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-40sqocnYuKfC547Xav2tq-20250228-085823.png" size="60" width="600" height="476" position="flex-start" alt="Target structure type" showCaption="false"}
:::

:::WorkflowBlockItem
Fields corresponding to the Data structure created in step 3 will appear in the setup of the **Array aggregator** module. Map any items into the fields. You can now easily map nested items using the mapping panel and even use formulas:

![Map items into the fields](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-9iMIGpbwFR0w4YYfpAQXx-20250228-090138.png)
:::

:::WorkflowBlockItem
The **Array aggregator** module's output will now look like this:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-laTS0oPZmY9Wyuca-LEmb-20250228-090327.png" size="40" width="250" height="219" position="flex-start" alt="Array aggregator output" showCaption="false"}
:::
::::

If you wish to save the operation performed by the&#x20;**&#x20;JSON > Create JSON&#x20;**&#x6D;odule, put it on a disabled route after a **Router**:

![Save JSON module on a disabled router](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/EG0ryD7UiTE0PDn7AuK9h_uuid-cd379018-b353-81ea-ade9-c24e70ac4034.png)

If you wish to conditionally omit an item from the module's output, use a formula that evaluates to `ignore` keyword:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/jcyA4VGX3U0ukw90OOHku_uuid-f81f07bb-6945-00c0-c0e0-b1a5e2bd5fe1.png" size="70" width="718" height="331" position="flex-start" alt="Ignore keywords" showCaption="false"}

If the `4. User: Email` is empty then the `Email` item will be completely omitted from the output:

### When to use an array aggregator in your scenarios

::embed[]{url="https://www.youtube.com/watch?v=u6pS7QDgKA8"}

###


[title] Delete user data
[path] Your organization/Administration/

To completely delete all user data that is stored on  servers, please follow the instructions below.

:::::ExpandableHeading
## Scenarios

::::WorkflowBlock
:::WorkflowBlockItem
Click **Scenarios** in the left sidebar.
:::

:::WorkflowBlockItem
Click the **All** tab to see all .
:::

:::WorkflowBlockItem
To the right of a , click the down arrow and select **Delete**.
:::

:::WorkflowBlockItem
Click **Delete** to confirm.
:::

:::WorkflowBlockItem
Repeat for each .
:::
::::
:::::

:::::ExpandableHeading
## Connections

::::WorkflowBlock
:::WorkflowBlockItem
Click **Credentials** in the left sidebar, and switch to **Connections.**
:::

:::WorkflowBlockItem
To the right of a connection, click **Delete**.
:::

:::WorkflowBlockItem
Click **Delete** to confirm.
:::

:::WorkflowBlockItem
Repeat for each connection.
:::
::::
:::::

:::::ExpandableHeading
## Webhooks

::::WorkflowBlock
:::WorkflowBlockItem
Click **Webhooks** in the left sidebar.
:::

:::WorkflowBlockItem
To the right of a webhook, click **Delete**.
:::

:::WorkflowBlockItem
Click **Delete** to confirm.
:::

:::WorkflowBlockItem
Repeat for each webhook.
:::
::::
:::::

:::::ExpandableHeading
## Keys

::::WorkflowBlock
:::WorkflowBlockItem
Click **Keys** in the left sidebar.
:::

:::WorkflowBlockItem
To the right of a key, click **Delete**.
:::

:::WorkflowBlockItem
Click **Delete** to confirm.
:::

:::WorkflowBlockItem
Repeat for each key.
:::
::::
:::::

:::::ExpandableHeading
## Devices

::::WorkflowBlock
:::WorkflowBlockItem
Click **Devices** in the left sidebar.
:::

:::WorkflowBlockItem
To the right of a device, click **Delete**.
:::

:::WorkflowBlockItem
Click **Delete** to confirm.
:::

:::WorkflowBlockItem
Repeat for each key.
:::
::::
:::::

:::::ExpandableHeading
## Data stores

::::WorkflowBlock
:::WorkflowBlockItem
Click **Data Stores** in the left sidebar.
:::

:::WorkflowBlockItem
To the right of a data store, click **Delete**.
:::

:::WorkflowBlockItem
Click **Really?** to confirm.
:::

:::WorkflowBlockItem
Repeat for each data store.
:::
::::
:::::

:::::ExpandableHeading
## User profile

::::WorkflowBlock
:::WorkflowBlockItem
Click your profile icon in the upper-right corner, then click **Profile**.
:::

:::WorkflowBlockItem
Click the three dots next to **Profile settings&#x20;**&#x69;n the upper-right corner and select **Delete profile**.
:::

:::WorkflowBlockItem
Enter your password and 2FA code to confirm and click **Delete**.
:::
::::
:::::


[title] Databricks app is now available (Enterprise plans)
[path] Release notes/2026/

The **Databricks&#x20;**&#x61;pp is now available in  for Enterprise plans. Data and IT teams can run SQL queries and manage Databricks jobs, pipelines, and Unity Catalog volumes in their .

## Key benefits

- **Execute SQL:** Run statements against Databricks SQL warehouses and pass results to Google Sheets, email, Slack, or BI tools.
- **Manage jobs:** Start Databricks jobs from business events, schedules, or app triggers, then use the job output for follow-up actions like alerts or reports.
- **Manage pipelines:** Read pipeline details and update Delta Live Table pipeline status in the same scenario, so your team can automate monitoring and operational response.
- **Upload files:** Send files from email, cloud storage, or forms directly to Unity Catalog volumes.
- **Control access:** Create a connection using a Databricks workspace URL, client ID, and client secret so your scenarios run under a dedicated service account.

## Available modules

- **SQL:** Execute a SQL statement, Get a SQL statement result
- **Jobs:** Run a job, Get a job run output
- **Pipelines:** Get a pipeline update status
- **Files:** Upload a file to a Unity Catalog volume, Download a file from a Unity Catalog volume
- **Other:** Make an API call

## Availability

The **Databricks&#x20;**&#x61;pp is available on the **Enterprise plan** only. A Databricks account with a configured service principal is required to connect.

## Learn more

To learn how to use the **Databricks&#x20;**&#x61;pp in Make, see [Databricks](https://apps.make.com/databricks).

[title] Subscription
[path] Your organization/

Find details to manage your subscription, payments, and credits.

::::LinkArray{contentSource="DOCS" sourceParentDocId="JMA8Io3c2TZVIcNYw6HW2" childrenDocs="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]" displayMode="CARD" itemsPerRow="2"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="gs-eeU8aLcJLqMnJM1ZtM" displayMode="CARD" docSeoDescription="Upgrade or downgrade your subscription plan and learn how credits transfer."}
[Change your subscription](docId\:gs-eeU8aLcJLqMnJM1ZtM)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="DJVXqkGnbjaLb2kX1sQvP" displayMode="CARD" docSeoDescription="Cancel your paid subscription and learn how your account transitions to the Free plan."}
[Cancel your subscription](docId\:DJVXqkGnbjaLb2kX1sQvP)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="2ZcWIdBk-UaMtP2X2_7kj" displayMode="CARD" docSeoDescription="Buy extra credits manually or through auto purchasing when you exceed credits included in your plan."}
[Extra credits](docId:2ZcWIdBk-UaMtP2X2_7kj)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="wxgYyxT6NVK1wvplf3kXK" displayMode="CARD" docSeoDescription="Choose between a monthly or annual subscription to match your credit usage and payment preferences."}
[Monthly and annual subscriptions](docId\:wxgYyxT6NVK1wvplf3kXK)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="vPw9F-YL3L0zEfbaA81um" displayMode="CARD" docSeoDescription="Update your payment method, billing address, and invoicing email to manage your subscription."}
[Change payment details](docId\:vPw9F-YL3L0zEfbaA81um)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="bMijJPSAsVGPjsLEpPk1U" displayMode="CARD" docSeoDescription="Redeem coupon codes for subscription discounts, free trials, and extra credits."}
[Coupons](docId\:bMijJPSAsVGPjsLEpPk1U)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="498VXaeOXelMkbrlXXzNo" displayMode="CARD" docSeoDescription="Check the status of your payment and update your payment method to avoid cancelation."}
[What to do if your payment fails](docId:498VXaeOXelMkbrlXXzNo)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="OlBiy-BqsY_GG-Mv8GiMt" displayMode="CARD" docSeoDescription="Download past invoices from the Payments section in your organization. "}
[View and download invoices](docId\:OlBiy-BqsY_GG-Mv8GiMt)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="AFQxzV-wYWKyLberqKwbV" displayMode="CARD" docSeoDescription="Migrate your scenarios to an Enterprise plan with a dedicated server and advanced features."}
[Upgrade to the Enterprise plan](docId\:AFQxzV-wYWKyLberqKwbV)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="X2hp-EYU5Pje2rwrxyZcw" displayMode="CARD" docSeoDescription="Apply for sales tax exemption by submitting verified tax documentation to Make support."}
[Request sales tax exemption](docId\:X2hp-EYU5Pje2rwrxyZcw)
:::
::::


[title] Introducing Make Skills
[path] Release notes/2026/

Make Skills are file-based skills you can give AI assistants to help them build scenarios, configure modules, and connect to the Make MCP server and APIs.&#x20;

They are recommended to use as a Claude Code plugin, or as zip files that you upload to Claude Cowork and Claude Chat.

## Key benefits

- **Specialized Make knowledge:&#x20;**&#x41;I can reference Make Skills for instructions and best practices on , modules, and connections.
- **AI-built scenarios**: Ask AI from the chat or command line to create scenarios, map data flows, and handle connections.
- **Access tools from Make:** Connect AI to Make MCP server so it can perform actions like running scenarios, reviewing connections, and creating data structures.&#x20;

## Availability

Make Skills is in open beta and available for all users in Claude Code, Claude Cowork, Claude Chat, and more.&#x20;

## Learn more

For more information on using Make Skills, see the [documentation](https://help.make.com/make-skills)<font color="#EF4444"> </font>or [official website](https://skills.make.com/).

:::hint{type="warning"}
Make Skills helps AI perform actions for you in Make, such as modifying scenarios and connections. Test it first before using it in production-ready .
:::


[title] Two-factor authentication
[path] Your profile/Profile settings/

You can make your  account more secure using two-factor authentication (2FA). 2FA means that there are two different factors (your credentials and an additional verification code) needed to authenticate you as a user when logging into your  account.

You must have an authenticator app installed on your mobile device.

## Enable two-factor authentication

There are many authenticator apps available (e.g., Google Authenticator, Authy, Microsoft Authenticator, or 1Password). We will use the **Google Authenticator** app in our example.

::::WorkflowBlock
:::WorkflowBlockItem
Click your profile icon in the upper-right corner and select **Profile**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Os7Sr564DOb8RM8xfqY04-20251002-104555.png)
:::

:::WorkflowBlockItem
Click the **2FA** tab for two-factor authentication, and then the **Enable** button.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/yQI7-66r_8Q18I5pWizST-20251002-105230.png" size="80" width="2520" height="610" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
In the **Enable Two-Factor Authentication** dialog box, you will see a QR code or a key in case you can't scan the code.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/RMkUfvkPPSghCrJDIyN9H-20251002-105500.png" size="50" width="880" height="1140" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Install and open the **Google Authenticator** app on your mobile device ([Android](https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2), [iOS](https://apps.apple.com/us/app/google-authenticator/id388497605)).
:::

:::WorkflowBlockItem
In the **Google Authenticator** app, click **Scan a QR code&#x20;**&#x61;nd scan the QR code you got in step 3.
:::

:::WorkflowBlockItem
Enter the six-digit **verification code** generated by the **Google Authenticator** app and your  password in the **Enable Two-Factor Authentication** dialog box, and click **Enable**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/QnTYZ5-FNB6PVWtWCt60v-20251002-110251.png" size="50" width="876" height="1152" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click the **Download codes** button to download the TXT file containing all your one-time passwords.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/Y0ifIv3dIfo0lc-vayHyj-20251002-110728.png" size="52" width="1168" height="968" position="center" showCaption="false"}
:::
::::

:::hint{type="info"}
Save the provided one-time passwords in a safe place (not on your mobile device). You can use these one-time passwords to recover access to your account if your mobile device has been stolen or lost, or if the authenticator mobile app has been removed from your phone.
:::

## Sign in using two-factor authentication

After signing out, you can now log in using 2FA.

::::WorkflowBlock
:::WorkflowBlockItem
Go to the  login page.&#x20;
:::

:::WorkflowBlockItem
Enter your  credentials and click Sign In (or sign in using Google, Facebook, or GitHub).
:::

:::WorkflowBlockItem
Open the authenticator app (e.g. Google Authenticator) on your mobile device to get the verification code.
:::

:::WorkflowBlockItem
Enter the verification code provided by the authenticator mobile app in the **2FA code&#x20;**&#x66;ield, and click **Sign in**.
:::
::::

:::hint{type="info"}
If you have lost your mobile device or accidentally deleted the authenticator app, you can use one of the one-time passwords you store after enabling the 2FA on your Make account (step 6 in the [How to enable two-factor authentication](docId\:WXHV3PbHkFgLwTRqVRWwY) section above).
:::

## Disable two-factor authentication

::::WorkflowBlock
:::WorkflowBlockItem
Log in to your  account.
:::

:::WorkflowBlockItem
Click your profile icon in the upper-right corner and select **Profile**.
:::

:::WorkflowBlockItem
Click the **2FA** tab for two-factor authentication, and then the **Disable** button.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/CMGf7kM28fYobGoPXLYHN-20251002-111004.png)
:::

:::WorkflowBlockItem
Enter the verification code generated by your authenticator app on your mobile device, enter your  password, and click **Disable**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/LHxDQT0-FabFrii3CutWI-20251002-111105.png" size="50" width="876" height="624" position="center" showCaption="false"}
:::
::::

Two-factor authentication is now disabled on your account.

## Switch to another authenticator app or change your mobile device

If you want to use another app for the two-factor authentication or another phone, you first need to disable the two-factor authentication on your Make account using your current authenticator app or one-time password.

::::WorkflowBlock
:::WorkflowBlockItem
[Disable the two-factor authentication](docId\:WXHV3PbHkFgLwTRqVRWwY) on your  account.
:::

:::WorkflowBlockItem
Install another authenticator app on your mobile device (or the same app on the new mobile device).
:::

:::WorkflowBlockItem
[Enable the two-factor authentication](docId\:WXHV3PbHkFgLwTRqVRWwY) on your  account using your newly installed authenticator app.
:::
::::


[title] NGO program
[path] Your profile/Make programs/

The [Make for NGO program](https://www.make.com/en/ngo-program) is designed to help NGOs maximize their impact by automating processes and streamlining operations. We engage with NGOs from all over the world, particularly in the areas of childhood & education, health & hunger, and the earth & environment.

As part of the program,  provides selected NGOs with a license for 12 months, with the opportunity to renew after the initial period.

Additionally, we choose a handful of NGOs every year to participate in our high-engagement program where they get the chance to work with our employees to learn how to use  to its maximum potential.

:::hint{type="info"}
[Learn more](https://www.make.com/en/ngo-program) about the benefits of the Make for NGO program, eligibility criteria, and the application process. We look forward to hearing your story.
:::


[title] Scenario Builder improvements, new app, and AI model updates
[path] Release notes/2026/

## Improvements and changes

### Make AI Apps button in the Scenario Builder toolbar

We've added a **Make AI Apps&#x20;**&#x62;utton to the  toolbar of the  Builder. Use it to view the latest AI apps from  and easily add them to the canvas.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/6LuYN27B3YJkgo7bsmWv7-20260311-092513.gif" size="70" width="890" height="536" position="center" darkWidth="890" darkHeight="536" showCaption="false"}

### Move scenarios to folders directly from the Scenario Builder

Previously, moving a scenario to a particular folder required saving it first, then leaving the Scenario Builder and moving it from the scenario list or scenario diagram.

Now, you can move scenarios to folders directly from the Scenario Builder while working on them. This makes the process faster and more convenient.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/m5V_di7OYNhFlGybbHyOW-20260312-104713.png" size="70" width="2532" height="1062" position="center" darkWidth="2532" darkHeight="1062" showCaption="false"}

### New encryption and data security guide

All encryption and data security documentation has been consolidated into a [new, comprehensive guide](https://help.make.com/securing-data-with-make). It includes updated [Encryptor app documentation](https://apps.make.com/crypto), a breakdown of data-securing methods, and step-by-step examples for using AES, PGP, digital signatures, and hash functions in your scenarios.

## App updates

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/CToHsKkMmyWJITyt8_JzK-20251030-181551.png" size="50" width="800" height="800" position="center" darkWidth="800" darkHeight="800" showCaption="false"}
:::

:::VerticalSplitItem
[HTTP](https://apps.make.com/http)

We've released a new **Resolve URL&#x20;**&#x6D;odule that allows you to follow all automatic redirects to identify the final destination address of a link.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-H7T8dBleiJESsW51YMrMw-20250805-101959.png" size="70" width="376" height="364" darkWidth="376" darkHeight="364" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Google Cloud Storage Transfer Service](https://apps.make.com/google-cloud-storage-transfer)

A new app is now available that lets you manage transfer jobs in your Google Cloud Storage Transfer Service account with Make.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/C4r0TYdKvcpg5VZD2xVPn-20260107-132617.png" size="50" width="800" height="800" darkWidth="800" darkHeight="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Google Gemini AI](https://apps.make.com/gemini-ai)

`Gemini 3 Pro Preview` model has been [deprecated](https://ai.google.dev/gemini-api/docs/deprecations) since March 9, 2026. Any scenarios using this model in the **Simple text prompt** or **Generate a response** modules have been automatically migrated to `Gemini 3.1 Pro` Preview to avoid interruptions. No action required.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/5NRhEo7O6dh6IEPIx66xl-20251029-172052.png" size="50" width="800" height="800" position="center" darkWidth="800" darkHeight="800" showCaption="false"}
:::

:::VerticalSplitItem
[Google Sheets](https://apps.make.com/google-sheets)

We've made minor UX refinements for selecting spreadsheets.

We've added the option to use column headers as column IDs in the **Add a Row** and **Update a Row** modules. In this case, column header names are used as stable IDs, and as long as you don't rename your columns in the sheet, existing mappings will continue to work even if other columns are added, removed, or reordered in the table.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-UUjn5uUTngOmDCOl0lrvW-20250814-103121.png" darkSrc="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-UUjn5uUTngOmDCOl0lrvW-20250814-103121.png" size="50" width="393" height="393" darkWidth="393" darkHeight="393" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[OpenAI](https://apps.make.com/openai-gpt-3)

**Chunking Strategy** options are now available in the **Generate a Transcription** module when using the `gpt-4o-transcribe-diarize` model.

For more information, refer to the [OpenAI app documentation](https://apps.make.com/openai-modules#generate-a-transcription).


:::
::::


[title] What to do if your payment fails
[path] Your organization/Subscription/

If  is unable to process your payment, you will receive an email. There is a seven-day grace period to [update your payment method](docId\:vPw9F-YL3L0zEfbaA81um). When the grace period ends, your subscription is automatically canceled.&#x20;

If you use ACH direct debit for a failed payment, your subscription is renewed, but may be canceled if the new ACH payment fails.

If your payment fails, follow these steps:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.
:::

:::WorkflowBlockItem
Under **My Plan**, click **Payments**.
:::

:::WorkflowBlockItem
Click **Finish payment**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Y6sU1e7qVpa8XvypyxTcJ-20251007-115133.png)
:::

:::WorkflowBlockItem
In the new tab, follow the on-screen instructions to enter a new payment method. You can enter either credit card or direct debit payment information.
:::

:::WorkflowBlockItem
Review the information you entered. Click **Pay** to begin the transaction.
:::

:::WorkflowBlockItem
Confirm the payment by checking the **Payments&#x20;**&#x74;ab.
:::
::::

:::hint{type="info"}
ACH direct debit payments take up to five business days to complete. As a result, the **Payments&#x20;**&#x74;ab may not reflect a recent direct debit payment.
:::


[title] Claude Sonnet 5 is now available
[path] Release notes/2026/

Claude Sonnet 5 is now available to use in Make, with a 1,000,000 token context window, better reasoning, and cost control for scenarios that require large inputs and multi-step decision-making.&#x20;

## Key benefits

- **Large input handling:** Send large documents, PDFs, and exports in a single **Anthropic Claude** module, so your scenario works from the full source instead of splitting content into chunks.
- **Multi-step decision-making:** Use advanced planning and tool use to decide which tool call, route, or follow-up action happens next in complex scenarios.
- **Cost control for repeat runs:** Run high-volume scenarios at Sonnet-tier pricing to keep recurring AI work predictable.
- **Built-in guardrails:** Set hard output caps, up to 128,000 tokens, to keep recursive or scheduled scenarios within the limits you choose.
- **Tokenizer update:** The model uses a new tokenizer; the same input text now produces about 30% more tokens than with Sonnet 4.6. Review your scenarios for higher-than-expected credit usage or truncated output.

## Availability

The model is available in these apps:

- [Make AI Toolkit](https://apps.make.com/ai-tools) for a quick setup, with no API key required if you choose Make's AI Provider
- [Anthropic Claude](https://apps.make.com/anthropic-claude) via your Anthropic API key
- [Make AI Agent (New) ](https://help.make.com/make-ai-agent-new)for agentic automations, via your Anthropic API key

[title] Make programs
[path] Your profile/

Read about our Affiliate and NGO programs.

::::LinkArray{contentSource="DOCS" sourceParentDocId="NWC5J8dKUwL7uaZFyvWls" childrenDocs="[object Object],[object Object],[object Object]" sortOption="ALPHABETICAL_ASC" customOrder="JKOCWbNbgdFNKPmyZN9SO" itemsPerRow="2" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="Q49X24UPoVzL0iUwA4qOP" displayMode="CARD" docSeoDescription="Learn how to register for the Make affiliate program and start earning commission on referrals."}
[Affiliate program](docId\:Q49X24UPoVzL0iUwA4qOP)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="GklvyMMM4wuit2IxhgQtt" displayMode="CARD" docSeoDescription="Apply for our NGO program for help with process automation so you can focus on driving positive impact."}
[NGO program](docId\:GklvyMMM4wuit2IxhgQtt)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="5G8a80opuJm22xEWBQMpw" displayMode="CARD" docSeoDescription="Empower your students to learn how to build intelligent systems, from automations to AI agents."}
[Digital Education program](docId:5G8a80opuJm22xEWBQMpw)
:::
::::


[title] Claude Fable 5 is now available
[path] Release notes/2026/

Claude Fable 5 is available in Make for scenarios that need long context, image analysis, and advanced reasoning. Analyze sets of documents, charts, code, or support logs in one module, then send the results to the next step in your scenario.&#x20;

## Key benefits

- **1 million tokens of context:** Analyze sets of blueprints, a day of support conversations, or a large technical document in one step, then send the result to a CRM, an ERP, or email.
- **Larger outputs:** Generate up to 128,000 output tokens in one request, giving long summaries, code drafts, and reports enough room to finish in a single step.
- **Reads images and scanned documents:** Read blueprints, financial charts, scanned PDFs, and multi-page technical documents, then return the data in a format your modules can map directly.
- **Handles code and complex documents:** Draft code changes, compare documents, summarize large datasets, or generate data for the next step in your scenario, such as a record update, report, or review queue.
- **Predictable handling of blocked requests:** If a request is too high-risk to complete, Claude Fable 5 returns a refusal response instead of an error. Branch your scenario to retry with Claude Opus 4.8 without marking the run as failed.

## Availability

This model is available in the **Make AI Agent (New)&#x20;**&#x61;nd **Anthropic Claude&#x20;**(**Create a Prompt&#x20;**&#x6D;odule) apps with your Anthropic API key.&#x20;

:::hint{type="warning"}
Anthropic has a mandatory 30-day data retention period, and zero data retention is not available for this model.
:::


[title] Introducing new OpenAI Skills and Skill Versions modules
[path] Release notes/2026/

Make now supports **Skills** and **Skill Versions** in the OpenAI app. Use them to create reusable sets of instructions and tools, manage versions, and attach Skills to model responses in your scenarios.

With Skills, you can keep repeated AI instructions in one place instead of recreating them in each module. This helps you build more consistent AI-powered scenarios and update shared instructions more easily.

### New modules

We've added two new groups of modules to help you manage the entire lifecycle of your AI skills and their versions.

**Skills**

- **List skills:** Retrieve a list of all available skills in your OpenAI account.
- **Get a skill:** Return information about a specific skill by its ID.
- **Download a skill:** Download a skill as a ZIP file using its ID.
- **Create a skill:** Upload skill files to create a new skill.
- **Update the default version pointer for a skill:** Set which version of a skill is the default.
- **Delete a skill:** Permanently remove a skill.

**Skill Versions**

- **List skill versions:** Get a list of all versions for a particular skill.
- **Get a skill version:** Retrieve the details of a specific skill version.
- **Download a skill version:** Download the content of a specific skill version as a ZIP file.
- **Create a skill version:** Create a new version for an existing skill.
- **Delete a skill version:** Permanently remove a specific version of a skill.

### Updated module

- **Generate a response:** This module now includes a new **Skills** tool type. You can attach one or more of your created skills to an AI model to guide its response.

### Resources

- [OpenAI (ChatGPT, Sora, Whisper) — Make Help Center](https://apps.make.com/openai-gpt-3)
- [OpenAI modules — Make Help Center](https://apps.make.com/openai-modules)
- [Skills documentation — OpenAI Developers](https://developers.openai.com/api/docs/guides/tools-skills)

[title] View and download invoices
[path] Your organization/Subscription/

You can download past invoices from the **Payments&#x20;**&#x73;ection in your organization.&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.
:::

:::WorkflowBlockItem
Under **My Plan**, click **Payments**.
:::

:::WorkflowBlockItem
Click **PDF** for the invoice you want to download.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/xur3tbU0_WyfEo2yKbfQD-20251007-114911.png)
:::
::::

Your browser automatically downloads the PDF file. Check your **Downloads** folder or your browser's **Downloads** **tab** to find the file.

[title] Change your email address
[path] Your profile/Profile settings/

You can change your email address from your **Profile&#x20;**&#x70;age.&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Click your profile icon in the upper-right corner and select **Profile**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/fIHnvkHBdg6pitYmfvk0x-20251002-072443.png)
:::

:::WorkflowBlockItem
In the upper-right corner of the **Profile page**, click the three dots next to the **Profile settings**, and selec&#x74;**&#x20;Change email**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/Oioqvdq5mTdieGUxTeWNF-20251002-073106.png" size="40" width="752" height="596" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Enter your new email address in the **New email address** field. Enter your **Current password**, and click **Save**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/QAEcsMmPYFr6GDCQWbW-R-20251002-073719.png" size="50" width="884" height="640" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
A confirmation email will be sent to your **current email address.&#x20;**&#x43;lick the **Change email address&#x20;**&#x62;utton in the email to approve the change.

::Image[]{src="https://app.archbee.com/api/optimize/yAufeXqD1oGWOPBNi5MAm-DGICwT_q_If-d3k8Ekn7q-20241203-131127.png" size="40" width="636" height="424" position="center" alt="Change your email step 5" showCaption="false"}
:::

:::WorkflowBlockItem
You'll be redirected to the login page and asked to check your new email for a verification link.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/WWGq8fnQeXv5b0XG-jH91-20251002-074653.jpg" size="40" width="1179" height="1578" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Check the new email you introduced in Step 3 for a verification email. Open it and click the **Verify new email** button. &#x20;
:::

:::WorkflowBlockItem
You'll be redirected to the login page. Your new email will be displayed in the **Email&#x20;**&#x66;ield, and you will see a message indicating your email address has been successfully changed.

::Image[]{src="https://app.archbee.com/api/optimize/yAufeXqD1oGWOPBNi5MAm-ndncmsw59cSHOgFzurM1V-20241203-131208.png" size="40" width="487" height="409" position="center" alt="Change your email step 6" showCaption="false"}
:::

:::WorkflowBlockItem
You'll also receive a confirmation email, sent to the new email address associated with your account.

::Image[]{src="https://app.archbee.com/api/optimize/yAufeXqD1oGWOPBNi5MAm-9CCzzhJ2gS6DpzZmreGQg-20241203-131237.png" size="40" width="630" height="369" position="center" alt="Change your email step 7" showCaption="false"}
:::
::::

:::hint{type="info"}
For security purposes, verification of your change email request must be completed within 24 hours, at which point the links will expire.

If you can't access your email or login to make these changes, please contact our support team. You'll be asked to provide additional information about your account so we can make the change on your behalf.
:::


[title] Private spaces
[path] Your organization/Administration/

:::hint{type="info"}
Private spaces are available o&#x6E;**&#x20;all plans**. Admin visibility is available on **Enterprise plans** only.
:::

Private spaces give every member of your organization (except guests) their own workspace for scenarios and connections they don't want teammates to access. Admins can define credit limits for each space. Enterprise plan admins can also view members' private spaces in read-only mode.

This page shows you how to enable and disable Private spaces, set credit limits for members, and view others' spaces with Admin visibility.&#x20;

## Enable Private spaces

Enabling Private spaces activates a private space for every member of the organization. With it enabled, new members automatically get a private space with the default credit limit.&#x20;

Only **Admin&#x20;**&#x72;oles can enable Private spaces.

To enable Private spaces:

::::WorkflowBlock
:::WorkflowBlockItem
In , click the three-dot menu next to **Organization settings**, and select **Private spaces**.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/b1wJrtpZeNaJYm3VIbknP_private-spaces.png" size="60" isUploading="false" position="center" width="986" height="473" darkWidth="986" darkHeight="473" showCaption="false"}
:::

:::WorkflowBlockItem
Toggle **Enable for everyone**.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/3J0hvi9J6w6p1dbkCLhQe_new-private-spaces-dialog.png" size="60" isUploading="false" position="center" width="506" height="493" darkWidth="506" darkHeight="493" showCaption="false"}
:::

:::WorkflowBlockItem
Toggle **Set default credit limit** and define the monthly or yearly credit limit that applies to all new private spaces.&#x20;
:::

:::WorkflowBlockItem
Alternatively, leave the **Set default credit limit** toggled off to set the credit limit to unlimited. This means members draw from the organization's overall credits without limitations.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::
::::

You've now enabled Private spaces.&#x20;

Later, to change the default credit limit for all existing and new private spaces, go to the same **Private spaces&#x20;**&#x64;ialog, edit the limit, and select **Replace all private space limits**.&#x20;

Alternatively, to set the credit limit as unlimited for all existing and new spaces, toggle off **Set default credit limit** and select **Remove all private space limits**.

## Set credit limits for individual members

Once Private spaces is enabled, **Admin&#x20;**&#x72;oles can set credit limits for individual members.&#x20;

Choose between these options:&#x20;

- **Credit limit:&#x20;**&#x41; specific number of credits per month or year.
- **Unlimited:** Members draw from the organization's overall credits without limitation.

When a member reaches their credit limit, all scenarios in their private space pause. They can still build scenarios, but can't run them. Scenarios run again when the limit resets or an admin increases it.

### Set a specific credit limit&#x20;

To set a credit limit for a member's private space:

::::WorkflowBlock
:::WorkflowBlockItem
In , go to **Org&#x20;**&#x6F;n the left sidebar.&#x20;
:::

:::WorkflowBlockItem
In the submenu, click **Org Users**.
:::

:::WorkflowBlockItem
Next to the user whose limit you want to change, hover over the **Private space** column and click the pencil icon.&#x20;
:::

:::WorkflowBlockItem
Toggle **Set credit limit**.&#x20;
:::

:::WorkflowBlockItem
Enter the amount, and click **Save**.&#x20;
:::
::::

You've now set a credit limit for a member's private space.&#x20;

### Set an unlimited credit limit

To set an unlimited credit limit for a member's private space:

::::WorkflowBlock
:::WorkflowBlockItem
In , go to **Org&#x20;**&#x6F;n the left sidebar.&#x20;
:::

:::WorkflowBlockItem
In the submenu, click **Org Users**.
:::

:::WorkflowBlockItem
Next to the user whose limit you want to change, hover over the **Private space** column and click the pencil icon.&#x20;
:::

:::WorkflowBlockItem
Toggle off **Set credit limit**, and click **Save**.&#x20;
:::
::::

You've now set an unlimited credit limit for a private space.&#x20;

## Admin visibility (Enterprise plans)

Admin visibility allows admins to open any member's private space in a read-only view. This feature is available to **Admin&#x20;**&#x72;oles on Enterprise plans.

Admins have limited visibility of a member's private space:

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
**What admins can see&#x20;**

- Scenario names
- Modules used
- Credit usage
:::

:::VerticalSplitItem
**What admins can't see**

- Module settings
- Scenario run history
- Run details&#x20;
- Data stores
- Connections
:::
::::

### Enable Admin visibility

Only organization owners can enable Admin visibility. &#x20;

To enable Admin visibility:

::::WorkflowBlock
:::WorkflowBlockItem
In , click the three-dot menu next to **Organization settings**, and select **Private spaces**.&#x20;
:::

:::WorkflowBlockItem
Toggle on **Organization admins can view**.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

You've now enabled Admin visibility. Admins can now view the private spaces of other members.&#x20;

### View private spaces with Admin visibility&#x20;

To view another member's private space using Admin visibility:

::::WorkflowBlock
:::WorkflowBlockItem
In , go to **Org&#x20;**&#x6F;n the left sidebar.&#x20;
:::

:::WorkflowBlockItem
In the submenu, click **Org Users**.
:::

:::WorkflowBlockItem
Next to the user whose private space you want to view, hover over the **Private space** column and click the eye icon.
:::
::::

You're now in the member's private space. Go back to your own space at any time from the Organization and team dropdown at the top.&#x20;

## Disable or pause private spaces

You can disable Private spaces for all members of your organization or pause spaces for specific members.&#x20;

### Pause a member's private space

Pausing a private space temporarily stops its scenarios from running. Members with paused private spaces can still build scenarios, but can't run them. Scenarios can run again once an admin increases the space's credit limit.&#x20;

To pause a member's private space:

::::WorkflowBlock
:::WorkflowBlockItem
In , go to **Org&#x20;**&#x6F;n the left sidebar.&#x20;
:::

:::WorkflowBlockItem
In the submenu, click **Org Users**.
:::

:::WorkflowBlockItem
Next to the user whose private space you want to disable, hover over the **Private space** column and click the pencil icon.
:::

:::WorkflowBlockItem
In **Set credit limit**, enter `0`.&#x20;
:::

:::WorkflowBlockItem
Click **Confirm**.&#x20;
:::
::::

You've now paused a member's private space.&#x20;

To permanently delete all private spaces and their contents, see [Disable all private spaces](docId:3zFgIYDeBSiT777a7Bw64).&#x20;

### Disable all private spaces

Disabling Private spaces permanently deletes all private spaces in the organization, including their scenarios, connections, and data stores, and immediately stops any running scenarios.

To disable private spaces for the entire organization:

::::WorkflowBlock
:::WorkflowBlockItem
In , click the three-dot menu next to **Organization settings**, and select **Private spaces**.&#x20;
:::

:::WorkflowBlockItem
Toggle off **Enable for everyone**.&#x20;
:::

:::WorkflowBlockItem
Select the checkbox to confirm.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::
::::

You've now disabled Private spaces for the organization.&#x20;

[title] Two-factor authentication enforcement
[path] Your organization/Administration/

:::hint{type="info"}
This feature is available to **Enterprise** customers.
:::

Organization Admins and Owners can enforce **Two-factor authentication (2FA)** within their organization, requiring all users to enable it.&#x20;

## Key benefits

- **One-step enforcement**: Make 2FA mandatory for all users in one action
- **Reduced security risks**: Prevent unauthorized access and potential account takeovers
- **Locked in protection:&#x20;**&#x45;nsure users can't accidentally or intentionally turn off 2FA, so your security stays locked in place

## Limitations

2FA enforcement applies only to users who sign in using Make’s native authentication method (email and password).&#x20;

If a user signs in through an external provider (e.g., Google) or an Identity Provider (SSO/SAML), this Make-level enforcement does not apply. In these cases, 2FA must be configured and enforced within the external provider or Identity Provider.&#x20;

## Enable 2FA enforcement in the Organization

:::hint{type="warning"}
As soon as you enforce 2FA in your Organization, users who haven't set up 2FA before and sign in using Make's native authentication method (email and password) will be signed out immediately. 

We recommend planning 2FA enforcement ahead of time to avoid disruption:

- Schedule for off-hours, evenings, or weekends when your team isn't actively working.
- Inform your team 24-48 hours in advance; explain what's happening, and that the setup takes about 5 minutes.
- Let users save their work: make sure there's time before you enable it.&#x20;
:::

To enable 2FA enforcement in your Organization:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.
:::

:::WorkflowBlockItem
Click the three dots next to the **Organization** **settings**.
:::

:::WorkflowBlockItem
Click **Enforce 2FA**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/tRQqZxY2mAUXBC-0SlDq_-20260209-160408.png)
:::

:::WorkflowBlockItem
In the next window, review the warning that all users in your organization will be signed out immediately and required to use 2FA to sign in.

Check the confirmation box and click **Enable 2FA**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/0BezXgEE1eBGUK4ThdZbM-20260211-125943.png" size="50" width="788" height="736" position="center" showCaption="false"}
:::
::::

You will see a message confirming that 2FA changes have been saved.&#x20;

## Set up 2FA

Once 2FA enforcement is enabled, users who haven't configured 2FA before and sign in using Make's native authentication method (email and password) will be signed out immediately. Upon signing in, they will see a warning that their account now requires 2FA.

To set up 2FA, users have to:

:::::WorkflowBlock
:::WorkflowBlockItem
Sign in using their Make email and password.
:::

:::WorkflowBlockItem
Scan the QR code using an authenticator app (e.g., Google Authenticator, Authy, Microsoft Authenticator, or 1Password).

If scanning is not possible, click **Can't** **scan?** and manually enter the provided key to the authenticator app.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/uJw-RpKRbmA_xrjyO-Igq-20260210-093522.png" size="50" width="1648" height="2144" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Enter the **One-time code** generated by the authenticator app along with Make **Password**, and click **Continue**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/jndeQZITGEcXuTxmxuxNK-20260210-093947.png" size="50" width="1648" height="1052" position="center" showCaption="false"}
:::

::::WorkflowBlockItem
Save your recovery codes. 

:::hint{type="warning"}
Save the provided one-time recovery passwords in a safe place. They can be used to regain access to the account with 2FA if a mobile device is lost or stolen, or the authenticator app is removed from the phone.&#x20;
:::

Click **Copy to clipoboard** to copy the one-time passwords, or click **Download** to save them in a TXT file.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/vWxw6vUOflOHn23UsUudv-20260210-094946.png" size="40" width="1780" height="2348" position="center" showCaption="false"}
::::

:::WorkflowBlockItem
After saving, click **Continue**.
:::
:::::

Users who belong to only one organization will be redirected to their Make Org page. Users who belong to multiple organizations will need to select the organization before being redirected to their Make Org page.&#x20;

## Check 2FA status

After enabling 2FA enforcement, organization Admins and Owners can see at both the organization and team levels who completed setup and who didn't.&#x20;

### Check 2FA status at the organization level

To check the user's 2FA status at the organization level:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.
:::

:::WorkflowBlockItem
Switch to the **Org** **Users** tab.
:::

:::WorkflowBlockItem
Click the icon in the upper-right corner of the table and check the box for 2FA status.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/S7OgF_O11IbULSGzjypb4-20260212-113148.png)
:::
::::

You will see a new **2FA Status** column with each organization member's 2FA status.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/OU71h2Lg68bvxJ6_Ce07l-20260212-093030.png)

### Check 2FA status at the team level

To check the user's 2FA status at the team level:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Team**.
:::

:::WorkflowBlockItem
Switch to the **Team** **Users** tab.
:::

:::WorkflowBlockItem
Click the icon in the upper-right corner of the table and check the box for 2FA status.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/H9fHIJ5hV-ClyXbQSHfaZ-20260212-092215.png)
:::
::::

You will see a new **2FA Status** column with each team member's 2FA status.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/NiGiGDqL6kchxDzY70KZj-20260212-092847.png)

## Disable 2FA enforcement in the Organization

When 2FA enforcement is on, users can't turn off 2FA themselves. Only Organization Admins or Owners can disable it. 

To disable 2FA enforcement in your Organization:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.
:::

:::WorkflowBlockItem
Click the three dots next to the **Organization** **settings**.
:::

:::WorkflowBlockItem
Click **Turn off 2FA enforcement**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/2W7Tbp8AZNiUzHRS4Iw8i-20260209-171157.png)
:::

:::WorkflowBlockItem
In the next window, review the warning that once 2FA enforcement is turned off, users will no longer be required to sign in with a verification code.&#x20;

Check the confirmation box and click **Turn off enforcement**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/_pNuxSuB4P6i7tfs7jtDk-20260209-171406.png" size="50" width="2052" height="1292" position="center" showCaption="false"}
:::
::::

You will see a message confirming that 2FA changes have been saved.

[title] Digital Education program
[path] Your profile/Make programs/

Empower your students to move beyond learning theory about AI to actively building intelligent systems, from automations to AI agents, with the [Make Digital Education program](https://www.make.com/en/digital-education-program).

Our program grants eligible organizations and their students premium access to  for six months at no cost to give them practical, real-world skills and a portfolio of experience with industry-driving technology.

The program is for organizations offering structured learning in automation, AI, and technology,  such as academies, bootcamps, and on-demand platform-based courses provided by universities or other teaching institutions.

:::hint{type="info"}
[Learn more](https://www.make.com/en/digital-education-program) about the elibility requirements, additional program details, and how to apply.
:::


[title] Google Chrome app and browser extension deprecation on August 31, 2026
[path] Release notes/2026/

 is retiring the native **Google Chrome** app and the Chrome browser extension on August 31, 2026.

## What changed

Before August 31, 2026, the **Google Chrome** app is hidden from the app catalog, so you can't add it to new . Existing  that use the app continue to run without changes until the end of support date.

On August 31, 2026, the **Google Chrome** app will be removed from all organizations and the Chrome browser extension from the Chrome Web Store. After this date, scenarios that use the **Google Chrome** app will stop working, and Make doesn't offer a replacement module for this functionality.

## What you need to do

If you use the **Google Chrome** app in a scenario, remove it before August 31, 2026, to avoid disruption.

[title] Team edit permission removed from Team Member role
[path] Release notes/2026/

The team edit permission is being removed from the default **Team Member** role in public environments. After **August 2, 2026**, users with the **Team Member** role will no longer be able to rename teams. This change does not apply to private environments.

### What changed

The default **Team Member** role currently has the team edit permission, which allows users to edit a team. Currently, the "Edit teams" permission only allows users to change the team name. After this change, team members will no longer be able to edit teams.&#x20;

**This change applies to public environments only.** Existing private environments will not be affected.

This change will take effect on August 2, 2026.

### What you need to do

If you need specific users to retain this ability, assign them the **Admin** role.

[title] Feature controls
[path] Your organization/Administration/

:::hint{type="info"}
This feature is available to Enterprise customers.
:::

The Feature controls page provides organization administrators and owners with granular, centralized control over experimental and AI features. The controls page is designed to give you simple **ON/OFF&#x20;**&#x74;oggles to independently enable or disable individual features across your entire organization.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/TmBKCGZl78JzmjXZqXkbY-20251114-092622.png)

### Benefits of Feature controls

The Feature controls page offers several key benefits by directly addressing several challenges:

1. **Mitigate risk and ensure compliance:**

:::Paragraph{indent="1"}
It provides you with explicit control over AI features, allowing you to mitigate perceived or actual risks related to data usage, leakage, and compliance with internal governance policies. This is especially useful if your industry requires strict data governance and risk mitigation.
:::

2. **Ensure stability for critical processes:**

:::Paragraph{indent="1"}
You can control the ability to prevent users from accidentally or intentionally using Beta capabilities. This ensures that critical business processes can access validated features only.
:::

3. **Enable flexible and wider adoption:**

:::Paragraph{indent="1"}
You can now adopt the platform more widely by selectively disabling only the AI or Beta capabilities, removing roadblocks to wider organizational use.
:::

### Access Feature controls page

To access the Feature controls page:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Log in to your  account as an administrator.
:::

:::WorkflowBlockItem
In the left sidebar, click **Organization**.
:::

:::WorkflowBlockItem
Scroll down to the bottom of the page, click **Feature controls**.
:::
::::

The Feature controls page is displayed. This page lists all features classified as either AI-related or Beta. Each feature includes a brief description and an independent toggle switch.

:::hint{type="info"}
You must have administrator or owner rights to access this page.
:::

### Enable or disable a feature

To change the availability of a specific feature for your organization:

:::::WorkflowBlock
:::WorkflowBlockItem
Locate the desired feature (e.g.,  AI Agents).
:::

::::WorkflowBlockItem
Click the toggle switch next to the feature name:

:::Paragraph{indent="1"}
**Toggle ON (enabled):** The feature becomes available to all eligible users in your organization.
:::

:::Paragraph{indent="1"}
**Toggle OFF (disabled):** The feature is inaccessible to all users in your organization.
:::
::::

::::WorkflowBlockItem
Click **ON/OFF** to apply the update.

:::hint{type="info"}
When you disable a feature, a confirmation prompt is displayed indicating the impact of the change. Disabling a feature can impact the behavior and performance of all scenarios using it. All users in your organization will gain or lose access, and active scenarios may be impacted.
:::
::::
:::::

Your changes will reflect across your organization.

### Limitations

This control page manages the listed capabilities only and does not apply to application modules.

[title] Your organization
[path] /

Manage your organization, subscription, and teams.

::::LinkArray{contentSource="DOCS" sourceParentDocId="BiUrQ0eBFRv1q7I36bK12" childrenDocs="[object Object],[object Object],[object Object],[object Object],[object Object]" itemsPerRow="2" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="ef4WhaXRVBNsl4Bc7z0lA" displayMode="CARD" docSeoDescription="Add users to organizations and teams to manage roles and access."}
[Organizations & teams](docId\:ef4WhaXRVBNsl4Bc7z0lA)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="JMA8Io3c2TZVIcNYw6HW2" displayMode="CARD" docSeoDescription="Find details to manage your pricing plans, subscription, payments, and credits."}
[Subscription](docId\:JMA8Io3c2TZVIcNYw6HW2)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="tKMaI67IEKy4oQCbdlZqR" displayMode="CARD" docSeoDescription="Discover features to manage organization usage and members."}
[Administration](docId\:tKMaI67IEKy4oQCbdlZqR)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="BbVq-IisOUQLJb4T4UKMl" displayMode="CARD" docSeoDescription="Learn more about setting up SSO and managing SAML certificates."}
[Access management](docId\:BbVq-IisOUQLJb4T4UKMl)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/SH7WVsQL4hObHVdD1TdGQ_domino-zoomin-purple-a-1.png" headerType="IMAGE" docId="eBvcaOvODdwfLk-0hRM-u" displayMode="CARD" docSeoDescription="Learn how to manage multiple organizations under a single entity."}
[Make Managed Services (MMS)](docId\:eBvcaOvODdwfLk-0hRM-u)
:::
::::


[title] API key
[path] Your profile/Profile settings/

To add an API key to your account:

::::WorkflowBlock
:::WorkflowBlockItem
Click your profile icon in the upper right corner and select **Profile**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/NlBXGPBlWpls96yTFhtkX-20251002-092925.png)
:::

:::WorkflowBlockItem
Click the **API access** tab, and then the **Add token** button.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/gKKcKV_1JUo00tPeEbasF-20251002-093926.png" size="90" width="2516" height="1030" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Select the necessary **Scopes&#x20;**&#x61;nd enter a **Label** for your token.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/HhoZ_ojMk7Wm3vaPOAPez-20251002-102205.png" size="50" width="874" height="1054" position="center" showCaption="false"}

You can review the scopes in the [ API documentation](https://developers.make.com/api-documentation/authentication/api-scopes-overview).
:::

:::WorkflowBlockItem
Click the **Add** button to confirm your selections.
:::

:::WorkflowBlockItem
Copy your new API key to your clipboard and store it in a safe place. **This is the only time when you can see the whole API key.** The API key is required to set up the VS code extension.
:::
::::

Your  API keys are listed in your profile in the **API Access** tab where you can view and manage your API keys.


[title] 2026
[path] Release notes/

::::LinkArray{contentSource="CUSTOM" itemsPerRow="1" customOrder="9ckAaDQMSD7FDBVIm5ze1,tbc17MUIOTm4TMRB206ba,3XZBVrBqfOAMl7EV0xOMJ,h7jeAr_oavJUJvHgvplqy,O7diekv6YkGEv3EllZhpW,WTiqvIjHYU7mzDm2efIrg,cZJj3dVmzPr38SQes9lRN,B6y3gennkPssTnGOIqmuO"}
:::LinkArrayItem
`July 17, 2026`

[Bitbucket modules deprecation, new AI models, and more app updates](docId\:HkGqPbsFCZzZugOQUoUWO)&#x20;

Learn about actions required for deprecated Bitbucket module users, support for GPT-5.6 in OpenAI modules, and other app updates.
:::

:::LinkArrayItem
`July 17, 2026`

[Introducing Private spaces](docId\:LYN_O5AFjT8fILC2RdtOh)&#x20;

Private spaces gives each organization member their own workspace in Make for scenarios and connections they don't want others to access.
:::

:::LinkArrayItem
`July 14, 2026`

[Google Chrome app and browser extension deprecation on August 31, 2026](docId:14AgY_B-qA37F1Y2PSvXd)&#x20;

Google will retire its Chrome app and extension on August 31, 2026, as Manifest V2 support ends, requiring users to remove affected scenarios.
:::

:::LinkArrayItem
`July 10, 2026`

[Functions, standalone module setup, scenario note cloning, and more](docId\:m7_jPXtgi2gfYSNDD72x1)&#x20;

Discover new array and JSON functions, test modules before connecting , and clone scenarios with notes to streamline workflow automation.
:::

:::LinkArrayItem
`July 10, 2026`

[New monday.com AI modules, MCP Client update, and more](docId\:uuS9DU7UO-JIqiec_iaJl)

See the new monday.com AI modules, the MCP Client update, and improvements for Discord, GitHub, Reddit, and other apps.
:::

:::LinkArrayItem
`July 8, 2026`

[Content search in Make Grid](docId\:QqzmMG1ukXtmtouAj7z0_)&#x20;

 Grid content search scans all  configurations to find modules, field IDs, URLs, notes, AI prompts, and dependencies faster.
:::

:::LinkArrayItem
`July 8, 2026`

[Connect your third-party  automation and AI agents](docId\:mn3mrdLSFO_jFQC9yEI5D)&#x20;

 Grid now supports n8n, Claude Managed Agents, and Relevance AI, enabling unified workflow mapping, dependency tracking, and AI data flow visibility.
:::

:::LinkArrayItem
`July 3, 2026`

[Team edit permission removed from Team Member role](docId\:kPxv-cV41nTuSUJkfVVRS)&#x20;

Team Members in public environments can no longer rename teams unless assigned the Admin role; private environments remain unchanged.
:::
::::

::::LinkArray{contentSource="CUSTOM" itemsPerRow="1" customOrder="lGQhxQnLqBMZa4WO5yGdd,JccXY_GqQuKP36xql4tYy,Cx1CMJ7wWqesD5Krna4za,Z-CFniGZEVDK_KfA1F0ak,4nsFbzHwBlQYXqCsDYSkR"}
:::LinkArrayItem
`July 3, 2026`

[Claude Fable 5 is now available](docId:37-0wWjWEzRyV1Zq8uWrZ)&#x20;

Learn how you can use Anthropic's latest model, Fable 5, in scenarios that need long context, image analysis, and advanced reasoning.
:::

:::LinkArrayItem
`July 3, 2026`

[Claude Sonnet 5 is now available](docId\:DCA3z5vesvC4h5MgVz1ur)&#x20;

Learn how Anthropic's model, Sonnet 5, now available in Make, can bring better reasoning and lower costs to your scenarios.&#x20;
:::

:::LinkArrayItem
`July 2, 2026`

[Databricks app is now available (Enterprise plans)](docId:9AJtc90IzpYz3HXVvmFxP)&#x20;

Use the new **Databricks&#x20;**&#x61;pp, now available on the Enterprise plan, to run SQL queries, manage jobs and pipelines, and upload files to Unity Catalog volumes.
:::

:::LinkArrayItem
`July 2, 2026`

[Introducing User roles visibility](docId\:YTqUYlM5Fs3X4YHti2pxm)

Learn about the new **User roles** page, where organization and team administrators can view all system roles and their permissions in Make.
:::

:::LinkArrayItem
`June 26, 2026`

[Unified Help search and deprecation of filters](docId\:WBM8Ylc4uByTf1vs1YHzw)&#x20;

The update introduces a unified Help search and deprecation of certain Data Store filters.
:::
::::

::::LinkArray{contentSource="CUSTOM" itemsPerRow="1"}
:::LinkArrayItem
`June 6, 2026`

[Google Drive personal Gmail support, starred apps, renamed error handlers, scheduling improvements, Claude Opus 4.8, and webhook detection status cards](docId\:yTTLa7poL5uNw2EH4tMhP)&#x20;

Learn about Google Drive personal Gmail support, starred apps in App Search, renamed error handlers, scheduling improvements, Claude Opus 4.8, and webhook detection status cards.
:::
::::

::::LinkArray{contentSource="CUSTOM" itemsPerRow="1" customOrder="TXviteCDnr7ioqIjzRL4U,6cfPAhbKbVXth8YSccD9x,ZeKKA6GaSXVkZbHoZ4dqS,wGvKq9QM4mEBp91xqWPaF,UeFcvl44kB2jGXR-zmgt0,SaJYR0RbEYOEIVzTT-8a1,d9rpSZO4W2enry6KVVRrR,SaL2VcD6fyoxHMeQ-hDqU,2VTOh0yDwDiK0V3IutHZu,OlTiV8ZT_J4D2PgdsCiqc,PO18FhO2R8PfChcUc186E,cLmey3GBZXCFjXJH_U3lu,lT7lGGTN34icSuhq-c0TJ,oEoNAbNc7TXRKuzIqM3Wq,vl2cgRGjn8-dnAbZ5XeIZ,cO3hoiS3RouimS9EPXkUI,Fv_FwwPjIstKfuyxYqEhI"}
:::LinkArrayItem
`June 3, 2026`

[Make AI Agents (New): MCP tools are now available](docId\:l5rYQvMjj8YWMVhqVktjX)&#x20;

Learn how the new **Add MCP** button in th&#x65;**&#x20;Make AI Agents (New)&#x20;**&#x61;pp can expand what your agent can do.&#x20;
:::

:::LinkArrayItem
`June 3, 2026`

[Unified canvas navigation](docId:7slY_PrTgRAwcfaNmuHu7)&#x20;

Explore the new unified navigation model for your Scenario Builder, intuitive canvas‑style movement with familiar gestures and in‑product guidance.
:::

:::LinkArrayItem
`June 1, 2026`

[Anthropic Claude model deprecations on June 15, 2026](docId\:ZSar-I-0-uPP1sZAjwwJ3)

Learn what changes when Anthropic deprecates Claude Sonnet 4 and Claude Opus 4 on June 15, 2026, and what models to use instead.
:::

:::LinkArrayItem
`May 25, 2026`

[Introducing Make Skills](docId:--GRxSH4zdrLpGVxSI3Ns)&#x20;

Learn how Make Skills can help your AI assistants perform tasks in  effectively.&#x20;
:::

:::LinkArrayItem
`May 25, 2026`

[New module output search, raw data view, undo and redo, and Gemini 3.5 Flash](docId\:SSJsNjbjEVq4PKux_kewe)&#x20;

Explore the latest product improvements and fixes shipped in .&#x20;
:::

:::LinkArrayItem
`May 20, 2026`

[Nested If-else and Merge is now available](docId:5F6OZVB5VL2gvDsA7EoRP)&#x20;

Learn more about the nested If-else and Merge feature that lets you build multi-level decision logic in a  flow.
:::

:::LinkArrayItem
`May 14, 2026`

[Dynamic labels for HTTP and Sleep modules](docId\:M4KNn43EW6ndH3GxXNw2I)

The update introduces auto-generated labels for HTTP and Sleep modules, making it easier to identify API calls or delays and understand scenarios quickly.
:::

:::LinkArrayItem
`May 11, 2026`

[New Make Functions app](docId\:HnynZwPnFXNQAdHQ9dLTT)&#x20;

&#x20;In this release, Make Functions app turns IML functions into chainable modules for clear, searchable, step‑by‑step data transformations.
:::

:::LinkArrayItem
`May 11, 2026`

[Deprecated OpenAI audio preview models](docId:0HbV6XISmbNQECQrHw8gG)

Learn which OpenAI audio preview models are no longer available and which replacement models to use.
:::

:::LinkArrayItem
`May 6, 2026`

[Introducing new OpenAI Skills and Skill Versions modules](docId\:tcSF15mpUPJ9Wx9jktXIA)

Learn about the new OpenAI modules for creating, managing, and using Skills and Skill Versions in your scenarios.
:::

:::LinkArrayItem
`May 6, 2026`

[WhatsApp Business Cloud connections, Bluesky media handling, new xAI and monday.com modules, and more](docId\:yPUIZjmcfZdSfsYrEtZMu)&#x20;

Explore updated connection options for WhatsApp Business Cloud, improved media handling in Bluesky, new response and aggregation modules for xAI and monday.com, and more.
:::

:::LinkArrayItem
`April 28, 2026`

[OpenAI GPT-5.5 is now available in Make](docId\:JbafWLxfuBYusvS1AVpQ0)&#x20;

Learn how OpenAI's newest model, now in Make, improves tool calling and output accuracy in complex scenarios.&#x20;
:::

:::LinkArrayItem
`April 22, 2026`

[Claude Opus 4.7 now in Make](docId\:ZKzvOMmN9wASY4emimq-F)&#x20;

Learn how Anthropic's latest model, now available in Make, can bring more flexibility and reliability to your scenarios and agents.
:::

:::LinkArrayItem
`April 17, 2026`

[The Make CLI is now live](docId\:DnZMZoen6vbAc-qOyS6bq)&#x20;

Access Make resources from the terminal with the Make CLI, now available to all users.&#x20;
:::

:::LinkArrayItem
`April 15, 2026`

[Introducing Module Migrator](docId\:Nwujgjy5hyZ5D0R2sYqi6)

Learn more about Module Migrator, a tool that detects deprecated modules, upgrades, and provides warnings and instructions for manual fixes.
:::

:::LinkArrayItem
`March 27,2026`

[New version of API endpoint for credential requests, scenario usage tracking, connection filtering, and app updates](docId\:mVtDRRDE2GW_E0s1ho7BI)&#x20;

This release introduces v2 of the Make API for credential requests, extends usage tracking and adds new filtering options for your connections.
:::

:::LinkArrayItem
`March 24, 2026`

[Make now a built-in connector on Anthropic Claude](docId:4J99Gxeox79slH16RYzxM)&#x20;

Connect Make to Anthropic Claude with Claude's new built-in connector for Make.
:::
::::

::::LinkArray{contentSource="CUSTOM" itemsPerRow="1"}
:::LinkArrayItem
`March 23, 2026`

[OpenAI GPT-5.4 nano and mini now available in Make](docId\:gQ8TJFGLI4MxM-lzUWej9)&#x20;

Save time and reduce costs on high-volume, complex, and multimodal tasks with GPT-5.4 nano and mini, now released in Make. &#x20;
:::
::::

::::LinkArray{contentSource="CUSTOM" itemsPerRow="1"}
:::LinkArrayItem
`March 19, 2026`

[Make Grid workspace navigation and interaction updates](https://help.make.com/make-grid-workspace-navigation-and-interaction-updates)

Learn more about the latest Make Grid update, featuring customizable layouts, real-time collaboration with active cursor visibility, editing dependencies, and enhanced navigation controls for improved user experience.
:::
::::

::::LinkArray{contentSource="CUSTOM" itemsPerRow="1" customOrder="Z-acA1rNxbJ5BLN9553Td,0x2EH7ybrnpKaGaafGeBt,d93cKQjOzjl2MM0vSncUo,OTBuKtz43ECwdGg4J0O4F,cxcGKuOkrIZco-KMejsik,2qRJPh1MmFppjCGmbLlUg"}
:::LinkArrayItem
`March 18, 2026`

[Introducing Scenario recovery](https://help.make.com/introducing-scenario-recovery)

Learn more about the new Scenario recovery feature that allows you to retrieve unsaved changes in your scenario.
:::

:::LinkArrayItem
`March 13, 2026`

[Scenario Builder improvements, new app, and AI model updates](docId\:r9N_20Dm6sc71jVHPWM3i)

See the latest Scenario Builder improvements, a new encryption and data security guide, and updates to several apps.
:::

:::LinkArrayItem
`March 11, 2026`

[OpenAI GPT-5.4 and GPT-5.3 models now available in Make](docId\:hPdweQbmFv9vif-prw8U3)&#x20;

Learn more about OpenAI's latest models, bringing faster, more cost-efficient AI with expanded context and smarter tool handling to your automations.
:::

:::LinkArrayItem
`March 10, 2026`

[OpenAI model deprecations on March 26, 2026](docId\:BEc3X0gVAbS9oqjrK20F1)

Learn about upcoming OpenAI model deprecations and how  using these models will continue running without interruption.
:::

:::LinkArrayItem
`March 10, 2026`

[New feature: If-else and Merge](docId:0vocPrqkFEPxQZLSPgDfX)

Learn more about the new If-else and Merge feature that lets you split the logic in a  flow, follow one condition route, and then reconnect the flow into a single route.
:::

:::LinkArrayItem
`March 4, 2026`

[Credential requests reauthorization, 2FA enforcement logs](https://help.make.com/credential-requests-reauthorization-2fa-enforcement-logs)

Learn more about the latest updates that allow you to reauthorize credential requests and track 2FA enforcement in Audit logs.
:::
::::

::::LinkArray{contentSource="CUSTOM" itemsPerRow="1" customOrder="cxcGKuOkrIZco-KMejsik,2qRJPh1MmFppjCGmbLlUg,ZTZ12JzOHKbm9G7vwyUJl"}
:::LinkArrayItem
`February 26, 2026`

[Gemini 3.1 Pro Preview model now available in Make](docId:008BOr6Le5AviQuRw4CWm)&#x20;

Learn more about Gemini 3.1 Pro Preview from Google. Designed for complex reasoning and high-volume tasks with efficient response times and flexible key management options.
:::
::::

::::LinkArray{contentSource="CUSTOM" itemsPerRow="1"}
:::LinkArrayItem
`February 25, 2026`

[New MMS options, app updates](docId\:UGbbglOkrYH4DJll9xelC)

Learn more about new MMS options, Claude Sonnet 4.6 availability, and updated connection process for Zendesk and Zoho apps.
:::
::::

::::LinkArray{contentSource="CUSTOM" itemsPerRow="1"}
:::LinkArrayItem
`February 19, 2026`

[Deprecated OpenAI model automatically replaced](docId:9dtlppgD7BjqZF4iCFIq5)&#x20;

No action required — we automatically replaced a deprecated OpenAI model to keep your scenarios running without interruption.
:::
::::

::::LinkArray{contentSource="CUSTOM" itemsPerRow="1"}
:::LinkArrayItem
`February 12, 2026`

[Filter copying, smarter app search, and scenario sorting](docId:5Qekv7-aQrV8bEhOKlwG8)

Save time with filter copying, smarter app search by category, and updated scenario sorting and filtering.&#x20;
:::
::::

::::LinkArray{contentSource="CUSTOM" itemsPerRow="1"}
:::LinkArrayItem
`February 12, 2026`

[Introducing two-factor authentication enforcement](docId\:Gq5VhK7MjS-iEKj_9Ouzy)&#x20;

Enforce two-factor authentication across your organization: protect all accounts with one-step 2FA enforcement.&#x20;
:::
::::

::::LinkArray{contentSource="CUSTOM" itemsPerRow="1" customOrder="Kx1WXk7usbffI0xjBuYCl,8UbaJ7pNMN1fviIaxTPg3"}
:::LinkArrayItem
`February 11, 2026`

[Meet the new Make AI Agents app](docId\:sXiYJIiKrmNqV7jQjnIYD)&#x20;

Learn about the new Make AI Agents app, a major improvement to Make AI Agents designed to make building, testing, and trusting AI agents in  faster, more transparent, and more intuitive than ever.
:::

:::LinkArrayItem
`February 10, 2026`

[monday.com app v1 to v2 transition by May 1, 2026](docId\:dSMdEJGNidQwORrf_KY65)&#x20;

Upgrade monday.com app from v1 to v2 by May 1, 2026: replace modules, update affected field mappings, and test your scenarios.
:::

:::LinkArrayItem
`February 10, 2026`

[Introducing MCP toolboxes](docId\:IFaQY-FOf3IoJRfAUAvXv)&#x20;

Learn more about MCP toolboxes: dedicated Make MCP servers that connect AI systems, such as Claude and ChatGPT, to specific sets of scenarios used as tools.&#x20;
:::
::::

::::LinkArray{contentSource="CUSTOM" itemsPerRow="1" customOrder="1v01pK1SKtMys-_QUA9E6,g_d1t2LwzTTlUbudXmPTG"}
:::LinkArrayItem
`February 10, 2026`

[Introducing Credential requests](https://help.make.com/introducing-credential-requests)

Learn more about the new Credential requests feature in Make, which allows you to securely collect connection credentials from third parties.
:::

:::LinkArrayItem
`February 9, 2026`

[Claude Opus 4.6 now available in Make](docId\:X8_Zy7sVwXMuXV7w56U8w)&#x20;

Use Claude Opus 4.6 in Make for complex reasoning and autonomous workflows. Access it through Make AI Toolkit, Anthropic Claude, or Make AI Agents.
:::
::::

::::LinkArray{contentSource="CUSTOM" itemsPerRow="1" customOrder="GiyP35hP_BzXyyt5zrrkn,E_0KRIwPt4UJ38lPqaWuO,SJ9Re-kEpX1wLLsGtPa98,bKE9klGuSZbVvcFWHkNHN"}
:::LinkArrayItem
`January 23, 2026`

[New payment methods for greater flexibility](docId:3i38D45TkWBy8CxfExC8h)

Learn more about the new payment options available in Make. You can now use a digital wallet, take advantage of one-click checkout, or choose more flexible payment methods.
:::

:::LinkArrayItem
`January 20, 2026`

[Pipedrive API v1 to v2 transition by July 31, 2026](docId\:Si-DGZnjOm7WJYRss_8SQ)

Learn about the upcoming Pipedrive API v1 to v2 transition, including deprecated modules, webhook changes, and required updates before the July 31, 2026 deadline.
:::

:::LinkArrayItem
`January 9, 2026`

[Scenario history and run replay improvements, app updates](docId\:K6cDO4fk74v8B49yZMxKK)&#x20;

Learn about Make's latest improvements, including enhanced scenario history and run replay, OpenAI GPT-5.2 support, and new modules for Anthropic Claude, Figma, Canva, and Google Gemini AI.
:::
::::


[title] MS Azure AD OIDC
[path] Your organization/Access management/

:::hint{type="info"}
This feature is available to Enterprise customers.
:::

The following manual configuration creates an OIDC SSO configuration for your Enterprise organization.

## Prerequisites

- `Owner` or `admin` role in an Enterprise organization
- Administrative access to your organization's Microsoft Azure AD portal

## Supported features

This configuration supports the following:

- Service provider initiated SSO
- Single Log Out \[optional]

## Configuration steps

Before configuring SSO, you need to assign a namespace and make files of your service provider certificate and private key. These steps provide the information you need to enter later.

### Create your namespace in Make

::::WorkflowBlock
:::WorkflowBlockItem
Click **Organization** in the left sidebar.
:::

:::WorkflowBlockItem
Click the **SSO** tab.
:::

:::WorkflowBlockItem
Under **Namespace**, enter the namespace you want for your organization. For example, `acmecorp`. Your organization members enter this namespace when they log in via SSO.
:::

:::WorkflowBlockItem
Under **SSO type**, select **Oauth2**.
:::

:::WorkflowBlockItem
Copy the **Redirect URL** and save it in a safe place. You will use this later when you create your SAML integration in the Microsoft Azure AD portal.
:::
::::

### Create an OIDC application in the MS Azure portal

::::WorkflowBlock
:::WorkflowBlockItem
Log in to the [Microsoft Azure portal](https://azure.microsoft.com/en-in/) and navigate to the Azure Active Directory.

![MS Azure portal](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-tD6CsOpNFHk6XV8ajr8R5-20250212-104942.png)
:::

:::WorkflowBlockItem
In the left navigation, click **Enterprise applications.**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-plGd2Ny-t1DL-eWQw36Ui-20250212-105215.png" size="40" width="317" height="599" position="flex-start" alt="MS Azure Enterprise applications" darkWidth="317" darkHeight="599" showCaption="false"}
:::

:::WorkflowBlockItem
Click **+ New Application**.
:::

:::WorkflowBlockItem
Click **+ Create your own application**.
:::

:::WorkflowBlockItem
Enter a name for your app and select **Register an application to integrate with Azure AD (App your're developing)**.
:::

:::WorkflowBlockItem
Click **Create**.
:::

:::WorkflowBlockItem
Enter and select the following:

| **Field on the Register an application page** | **Required information**                                                                                                                                                                           |
| --------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Name                                          | Enter a name for your OIDC SSO app.                                                                                                                                                                |
| Supported account types                       | Select the optoin that is best for your user case.<br />For example, use **Accounts in this organizational directory** only if your application is only for internal use within your organization. |
| Redirect URI (optional)                       | Although Microsoft marks this field as optional, successful implementation with  requires the following:<br />Select a platform - Web - https\://next.integromat.com/sso/login                     |


:::

:::WorkflowBlockItem
Click **Register**.
:::
::::

### Create your client credentials in the MS Azure portal

::::WorkflowBlock
:::WorkflowBlockItem
In the Microsoft Azure AD portal go to **Home > Enterprise applications > \{your OIDC app} > Single Sign-on** and click **Go to application**.
:::

:::WorkflowBlockItem
Under **Essentials**, find **Application (client) ID**. Copy this value and save it in a secure place. This is the required information for the **Client ID** field in your Make SSO configuration.
:::

:::WorkflowBlockItem
In the left navigation under **Manage**, click **Certificates & secrets**.
:::

:::WorkflowBlockItem
Click **+ New client secret**.
:::

:::WorkflowBlockItem
In the new dialog box, enter a short description and click **Add**.
:::

:::WorkflowBlockItem
Find the new client secret on the list. Copy the **Value** and save it in a secure place. This is the required information for the **Client secret** field in your Make SSO configuration.
:::
::::

### Configure tokens and optional claims in the MS Azure portal

::::WorkflowBlock
:::WorkflowBlockItem
In the left navigation under **Manage**, click **Token Configuration**.
:::

:::WorkflowBlockItem
Click **+ Optional claim**.
:::

:::WorkflowBlockItem
In the new dialog box, select **ID**.
:::

:::WorkflowBlockItem
A list appears. Select **Email**.
:::
::::

### Add API permissions in the MS Azure portal

::::WorkflowBlock
:::WorkflowBlockItem
In the left navigation under **Manage**, click **API Permissions**.
:::

:::WorkflowBlockItem
Click **+ Add permission**.
:::

:::WorkflowBlockItem
In the new dialog box, click **Microsoft Graph**.
:::

:::WorkflowBlockItem
Click **Application permissions**.
:::

:::WorkflowBlockItem
Use the search bar to find `User.Read.All`.
:::

:::WorkflowBlockItem
Select `User.Read.All` and click **Add permissions**.
:::
::::

### Add users to your application in the MS Azure portal

To provide access to your organization members, you need to add these users to your app in the MS Azure portal.

::::WorkflowBlock
:::WorkflowBlockItem
In the Microsoft Azure AD portal go to **Home > Enterprise applications > \{your OIDC app}**.
:::

:::WorkflowBlockItem
Click **Users and groups**.
:::

:::WorkflowBlockItem
Click **+ Add user/group** to add the users you want to access your  organization.
:::
::::

### Update the SSO in Make

::::WorkflowBlock
:::WorkflowBlockItem
Click **Organization** in the left sidebar.
:::

:::WorkflowBlockItem
Click the **SSO** tab.
:::

:::WorkflowBlockItem
Enter the following information:

| **Field**                       | **Value**                                                                                                                                                                                                                                                                                                                           |
| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| User information URL            | `https://graph.microsoft.com/v1.0/me`                                                                                                                                                                                                                                                                                               |
| Client ID                       | Enter the **Application (client) ID&#x20;**&#x79;ou copied in step 2 of [how to create your client credentials](docId\:VH6038lSPDoXXxc-U4vmg)**.**                                                                                                                                                                                  |
| Token URL                       | `https://login.microsoftonline.com/1234etc/oauth2/v2.0/token`                                                                                                                                                                                                                                                                       |
| Login scopes                    | `User.Read.All`                                                                                                                                                                                                                                                                                                                     |
| Scopes separator                | Enter a single space.                                                                                                                                                                                                                                                                                                               |
| Authorize URL                   | To find your Authorize URL:<br />1) In the MS Azure portal, go to **Home > Enterprise applications > \{your OIDC app} > Single Sign-on&#x20;**&#x61;nd click **Go to application.**
2)  Click **Endpoints**. A window appears.
3) Find **OAuth 2.0 authorization endpoint (v1)**. Copy and paste this URL into your  configuration. |
| Client secret                   | Enter the **Value&#x20;**&#x79;ou copied in step 6 of [how to create your client credentials](docId\:VH6038lSPDoXXxc-U4vmg)**.**                                                                                                                                                                                                    |
| User infomration IML resolve    | `{"id":"{{id}}","email":"{{mail}}","name":"{{givenName}}"}`                                                                                                                                                                                                                                                                         |
| Redirect URL                    | No action required                                                                                                                                                                                                                                                                                                                  |
| Team provisioning for new users | Select an option based on your needs.                                                                                                                                                                                                                                                                                               |
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

:::hint{type="info"}
You will receive an email with the subject "Activation complete: SSO ready for your organization" upon successful activation. If you encounter any issues while logging in using SSO, disable SSO using the "one-time link" (valid for 24 hours).&#x20;
:::



## Service provider initiated SSO

::::WorkflowBlock
:::WorkflowBlockItem
Go to [make.com](https://make.com).&#x20;
:::

:::WorkflowBlockItem
Click **Sign in with SSO**.
:::

:::WorkflowBlockItem
Enter the namespace you chose for your organization.
:::

:::WorkflowBlockItem
Log in using your Microsoft credentials and consent to 's access to your user data.
:::
::::


[title] Analytics dashboard
[path] Your organization/Administration/

:::hint{type="info"}
This feature is available to Enterprise customers.
:::

The Analytics dashboard gives you a clear view of your account's key metrics. You can easily see what's happening across all your  so you can stay on top of things and make informed decisions to optimize performance.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/cT3atUZuo-IBmgsfmpr3R-20251003-124425.png)

## Dashboard features

The top of the dashboard shows key metrics for your organization:

- operations by team
- total operations used
- total errors
- error rate
-  executions

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/HYAxlLrnQpNocNYf9bwkv-20251003-131021.png)

Next to each of these metrics is an icon, showing how the metric is trending. For example, a down arrow next to the error rate indicates a decreasing error rate within the indicated time frame.

You can change the time frame to view statistics for the last 24 hours, 7 days, or 30 days, allowing for more precise analytics.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Cw8Rp8VFs2i_TcCcU0FvI_uuid-de8c5a03-be90-366f-68e2-9e664c4e16a5.png" size="30" width="181" height="163" position="flex-start" alt="Analytics time frame filter" showCaption="false"}

Additional filters include **​Status​**​, **​Team​**​, and **​Folder​**​. The values available under **​Team​&#x20;**&#x61;nd **​Folder​** vary, depending on the setup of your organization.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/6EVSjyfWP_2BZvVGW3Jez-20251003-131239.png)

By default,  are listed according to the number of operations used in the selected time frame.&#x20;

You can further customize the display by choosing the columns you want to view for each .

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/7derkA9VtY-w77a7cNgq3-20251003-131312.png)

| **Column**            | **Description**                                                                                                                  |
| --------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| **Scenario**          | Only existing  are shown. Data for deleted  is unavailable.<br />* Green dot: Active 
* Red dot: Invalid 
* Empty dot: Inactive  |
| **Operations used**   | The total number of operations used by a  in the selected time frame.                                                            |
| **Usage change**      | The percentage change in operations used by a , compared to the previous time frame.                                             |
| **Executions**        | The total number of executions in a  in the selected time frame.                                                                 |
| **Executions change** | The percentage change in executions for a , compared to the previous time frame.                                                 |
| **Errors**            | The total number of errors in a  in the selected time frame.                                                                     |
| **Error rate**        | The percentage of executions with errors in a  in the selected time frame.                                                       |
| **Team**              | The team associated with a .                                                                                                     |
| **Folder**            | The folder associated with a .                                                                                                   |


[title] Credential requests reauthorization, 2FA enforcement logs
[path] Release notes/2026/

We've made updates to the Credential requests and 2FA enforcement features. You can now reauthorize expired OAuth connections in credential requests and track 2FA enforcement changes in the Organization Audit logs.

:::hint{type="info"}
Both features are available for users on th&#x65;**&#x20;Enterprise** plan.
:::

## Credential requests reauthorization

Previously, expired OAuth connections required creating and authorizing a new [credential request](https://help.make.com/credential-requests) each time.&#x20;

Requesters can now ask recipients to reauthorize OAuth connections directly from an existing credential request. Credentials request reauthorization takes a few minutes and makes the process faster and easier for both sides.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/nhZzWBn7R_Qr9hJk4hc9x-20260302-221453.png" size="70" width="1581" height="1012" position="center" showCaption="false"}

## 2FA enforcement in Org Audit logs&#x20;

[Audit logs](https://help.make.com/audit-logs) now record changes to [2FA enforcement](https://help.make.com/two-factor-authentication-enforcement) settings. Organization admins and owners can see:

- Who enabled or disabled 2FA enforcement 
- When they did it

This update ensures better traceability of organization-related settings.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/kIsv-ATDUeQOyNO7lgUhy-20260302-192144.png)


[title] Set the length of your session timeout
[path] Your organization/Administration/

For security purposes, you may wish to control the length of the session timeout.

## Set the length of your session time out

You can choose to set your session timeout from 15 minutes to 7 days. **This option is only available to Organization administrators and owners.**

::::WorkflowBlock
:::WorkflowBlockItem
Open your **Organization** dashboard in the left sidebar.
:::

:::WorkflowBlockItem
In the upper-right corner, click the three dots next to the **Organization settings**, select **Set session timeout**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/eVVaWdgK7qL9bXx2arYeY_session-time-out.png)
:::

:::WorkflowBlockItem
Select how long users can be inactive before they are automatically logged out and click **Save**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/GnvWrTzDJEbR3dMHNy_Wi_session-time-out-1.png)
:::
::::

Your session timeout is saved.

:::hint{type="info"}
If a user belongs to multiple organizations, the shortest session logout time applies.
:::

## FAQs:

:::Heading{depth="3" indent="1"}
**Why am I being logged out on browser close?**
:::

:::Paragraph{indent="1"}
Closing the browser ends the session in , regardless of the configured session timeout value. This is treated as the end of the browsing session, and the user is logged out.&#x20;
:::

:::Paragraph{indent="1"}
To avoid this, change your browser's startup setting to continue where you left off. For Google Chrome:
:::

:::Paragraph{listStyleType="decimal" indent="2"}
Click the three dots and navigate to the **Settings** of your browser.
:::

:::Paragraph{listStyleType="decimal" listStart="2" indent="2"}
Form the left sidebar, click **On start up**.
:::

:::Paragraph{listStyleType="decimal" listStart="3" indent="2"}
Click **Continue where you left off**.
:::

:::Paragraph{indent="1"}
Enabling **Continue where you left off** makes Chrome restore your previous tabs when you reopen it, instead of starting fresh.
:::

:::Paragraph{indent="1"}

:::


[title] Unified canvas navigation
[path] Release notes/2026/

The canvas interaction model lets you customize how you navigate the  builder in  based on your input device.  detects your input device automatically and also lets you override the default settings to match your preferences.

![]()

## Key benefits

- **Match your hardware:** Configure canvas controls for a mouse, trackpad, or touchscreen so navigation feels natural on any device.
- **Swap panning controls:** Choose whether left-click or right-click pans the canvas, assigning the other button to multi-select.
- **Override auto-detection:** Set your preferred input mode manually when the detected default doesn't match your setup.
- **Persist your preferences:** Settings save across sessions so you don't have to reconfigure each time you sign in.

## Where to find it

To change your canvas interaction settings:

1. In the Scenario Builder, click **Canvas options** next to the scenario name.
2. In **Canvas panning**, select **Left-click** or **Right-click** to set your preferred panning button.

## Learn more

For more information about canvas navigation, see [Canvas interaction model](docId\:ocnqxuW1RfJKa4xvtf3pI).

[title] Gemini 3.1 Pro Preview model now available in Make
[path] Release notes/2026/

Gemini 3.1 Pro Preview is Google's latest model, built for complex reasoning and high-volume tasks. It's now available in  across both keyless and bring-your-own-key options.

- **Efficient**: Optimized to process instructions more efficiently, leading to quicker responses and better overall reliability.
- **Cost-effective**: the Gemini 3.1 Pro Preview model will process your instructions more concisely, generate faster responses, and lower credit usage for the same results.
- **Agent-ready**: It is designed for agentic workflows that require tool usage and follow multi-step instructions with precision.

### How to use Gemini 3.1 Pro Preview in Make

Select the option that fits your workflow.

**Keyless:**

- [Google Gemini AI](https://apps.make.com/gemini-ai) — Simple text prompt

**Bring-your-own-key:**

- [Google Gemini AI](https://apps.make.com/gemini-ai) — Generate a response
- [Make AI Toolkit](https://apps.make.com/ai-tools)
- [Make AI Agents (New)](https://help.make.com/make-ai-agents-new)
- [Make AI Agents](https://help.make.com/make-ai-agents)

[title] Organizations
[path] Your organization/Organizations & teams/

Organizations are the basic containers into which all , users, and data belong.&#x20;

Organizations usually represent a company that is a  customer or partner. Each organization has separate pricing plan and billing. This means that you can also monitor your credits and data consumption for each organization separately.

Each organization allows you to select the geographical location of the data center where the organization's data will be stored and processed. Currently,  supports two data center locations:

- United States (US)
- European Union (EU)

:::hint{type="info"}
The geographical location that you select for an organization does not represent where your company or your users are located, but where the data center that stores and processes your data is located.
:::

We recommend that you select the location closest to you to ensure low latency.

:::hint{type="warning"}
You cannot change the location of the data center after you create the organization.
:::

## Create an organization

Any user can create their own organization, even if they are already a member of another organization.

:::::WorkflowBlock
:::WorkflowBlockItem
Click on your username in the top-right menu.&#x20;
:::

:::WorkflowBlockItem
Select **Profile&#x20;**&#x66;rom the dropdown.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/BUrGhtnGequlHoTsMRE2D-20251001-135911.png" size="28" width="176" height="166" position="center" darkWidth="176" darkHeight="166" showCaption="false"}
:::

:::WorkflowBlockItem
In the **Organizations&#x20;**&#x74;ab, click the **Create organization** button in the top-right corner.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/RwlysHXUm57D4duBZpuQk-20251001-150009.png)
:::

::::WorkflowBlockItem
In the dialog, enter the details of the new organization.&#x20;

- The **Organization name.&#x20;**&#x54;he name must be between 1 and 128 characters long. Use only letters, numbers, spaces, and allowed special characters. Names can't start or end with spaces.
- The **Region** field represents the location of the data center that will store and process your data. 
- The **Timezone** field represents the time zone used for scheduling  and parsing dates.
- The **Country** field represents your physical location, but is currently not used by  in any way.

:::hint{type="info"}
If you have multiple affiliate partners as team members of your organization, you can set the affiliate partner for shared scenarios.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Ct5skiaIpPHHCp7U_DzoS-20260316-154337.png" size="44" width="376" height="308" position="flex-start" darkWidth="376" darkHeight="308" showCaption="false"}
:::
::::

:::WorkflowBlockItem
Click the **Save&#x20;**&#x62;utton.&#x20;
:::
:::::

:::hint{type="info"}
By default, the organization is on a Free plan and has one team, called **My Team**.
:::

## Add users to an organization

To add users to an organization, you must be the **owner** or an **admin** of the organization. For more details about roles, refer to [organization roles](docId:-FOYcASPYP9uYKGm7LQPB).

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.
:::

:::WorkflowBlockItem
Click the **Org Users&#x20;**&#x74;ab.
:::

:::WorkflowBlockItem
Click the **Invite user&#x20;**&#x62;utton in the top-right corner.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/khihAB9fC1_-vkogPBdNy-20251001-151129.png)
:::

:::WorkflowBlockItem
In the dialog, enter the user's details.&#x20;

- **Email**: The invited user's email address.
- **Name**: The name of the user, which the user can change after accepting the invitation.
- **Team**: The user's team (**My Team** by default).
- **Role**: The user's [role in the organization](docId:-FOYcASPYP9uYKGm7LQPB).
- **Note**: An optional custom message to add to the invitation email.
:::

:::WorkflowBlockItem
Click the **Save&#x20;**&#x62;utton.
:::
::::

The user will receive an invitation email with an **Accept invitation** button.

When the user accepts the invitation,  adds them to the organization.

:::hint{type="info"}
The invitation expires in 7 days. If the invited user does not accept the invitation:

1. Remove the invited user from your organization.&#x20;
2. Send a new invitation.
:::

## Remove a user

To remove users from an organization, you must be the **owner** or an **admin** of the organization.

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org.**
:::

:::WorkflowBlockItem
Click the **Org Users&#x20;**&#x74;ab.
:::

:::WorkflowBlockItem
Click the role in the **Role&#x20;**&#x63;olumn and select **Remove&#x20;**&#x66;rom the dropdown.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/3KjTW6Bj7wJ69r42PLBuT-20251001-152800.png" size="96" width="1103" height="435" position="center" darkWidth="1103" darkHeight="435" showCaption="false"}
:::

:::WorkflowBlockItem
Click th&#x65;**&#x20;Remove user** button.&#x20;
:::
::::

## Organization roles

 provides a two-level permission model. All users are members of at least one organization and one team. The permissions that users have are determined by the organization role and team role they are assigned to.

The following table describes actions that members of different organizational roles can perform.

For information about team roles, [read the article about teams](docId\:btahAzLP8hMLnPlpMTblN).

| **Role**          | **Permissions**                                                                                                                                                                                                                                                                 |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Owner**         | - View organization details
- Modify organization
- Delete organization
- Transfer organization ownership
- Add and modify users in the organization
- Manage all teams&#x20;
- Install apps in the organization
- View payments
- Change payment methods
- Cancel subscription |
| **Admin**         | * View organization details
* Modify organization
* Add and modify users in the organization
* Manage all teams&#x20;
* Install apps in the organization
* View payments
* Change payment methods
* Cancel subscription                                                         |
| **Member**        | - View organization details                                                                                                                                                                                                                                                     |
| **Accountant**    | * View organization details
* View payments                                                                                                                                                                                                                                     |
| **App Developer** | - View organization details
- Install apps in the organization                                                                                                                                                                                                                  |
| **Guest**         | * Log in to the organization's account                                                                                                                                                                                                                                          |

## Switch organizations

If you're a member of multiple organizations, you can change the active organization by clicking on your name in the top-right corner and selecting another organization.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/unez1bQ4rcGX07DK3s4BS-20251001-155222.png" size="42" width="292" height="256" position="center" darkWidth="292" darkHeight="256" showCaption="false"}

## Transfer ownership

When you create an organization, you automatically become the owner of the organization. Organization owners can manage and access all teams in an organization. An organization can have only one owner.&#x20;

If you are the owner of an organization, you can transfer ownership to any member of your organization:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.
:::

:::WorkflowBlockItem
Next to **Organization settings**, click the three dots to expand the menu.
:::

:::WorkflowBlockItem
Select **Transfer ownership**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/xg1FTrUy4S5M2lfJkIyL3-20251002-151111.png" size="36" width="200" height="186" position="center" darkWidth="200" darkHeight="186" showCaption="false"}
:::

:::WorkflowBlockItem
In the **User&#x20;**&#x64;ropdown, select the organization member you want to be the owner of the organization.&#x20;

All current organization members appear in the menu. Once a new member accepts the invitation, you can transfer ownership to them.
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

A purple pop-up appears confirming that ownership has been transferred successfully.

:::hint{type="warning"}
Ownership transfers can only be performed by existing organization owners. If you do not have owner access, reach out to our [Support](https://www.make.com/en/ticket).
:::

## Delete an organization

You can delete an organization only if you are the owner of the organization. You can't delete an organization owned by other users.

:::::WorkflowBlock
:::WorkflowBlockItem
Click on your username in the top-right corner.&#x20;
:::

:::WorkflowBlockItem
Select **Profile**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/Wo_zB5QFKVps6pzbbyRG_-20251002-151724.png" size="36" width="183" height="166" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
In the **Organizations** tab, you will see a list of all organizations you have access to.&#x20;
:::

:::WorkflowBlockItem
Click the three dots next to the organization you want to delete, then **Delete**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/qR_Te4W9BQqR1KjtsvEoh-20251002-152136.png)
:::

::::WorkflowBlockItem
In the dialog, type the name of the organization you want to delete, then click **Delete organization**.

:::hint{type="warning"}
You can't undo this action. Your organization will be permanently deleted and it can't be retrieved.
:::
::::
:::::

Your organization has been deleted.&#x20;

[title] Audit logs
[path] Your organization/Administration/

:::hint{type="info"}
This feature is available to Enterprise customers.
:::

Audit logs allow you to monitor user activity within your organization or team. This information is particularly useful for resolving issues and troubleshooting incidents. For example, if a crucial  transferring data between systems unexpectedly fails, audit logs can help you identify who updated the  and when it happened.

Audit logs are available on the Enterprise plan only. Organization owners and admins as well as team admins can access audit logs.

Audit logs are stored for 12 months.

## Organization audit logs

Audit logs are available at both the organization and team levels. Organization audit logs give you visibility into everything that is happening in your organization, including such events as creating or updating the organization variable.

Organization Audit logs are visible only to organization owners and admins.

To open Audit logs from the Organization dashboard:

::::WorkflowBlock
:::WorkflowBlockItem
Click **Org** in the left sidebar.
:::

:::WorkflowBlockItem
Click the **Org** **Audit Logs** tab.

Once you open the tab, you will see the audit logs for the organization you’re in. You can filter what you see to show only specific events, specific time periods, or users by setting up filters on the filter panel.

Additionally, you can select to see only events from specific teams in the audit logs.
:::

:::WorkflowBlockItem
Click the **All filters** button.
:::

:::WorkflowBlockItem
Select the teams for which you want to see the logs in the **Team** dropdown.
:::

:::WorkflowBlockItem
Click **Apply**.
:::
::::

## Team Audit logs

Team audit logs are available to team admins. Organization owners and admins can see team audit logs through the audit logs in the Organization dashboard or by opening the audit logs for a specific team from the Team dashboard.

To view audit logs from the Team dashboard:

::::WorkflowBlock
:::WorkflowBlockItem
Click **Team** in the left sidebar.
:::

:::WorkflowBlockItem
Click the **Team** **Audit Logs** tab.
:::
::::

You will see the audit logs for your team. You can filter the logs to display specific events or time periods.

## Available events

The audit logs allow you to see what was changed, who made the change, when it was made, and for which .

:::hint{type="info"}
Some of the events are not visible in the team audit logs. For example, you won’t see events about organization variables, but you will see events connected to this specific team (team member added, removed, etc.).
:::

| Event category                        | Available events                                                                                    | Available for Organization | Available for Team |
| ------------------------------------- | --------------------------------------------------------------------------------------------------- | -------------------------- | ------------------ |
|                                       | -  created
-  updated
-  deleted
-  activated
-  deactivated                                        | Yes                        | Yes                |
| Connections                           | * Connection created
* Connection deleted
* Connection updated
* Connection authorized/reauthorized | Yes                        | Yes                |
| Webhooks                              | - Webhook created
- Webhook deleted
- Webhook updated
- Webhook enabled
- Webhook disabled          | Yes                        | Yes                |
| Keys                                  | * Key created
* Key updated
* Key deleted                                                           | Yes                        | Yes                |
| Team                                  | - Team created
- Team updated
- Team deleted
- Team role updated
- Team member removed              | Yes                        | Yes                |
| Team Variables                        | * Team variable created
* Team variable updated
* Team variable deleted                             | Yes                        | Yes                |
| Organization Variables                | - Organization variable created
- Organization variable updated
- Organization variable deleted     | Yes                        | No                 |
| Organization                          | * Organization member removed
* Organization role updated                                           | Yes                        | No                 |
| Data Store                            | - Data store created
- Data store updated
- Data store deleted                                      | Yes                        | Yes                |
| Data Store Records                    | * Data store record created
* Data store record updated
* Data store record deleted                 | Yes                        | Yes                |
| Data Structure                        | - Data structure created
- Data structure updated
- Data structure deleted                          | Yes                        | Yes                |
| Functions                             | * Function updated
* Function created
* Function deleted                                            | Yes                        | Yes                |
| Two-factor authentication enforcement | - Organization 2FA enforcement enabled
- Organization 2FA enforcement disabled                      | Yes                        | No                 |
| Credential requests                   | * Credential request created
* Credential request authorized
* Credential request deleted           | Yes                        | Yes                |

:::hint{type="info"}
Events related to Data Store Records (like Data Store Record Updated) only apply to actions done within the  interface or API. They don't apply to actions done through the datastore modules.
:::

## Event details

The audit log main page provides a summary of who performed specific actions and when they occurred. For more detailed information about an event, click the **Details** button next to the entry. A pop-up window will appear, displaying additional data about the event. To copy any information, click the **Copy** button within the pop-up.

[title] Pipedrive API v1 to v2 transition by July 31, 2026
[path] Release notes/2026/

Due to changes in the Pipedrive API, we’ve released updated versions of all Pipedrive modules in Make.

### What's changing?

Some of the Pipedrive API v1 modules are now deprecated. Existing scenarios using these modules will continue to run until **July 31, 2026**. After this date, Pipedrive API v1 endpoints will no longer be available, and the scenarios using them will stop working. You can no longer create new scenarios using the deprecated modules.

### What do you need to do

To keep your scenarios running, replace your Pipedrive API v1 modules with their API v2 equivalents before July 31, 2026.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/cDcs279ve7m_A4iuUNSk4-20260119-171730.png" size="76" width="1040" height="489" position="center" darkWidth="1040" darkHeight="489" showCaption="false"}

:::hint{type="info"}
For a detailed migration guide, see the [Pipedrive Developer Documentation](https://pipedrive.readme.io/docs/pipedrive-api-v2-migration-guide).
:::

### Connection type deprecation

The **Pipedrive API token** connections are deprecated. When creating a new Pipedrive connection, select **Pipedrive OAuth** in the **Connection type** field. This is the supported connection method for Pipedrive modules. If you’re using an existing connection created with an API token, update it to use Pipedrive OAuth to ensure compatibility with the current Pipedrive API.

### Modules deprecated without replacement

The following Pipedrive modules have been deprecated and **do not** have a replacement or supported alternative in API v2:

- Add a Recurring Subscription
- Add an Installment Subscription
- Cancel a Recurring Subscription
- Delete a Subscription
- Find Subscription By Deal
- Get a Subscription
- List Payments of a Subscription
- Update a Recurring Subscription
- Update an Installment Subscription

Some deprecated modules don't have direct replacements, but you can replicate the same functionality using other Pipedrive modules with the required filters.

| **Deprecated module**          | **Module to use** | **Required filter**    |
| ------------------------------ | ----------------- | ---------------------- |
| List Activities in a Deal      | List Activities   | ID filter              |
| List Deals for a Person        | List Deals        | Person ID filter       |
| List Deals in a Pipeline       | List Deals        | Pipeline ID filter     |
| List Deals in a Stage          | List Deals        | Stage ID filter        |
| List Deals in an Organization  | List Deals        | Organization ID filter |
| List Persons in a Deal         | List Persons      | Deal ID filter         |

Use the modules and filters in the module configuration to achieve the same behavior as the deprecated modules.

### Webhook changes

Some webhook endpoints are no longer available in the Pipedrive API v2.

The following webhook modules are replaced by a single generic module:

- New Activity Event --> Watch New Events
- New Deal Event --> Watch New Events
- New Note Event --> Watch New Events
- New Organization Event --> Watch New Events
- New Person Event --> Watch New Events
- New Product Event --> Watch New Events

[title] Claude Opus 4.6 now available in Make
[path] Release notes/2026/

Anthropic's newest model, Claude Opus 4.6, is now available in Make for AI-powered automations.

### What's new

Claude Opus 4.6 is Anthropic's most advanced model, built for:

- Large-scale data processing: 1M token context window lets you process entire codebases or document archives in a single prompt
- Complex reasoning: Enhanced capabilities for multi-step workflows and autonomous decision-making
- Agentic workflows: Built for tool use and course-correction in automated processes

### How to use Claude Opus 4.6 in Make

Select the option that fits your workflow:

- ****[Make AI Toolkit](docId\:CfGqHRAekfeXyGbyOW_wC): Use the ‘Simple text prompt’ module for quick testing with zero configuration. No API key required – select Claude Opus 4.6 from the model dropdown.
- [Anthropic Claude](docId\:fOxikGVklNq7Rezxz6Wwd): Connect your Anthropic API key with the ‘Create a prompt’ module for structured prompts.
- [Make AI Agent (New)](docId\:rXryASA6852hvhkZ6NhXU): Build agentic workflows using your own Anthropic API key.

[title] Manage your email preferences
[path] Your profile/Profile settings/

You can manage your email notification preferences from your **Profile&#x20;**&#x70;age. The options on the **Email preferences&#x20;**&#x74;ab let you customize which email notifications you receive from  . You can opt-in to emails with information about specific topics and decide which -related notifications you receive from each organization you are a member of.

### Global notifications

The Global notifications section includes options for communication about  overall. For example, you can choose to receive emails about updates to , special offers and promotions, or announcements about the  Academy.

### Organizations

 can automatically send notification emails when your  encounters a warning, an error, or a deactivation due to errors. By default, you receive emails in the following cases:

- An error prevents your  from successfully running.
-  automatically disables your  due to errors.

You can customize your email notifications for each organization you belong to.

- **Deactivation** - these notifications inform you whenever   disables a  because of errors.
- **Warning** - these notifications inform you of issues in a  that require your attention. For example, issues with an app's connections.
- **Errors&#x20;**- these notifications inform you of issues that prevent a  from successfully completing.

:::hint{type="info"}
 sends an email immediately when there is a warning or error. Then,   watches for further warnings or errors and sends you a digest email (after 15 minutes for warnings and after 5 minutes for errors). This second email links to the  history where you can find more details.
:::


[title] Single Sign-on
[path] Your organization/Access management/

:::hint{type="info"}
This feature is available to Enterprise customers.
:::

Single sign-on (SSO) allows you to use your own provider of user account management, authentication, and authorization services to register and log in to  .

 supports the following protocols:

- Open ID Connect (OIDC)
- SAML 2

 supports the following identity providers (IdPs):

- Okta ([SAML](docId\:Q0SYPMV8_3Mmt_NiKfL2K))
- Microsoft AD ([SAML](docId\:leFN8YTGnMlOiWhCpaEUM) [OIDC](docId\:VH6038lSPDoXXxc-U4vmg))
- Google ([SAML](docId\:c2tfQhgM9UQannl5dWZhk))

You configure SSO for each of your organizations separately.

You can prevent your organization members from accidentally creating their own self-service accounts by [claiming a domain](docId\:sox7tIAcDDv9bdKVh5Kj2). After you set up SSO, claim your email domain so  can recognize your new users. Any new user who signs in with your claimed email domain gets a prompt to use SSO.&#x20;

## Enable single sign-on using Open ID Connect (OIDC) and SAML 2.0

:::hint{type="warning"}
Double-check your SSO configuration before you click **Save** on the SSO settings page. When you click **Save**,  enables SSO with the settings you provided. You will be logged out immediately. You won't be able to log in with your  credentials anymore.
:::

::::WorkflowBlock
:::WorkflowBlockItem
Click **Organization** in the left sidebar.
:::

:::WorkflowBlockItem
Click the **SSO** tab.
:::

:::WorkflowBlockItem
Click **SSO configuration**.
:::

:::WorkflowBlockItem
Enter a **Namespace**. You can enter any text that describes your organization. Users will need to enter your organization's namespace on the SSO login page. Namespace must include only lowercase characters and dashes. An underscore may lead to errors.&#x20;
:::

:::WorkflowBlockItem
Select an **SSO type**.
:::

:::WorkflowBlockItem
Fill in the protocol-specific information as described in either the [Open ID Connect](docId\:Ku5mtX5grj5DBQAwSjlk0)  or [SAML ](docId\:Ku5mtX5grj5DBQAwSjlk0) section of this article.
:::

:::WorkflowBlockItem
Under **Team provisioning for new user**, select which teams new users who log in will become members of. You can choose to not add new users to any team.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/zc3h_EYdANFkNQbYFIwFU_uuid-a1eca43f-73b3-d12c-9f8e-b36bc3a87253.png" size="60" width="1076" height="336" position="flex-start" alt="Team provisioning for new users" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

 enables SSO with the settings you provided and logs you out immediately. You can now log in with your SSO provider credentials. At the same time, you receive an email with a one-time link, which you can click to disable SSO.

:::hint{type="info"}
When logging in using SSO for the first time, you must use an account that is the owner of the organization and has the same email address as the account that you used to configure SSO. Make sure that you assign the same email address to the user in your identity provider.
:::

:::ExpandableHeading
### Open ID Connect (OAuth 2.0 settings)

The following fields appear once you select OAuth 2.0 from the SSO menu:

| **Field**            | **Required** | **Description**                                                                                                                                                                                                                                             |
| -------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| User Information URL | required     | URL obtained from your identity provider.<br />Example: `https://example.com/oauth2/v1/userinfo`                                                                                                                                                            |
| Client ID            | required     | Obtained from your identity provider. Sometimes called Application ID.                                                                                                                                                                                      |
| Token URL            | required     | URL obtained from your identity provider.<br />Example: `https://example.com/oauth2/v1/token`                                                                                                                                                               |
| Login scopes         | optional     | Parameters used when accessing your identity provider.                                                                                                                                                                                                      |
| Scopes separator     | optional     | The character used between scopes, such as a space or a comma. If your separator is a space, use the spacebar on your keyboard.                                                                                                                             |
| Authorize URL        | required     | URL obtained from your identity provider.<br />Example: `https://example.com/oauth2/v1/authorize`                                                                                                                                                           |
| Client secret        | required     | Obtained from your identity provider.                                                                                                                                                                                                                       |
| IML resolve          | required     | Because both Make and your Identity provider use attributes such as username and email, you need to [map these attributes using IML](docId\:Ku5mtX5grj5DBQAwSjlk0).<br />For Open ID Connect:<br />`{"id":"{{sub}}","email":"{{email}}","name":"{{name}}"}` |
| Redirect URL         | optional     | The location where the identity provider sends the user once successfully authorized and granted access. Must be unique to your application/instance.                                                                                                       |


:::

:::ExpandableHeading
### SAML 2.0 settings

The following fields appear once you select SAML 2.0 from the SSO menu:

| **Field**                     | **Required** | **Description**                                                                                                                                                                                                                                                                                                                |
| ----------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Service provider certificate  | required     | Make provides certificates for you. Click the down arrow to copy or download a `.pem` file of your certificate.<br />At least one certificate must be active. If there is no active certificate, click **Activate**.<br />For more information, see our article on [SAML certificate management](docId:4wjm5Akj6VmC7a_Ga63Ay). |
| Identity provider certificate | required     | An x.509 certificate created and stored by your IdP, for example, Google, Okta, or Microsoft Azure Directory. You can enter this information in the following ways:<br />* Copy and paste from your IdP's UI.
* Copy and paste from your IdP's metadata XML file.
* Extract from any of the following:
  - P12
  - PFX
  - PEM |
| IdP login URL                 | required     | Also called an authorization URL. The IdP login URL is available from your IdP, for example, Google, or Okta. The IdP metadata typically contains this information in XML. The IdP metadata is usually downloadable from your Identity provider.                                                                               |
| IdP logout URL                | optional     | A URL created by your IdP to enable Single Log Out (SLO). Leave this field empty to disable SLO.                                                                                                                                                                                                                               |
| Login IML resolve             | required     | Because both Make and your Identity provider use attributes such as username and email, you need to [map these attributes using IML](docId\:Ku5mtX5grj5DBQAwSjlk0).                                                                                                                                                            |
| Redirect URL                  | optional     | The location where the identity provider sends the user once successfully authorized and granted access. Must be unique to your application/instance.                                                                                                                                                                          |
| Allow unencrypted assertions  | optional     | Your IdP may not support SAML 2.0 assertions with encryption. Check with your IdP to determine whether you need to enable this option.                                                                                                                                                                                         |
| Allow unsigned responses      | optional     | Your IdP may not support a signed SAML 2.0 response. Check with your IdP to determine whether you need to enable this option.                                                                                                                                                                                                  |
| Sign requests                 | optional     | Your IdP may require a signed SAML 2.0 response. Check with your IdP to determine whether you need to enable this option.                                                                                                                                                                                                      |
| Audience                      | optional     | Optional field to define the intended target. Typically this is a URL but can also be formatted as any string of data.                                                                                                                                                                                                         |
| Audience URI                  | optional     | This read-only field provides you with the path for metadata.xml file. This information might be needed to set up the SAML settings on the SSO provider side.                                                                                                                                                                  |
:::

:::ExpandableHeading
### SAML certificate rotation

For more information on rotating your service provider certificate, see our article on [SAML certificate management](docId:4wjm5Akj6VmC7a_Ga63Ay).
:::

::::ExpandableHeading
### Create and enter Login IML resolve

To support a broad choice of identity providers (IdPs),  lets you map values related to identifying users. The IML resolve maps the values from your IdP to 's internal values by using IML, a JavaScript-based function notation. Your IML resolve must be specific to your IdP. You must map the following properties:

| **Property** | **Description**                                                                                                                                                       |
| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| email        | You can map this to any valid email.<br />Aliases and alternate email suffixes can create problems. Be sure to map the most appropriate email in your IML resolve.    |
| name         | Used as the user's name in the application.<br />You can reuse email for this property.<br />If left blank, creates a user without a name that must be updated later. |
| id           | External user ID<br />Can be `an integer` or `string` but must be mapped to an identifier.                                                                            |

In the following example, the resolve maps the following values:

| **Make** | **Your IdP**                                                                      |
| -------- | --------------------------------------------------------------------------------- |
| email    | `user.attribute.email`                                                            |
| name     | `user.attributes.firstName` and `user.attributes.last`<br />concatenated together |
| id       | `user.name_id`                                                                    |

:::CodeblockTabs
Javascript

```javascript
{
    "email":"{{get(user.attributes.email, 1)}}",
    "name":"{{get(user.attributes.firstName, 1)}} {{get(user.attributes.last}}
    "id":"{{user.name_id}}" 
}
```
:::
::::

## Log in using SSO

When  is configured to use SSO, users don't use the default sign-in form. Instead, they use the dedicated SSO sign-in options.

1. Go to [https://www.make.com/en/login](https://www.make.com/en/login)
2. Click **Sign in with SSO**.
3. Enter the namespace you chose for your organization.
4. Log in using your identity provider and consent to 's access to your user data.

The user is now logged in. If the user was not assigned to your organization before, the system creates a new user account for them and assigns them to the selected default team.

:::hint{type="info"}
If a user with the same email address already existed in the organization before you configure SSO, they will not have access to the organization's data. To solve this, delete the user from the organization and ask them to log in again using SSO.
:::


[title] Coupons
[path] Your organization/Subscription/

Occasionally,  sends coupon codes via email. A coupon code may look like this: `xrCeZkqA`

A coupon may offer one of the following:

- Free trials of a subscription plan
- Discounts on subscription plans, such as your current plan or higher
- Extra credits

:::hint{type="info"}
Each coupon is unique and redeemable only once.
:::

## Redeem coupons

Only organization admins and owners can redeem coupons. If you're not an admin or the owner of an organization, contact them to redeem your coupon.

:::::WorkflowBlock
:::WorkflowBlockItem
Navigate to **Org** in the left sidebar, then to th&#x65;**&#x20;Subscription&#x20;**&#x74;ab in **My Plan**.
:::

:::WorkflowBlockItem
Click **Redeem coupon**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/2LHqkAAykJCzskZ8z8nfH-20251010-082031.png)
:::

:::WorkflowBlockItem
Enter your coupon code and clic&#x6B;**&#x20;Redeem** **coupon**.
:::

::::WorkflowBlockItem
In the payment checkout, your coupon appears in the details of your plan. Review your billing details and clic&#x6B;**&#x20;Redeem coupon.&#x20;**

:::hint{type="info"}
Depending on the details of your discount and plan, you will either proceed with your coupon redemption or be redirected to a payment gateway to complete the redemption.
:::
::::
:::::

To verify the successful redemption of your coupon, you can:

- Check the banner that is now visible in your **Organization&#x20;**&#x64;ashboard

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/CkB7zo6i-kTiDWQiWrKpX-20251010-093543.png)

- Check the details related to your coupon outlined in the **Subscription&#x20;**&#x74;ab

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/iDSTVUvzbdAvomTPmNhe7-20251010-094036.png)

## Subscription coupons

### Subscription coupons and your plan

Using a coupon for a subscription plan places you on that plan if you have a saved payment method.

To return to the plan you had before the coupon, change your subscription before your coupon expires.

If you do not have a valid payment method saved, you will have a Free plan when your coupon expires.

### Subscription coupons and your billing cyle

After you redeem your subscription coupon, your billing cycle changes. The day you redeem your coupon becomes the new start date of your billing cycle.

**Example**

You have a Core plan that renews on the 20th of each month. You receive a coupon for the Teams plan. On the 15th, you redeem your coupon. The 15th is now the beginning of your monthly billing cycle.

**Exceptions**

- Coupons for the same plan do not impact your billing cycle. For example, a discount on your current plan.
- Core plans with an annual subscription have different billing and reset cycles: credits reset every month and your extra credits expire with the monthly reset.

:::hint{type="info"}
You can only have one subscription coupon applied to your subscription plan at a time. Redeeming a second plan coupon cancels the first. This limit does not apply to coupons for extra credits. You can combine coupons for plans and extra credits.
:::

## Extra credits coupons

You do not need a saved payment method to use coupons for extra credits.

Extra credits are valid for the length of your billing cycle and expire on your billing day.

**Example**

You have a coupon for 10,000 extra credits, and your monthly subscription renews on the 15th of the month. If you redeem the extra credits on the 14th, they are valid until the 15th.

:::hint{type="info"}
Extra credits are valid until the end of your billing cycle, regardless of how many other coupons you redeem.
:::


[title] MS Azure AD SAML
[path] Your organization/Access management/

:::hint{type="info"}
This feature is available to Enterprise customers.
:::

The following manual configuration creates an SAML SSO configuration for your Enterprise organization.

## Prerequisites

- `Owner` role in an Enterprise organization
- Administrative access to your organization's Microsoft Azure AD portal

## Supported features

This configuration supports the following:

- Service provider initiated SSO
- Single Log Out \[optional]

## Configuration steps

Before configuring SSO, you need to assign a namespace and download your service provider certificate in . These steps provide information you need to enter later.

### Create your namespace in Make

::::WorkflowBlock
:::WorkflowBlockItem
Click **Organization** in the left sidebar.
:::

:::WorkflowBlockItem
Click the **SSO** tab.
:::

:::WorkflowBlockItem
Under **Namespace**, enter the namespace you want for your organization. For example, `acmecorp`. Your organization members enter this namespace when they log in via SSO.
:::

:::WorkflowBlockItem
Under **SSO type**, select **SAML 2.0**.
:::

:::WorkflowBlockItem
Copy the **Redirect URL** and save it in a safe place. You will use this later when you create your SAML integration in the Microsoft Azure AD portal.
:::
::::

### Create an SAML application in the MS Azure portal

::::WorkflowBlock
:::WorkflowBlockItem
Log in to the [Microsoft Azure portal](https://azure.microsoft.com/en-in/) and navigate to the Azure Active Directory.

![MS Azure portal](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-tD6CsOpNFHk6XV8ajr8R5-20250212-104942.png)
:::

:::WorkflowBlockItem
In the left navigation, click **Enterprise applications.**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-plGd2Ny-t1DL-eWQw36Ui-20250212-105215.png" size="40" width="317" height="599" position="flex-start" alt="MS Azure Enterprise applications" showCaption="false"}
:::

:::WorkflowBlockItem
Click **+ New Application**.
:::

:::WorkflowBlockItem
Click **+ Create your own application**.
:::

:::WorkflowBlockItem
Enter a name for your app and select **Integrate any other application you don't find in the gallery**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-z-mCMqhk94EWS1ILQMWDt-20250212-112508.png" size="90" width="999" height="520" position="flex-start" alt="Create your own application" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Create**.
:::

:::WorkflowBlockItem
In the left navigation, click **Single Sign-on.**

![Single sign-on](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-E67JElULE2PkIdKkr6OH5-20250212-112942.png)
:::

:::WorkflowBlockItem
Click **SAML**.
:::

:::WorkflowBlockItem
Configure your Basic SAML settings using the Redirect URL (`https://www.make.com/sso/saml/{namespace}`) that you copied in the [the steps above](docId\:leFN8YTGnMlOiWhCpaEUM).&#x20;

| **Field**  | **Value**                                                |
| ---------- | -------------------------------------------------------- |
| Entity ID  | `https://www.make.com/sso/saml/{namespace}/metadata.xml` |
| Reply URL  | `https://www.make.com/sso/saml/{namespace}`              |
| Logout URL | `https://www.make.com/sso/saml/{namespace}`              |

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-g_AKMUUHfRcYX4h00TJ_q-20250212-113753.png" size="80" width="582" height="141" position="flex-start" alt="Basic SAML configuration" showCaption="false"}
:::

:::WorkflowBlockItem
In the **Attributes & Claims** section, click **Edit** to rename your attributes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-4rtj_xdWWkHSkmGVus4zP-20250212-114014.png" size="80" width="584" height="126" position="flex-start" alt="Attributes and claims" showCaption="false"}
:::

:::WorkflowBlockItem
Under **Additional claims**, find the value you want to edit and click that row.
:::

:::WorkflowBlockItem
Enter the new name in the Name field. Use the following chart to find the names required for your IML resolve.

| **Field**              | **Value**              |
| ---------------------- | ---------------------- |
| email                  | user.mail              |
| name                   | user.displayname       |
| id                     | user.userprincipalname |
| Unique User Identifier | user.userprincipalname |
:::

:::WorkflowBlockItem
Click **Save**.
:::

:::WorkflowBlockItem
Copy the **Login URL** and save it in a safe place.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-ASoASMJC8M9JVykO29Ihk-20250212-114639.png" size="80" width="1280" height="344" position="flex-start" alt="Login and logout URL" showCaption="false"}
:::
::::

### Download the SAML certificate

You need to download the base 64 SAML certificate from Microsoft Azure and upload it to the **Identity Provider Certificate** field of the **SSO** tab in your  organization.

::::WorkflowBlock
:::WorkflowBlockItem
Find the **SAML Certificates** section of your single sign-on settings in the Microsoft Azure portal.
:::

:::WorkflowBlockItem
Next to **Certificate (Base64)**, click **Download**.
:::
::::

Your browser automatically downloads the `.cer` file.&#x20;

### Update the SSO in Make

::::WorkflowBlock
:::WorkflowBlockItem
Click **Organization** in the left sidebar.
:::

:::WorkflowBlockItem
Click the **SSO** tab.
:::

:::WorkflowBlockItem
Under **Identity Provider Certificate**, click **Extract**. A pop-up appears.
:::

:::WorkflowBlockItem
Under **P12, PFX or PEM file**, click **Choose file** and select the `.cer` file you downloaded.
:::

:::WorkflowBlockItem
Enter the following information from MS Azure into the **IdP login URL** and **Identify provider certificate** fields.

| **Field**                     | **Value to enter from MS Azure** |
| ----------------------------- | -------------------------------- |
| IdP login URL                 | Login URL                        |
| Identity provider certificate | Certificate (Base 64)            |
:::

:::WorkflowBlockItem
Enter the following in the **Login IML resolve** field:

```javascript
{    
    "email":"{{get(user.attributes.email, 1)}}",
    "name":"{{get(user.attributes.firstName, 1)}} {{get(user.attributes.lastName, 1)}}",
    "id":"{{user.name_id}}"
} 
```
:::

:::WorkflowBlockItem
Select the following settings:

| **Field**                    | **Value** |
| ---------------------------- | --------- |
| Allow Unencrypted Assertions | Yes       |
| Allow Unsigned Responses     | No        |
| Sign Requests                | Yes       |

![SSO Settings](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-3yxio08te9esClNkt-wjX-20250212-120230.png)
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

:::hint{type="info"}
You will receive an email with the subject "Activation complete: SSO ready for your organization" upon successful activation. If you encounter any issues while logging in using SSO, disable SSO using the "one-time link" (valid for 24 hours).&#x20;
:::



## Service Provider initiated SSO

::::WorkflowBlock
:::WorkflowBlockItem
Go to [make.com](https://make.com).&#x20;
:::

:::WorkflowBlockItem
Click **Sign in with SSO**.
:::

:::WorkflowBlockItem
Enter the namespace you chose for your organization.
:::

:::WorkflowBlockItem
Log in using your Microsoft credentials and consent to 's access to your user data.
:::
::::


[title] New version of API endpoint for credential requests, scenario usage tracking, connection filtering, and app updates
[path] Release notes/2026/

## Improvements and changes

### New version of Make API endpoint for creating credential requests

We've released **v2** of the POST Make API endpoint: `/api/v2/credential-requests/requests/v2`. It significantly simplifies credential request creation by reducing the number of required parameters.

:::hint{type="info"}
The previous version will be deprecated on **June 10, 2026**. Please migrate to **v2** before that date. See [Make API documentation](https://developers.make.com/api-documentation/api-reference/credential-requests#post-credential-requests-requests-v2) for details.
:::

### &#x20;usage tracking expanded

We've expanded the scenario usage tracking feature. Previously available only for connections, you can now easily identify where you are using [data stores](docId\:l6duB0QnRcBjBVNhw6-Xk), [data structures](docId\:l6duB0QnRcBjBVNhw6-Xk), and [custom variables](docId\:xjlOKKg-AjN437oU5eYn1) in your  as well.

![Scenario tracking of a data store](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/RqOEAhyu_8a6HPL4bAzwI-20260316-100011.png)

### Enhanced connection filtering

We’ve added **My connections&#x20;**&#x74;o filter the connections you created. Click the filter icon next to the search box and select **My connections&#x20;**&#x74;o see the connections created by you. For more information, see the [Filter connections](https://help.make.com/connect-an-application#filter-connections) page.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/0ZkvAorvFP0zUUntce-Th-20260325-093348.png)

## App updates

### Simple text prompt: Real-time awareness

The **Simple text prompt** module for [Google Gemini AI](https://apps.make.com/gemini-ai) and [Anthropic Claude](https://apps.make.com/anthropic-claude) apps now automatically includes the current date and time. This ensures that time-sensitive context is accurately represented in your scenarios without requiring manual input.

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/8tRxaJrLLoSGmYIbNiADV-20260326-104909.png" size="50" width="800" height="800" position="center" darkWidth="800" darkHeight="800" showCaption="false"}
:::

:::VerticalSplitItem
[Make AI Web Search](https://apps.make.com/make-ai-web-search)

**Token-based credit consumption** - The module now use&#x73;**&#x20;GPT-5 nano** model, and calculates credit usage based on input and output tokens consumed per run. Input tokens are determined by your prompt, while output tokens reflect the generated response. Token usage is displayed in the module's output after each run.

For more information, see:

- [Credits](https://help.make.com/credits#makes-ai-provider)
- [Make AI Web Search](https://apps.make.com/make-ai-web-search)
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[**]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-qavpMXHulX97Gv2xXTgah-20250904-154516.png" size="50" width="800" height="800" position="center" darkWidth="800" darkHeight="800" showCaption="false"}
:::

:::VerticalSplitItem
[Etsy](https://apps.make.com/etsy)&#x20;

We've added a new **Personalizations** group of modules:&#x20;

- List Personalization Questions
- Create or Update a Personalization
- Delete a Personalization
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-UUjn5uUTngOmDCOl0lrvW-20250814-103121.png" darkSrc="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-UUjn5uUTngOmDCOl0lrvW-20250814-103121.png" size="50" width="393" height="393" darkWidth="393" darkHeight="393" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[OpenAI](https://apps.make.com/openai-gpt-3)

`GPT-5.4 mini` and `GPT-5.4 nano` models are now available in the **Simple text prompt&#x20;**&#x6D;odule.
:::
::::




[title] Make Managed Services (MMS) user guide
[path] Your organization/Make Managed Services (MMS)/

Make Managed Services (MMS) is a product offering that enables easy, scalable management of child organizations. You can manage child organizations in the  platform or with the [Make API](https://developers.make.com/api-documentation/api-reference/mms).

In this user guide for organizations enrolled in MMS, you will learn how to create and manage child organizations, allocate credits across child organizations, and manage roles.&#x20;

- Suggested reading: [Make Managed Services (MMS)](https://help.make.com/make-managed-services-mms)

## Create child organizations

To link a client's organization to your distributor organization in , you will create a child organization.&#x20;

To create a child organization:

:::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, navigate to **Org management&#x20;**&#x66;or your selected organization.
:::

:::WorkflowBlockItem
Click **Child organizations.**&#x20;
:::

::::WorkflowBlockItem
In the dialog box, enter the following information about the child organization:

- Organization name
- Region
- Country
- Owner name
- Owner email

:::hint{type="info"}
The child organization owner can be from the distributor organization or child organization. Only the owner can open the child organization from MMS. Enter the email address of the person who can have this access. Learn more in **manage child organizations**.&#x20;
:::
::::

:::WorkflowBlockItem
In **Credits for child organization**, enter the number of credits the child can use. Credits must be in increments of 10,000.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/HtMGGDcFEg6X89lUmvwRd-20251128-073843.png" size="60" width="983" height="439" position="flex-start" darkWidth="983" darkHeight="439" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Create**.
:::
:::::

You have now created a child organization.&#x20;

:::hint{type="info"}
You can also create a child organization [using the API](https://developers.make.com/api-documentation/api-reference/mms-greater-than-child-organizations#post-organizations-organizationid-managed-organizations).
:::

## Manage credits

After creating a child organization, you can update its allocated number of credits anytime.

:::hint{type="info"}
Allocated credits must be in increments of 10,000 (10,000, 20,000, 30,000, and so on).&#x20;
:::

Your distributor organization deducts credits allocated to child organizations from its total available credits. For example, if your organization has 500,000 total credits, after allocating 10,000 to a child organization, it will have 490,000 remaining credits.&#x20;

To update allocated credits:

::::WorkflowBlock
:::WorkflowBlockItem
Identify the child organization to update.
:::

:::WorkflowBlockItem
Click on the drop-down arrow next to **Open**.&#x20;
:::

:::WorkflowBlockItem
Click **Update credits**.

![](https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/OQPxvzQPE7tf0JssCbyYK-20251127-133559.png)
:::

:::WorkflowBlockItem
Enter the new amount.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

You have now allocated the child organization's credits.&#x20;

:::hint{type="info"}
You can also update the child organization credit allocation [using the API](https://developers.make.com/api-documentation/api-reference/mms-greater-than-child-organizations#patch-organizations-organizationid-managed-organizations-childorganizationid).
:::

### Overview of child organization consumption

For every child organization, you can see the number of consumed credits vs allocated credits and the data transfer.

To view the consumption of child organizations:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, navigate to **Org management&#x20;**&#x66;or your selected organization.
:::

:::WorkflowBlockItem
Click **Child organizations.**

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/erMrzcZMzftk0sGSKGjuu-20260112-111038.png)

You will see all the child organizations for your selected main organization.
:::

:::WorkflowBlockItem
Hover your mouse over the credit usage of a child organization to see more information.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/wl2eGV9r28ZwHF3VMYQhd-20260112-111230.png)
:::

:::WorkflowBlockItem
Hover your mouse over the data transfer of a child organization to see more information.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/W04gqalujP0pibhFK2x3E-20260112-111331.png)
:::
::::

You can view the consumption for all child organizations for the selected organization.

## Manage access to child organizations&#x20;

When you create a child organization, the email address designates the organization's owner. Only owners can access child organizations through MMS. If you enter your own email, you can open the organization from MMS. If you enter the email of a member of the child organization, you are unable to open it.&#x20;

To access a child organization's account through MMS as a non-owner, you will need an invitation from the child organization to join their organization.&#x20;

To invite you, a child organization will:

::::WorkflowBlock
:::WorkflowBlockItem
Click **Organization**.
:::

:::WorkflowBlockItem
Click **Org Users**.&#x20;
:::

:::WorkflowBlockItem
Clic&#x6B;**&#x20;Invite a new user**.&#x20;
:::

:::WorkflowBlockItem
In the dialog box, fill in your details, including your role in their organization.
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::
::::

You will receive an invitation email with an Accept invitation button. Invitations expire in 7 days. When you accept the invitation,  adds you to the organization. &#x20;

**Access with Single Sign-On (SSO)**

If a child organization has enabled Single Sign-On (SSO), they need to create a user account for you via their SSO provider to access their organization.&#x20;

SSO process and requirements are identical to the standard at . Review [Single Sign-on](docId\:Ku5mtX5grj5DBQAwSjlk0) for details.

## Manage child organizations&#x20;

Depending on the situation, you can transfer ownership to a member of the child organization or unlink the organization.

### Transfer ownership&#x20;

Organization owners can manage and access the organization's , data, and teams. If you were the owner when creating a child organization, you can transfer ownership to a member of the child organization upon request.&#x20;

To transfer ownership:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Organization**.
:::

:::WorkflowBlockItem
Next to **Organization settings**, click the three dots to expand the menu.
:::

:::WorkflowBlockItem
Click **Transfer ownership**.&#x20;
:::

:::WorkflowBlockItem
Select the organization member you want to be the owner of the organization.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::
::::

Once the member accepts the invitation, ownership will be transferred. A purple pop-up confirms that ownership has been transferred.&#x20;

### Unlink organizations

When you discontinue a partnership with a client, you can permanently unlink its child organization from your distributor organization. &#x20;

When you unlink a child organization:

- You lose the ability to see and manage the unlinked organization.
- The unlinked organization's used and unused operations return to the distributor organization's total operations.&#x20;
- The unlinked organization can continue to use  but needs to buy operations independently.  &#x20;

To unlink a child organization:

:::::WorkflowBlock
:::WorkflowBlockItem
Navigate to **Org management&#x20;**&#x69;n the left sidebar.
:::

:::WorkflowBlockItem
Click **Child Organizations.**

::Image[****]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/DDtyhNSpvRYpq4yk5c003-20251127-133021.png" size="30" width="222" height="81" position="flex-start" darkWidth="222" darkHeight="81" showCaption="false"}
:::

:::WorkflowBlockItem
Identify the child organization to unlink.
:::

:::WorkflowBlockItem
Click the drop-down arrow next to **Open**.
:::

:::WorkflowBlockItem
Click **Update credits**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/0yQYB74BAIUladhditQPo-20251127-132703.png" size="28" width="202" height="143" position="flex-start" darkWidth="202" darkHeight="143" showCaption="false"}
:::

:::WorkflowBlockItem
Update the **Credits for child organization&#x20;**&#x74;o 0.
:::

::::WorkflowBlockItem
Click **Save**.

:::hint{type="warning"}
Before continuing, allow 1 hour for all ongoing scenarios to finish processing.&#x20;
:::
::::

:::WorkflowBlockItem
Click the drop-down arrow next to **Open**.&#x20;
:::

:::WorkflowBlockItem
Click **Unlink**.
:::

:::WorkflowBlockItem
In **Enter the name to confirm**, enter the name of the child organization.&#x20;
:::

:::WorkflowBlockItem
Click **Unlink organization**.
:::
:::::

The child organization is now unlinked.&#x20;

## Limitations

To sum up, the following are the limitations of Make Managed Services:

- Distributor organizations can only access child organizations as owners or when invited/via SSO.
- Only owners and admins of distributor organizations can unlink child organizations.
- Only owners and admins of distributor organizations can allocate operations. &#x20;


[title] Affiliate program
[path] Your profile/Make programs/

The  Affiliate program lets you earn commission when someone uses your unique link to register for a paid Make account. Affiliate links can be shared directly, on a website, as part of a campaign, and through [scenario sharing](docId:4G_z9ABAtl3i0tKKPv3mI).

Anyone with a Make account can become an affiliate.

- Affiliates earn 35% commission on all referrals from an affiliate link for 12 months. The 12-month time period begins when someone registers using an affiliate link, not from the date of first payment.
- Payments are made when you earn a minimum of $100 and have three unique paying users.
- Commission is earned only from subscription payments, not from the purchase of extra operations.
- Users can't be added to an affiliate account retroactively.
- Payments are exclusively processed through [Wise](https://wise.com/).

:::hint{type="info"}
**Payment example**

A new Make user registers using your affiliate link on November 1, 2025.

The new user starts paying  on December 1, 2025 and they continue to pay for the next three years.

You will earn 35% of every payment between the period of December 1, 2025 and November 1, 2026.
:::

## Register for the  Affiliate program

To register for the  Affiliate program:

:::::WorkflowBlock
:::WorkflowBlockItem
Click your profile icon in the upper-right corner.
:::

:::WorkflowBlockItem
Selec&#x74;**&#x20;Affiliate program**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/FMrSdb-RjkeEqsbhxFrYV-20251007-062818.png" size="30" width="318" height="358" position="flex-start" showCaption="false"}
:::

::::WorkflowBlockItem
In the **Create your unique affiliate code** field, enter a code of your choice between 5 and 20 characters. For example, `johndoe`.

Your code must contain lowercase letters. It can contain numbers.&#x20;

:::hint{type="info"}
The code you choose in this step is final, and it will not be possible to change it. It will be part of the affiliate link we generate for you.
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-XabR8IRXDMIj6IxnElM1p-20250224-110035.png" size="50" width="532" height="238" position="flex-start" alt="Affiliate code" showCaption="false"}
::::

:::WorkflowBlockItem
In the **Insert your Wise email** field, enter your Wise email.
:::

:::WorkflowBlockItem
Select your **Wise account type:** **Personal or Business**.
We highly recommend selecting **Personal**, as **Business** accounts tend to encounter more processing errors during payouts.
:::

:::WorkflowBlockItem
Select your **Preferred payout currency**.
:::

:::WorkflowBlockItem
Complete the short survey, agree to the terms of service, and click **Get your affiliate link.**
:::
:::::

You can find the affiliate link on your affiliate dashboard.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/GI_tGrppLcgA8d4z1J4Au-20251007-112849.png" size="60" width="1320" height="1046" position="center" showCaption="false"}

:::hint{type="info"}
Make provides a [variety of assets](https://www.make.com/en/affiliate-assets) to help you promote your affiliate link, including brand guidelines, logo kits, banner ads, and more.
:::

## View affiliate dashboard

You can see your affiliate link, commission information, and user statistics on the affiliate dashboard. The dashboard also lets you define specific dates to filter statistics such as registrations and rewards.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/uBTrR38d8QbyIJ-Zc5f3I-20251007-112918.png)

The dashboard has the following:

1. **Earning panel**: Displays the total earnings, balance amount, minimum payout, and number of users required to qualify for receiving commission. You can click **Request payout** to receive your commission once you qualify.
2. **Your affiliate link:** Share this link to earn commission.
3. **Orgs. brought:** Displays the number of users and organizations registered using your affiliate referral link.
4. **Conversion rate:** Displays data for both paid (registration vs. paid) and overall (clicks vs. registrations) conversion rates.
5. **User and Organization toggle**: Switches the statistics between users and organizations.
6. **Affiliate settings button:** Opens a dialog box to change settings.
7. **Date filter:** Defines the date range for the statistics shown on the dashboard. The default setting is for the past 30 days. You can [customize this date range](docId\:Q49X24UPoVzL0iUwA4qOP) as needed to analyze trends in more detail.
8. **Registrations and rewards chart:** Color-coded line graph of registrations and rewards earned.

### Change the date filter range

The affiliate dashboard displays statistics for the past 30 days by default. The date filter lets you customize the range of dates for the data displayed on your dashboard. You can define both the start and end date and view the statistics for that period of time. This flexibility lets you analyze trends in more detail from your dashboard.

::::WorkflowBlock
:::WorkflowBlockItem
Go to your **affiliate dashboard**.
:::

:::WorkflowBlockItem
Click on the **Date filter**.
:::

:::WorkflowBlockItem
Define the **Date from** and **Date to** by clicking on the field and using the calendar to select a date.
:::

:::WorkflowBlockItem
Click **Apply**.
:::
::::

You can now see statistics for the updated date range.&#x20;

### Use a shortened link to get source statistics

The  Affiliate program lets you use shortened links, such as TinyURL, and still get information about the source of your users and organizations. You can add the query parameter `affiliateSource` and any value that you define. Create as many short URLs as you like to get statistics for registrations through a specific website, campaign, or any other source.

::::WorkflowBlock
:::WorkflowBlockItem
Copy and paste your affiliate link into TinyURL or a similar product.

`https://www.make.com/en/register?pc=myAffiliate`
:::

:::WorkflowBlockItem
Add `&affiliateSource=yourCustomValue` to your affiliate link.

`https://www.make.com/en/register?pc=myAffiliate&affiliateSource=myBlog`
:::

:::WorkflowBlockItem
Create your shortened URL.
:::

:::WorkflowBlockItem
Share your shortened URL to get information for new registrations via a specific site or campaign.
:::
::::

Information about each specific sources appears on your affiliate dashboard.

## Receive payments

To request a payout to your Wise account, you must meet both of the following criteria:

- Earn at least $100 in commission, and
- Have at least three unique paying users referred with your affiliate link

These requirements reset with every payout request and must be met each time again. They do not accumulate over time.

To receive payments, the following steps must be completed in your Wise account. **Note that if these requirements are not met**,**&#x20;your payment will be canceled due to missing verification information:**

1. Ensure all required bank account details are fully shared with Wise.
2. Complete the Wise account verification process.
3. We recommend selecting the **Personal** account type, as Business accounts tend to encounter more processing errors during payouts.

You can track your progress toward both criteria in the top-left corner of the affiliate dashboard.



To request a payout once you have met the criteria:

::::WorkflowBlock
:::WorkflowBlockItem
Go to the **Affiliate dashboard**.
:::

:::WorkflowBlockItem
Click **Request payout**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/fMsV6y_VJI3kKu8QEX9UV-20260112-082616.png" size="40" width="317" height="288" position="flex-start" showCaption="false"}
:::
::::

The **Request payout** button is replaced with the following text: **Payout requested. Payment is being processed**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/MJMpluzLTojvmRsEhlJ99-20260112-083013.png" size="40" width="314" height="299" position="flex-start" showCaption="false"}

You will receive email notifications when the payout is requested, when the payout is approved, and if there is problem making a payment to your Wise account.&#x20;

## View your Wise account information

 stores your Wise account information and uses this information to send your commission.&#x20;

To view your Wise account information:

::::WorkflowBlock
:::WorkflowBlockItem
Go to the **Affiliate dashboard**.
:::

:::WorkflowBlockItem
Click **Affiliate settings**.
:::
::::

A window opens displaying your current Wise account information. Click **Close** to close the window without changing your saved information.

## Update your Wise account information

To update your Wise account information:

::::WorkflowBlock
:::WorkflowBlockItem
Go to the **Affiliate dashboard**.
:::

:::WorkflowBlockItem
Click **Affiliate settings**.
:::

:::WorkflowBlockItem
A dialog opens displaying your current Wise account information. Update your **Wise email**, **Wise account type**, and **Preferred payout currency**.
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

The window closes and a notification appears in the lower right confirming the change.

[title] New MMS options, app updates
[path] Release notes/2026/

## New Make Managed Services (MMS) options

We're providing users of [Make Managed Services (MMS)](docId\:eBvcaOvODdwfLk-0hRM-u) with more options. You can now create and manage child organizations and change credit allocations [using the API](https://developers.make.com/api-documentation/api-reference/mms-greater-than-child-organizations). You can also [monitor child organization data transfer and credit consumption](docId:89oj6fo2rULPSvPIHyBK9) in your dashboard.

## App updates

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/AddlbbPXUPVkrjqxDMFQ4-20260116-165347.png" darkSrc="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/AddlbbPXUPVkrjqxDMFQ4-20260116-165347.png" size="50" width="208" height="208" darkWidth="208" darkHeight="208" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Anthropic Claude](https://apps.make.com/anthropic-claude) — The **Claude Sonnet 4.6** model is now available in the **Simple Text Prompt** module. You can find pricing details for the models in the [Anthropic Claude modules](https://apps.make.com/anthropic-claude#anthropic-claude-modules) section.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/tdYfNqzlP07CFkJRfaxTX-20260225-120306.png" darkSrc="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/tdYfNqzlP07CFkJRfaxTX-20260225-120306.png" size="50" width="800" height="800" darkWidth="800" darkHeight="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Google Business Profile](https://apps.make.com/google-my-business) — The **Google My Business** app has been renamed to **Google Business Profile**.

We’ve added a new connection type to the Google Business Profile app. You can now create a connection without entering client credentials.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ggfVyE5rQciUVF-vT-B9P-20251124-100608.png" darkSrc="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ggfVyE5rQciUVF-vT-B9P-20251124-100608.png" size="50" width="800" height="800" darkWidth="800" darkHeight="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Typeform](https://apps.make.com/typeform) — When creating a connection, you now need to select the API region where Typeform stores your response data. For details, see the [Typeform app documentation](https://apps.make.com/typeform#connect-typeform-to-make).
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Ng3iD08wbhMHkNnQSv20Q-20260225-105323.png" darkSrc="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Ng3iD08wbhMHkNnQSv20Q-20260225-105323.png" size="50" width="208" height="208" darkWidth="208" darkHeight="208" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Fathom](https://apps.make.com/fathom) — The **Limit** field now works correctly across all Fathom modules. You can use it without encountering 401/404 errors or ignored values.
:::
::::

### New connection type in the Zendesk apps

We've added a new connection type to the **Zendesk**, **Zendesk Sunshine**, and **Zendesk Guide** apps. This connection type supports the OAuth refresh token flow and provides a secure, uninterrupted connection.

The **Legacy** connection type will expire on **April 30, 2026**. To migrate, please create a new connection using the **Zendesk** connection type.

### Region support in the Zoho apps

The following Zoho apps now support all regions, removing the need to select your Zoho account's region when creating the connection:

- [Zoho Campaigns](https://apps.make.com/zoho-campaigns)
- [Zoho Sheet](https://apps.make.com/zoho-sheet)
- [Zoho Writer](https://apps.make.com/zoho-writer)
- [Zoho Cliq](https://apps.make.com/zoho-cliq)
- [Zoho Creator](https://apps.make.com/zoho-creator)
- [Zoho People](https://apps.make.com/zoho-people)


[title] New payment methods for greater flexibility
[path] Release notes/2026/

## What's new?&#x20;

In addition to credit and debit cards and ACH direct debit, you can now choose from even more payment methods: 

- Digital wallets (Apple Pay, Google Pay, Amazon Pay, and Cash App Pay),
- Link for one-click checkout, and&#x20;
- Klarna, to pay in installments or via custom financing.

## Key benefits

- Greater flexibility: Select from a variety of payment options to best suit your needs.
- Faster checkout: One-click checkout to instantly autofill your details.
- No extra fees:  does not charge any additional transaction fees.

## Who it's for

New payment options are available for Core, Pro, and Teams plans. Enterprise customers should continue to reach out to your Account Manager for custom invoicing options.

## Where to find it

Payment methods are available during checkout in . You can also [change your payment details](https://help.make.com/change-payment-details) at any time in the Organizations settings, under **My Plan > Subscription**.

## Learn more

For more information on pricing and payment options, see our [Pricing](https://www.make.com/en/pricing) page and the [Change payment details article](https://help.make.com/change-payment-details).



[title] Unified Help search and deprecation of filters
[path] Release notes/2026/

Here's a quick look at our most recent product improvements and fixes.

## Unified Help search inside Make

**Help** now gives you a unified search experience across key areas of , so you can find guidance while you build, review, or update scenarios.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/2N0kl3GA67bR0TYMKXiNt_image.png)

### Key benefits

- **One place to search**: Use the same help search across supported parts of , including the  overview, scenario builder header, and main help menu.
- **Help where you work**: Open **Help** from the scenario overview or directly from the builder header while you plan logic, map data, or check scenario settings.
- **Cleaner entry points**: When unified search for help is on, duplicate help buttons are removed.&#x20;

***

## Deprecation of filters

Four filters are no longer available when setting up search conditions in Data Store modules.

- Matches pattern&#x20;
- Matches pattern (case insensitive)
- Does not match pattern
- Does not match pattern (case insensitive)

### What changed

These filters can no longer be selected when configuring new . Existing  that already use these filters continue to work without any changes.

To replicate this functionality going forward, you can combine other available filters within the Data Store module, or apply these same pattern-matching filters in a module that runs after the Data Store module.


[title] Domain claim
[path] Your organization/Access management/

:::hint{type="info"}
This feature is available to Enterprise customers.
:::

Claiming a domain prevents your members from accidentally creating their own self-service accounts. After you set up single sign-on (SSO), claim your email domain so  can recognize your new users. Any new user who signs in with your claimed email domain gets a prompt to use SSO. You can provision your new members by:

- Creating a global provision that assigns all new members to a team you choose.
- [Using an API endpoint to create new users and assign them to a team.](docId\:sox7tIAcDDv9bdKVh5Kj2)

To claim a domain:

1. [Add your domain on Make's SSO setup page](docId\:sox7tIAcDDv9bdKVh5Kj2).
2. [Add your verification code to your domain's DNS](docId\:sox7tIAcDDv9bdKVh5Kj2).
3. [Verify your domain on Make](docId\:sox7tIAcDDv9bdKVh5Kj2).

Once verified,  recognizes login and registration attempts using your email domain and redirects them to your SSO.

## Add your domain on Make

::::WorkflowBlock
:::WorkflowBlockItem
Click **Organization** in the left sidebar.
:::

:::WorkflowBlockItem
Click the **SSO** tab.
:::

:::WorkflowBlockItem
Click **Domain verification** to expand that section.
:::

:::WorkflowBlockItem
Click **+Add domain**.
:::

:::WorkflowBlockItem
In the dialog box, for **Domain**, enter your organization's domain. For example:`acme.com`, `mybusiness.net`
:::

:::WorkflowBlockItem
Click **Add**.
:::
::::

The dialog box displays the verification code you need to add as a TXT record to your domain's DNS.&#x20;

Your verification code can be found at **Organization > SSO > Domain verification**.

## Add your verification code to your domain's DNS records

Once you have your verification, add it to your domain's DNS records as TXT. The details vary based on your domain host.

The following steps describe the general process. Contact your domain host for detailed help.

::::WorkflowBlock
:::WorkflowBlockItem
In a separate browser window or tab, go to your domain host and sign in.
:::

:::WorkflowBlockItem
Find the DNS records section of your domain host. Possible names are **DNS Management**, **Name Server Management**, **Control Panel**, **Advanced Settings** or similar.
:::

:::WorkflowBlockItem
Find and select the option to add a new record.
:::

:::WorkflowBlockItem
Use the following information to add a new record:

| **Possible field name**                            | **Information to enter**                                                                                    |
| -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| **Record type** or **Type**                        | TXT                                                                                                         |
| **Name**, **Host, Hostname, or Alias**             | Leave blank or enter @<br /><br />Check with your domain host's support documentation for more information. |
| **Value, Data, Answer, Destination, or Points to** | Paste your verification code from .                                                                         |


:::

:::WorkflowBlockItem
Save your new record.
:::
::::

## Verify your domain on Make

After you add your verification to your DNS, you can complete the process on .

::::WorkflowBlock
:::WorkflowBlockItem
Click **Organization** in the left sidebar.
:::

:::WorkflowBlockItem
Click the **SSO** tab.
:::

:::WorkflowBlockItem
Click **Domain verification** to expand that section.
:::

:::WorkflowBlockItem
Find your domain on the list.
:::

:::WorkflowBlockItem
Under **Actions**, click **Verify**.
:::
::::

Your status changes to **Verified** and the domain claim is successfully configured.

## Verification status

| **Status** | **Explanation and steps required**                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Unverified | You have not yet verified your domain. Complete the steps in this article to resolve this status.                                                                                                                                                                                                                                                                                                                                                   |
| Verifed    | You have successfully claimed your domain. No further action required.                                                                                                                                                                                                                                                                                                                                                                              |
| Suspended  | You have disabled your SSO configuration. Enable SSO and try to verify again.                                                                                                                                                                                                                                                                                                                                                                       |
| Failed     | Possible reasons include: <br />* The DNS is unavailable: Check with your domain host.
* The DNS record does not exist: Wait and try again.  If the problem continues, contact your domain host.
* The DNS record contains an incorrect value: Review the code you entered with your domain host and correct any errors.&#x20;
* Another organization has verified the domain: Check that you do not have another organization with a domain claim. |

## Provisioning new users

Without a claimed domain, you can use the SSO settings to globally assign users to a team that you specify. This provisioning happens when a new user logs in using your identity provider.  gets information such as the email address and user name from your identity provider during login.

After you claim a domain, you can use an API endpoint to create new users and assign them to specific teams.

### Create and provision users for Enterprise SSO

You can create a new user in your organization and assign their SSO external ID by calling the `POST /users/user-sso-create` endpoint. The `addUserToDefaultSsoTeams` parameter lets you define whether the new user is automatically added to the default team(s) designated in your SSO configuration. If the new user is not assigned to your default team(s), you can assign the new user to any team in your organization by using the API call `POST/users/{userId}/user-team-roles/{teamId}`.

`POST` /users/user-sso-create

Required permission: `users sso edit`

This endpoint creates a new user in your organization and assigns their SSO external ID in one API call. Use the `addUserToDefaultSsoTeams` parameter to define whether the new user is automatically added to the team(s) designated as default in your SSO configuration. If the new user is not assigned to your default team(s), you need to [assign new users to your teams](https://developers.make.com/api-documentation/api-reference/users/user-organization-roles/post--users--userid--user-organization-roles--organizationid).

| **Parameter name**         | **Data type** | **Required?** | **Description**                                                                                                                                                                                                                           |
| -------------------------- | ------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `email`                    | string        | **Yes**       | The user's email.<br /><br />Example: john\@doe.com                                                                                                                                                                                       |
| `name`                     | string        | **Yes**       | The name of the user.<br /><br />Example: John Doe                                                                                                                                                                                        |
| `countryId`                | integer       | **Yes**       | The ID of the user's country. Get the list of country IDs with the API call `GET /enums/countries`.<br /><br />Example: 1                                                                                                                 |
| `timezoneId`               | integer       | No            | The ID of the user's timezone. Get the list of the timezone IDs with the API call `GET /enums/timezones`.<br /><br />Example: 113                                                                                                         |
| `localeId`                 | integer       | No            | The ID of the user's locale. Get the list of locale IDs with the API call `GET /enums/locales`.<br />Example: 18                                                                                                                          |
| `ssoId`                    | string        | **Yes**       | The external ID for SSO. You can associate any parameter in the SSO payload to identify users, such as email or an ID from your Identity provider.<br /><br />Examples:<br />example.employee\@example.com<br />12EXample3456id78string90 |
| `organizationId`           | integer       | **Yes**       | The ID of your organization.<br /><br />Example: 22                                                                                                                                                                                       |
| `addUserToDefaultSsoTeams` | boolean       | No            | This parameter is deprecated. The SSO configuration in the UI has an option to not assign new users to a team.                                                                                                                            |



Example request:

```typescript
{
    "email": "a.example@example.com",
    "name": "Anne Example",
    "countryId": 1,
    "timezoneId": 113,
    "language": "cs",
    "localeId": 11,
    "ssoId": "a1e8af1bd9b4d2c602fb8c687182633c6854b0e7",
    "organizationId": 54,
    "addUserToDefaultSsoTeams: false
}
```

Example response:

```typescript
{
    "user": {
        "user_id": 86,
        "email": "a.example@example.com",
        "name": "Anne Example",
        "country_id": 1,
        "language": "cs",
        "locale_id": 11,
        "timezone_id": 113,
        "sso_id": "a1e8af1bd9b4d2c602fb8c687182633c6854b0e7",
        "organization_id": 54
    }
}
```

The response includes `user_id` and `organization_id` which you can map in a scenario to provision your users.

[title] Introducing Module Migrator
[path] Release notes/2026/

The **Module Migrator&#x20;**&#x61;pp is now available in .&#x20;

The Module Migrator is a standalone app built to streamline the transition from deprecated modules to their latest ones. This tool automates the identification and replacement of deprecated modules, significantly reducing the manual effort required to keep your scenarios up to date.

:::hint{type="info"}
Please note that the migration is not supported for all apps. You can view the full list of currently supported apps in Module Migrator itself.
:::

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/UODS7fEMn81fYCybmLR3Y-20260424-065106.gif)

## What you can do

- Search which scenarios contain deprecated modules.
- Identify modules that are outdated and need updates.
- Depending upon the scenario, decide whether the migration can be fully automated or requires manual intervention.

## Guided troubleshooting

For scenarios that require manual updates, the app returns a **Warning&#x20;**&#x62;undle. This bundle contains specific, step-by-step instructions on how to adjust your configuration to match the new module requirements.

## Learn more

To learn more about this feature, see the [Module Migrator](https://apps.make.com/module-migrator) documentation.


[title] Introducing Credential requests
[path] Release notes/2026/

:::hint{type="success"}
This feature is available to official **Make** **Partners** and **Enterprise&#x20;**&#x63;ustomers upon request. To enable it, each user needs to submit a [form](https://f.make.com/r/credential-requests). Receiving and authorizing requests is available to all users.&#x20;
:::

You can now use credential requests to securely collect connection credentials from third parties. This feature lets you specify which connections and credentials are required to build a scenario and send a request link. 

Recipients can use this link to join your Make organization with a **Guest** role, with permissions limited to providing and managing the requested connection credentials. &#x20;

## When to use it

- Setting up automations for clients without asking them to share passwords
- Collecting credentials from team members for a shared workflow
- Onboarding partners who need to authenticate with their own accounts

## Key benefits 

- **Secure sharing**: Send a single secure link instead of asking for credentials via email or waiting for screenshots.****
- **Faster authorization**: Recipients can authorize connections in minutes. No waiting for responses, no manual setup on your end.
- **Full data control:** Recipients can view, authorize, revoke, or delete their credentials at any time, without accessing any other data within your Make organization.

## Where to find it

Once you get the feature enabled, click **Credentials** in the left sidebar and switch to the **Credential** **requests&#x20;**&#x74;ab.&#x20;

In the **Sent** tab, a requester can create, submit, view, and manage sent credential requests. In the **Received** tab, a recipient can view, authorize, decline, and revoke credential requests.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Z20pbCTh_Hh1WPOvfMOG3-20260203-110940.png)

## Where to learn more

- ﻿Technical documentation: [Credential requests](https://help.make.com/credential-requests)

[title] Make Managed Services (MMS)
[path] Your organization/

Make Managed Services (MMS) is a product offering that lets distributors of  manage multiple organizations under a single entity. You can manage child organizations in the  platform or with the [Make API](https://developers.make.com/api-documentation/api-reference/mms).

With MMS, organizations can now easily distribute Enterprise licenses to clients and manage their operations in one place, or create automations for clients after an easy, quick user setup.&#x20;

## Who can use it

Make Managed Services is useful to distributors that need to manage organizations on behalf of their clients, such as  resellers or automation experts who build for organizations.&#x20;

## What you can do with it

Make Managed Services allows organizations to:

- Create child organizations&#x20;
- Allocate and adjust credits across child organizations
- Assign ownership of child organizations&#x20;
- Pause child organizations
- Unlink child organizations

MMS offers separate data between child and distributor organizations, flexible operation distribution, and integrated Single Sign-On (SSO) capabilities across organizations.

:::hint{type="info"}
You can also create and manage child organizations and change credit allocations [using the API](https://developers.make.com/api-documentation/api-reference/mms).
:::

## How it works

Make Managed Services is a space in  to manage child organizations and allocate their operations.&#x20;

MMS consists of a distributor organization and its child organizations:

- The **distributor organization** is the organization that can create and manage child organizations, assign their owners, and allocate operations.&#x20;
- The **child organization&#x20;**&#x69;s the organization linked to the distributor organization. Child organizations have access to all Enterprise user benefits, except for allocating their own operations. They can invite distributor organizations (including via [SSO](https://help.make.com/single-sign-on)) to access their organization.&#x20;

In this example, Urban Sprout is the distributor organization and the child organizations (Child organization #1, Child organization #2, etc.) are listed below.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/rM2d1ZBahwFSi-H3CCYLe-20260112-112449.png)

Distributor organizations allocate operations to child organizations by drawing from their total operations.

To learn more about Make Managed Services, [talk to sales](https://www.make.com/en/talk-to-sales).&#x20;

[title] Delete your profile
[path] Your profile/Profile settings/

We're sad to see you go!

:::hint{type="warning"}
Once you delete your profile, you won't be able to restore it. We suggest you consider canceling the subscription and  [downgrading to a Free plan](docId\:yzZ92JGP1VgcrPS22qGTS) in case you still want to have access to your created .
:::

::::WorkflowBlock
:::WorkflowBlockItem
Click your profile icon in the upper-right corner and select **Profile**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/vcDiW6ub_4UMUDzN_XbTN-20251002-080928.png)
:::

:::WorkflowBlockItem
In the upper-right corner of the **Profile page**, click the three dots next to the **Profile settings**, and selec&#x74;**&#x20;Delete profile**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/2FGJqaZDzBONTry1VO7O9-20251002-081506.png" size="40" width="756" height="602" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
In the pop-up that opens, you can select if you want to delete all the connections you've created. If you decide to delete your connections, all the  using these connections will stop working. If you decide to keep the connections, other users in your organization will still be able to use them.&#x20;

Enter your password and click **Delete** to confirm.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/F-ciH-SQiRZ074s4FRFE2-20251002-081549.png" size="50" width="884" height="794" position="center" showCaption="false"}
:::
::::

:::hint{type="info"}
If you're a part of the organization with multiple users, only your profile will be deleted, not the whole organization. If you are the only user in the organization, the whole organization will be deleted together with your profile.
:::


[title] OpenAI GPT-5.4 nano and mini now available in Make
[path] Release notes/2026/

OpenAI's GPT-5.4 mini and nano are now available in Make. These models are built for speed and efficiency, giving you more options when choosing models for multi-step and agentic workflows.&#x20;

## What's new

- `GPT-5.4 mini` offers a good balance of strong reasoning, speed, and affordability, and is ideal for coding and multimodal tasks.&#x20;
- `GPT-5.4 nano` is a cost-efficient choice for simpler, repetitive tasks, such as data extraction, classification, and routing.

## Key benefits

- **Shorter run times:** Mini and nano handle high-volume work that needs to move fast.
- **More model variety:&#x20;**&#x55;se larger models for orchestration, and mini or nano for subtasks at any scale.
- **Cheaper multi-step workflows:** Build complex scenarios for classification, intent detection, ranking, triage, and heavy text processing at a lower cost.

## Where to use in Make

You can find GPT-5.4 mini and nano in these apps:

- [OpenAI](docId\:erxxzX7nTkonc19SOjhO8): **Simple Text Prompt**, **Generate a Response**, and **Generate a Completion&#x20;**&#x6D;odules
- [Make AI Toolkit](https://apps.make.com/ai-tools) and [Make AI Agents](https://help.make.com/make-ai-agents-new)

Connect to these models with [Make's AI Provider](docId\:hh-nrTakEqakBmg63UUiN) (no OpenAI account required) or your OpenAI account API key.&#x20;

[title] 2025
[path] Release notes/

The 2025 release of  introduces the following new features and updates.

::::LinkArray{contentSource="CUSTOM" itemsPerRow="1"}
:::LinkArrayItem
`December 2, 2025`

[New HTTP app is now available](https://help.make.com/new-http-app-is-now-available)

Discover the new HTTP app that enables secure, scalable API integrations with easy setup, reusable data, and built-in pagination.
:::

:::LinkArrayItem
`November 26, 2025`

[Introducing Credit usage history](docId\:s0yHm48a4duB6m3CnCPgJ)

Track all credit usage in one place across scenarios and AI agents, with run-level details to monitor, analyze, and optimize efficiently.
:::

:::LinkArrayItem
`November 20, 2025`

[Introducing Feature controls](docId\:DaO4inDZGQesYU9a5S_UL)

Easily enable or disable AI and beta features across your organization with simple ON/OFF toggles for controlled rollout and risk management.
:::

:::LinkArrayItem
`November 13, 2025`

[Make AI Web Search, MCP client and MCP server improvements](docId\:W730dCTT58O9lxFbcXqQ2)&#x20;

Run secure, real-time web searches directly in scenarios, for precise results. Automate tasks with AI using MCP tools; select tools and execute automatically. Make MCP server now uses Stateless Streamable HTTP for reliable connections.
:::

:::LinkArrayItem
`November 10, 2025`

[New Make AI Agents Reasoning feature: OpenAI reasoning model users must verify organization](docId\:iYEGANDJ9lOvksBSmFjVM)

Make AI Agents launches a new Reasoning feature, requiring OpenAI organization verification for continued use of reasoning models like GPT-5.
:::

:::LinkArrayItem
`November 7, 2025`

[Organization and team info, apps updates](docId\:zNya8GHUS2aRwQNy3odAW)

Discover the latest Scenario Builder update, featuring enhanced organization visibility. Plus app updates for OpenAI, MCP Client, Notion, Runway, Virtuagym, and Parseur.
:::

:::LinkArrayItem
`November 6, 2025`&#x20;

[Introducing scenario sharing](https://help.make.com/introducing-scenario-sharing)

Learn about the new scenario sharing feature that allows seamless sharing via links or social media, ensuring updated access without file hassles - no login required!
:::

:::LinkArrayItem
`November 6, 2025`

&#x20;[Adjustments to plans and pricing](docId\:MYe2UrP_P6V8bFK6WKtKp)

Extra credit pricing updates, revised credit limits for Core and Pro plans, and custom AI provider connections now available on all paid plans.
:::

:::LinkArrayItem
`November 4, 2025`

[New navigation now live for all users](https://help.make.com/new-navigation-now-live-for-all-users)

Experience our platform's redesigned navigation with a streamlined sidebar, easier access to settings, and a refreshed visual interface for all users.
:::

:::LinkArrayItem
`October 23, 2025`

[Scenario run replay and naming capabilities now available](docId\:B64iAbYEcHvsbZOIm2UN9)

Scenario run replay and custom run names are now available on all plans, letting you replay runs to test or backfill data and label executions for easier tracking in scenario history.
:::

:::LinkArrayItem
`October 23, 2025`

[Upcoming adjustments to plans and pricing](docId\:oJ3f0X7DnJ3pmcHoCqc_q)

Starting November 6, 2025, new credit cost structures and enhanced features will streamline user experience, allowing seamless access to AI services across all plans.
:::

:::LinkArrayItem
`October 10, 2025`&#x20;

[AI Assistant Beta retirement – October 14, 2025](docId:6hXi4FyiMHVg5K9roh3hW)

The current Make AI Assistant will be retired on October 14, 2025, paving the way for an upgraded experience.
:::

:::LinkArrayItem
`October 9, 2025`

[New MCP server connection options, role permission fix, apps updates](docId\:nvEznL1Wf0iEu_iq-wY0v)

Discover the latest updates on the Make MCP server, featuring new OAuth and Streamable HTTP connections, enhanced app functionalities, and critical role fixes for secure integrations.
:::

:::LinkArrayItem
`October 8, 2025`

[New Gmail app is now available](https://help.make.com/new-gmail-app-is-now-available)

The new Gmail app is now available, offering easier setup without GCP projects and new modules for replying, searching, drafting, and managing emails in scenarios.
:::

:::LinkArrayItem
`October 6, 2025`

[Introducing module tools for AI agents](https://help.make.com/introducing-module-tools-for-ai-agents)

Make's enhanced AI Agent features simplify setup by automatically creating scenarios for module tools, now easily managed in the Tools section.
:::

:::LinkArrayItem
`October 2, 2025`

[The Make Code app is available](docId\:kYvzlBxFghh-g0Gnij5BP)

Explore the new Make Code app, enabling seamless integration of JavaScript or Python with a built-in IDE, secure testing, and easy code sharing for paid plan users.
:::

:::LinkArrayItem
`October 1, 2025`

[Enhanced navigation in Make](docId\:HBm7Cg13L9sCwqo4ujTLj)

Experience the redesigned navigation in , featuring an intuitive interface and new features that enhance user experience and streamline access to essential tools.
:::

:::LinkArrayItem
`September 11, 2025`

[Make AI Toolkit, simplified MCP token creation, apps updates](docId\:XZqqGBRR-gJ7YrarwVC_Y)

Find the latest updates to the Make platform, featuring streamlined token creation, the new Make AI Toolkit for various AI tasks, and enhanced integrations for Slack and WhatsApp.
:::

:::LinkArrayItem
`September 4, 2025`&#x20;

[\[RESOLVED\] Alert: An outage may have impacted your scenario execution on 4 September, 2025](docId\:V7IsO50CWwns247RkGCP2)

On September 4, 2025, Make experienced a brief outage; learn how to check for missed events, resubmit data, and the steps taken to enhance system security.
:::

:::LinkArrayItem
`September 1, 2025`&#x20;

[Credit dashboard display fix](docId\:v5j8NQQNbbMphAYyRe0ln)

A recent fix resolved UI bugs affecting credit consumption and balances on dashboards, ensuring accurate display of credits across multiple sections for a seamless user experience.
:::

:::LinkArrayItem
`August 27, 2025`

[Introducing credits: new billing unit live in Make](docId\:JXDsM3o7w4KLcyY4tL9Rk)

Discover Make's transition from operations to credit-based billing, ensuring current prices stay unchanged while tracking usage is easy through our dashboard and resources.
:::

:::LinkArrayItem
`August 26, 2025`

[Scenario inputs scheduling, OpenAI modules support GPT-5](docId:8ES4-43IEMsLm-Vo5wmkP)

Learn about key updates on scenario inputs, on-demand scheduling, and exciting new features in apps like Zoho WorkDrive, Zoho CRM, Zoho , OpenAI's GPT-5, and Runway's image generation.
:::

:::LinkArrayItem
`August 14, 2025`

[Context modules added to Make AI Agents app](docId\:glYC_rSv3312Ji39nwkWa)

Check out the new Make AI Agents in Open Beta, designed for effortless context file management and scenario integration for paid users.
:::

:::LinkArrayItem
`August 13, 2025`

[Coming soon: credits as new billing unit in Make](docId\:f369uyGOi1KTT99KNgTIB)

Starting August 27, 2025, billing shifts to credits, converting operations 1:1, while maintaining plans and enabling dynamic usage tracking for advanced features.
:::

:::LinkArrayItem
`August 8, 2025`

[Google Sheets add-on, new OpenAI module](docId\:QADRe9EbTGlWSo8P1bTgj)

Enhance workflows with ADP Workforce Now and find the latest updates for OpenAI, Google Sheets, Teams, Monday.com, Runway, Trello, and Klaviyo for better integration and productivity.
:::

:::LinkArrayItem
`July 28, 2025`

[Scenario rate limits for instant triggers](docId\:eiOU3MXaojYbPhQxJLOYY)

Learn how to set execution limits on instant scenarios to prevent overloads, manage high-volume tasks, and enhance workflow reliability with our new features.
:::

:::LinkArrayItem
`July 24, 2025`

[Make AI Content Extractor, new Shopify version, app updates](docId\:moAmJOW5CX96A6FQMIqz8)

Introducing new apps - Make AI Content Extractor, Pictory, and Postiz. Find updates to OpenAI, Shopify, Webhooks, Make, Salesforce Pardot, Calendly, LiveChat, and Printful enhance automation, security, and workflows.
:::

:::LinkArrayItem
`June 24, 2025`

[Make Grid public beta is now live!](docId\:kkAouHR1fxbOQc_wo334O)

Explore Make Grid's public beta for paid plans, featuring a unique auto-generated visual map for real-time management of your automation and AI environments.
:::

:::LinkArrayItem
`May 30, 2025`

[Latest AI models for OpenAI and Gemini, UI updates to module rename panel](docId\:k7LIspPTXhslbyMvkQ8UV)

Discover the latest updates in the module renaming panel, featuring enhanced user interface options and updates to OpenAI, Google Vertex AI, and YouTube apps.
:::

:::LinkArrayItem
`May 20, 2025`

[Make AI Tools now available in Open Beta](docId\:YcgUXcI8NQ8x3zJhec31V)

Unlock AI tools with Make's paid plans, featuring nine pre-built modules for tasks like sentiment analysis and translation, all without writing prompts or AI accounts.
:::

:::LinkArrayItem
`May 2, 2025`

[Make TypeScript SDK & App updates](docId\:kicR3lOK4a_tFGF2oD6uh)

Make TypeScript SDK launched with full API support and error handling and automatic collection conversion. New apps like SAP SuccessFactors, XLSX, Amazon Bedrock, Clay, and updates to OpenAI, xAI, Monday.com, Crowdin, and Facebook Pages.
:::

:::LinkArrayItem
`April 25, 2025`

[Make AI Agents: The next step in automation](docId\:k8RUf3qaKfYla4Z_MLs5p)

Discover how Make's AI Agents enhance automation for paid plans with intelligent workflows, customizable prompts, and versatile language models for real-time decision-making.
:::

:::LinkArrayItem
`April 17, 2025`

[Affiliate payouts, incomplete execution retries, new apps](docId\:rJYlg81a6Yfjtx9r28NpC)

Wise replaces PayPal for faster affiliate payouts, improves retry handling and mapping, new apps such as Adobe Workfront, Amazon Rekognition, Kimi, and updates to OpenAI GPT-4.5, Azure DevOps, Twilio, and more.
:::

:::LinkArrayItem
`April 3, 2025`

[X (formerly Twitter) app integration discontinued](docId\:zslZ0nMo-bsa4kkatySHz)

The X (formerly Twitter) app integration is removed due to API policy and pricing. Existing scenarios run until May 30, 2025. Explore alternatives like Buffer, Hootsuite, Bluesky, or Mastodon.
:::

:::LinkArrayItem
`February 21, 2025`

[OAuth 2.0 integration, enhanced analytics, new apps](docId\:ZEm_BSQJffFXnxTYsGtGN)

Connect third-party apps via OAuth 2.0, export scenario history to CSV, use enhanced Analytics filters, rename keys easily, and access new apps like Bluesky and ClickFunnels 2.0.
:::

:::LinkArrayItem
`February 7, 2025`

[Enhanced notes & team-level operations management](docId\:WrUTTC4dlj2iLeEHaG40h)

Enhanced notes with rich text, new enterprise feature - Operations per team management, advanced modules for managing incomplete scenario executions, and updated app features for OpenAI, Workday, and Salesforce.
:::

:::LinkArrayItem
`January 27, 2025`

[Incomplete executions retry](docId\:mSRboRWMAgPNH5wb3IpXP)

Users can now simultaneously retry multiple incomplete executions and optimize logo processing with updated specs for better color accuracy in our latest documentation.
:::

:::LinkArrayItem
`January 10, 2025`

[Apps updates](docId\:jTcSaYSMfr_wGS101nge_)

Explore new apps like Braze and Snapchat Campaign Management, along with key updates to OpenAI and Instagram for Business features.
:::
::::








[title] Dynamic labels for HTTP and Sleep modules
[path] Release notes/2026/

[HTTP](docId:5GI97S_UPABN115Gb-oVb) and [Sleep](https://help.make.com/util#sleep) modules now have labels that update automatically based on the module settings. **HTTP&#x20;**&#x6D;odules show the request method and endpoint path, and **Sleep&#x20;**&#x6D;odules show the delay time.&#x20;

## What's new

**HTTP&#x20;**&#x61;nd **Sleep&#x20;**&#x6D;odules now have these dynamic labels:

- **HTTP&#x20;**&#x6D;odule labels show the request method and the endpoint path, for example, `GET` `/contacts` or `POST` /`orders`.
- **Sleep&#x20;**&#x6D;odule labels show the configured delay time. For example, a module with a configured delay of 1 hour and 46 seconds displays `1h 46s` `Sleep`.

## Key benefits

Dynamic labels for **HTTP&#x20;**&#x61;nd **Sleep&#x20;**&#x6D;odules help you:

- **Identify modules:&#x20;**&#x56;iew request methods, endpoint paths, or delay times without opening module settings.
- **Review scenarios:** Understand the logic of  with multiple HTTP calls or staggered delays across the canvas.&#x20;

[title] Extra credits
[path] Your organization/Subscription/

## Validity of extra credits

Extra credits are valid for the current billing cycle.

**Monthly billing plans**

Extra credits are valid until the end of your current billing cycle. For example, if your billing cycle runs from the 1st to the 31st of each month and you purchase extra credits on the 20th, those credits will expire on the 31st.&#x20;

**Annual billing plans:**

Extra credits remain valid until the end of your billing year.

:::hint{type="warning"}
For the **Core&#x20;**&#x70;lan with annual billing, your regular credits reset monthly, and any extra credits you purchase will also expire at each monthly reset.&#x20;
:::

Extra credits include additional data transfer allowance, but they don't affect other usage limits or parameters in your plan.

## Buy extra credits manually

If you're on a paid plan, you can buy extra credits at any time from the **Subscription&#x20;**&#x74;ab in **Organization**.

 consumes the credits included in your subscription first, and then your extra credits. For example, if your subscription has 40,000 credits per month, you use those credits before consuming any extra credits purchased. Credits 0 to 40,000 are included in your subscription. Credits 40,001 and onward are your extra credits.&#x20;

:::hint{type="info"}
Extra credits purchasing is available to users on paid plans.&#x20;
:::

**To buy extra credits manually:&#x20;**

:::::WorkflowBlock
:::WorkflowBlockItem
Navigate to **Org&#x20;**&#x66;rom the left sidebar, then to the **Subscription** tab in **My Plan**.&#x20;
:::

:::WorkflowBlockItem
In the upper-right corner, click **Buy extras**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/GqBVyF4rTHph_qHsRwJRP-20251009-094213.png)
:::

::::WorkflowBlockItem
Use the + and - buttons to adjust the number of extra credits in units of 1,000.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/fZNuz7VniurScEsAf-Xay-20251009-095106.png" size="64" width="809" height="675" position="center" showCaption="false"}

:::hint{type="warning"}
Manually purchased extra credits includ&#x65;**&#x20;a 25% additional cost** compared to the credits in your plan. The cost of extra credits is the same whether you purchase them manually or through auto-purchasing.&#x20;

For example, if you subscribe to a $9 plan and have 10,000 credits, 1 credit costs $0.0009 ($9 / 10,000 credits). If you decide to buy 1,000 extra credits, it costs $1.125 (1,000 credits \* $0.0009 \* 1.25). If you decide to buy 10,000 extra credits, it costs $11.25 (10,000 credits \* $0.0009 \* 1.25).
:::
::::

:::WorkflowBlockItem
Click **Select payment method**.
:::

:::WorkflowBlockItem
Click the dropdown menu to select a payment card.

You can only use credit or debit cards to pay for extra credits.
:::

:::WorkflowBlockItem
Click **Proceed to payment**.
:::

:::WorkflowBlockItem
You'll now see the extra credits added to your total.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/X4ucXhl97FL8R4xqnWq_b-20251009-100026.png)
:::
:::::

:::hint{type="info"}
If you regularly use more credits than those included in your plan, we recommend moving to a plan that better matches your credit usage. Higher-tier plans have lower per-credit costs, so you'll minimize spending on extra credits by being on the right plan.
:::

You can also buy extra credits from the **Organization&#x20;**&#x64;ashboard:

::::WorkflowBlock
:::WorkflowBlockItem
Navigate to **Org&#x20;**&#x66;rom the left sidebar.&#x20;
:::

:::WorkflowBlockItem
Click **Buy extra credits**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/clsNuBtfK8td1YxyilFBV-20251002-150111.png)
:::

:::WorkflowBlockItem
Complete the purchase following the steps described above.&#x20;
:::
::::

## Enable credits auto-purchasing

You can ensure your  continue running with extra credits auto-purchasing. Extra credits auto-purchasing covers you when you reach your credit limit by automatically purchasing extra credits.

When you use all of the credits in your subscription,  automatically purchases 10,000 extra credits. All automatic purchases are in units of 10,000 credits.  then bills you for the 10,000 extra credits.

If you use all 10,000 extra credits,  auto-purchases 10,000 credits again.  limits auto-purchasing to the number of credits in your subscription. For example, if your plan has 80,000 credits,  auto-purchases a maximum of 8 times.

:::hint{type="warning"}
When you enable auto-purchasing, you'll pay for the extra credits plu&#x73;**&#x20;a 25% additional cost**. This covers the cost and flexibility of keeping your scenarios running when you reach your credit limit. For more details, see the [Cost of extra credits](https://help.make.com/extra-credits#1L5yS) section.
:::

**To enable extra credits auto-purchasing:**

:::::WorkflowBlock
:::WorkflowBlockItem
Navigate to **Org&#x20;**&#x66;rom the left sidebar, then to the **Subscription** tab in **My Plan**.&#x20;
:::

:::WorkflowBlockItem
Enable the toggle of **Enable credits auto-purchasing**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/zYfh2XhhyB657TDalpqMa-20251009-125557.png)
:::

::::WorkflowBlockItem
In the dialog, select your payment method from the dropdown menu.

:::hint{type="info"}
Extra credits auto-purchasing only accepts card payments.
:::
::::

:::WorkflowBlockItem
Click **Turn on**.
:::
:::::

You can also enable extra credits auto-purchasing from the **Organization** dashboard:

::::WorkflowBlock
:::WorkflowBlockItem
Navigate to **Org&#x20;**&#x66;rom the left sidebar.&#x20;
:::

:::WorkflowBlockItem
Enable the toggle next t&#x6F;**&#x20;Credits auto-purchasing**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/5RTgJ64jIQYPvynOGv8lX-20251009-130301.png)
:::

:::WorkflowBlockItem
Follow the steps described above to enable extra credits auto-purchasing.&#x20;
:::
::::

## Disable credits auto-purchasing

To disable credits auto-purchasing:

::::WorkflowBlock
:::WorkflowBlockItem
Navigate to **Org&#x20;**&#x66;rom the left sidebar, then to the **Subscription** tab in **My Plan**.&#x20;
:::

:::WorkflowBlockItem
Disable the toggle of **Enable credits auto-purchasing**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/lq-zT9oRkfyaFQehu7lks-20251009-130940.png)
:::
::::

## Cost of extra credits

**All extra credits include a 25% additional cost**, whether you purchase them manually or through auto-purchasing.

**Auto-purchasing:**

Imagine you have a monthly subscription of 80,000 credits and have enabled extra credits auto-purchasing. Once you reach your 80,000 limit, the following happens:

- Make automatically purchases 10,000 credits and keeps your scenarios running.
- Make charges you for the 10,000 credits based on your plan with a 25% additional cost.

Let's assume that your scenarios use all 10,000 extra credits before the monthly billing cycle renews. Extra credits auto-purchasing buys an additional 10,000.

So far, extra credits auto-purchasing has purchased a total of 20,000. Your auto-purchasing limit per monthly cycle is 80,000 credits. In this example, extra credits auto-purchasing is only possible six more times, i.e., 60,000 extra credits.

**Manual purchasing:**

The same 25% additional cost applies when you manually purchase extra credits. For example, if you're on the same 80,000 credit plan and manually buy 10,000 extra credits, you'll pay for those 10,000 credits at your plan's rate plus 25%.

:::hint{type="warning"}
If your payment fails, your  pause until you update your payment method.  sends you an email notification when your payment fails.
:::


[title] Meet the new Make AI Agents app
[path] Release notes/2026/

We’re excited to introduce the **new Make AI Agents app:** a major improvement to Make AI Agents designed to make building and testing AI agents in &#xNAN;**&#x20;faster, more transparent, and more intuitive than ever**.

This new version brings AI agents directly to the Scenario Builder with a visual, end-to-end experience. You can now build, run, test, and understand your agents in one place with full visibility into how they make decisions.

To get started, create a scenario and add the **Make AI Agents (New)&#x20;**> **Run an agent**  **(New)&#x20;**&#x6D;odule to the canvas:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/QwygkDJoNWxPUTJe7KBIO-20260213-162009.png)

## Key benefits

This release introduces a more efficient and transparent way to work with Make AI Agents, with improvements across the entire building and testing flow:

- **See agents in action**
  Watch real-time animations that show when your agent is thinking, how long it takes, and which tools it runs in the exact order they’re called.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/HB7lY_QFhJ3AS1i5aabOj-20260213-162009.gif" size="70" width="1024" height="781" position="center" showCaption="false" indent="1"}

- **Build, test, and debug in one place**
  Create agents, add tools and knowledge, chat with them, test scenarios, and debug issues directly inside the Scenario Builder without switching tabs.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ieT9D3NOobIqHNzWMFGIt-20260213-162009.png" size="70" width="1024" height="686" position="center" showCaption="false" indent="1"}

- **Understand every decision with agent reasoning**
  Inspect the agent’s step-by-step logic in the **Reasoning** panel to see why it chose a certain action, making troubleshooting and optimization easier.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/1zldJn86KpQu1mgZwrLJ6-20260213-162008.png" size="70" width="1024" height="686" position="center" showCaption="false" indent="1"}

- **AI-assisted tool configuration**
  Let the agent populate tool fields for you, enabling faster setup, more flexible routing, and easier handling of unstructured data.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/UNCc7DrWD_a0alFPF3qIX-20260213-162009.png" size="70" width="1024" height="686" position="center" showCaption="false" indent="1"}

- **Flexible file handling and knowledge**
  Give agents access to files by uploading them to the knowledge base or by mapping file data directly as inputs.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/SYgtTc8tT2ifsBBsNFISo-20260213-162009.png" size="70" width="1024" height="686" position="center" showCaption="false" indent="1"}

- **Share agents with ease**
  Generate public links to AI agent scenarios so others can reuse or build on your work, reducing setup time and duplication across teams.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/a2RPDHgoCI0b0fCPY5Qj9-20260213-162009.png" size="70" width="1024" height="686" position="center" showCaption="false" indent="1"}

## Get started with Make AI Agents (New)

Ready to try it out? These resources will help you hit the ground running:

- [Create your first AI agent](docId\:hA1-tULW54S28IH4StIxr) to build an agent from the beginning
- [Sales outreach AI agent](docId\:eG7rWQ8eRecFa8XngZtLZ) to walk through a guided use case
- [Introduction to Make AI Agent (New)](docId\:TDbUXjpvPGmQxZPwVqJ7w) for an introduction to the new Make AI Agents

:::hint{type="info"}
The **Make AI Agents (New)&#x20;**&#x61;pp is currently available in **open beta**, so functionality and pricing may evolve. It’s available on **all plans using Make’s AI Provider**, with the option to connect your own AI provider on **paid plans**.
:::


[title] Cancel your subscription
[path] Your organization/Subscription/

You can cancel your subscription at any time in the **Subscription&#x20;**&#x74;ab of your organization.

Only users with the **Owner** or **Admin** role can cancel the subscription.

## Cancel subscription&#x20;

To cancel your subscription:

::::WorkflowBlock
:::WorkflowBlockItem
Navigate to **Org&#x20;**&#x6F;n the left sidebar, then to the **Subscription&#x20;**&#x74;ab i&#x6E;**&#x20;My Plan**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/J0DZplcRxK455eYY4Lbc1-20251009-143449.png)
:::

:::WorkflowBlockItem
In the upper-right corner, click **Cancel subscription**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/CuvjWiVsey2FjhPUguqbW-20251009-143810.png)
:::

:::WorkflowBlockItem
In the dialog, provide the reason behind the cancellation and view the internal features you'll lose. Click **Continue**.
:::

:::WorkflowBlockItem
The **Free** plan only supports one team. If relevant, select one team to retain and click **Continue**.

::Image[]{src="https://app.archbee.com/api/optimize/yAufeXqD1oGWOPBNi5MAm-tLpcteNCgQwMcWiEWdtTw-20241202-130813.png" size="60" width="794" height="686" position="center" alt="Select a team and continue" darkWidth="794" darkHeight="686" showCaption="false"}
:::

:::WorkflowBlockItem
To finalize the cancellation, verify that you understand that you will only have one organization under the **Free** plan after your cancellation date. Additionally, if you have another Free organization, that organization will become unlicensed. Click **Cancel subscription**.

::Image[]{src="https://app.archbee.com/api/optimize/Q31995ot4OZzZRNwsMBrJ-b1Rdw1O3EDSctX_LzsoIk-20250908-090929.png" size="60" width="807" height="702" position="center" darkWidth="807" darkHeight="702" showCaption="false"}
:::

:::WorkflowBlockItem
 will send you an email confirming the cancellation. See an example below.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/AcDwO4lgIHCGKzIKvTNfY-20250912-114448.png" size="60" width="1188" height="1284" position="center" darkWidth="1188" darkHeight="1284" showCaption="false"}
:::
::::

If you change your mind, you can click **Renew subscription**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/p-UlRJz0z3uthjuZd6A9N-20251009-145656.png)

## What happens after cancellation

When you cancel your subscription, we won't charge you for the next month, and you can still use your current subscription until the end of your billing cycle. After that, we switch you to the **Free** plan (assuming that you are not the owner of another organization with a **Free** plan).

We don't transfer your unused credits to that **Free** plan. You will have the standard free subscription (i.e., 1,000 credits per month). This applies to both monthly and annual subscriptions.

:::hint{type="info"}
You can have only one free organization under your account.

When you set an organization to a **Free** plan (either by creating a new free organization or setting a current one to free), for the next one month it is not possible to set another organization to a Free plan.

If you have multiple organizations under your account and one subscription is already canceled, each subsequent organization you cancel is set as an organization without a license. You cannot run any  under this organization until you subscribe to a new plan.
:::


[title] Change your subscription
[path] Your organization/Subscription/

You can change your subscription in the **Subscription&#x20;**&#x74;ab of your organization.

If you decide to upgrade or downgrade, we charge your payment method, and the new billing cycle runs. These terms do not apply when downgrading to the Free plan.

:::hint{type="info"}
Make has a no cash refund policy.

If you decide to upgrade, we convert your unused credits to a [discount](docId\:gs-eeU8aLcJLqMnJM1ZtM). If you decide to downgrade, we transfer your unused credits to the new plan. Learn more in the [upgrade](docId\:gs-eeU8aLcJLqMnJM1ZtM) and [downgrade](docId\:gs-eeU8aLcJLqMnJM1ZtM) sections.
:::

## Upgrade your subscription

You can upgrade between plans and between tiers. Plans differ in features, and tiers refer to the number of credits.&#x20;

An upgrade can be:

- Changing from a lower plan to a higher plan, regardless of the tier (e.g., changing from the highest tier in Core to the lowest tier in Teams)
- Changing within the same plan to a higher tier (e.g., from 10,000 credits per month in Pro to 150,000 credits per month in Pro)
- Changing from a monthly to an annual subscription to an equal or higher tier (e.g., from 10,000 per month in Pro to 120,000 per year in Pro)

To upgrade your subscription:

::::WorkflowBlock
:::WorkflowBlockItem
Navigate to **Org&#x20;**&#x69;n the left sidebar, then to th&#x65;**&#x20;Subscription&#x20;**&#x74;ab. Your current plan is marked and highlighted with a purple border.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/2ufQjVA19aoK1pstPA1dN-20251009-134349.png" size="86" width="1823" height="907" position="center" darkWidth="1823" darkHeight="907" showCaption="false"}
:::

:::WorkflowBlockItem
Use the toggle to choose a monthly or annual subscription.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/RmiOoNYpPp3YCVmDpW7od-20251009-134705.png)
:::

:::WorkflowBlockItem
In your plan, click the arrow to open a dropdown menu with different credit tiers. Choose the number of credits you want to obtain with your new plan.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/IVacbsGSlbM3Bj8mxEjfP-20251009-134943.png" size="30" width="298" height="538" position="center" darkWidth="298" darkHeight="538" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Buy plan** for your selected plan and tier. If you're billed yearly, click **Buy yearly plan**.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/vC-5BDh1vQdWgdOEJon-s-20251009-135145.png" size="38" width="243" height="128" position="center" darkWidth="243" darkHeight="128" showCaption="false"}
:::

:::WorkflowBlockItem
Review your billing information. If necessary, make changes using the **Edit&#x20;**&#x62;utton.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/qwu0zD86MzTo4y6AOD9eR-20260601-083412.png" darkSrc="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/qwu0zD86MzTo4y6AOD9eR-20260601-083412.png" size="50" width="570" height="269" darkWidth="570" darkHeight="269" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Proceed to payment**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/81SAmzHufeLfzX7u3wjBA-20260601-082632.png)
:::

:::WorkflowBlockItem
Click **Select payment method.**
:::

:::WorkflowBlockItem
Follow the on-screen instructions from Stripe checkout.
:::

:::WorkflowBlockItem
Review your payment information and click **Pay and subscribe.**
:::
::::

### Discounts

If you decide to upgrade, we convert your unused credits (including purchased extra credits) to a discount in dollars according to the price per credit in your current plan.

We deduct this discount immediately from your payment for the new upgraded subscription. The discount is visible in the checkout page calculation.

For example, you want to upgrade from Core to Pro, and you have 160,000 unused credits. We convert these unused credits to a discount. You can find the calculation logic below.

1. We calculate the price per single credit in your original price plan.
   We do this by dividing the price of the plan with the number of credits.
   In this example, the original price of the Core plan is $113.85 and it has 150,000 credits per month.
   $113.85 divided by 150,000 credits equals $0,000759 per credit.
2. We multiply the price per credit by the number of unused credits.
   Our price per credit is $0.00075, and there are 160,000 unused credits.
   $0.000759 multiplied by 160,000 unused credits equals $121.44, which amounts to the discount you can see deducted on the checkout page.

The discount cannot exceed the amount of your total bill.

## Downgrade your subscription

You can downgrade between plans and between tiers. Plans differ in features, and tiers refer to the number of credits.

A downgrade can be:

- A change from a higher plan to a lower plan, regardless of the tier (e.g., from the lowest tier in Teams to the highest tier in Core)
- A change within the same plan to a lower tier (e.g., from 150,000 credits in Pro to 10,000 credits in Pro)
- A change from an annual to a monthly subscription to a lower tier (e.g., from 240,000 credits per year in Pro to 20,000 credits per month in Pro)

To downgrade your subscription:

::::WorkflowBlock
:::WorkflowBlockItem
Navigate to **Org&#x20;**&#x69;n the left sidebar, then to the **Subscription&#x20;**&#x74;ab.
:::

:::WorkflowBlockItem
In **Compare Plans**, select your new plan and tier.

For example, your current plan is **Teams**, with 150,000 credits per month. You can downgrade to any tier in **Core** or **Pro**, or select fewer credits in the **Teams** plan.
:::

:::WorkflowBlockItem
In your new plan and tier, click **Buy plan**.
:::

:::WorkflowBlockItem
In the dialog, select your reason for downgrading and click **Continue**.
:::

:::WorkflowBlockItem
Review your billing information. If necessary, make changes using the **Edit billing details** button.
:::

:::WorkflowBlockItem
Click **Select payment method**.
:::

:::WorkflowBlockItem
Select a payment method from the dropdown menu and click **Proceed to payment**.
:::

:::WorkflowBlockItem
On the Stripe checkout screen, review your details and click **Pay and subscribe**.
:::
::::

A notification will appear confirming that your plan has been successfully changed. Your new plan is highlighted in purple on the **Subscription&#x20;**&#x70;age.

### Transfer of unused credits

If you downgrade, we transfer your unused credits to the new downgraded plan. You can use the transferred credits in the new downgrade plan for the length of your new billing cycle:

- 30 days for a monthly plan
- 365 days for an annual plan

For example, you decide to downgrade to the Pro plan and have 10,000 credits left. In the Pro plan, you select the tier with 40,000 credits/month, so in the first month of the downgrade, you have 50,000 credits available.

:::hint{type="info"}
For a Core plan with an annual subscription, credits reset every month and your extra credits expire with the monthly reset.
:::


[title] Change payment details
[path] Your organization/Subscription/

You can change your payment information at any time.&#x20;

 accepts the following payment methods:

- Credit/debit card
- Digital wallets: Apple Pay, Google Pay, Amazon Pay, and Cash App Pay
- Link (for one-click checkout)
- Klarna (to pay in installments or via custom financing)
- ACH direct debit (US bank accounts): Valid for monthly and annual subscriptions only

For more information on payment options, see the [FAQs](docId\:vPw9F-YL3L0zEfbaA81um) below.

:::hint{type="info"}
Available methods may vary based on your region.
:::

## Enter payment details

To add or update a payment method:

:::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.
:::

:::WorkflowBlockItem
Under **My plan**, click **Subscription**.
:::

:::WorkflowBlockItem
Click **Update payment method**, or **Add payment method&#x20;**&#x69;f you're on a Free plan.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Rt3pwNxd1qyCIRDVxujgp-20251010-110557.png)
:::

::::WorkflowBlockItem
Under **Select new payment method**, select your new payment type.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/i7r0BspZmT2L_-9oUJwu0-20260123-074617.png" size="60" width="665" height="499" position="flex-start" darkWidth="665" darkHeight="499" showCaption="false"}

:::hint{type="info"}
Available methods may vary based on your region.
:::
::::

:::WorkflowBlockItem
In the checkout screen, enter the required information.
:::

:::WorkflowBlockItem
Click **Save**.
:::
:::::

Once you complete the instructions, a notification confirming the change appears in the lower-right corner.

## Enter ACH direct debit (US) details

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.
:::

:::WorkflowBlockItem
Under **My plan**, click **Subscription**.
:::

:::WorkflowBlockItem
Click **Update payment method**, or **Add payment method&#x20;**&#x69;f you're on a Free plan.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Rt3pwNxd1qyCIRDVxujgp-20251010-110557.png)
:::

:::WorkflowBlockItem
Under **Select new payment method**, select **Link**.
:::

:::WorkflowBlockItem
In the checkout screen, enter your payment details and select **Bank**.&#x20;
:::

:::WorkflowBlockItem
Clic&#x6B;**&#x20;Save**.&#x20;
:::
::::

Once you complete the instructions, a notification confirming the change appears in the lower-right corner.

## Manage payment methods

You have the following options for managing existing payment methods:

- Set a different payment method as a primary payment method or for extra credits
- Remove a payment method

The first payment method added is the primary payment method. By default, the primary payment method covers subscription and extra credit costs.&#x20;

### Set a different payment method as the primary method

To set a different payment method as the primary method:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.&#x20;
:::

:::WorkflowBlockItem
Under **My plan**, click **Subscription**.
:::

:::WorkflowBlockItem
Click **Update payment method**.
:::

:::WorkflowBlockItem
Next to the payment method you want to set as primary, click the three-dot menu.
:::

:::WorkflowBlockItem
Select **Set as primary method**.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/rcN3hKtlrUfsLmdB6rxo_-20260422-114320.png" size="60" width="424" height="299" position="flex-start" darkWidth="424" darkHeight="299" showCaption="false"}
:::
::::

### Set a different payment method for extra credits

To set a different payment method for extra credits:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.&#x20;
:::

:::WorkflowBlockItem
Under **My plan**, click **Subscription**.
:::

:::WorkflowBlockItem
Next to the payment method you want to set for extra credits, click the three-dot menu.
:::

:::WorkflowBlockItem
Click **Set for extras**.&#x20;
:::
::::

### Remove a payment method

Your subscription requires at least one primary payment method. You must add another payment method before removing your primary payment method.

To remove an existing payment method:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.&#x20;
:::

:::WorkflowBlockItem
Under **My plan**, click **Subscription**.
:::

:::WorkflowBlockItem
Next to the payment method to remove, click the three-dot menu.&#x20;
:::

:::WorkflowBlockItem
Click **Remove**.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/pqO8A7Q4mec66BjQBqN4J-20260422-115332.png" size="60" width="408" height="171" position="flex-start" darkWidth="408" darkHeight="171" showCaption="false"}
:::
::::

## Change your billing address

If you're an organization owner or admin, you can change your billing address in  at any time.

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.
:::

:::WorkflowBlockItem
Click the three dots next to **Organization settings**, and select **Change billing details&#x20;**&#x66;rom the dropdown menu.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/TfpKwgyjgs6xJv3XE9eCl-20251010-112220.png)
:::

:::WorkflowBlockItem
Enter your information in the allocated spaces (email, name, address).

If you have a company account, select **Yes** under **I am a business**.

If you want  to issue the invoice to your company (and not to you personally), make sure to add your company name and Company Tax ID.
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

The new billing information is automatically reflected in your next invoice.

:::hint{type="info"}
Only customers in the US pay sales tax. We calculate sales tax based on your zip code.
:::

## Change your billing email

By default,  sends invoices for payments to the email address the organization owner provided when creating the organization.&#x20;

If you're an organization owner or admin, you can change your billing email in  at any time.&#x20;

To change your billing email:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.
:::

:::WorkflowBlockItem
Click the three dots next to **Organization settings**, and select **Change billing details** from the dropdown menu.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/TfpKwgyjgs6xJv3XE9eCl-20251010-112220.png)
:::

:::WorkflowBlockItem
In the dialog, update the **Email&#x20;**&#x66;ield with your new billing email, and update other fields if needed.&#x20;
:::

:::WorkflowBlockItem
Click **Save**.&#x20;
:::
::::

Your new billing email is automatically applied for your next invoice.

## FAQs

:::ExpandableHeading
**Which payment methods are available in my country?**

Available methods vary by region. You'll see all options automatically at checkout, including Klarna and specific digital wallets, based on your location.
:::

:::ExpandableHeading
**Can I switch my current subscription to one of these new methods?**

Yes! You can update your payment information at any time. See the [Enter payment details section](docId\:vPw9F-YL3L0zEfbaA81um).
:::

:::ExpandableHeading
**Is there an extra fee for using Klarna or digital wallets?**

No, Make does not charge additional transaction fees for these payment methods. However, please check Klarna's terms for any interest that may apply to specific financing plans.
:::

:::ExpandableHeading
**Are these methods available for all plan types?&#x20;**

Yes, new payment methods are available for Core, Pro, and Teams plans. For Enterprise customers, please contact your Account Manager for invoicing options
:::


[title] Manage time zones
[path] Your profile/Profile settings/

In , every [organization](docId:-FOYcASPYP9uYKGm7LQPB) and every user has a definable time zone parameter. However,  uses organization time zones and user time zones differently:

- The **organization time zone** defines the time used when executing  and modules. For example, a  schedule of "4:00 pm every day" means 4:00 pm in the organization's time zone.
- The **user time zone** is similar to [locale](https://en.wikipedia.org/wiki/Locale_\(computer_software\)) and defines how  displays time, for example, in the [scenario execution history](docId:9Z2XnH-Lyy62CFAhjFHj5).

As a result, organization members in a time zone different from the organization's time zone may see different times displayed. See the [example](docId\:Bn3S0_8AZJDynxbNzNP_a) below for more details.

Your profile page lets you view and edit time zone settings from the **Time Zone Options** tab.

## Manage your organization time zone

 uses an organization's time zone to define when a scheduled  executes. The organization time zone defines  execution and functions such as `formatDate` and `parseDate`. Unless otherwise specified,  uses the organization time zone as the default time for time and date-related functions and  execution. You can view and edit your organization time zones on the **Time Zone Options&#x20;**&#x74;ab of the profile page. afsa

:::hint{type="info"}
Only organization owners and admins can edit the organization's time zone.
:::

::::WorkflowBlock
:::WorkflowBlockItem
Click your profile icon in the upper-right corner and select **Profile**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/GIXmJffuSW63v_pNG0-oM-20251002-085259.png)
:::

:::WorkflowBlockItem
Click the **Time zone options&#x20;**&#x74;ab.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/8WT0eRoAJeHdQ3VUy1c6i-20251002-090340.png" size="80" width="2484" height="603" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
 lists your organizations under **Scenarios** and displays the current time zone setting.
:::

:::WorkflowBlockItem
Click the edit icon to edit an organization's settings.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/1_g0x13MWgzQMkqANsb_f-20251002-090606.png" size="80" width="2016" height="466" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
In the dialog box, use the menu to search for and select a new time zone.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/y2YfRShOHpZycr-HWz8lS-20251002-090746.png" size="50" width="976" height="1144" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

The selected time zone now appears on the **Time zone options** page.

Any scheduled  execute at the scheduled time in the time zone you assigned in step 4.

## Manage your user time zone

 uses your user time zone to display time and date information. For example, execution logs display the time in your user time zone. The user time zone only impacts how Make displays information, such as the date and time displayed in module output, bundles, or a log. Changing the user time zone does not impact  execution. You can view and edit your user time zone anytime on the **Time Zone Options&#x20;**&#x74;ab of the profile page.

::::WorkflowBlock
:::WorkflowBlockItem
Click your profile icon in the upper-right corner and select **Profile**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/GIXmJffuSW63v_pNG0-oM-20251002-085259.png)
:::

:::WorkflowBlockItem
Click the **Time zone options&#x20;**&#x74;ab.
:::

:::WorkflowBlockItem
Find your name in the **Web&#x20;**&#x73;ection.  displays the current time zone setting.
:::

:::WorkflowBlockItem
Click the edit icon to edit your settings.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/NV-JT8CmkAWq3aUYwLtBQ-20251002-091440.png" size="80" width="2518" height="552" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
In the dialog box, use the menu to search for and select a new time zone.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/dMf7VKryTQ1dGFhhzTmJu-20251002-091546.png" size="50" width="876" height="1180" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

You can also manage your user time zone from your Profile page:

::::WorkflowBlock
:::WorkflowBlockItem
Click your profile icon in the upper-right corner and select **Profile**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/GIXmJffuSW63v_pNG0-oM-20251002-085259.png)
:::

:::WorkflowBlockItem
Click **Profile settings**.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/mGAqcIipZIWjiCWsos3_w-20251002-092210.png" size="50" width="770" height="106" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
In the dialog box, use the menu to search for and select a new time zone.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/dMf7VKryTQ1dGFhhzTmJu-20251002-091546.png" size="50" width="876" height="1180" position="center" showCaption="false"}
:::
::::

The selected time zone will appear on the **Time zone options&#x20;**&#x70;age.

## Example

A  organization based in New York City has members in New York City, Los Angeles, and London. When members view  execution histories, they see that information relative to their local time zone.&#x20;

Members in London see the time  executed in London time, Los Angeles members see those execution times in LA time, and so on. However, when they schedule ,  uses New York City time regardless of the user's location.

| **User city and time zone**                            | **Organization time zone**         | **Time zone that the user sees in the&#x20;** **editor and logs** | **Time zone used for&#x20;** **execution** |
| ------------------------------------------------------ | ---------------------------------- | ----------------------------------------------------------------- | ------------------------------------------ |
| New York<br />(GMT-05:00)<br />America/New\_York       | (GMT-05:00)<br />America/New\_York | (GMT-05:00)<br />America/New\_York                                | (GMT-05:00)<br />America/New\_York         |
| Los Angeles<br />(GMT-08:00)<br />America/Los\_Angeles | (GMT-05:00)<br />America/New\_York | (GMT-08:00)<br />America/Los\_Angeles                             | (GMT-05:00)<br />America/New\_York         |
| London<br />(GMT+0:00)<br />Europe/London              | (GMT-05:00)<br />America/New\_York | (GMT+0:00)<br />Europe/London                                     | (GMT-05:00)<br />America/New\_York         |


[title] Deprecated OpenAI audio preview models
[path] Release notes/2026/

OpenAI has deprecated the `gpt-4o-audio-preview` and `gpt-4o-mini-audio-preview` models. You can no longer choose these models when setting up OpenAI modules.

### What's changing?

- The `gpt-4o-audio-preview` and `gpt-4o-mini-audio-preview` models are no longer available in OpenAI modules.
- You can’t select these models for new or updated modules.
- Existing modules that use these models may fail when they run.

### What do you need to do?

Review your OpenAI modules and replace any deprecated audio preview models with a supported model.

| **Deprecated model**        | **Replacement model** |
| --------------------------- | --------------------- |
| `gpt-4o-audio-preview`      | `gpt-audio-1.5`       |
| `gpt-4o-mini-audio-preview` | `gpt-audio-mini`      |

:::hint{type="info"}
Review OpenAI's pricing information for these new models, as your costs may change depending on your usage.
:::

### Resources

- [gpt-audio-1.5 — OpenAI Developers](https://developers.openai.com/api/docs/models/gpt-audio-1.5)
- [gpt-audio-mini — OpenAI Developers](https://developers.openai.com/api/docs/models/gpt-audio-mini)
- [OpenAI documentation — Make Help Center](https://apps.make.com/openai-gpt-3)
- [OpenAI API Deprecations](https://developers.openai.com/api/docs/deprecations)

[title] Request sales tax exemption
[path] Your organization/Subscription/

If you are an organization exempt from sales tax, [contact us](https://www.make.com/en/ticket) using the following details:

- **Topic:** Account, Billing & Affiliate
- **Category:** Billing
- **Topic details:** Tax exempt

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yjwhINLS3fc-NXg38fV_d-0x-uZA6uIh_R5AS3x2s1y-20250724-092624.png" size="70" width="673" height="391" position="center" showCaption="false"}

Once you reach out, we'll send you instructions on submitting your tax-exempt documentation. After we review and verify your documentation, you'll receive an email confirming your tax-exempt status has been approved.&#x20;

[title] New feature: If-else and Merge
[path] Release notes/2026/

The **If-else and Merge** modules are now available in Open Beta. 

Use them to split your scenario into conditional paths, follow only one route based on your logic, and then reconnect the flow into a single route — eliminating the need to duplicate downstream modules. This is different from a router, where all routes run and can't be reconnected.

## What you can do

- Set any number of condition routes in your scenario.
- Guarantee only one route runs, the first condition that evaluates as true.
- Reconnect your routes into a single, continuous flow with the Merge module, or keep them separate; the Merge module is optional.

## If-else vs. router&#x20;

- Use If-else when you need conditional logic and want to merge routes back into a single flow.
- Use a router for parallel actions where routes don't need to reconnect.

## Credit usage

The If-else and Merge modules use operations but do not use any credits.

## Learn more

To learn more about this feature, see the following articles:

- [If-else and Merge documentation](https://help.make.com/if-else-and-merge)
- [Tutorial: Expense report approval system](https://help.make.com/if-else-and-merge#tutorial-expense-report-approval-system)
- [Video: If-else and Merge feature walkthrough](https://www.loom.com/share/b2245d5c1c2d4349919b5b8421535897)


[title] Google SAML
[path] Your organization/Access management/

:::hint{type="info"}
This feature is available to Enterprise customers.
:::

The following manual configuration creates an SAML SSO configuration for your Enterprise organization.

## Prerequisites

- `Owner` role in an Enterprise organization
- Google Admin console account

## Supported features

This configuration supports the following:

- Service Provider initiated SSO
- Single Log Out \[optional]

## Configuration Steps

Before configuring SSO, you need to assign a namespace and download your service provider certificate in . These steps provide information you need to enter later.

### Create your namespace in Make

::::WorkflowBlock
:::WorkflowBlockItem
Click **Organization** in the left sidebar.
:::

:::WorkflowBlockItem
Click the **SSO** tab.
:::

:::WorkflowBlockItem
Under **Namespace**, enter the namespace you want for your organization. For example, `acmecorp`. Your organization members enter this namespace when they log in via SSO.
:::

:::WorkflowBlockItem
Under **SSO type**, select **SAML 2.0**.
:::

:::WorkflowBlockItem
Copy the **Redirect URL** and save it in a safe place. You will use this later when you create your SAML integration in the Google admin portal.
:::
::::

### Create an SAML application in the Google admin portal

::::WorkflowBlock
:::WorkflowBlockItem
Login to the Google admin console.
:::

:::WorkflowBlockItem
From the dashboard's left menu, click **Apps > Web and mobile apps**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-Q3Q4KT-Rqx_XNYlyLrd5I-20250228-142929.png" size="80" width="960" height="494" position="flex-start" alt="Google admin console" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Add app** and select **Add custom SAML app**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-MgIH94jUfHazZZ-TCL8kZ-20250228-143141.png" size="80" width="1001" height="422" position="flex-start" alt="Add custom SAML app" showCaption="false"}
:::

:::WorkflowBlockItem
Enter an **App name** and **Description**.
:::

:::WorkflowBlockItem
Copy the **SSO URL** and save it in a safe place. You will use this later.
:::

:::WorkflowBlockItem
On the same screen, download the certificate and save it in a safe place.
:::

:::WorkflowBlockItem
Click **Continue**.
:::

:::WorkflowBlockItem
Enter the **Service provider details**. You can find thise information in the  SSO configuration tab.

**ACS URL:&#x20;**`https://www.make.com/sso/saml/{namespace}`

**Entity ID: &#x20;**`https://www.make.com/sso/saml/{namespace}/metadata.xml`

Replace \{namespace} with your [namespace](docId\:c2tfQhgM9UQannl5dWZhk).

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-2Q3hdFJhG4C4IhTAMIMv8-20250228-140928.png" size="60" width="601" height="217" position="flex-start" alt="Service provider details" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Continue**.
:::

:::WorkflowBlockItem
Enter the App attributes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-MoEzoFAaBw8TV8byrIIQA-20250228-140414.png" size="80" width="1000" height="574" position="flex-start" alt="App attributes" showCaption="false"}
:::

:::WorkflowBlockItem
Update the **User access** to On for everyone.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-xd-cn2h216HDWl1q8dJ_0-20250228-140758.png" size="80" width="1224" height="589" position="flex-start" alt="User access" showCaption="false"}
:::
::::

### Update the SSO in Make

::::WorkflowBlock
:::WorkflowBlockItem
Click **Org** in the left sidebar.
:::

:::WorkflowBlockItem
Switch to the **SSO** tab.
:::

:::WorkflowBlockItem
Activate the **Service Provider Certificate** and download it.
:::

:::WorkflowBlockItem
In the **Identity Provider Certificate** section, click **Extract**. In the **P12, PFX or PEM file** field, upload the certificate downloaded from step 6 of [Create an SAML application in the Google admin portal](docId\:c2tfQhgM9UQannl5dWZhk) above. Then click **Save**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/3jW3Sv4rWQmjvIyWI09I7-20251015-093508.png)
:::

:::WorkflowBlockItem
Enter the SSO URL from step 5 of [Create an SAML application in the Google admin portal](docId\:c2tfQhgM9UQannl5dWZhk) above and paste it into the **IDP Login URL** field in .
:::

:::WorkflowBlockItem
Enter the **Login IML resolve**.

```javascript
{
    "email": "{{get(user.attributes.email, 1)}}",
    "name": "{{get(user.attributes.firstName, 1)}}{{get(user.attributes.lastName, 1)}}",
    "id": "{{get(user.attributes.email, 1)}}"
}
```

Optional: It is a good practice to validate the JSON string in IML Resolve to ensure it is correct. You can use the [JSONLint](https://jsonlint.com/) website to perform this validation.
:::

:::WorkflowBlockItem
Enter the following additional information:

**Allows Unencrypted Assertions**: No

**Allow Unsigned Responses**: No

**Sign Requests**: Yes

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/VWZT_sa_zTOmbwdrcTeTq-20251015-093124.png" size="60" width="2070" height="1914" position="center" showCaption="false"}
:::
::::

## Service provider initiated SSO

::::WorkflowBlock
:::WorkflowBlockItem
Go to [make.com](https://make.com).&#x20;
:::

:::WorkflowBlockItem
Click **Sign in with SSO**.
:::

:::WorkflowBlockItem
Enter the namespace you chose for your organization.
:::

:::WorkflowBlockItem
Log in using your Microsoft credentials and consent to 's access to your user data.
:::
::::


[title] Introducing Private spaces
[path] Release notes/2026/

Previously, every scenario and connection in an organization lived in a shared workspace, visible to teammates. Private spaces give each member their own isolated space for scenarios and connections they don't want others to access. Admins can set credit limits for each space, and also get a limited view of others' spaces if they're on the Enterprise plan.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/3J0hvi9J6w6p1dbkCLhQe_new-private-spaces-dialog.png" size="60" isUploading="false" position="center" width="506" height="493" darkWidth="506" darkHeight="493" showCaption="false"}

## Key benefits

- **Member-level privacy:&#x20;**&#x45;ach member gets their own space where module settings and connections aren't visible to others.
- **Credit controls:** Admins can set a credit limit for each member's private space, or allow members to draw from the organization's overall credits without limitations.
- **Admin visibility (Enterprise plan):** Admins can open any member's private space in read-only mode to view scenario names, modules used, and credit usage.

## Availability

Private spaces are available on **all plans**. Admin visibility is available on **Enterprise plans&#x20;**&#x6F;nly.

## Learn more

To learn how to enable Private spaces and set credit limits, see [Private spaces](https://help.make.com/private-spaces).

[title] Make Grid workspace navigation and interaction updates
[path] Release notes/2026/

In this release, we introduce four core updates to  Grid, giving you more control over your workspace. With this update, you can customize your layout, see your teammates in real time for better collaboration, view or edit objects from your grid, and navigate across your workspace with ease.

### What's new

- **Customizable layout&#x20;**— Rearrange assets, folders, and teams freely in your workspace. Click **Edit Layout** in the toolbar to enter edit mode, then drag items into position or use the yellow resize handles to adjust the size of folders and teams.&#x20;

:::Paragraph{indent="1"}
For more information, see [Edit Layout](https://help.make.com/explore-make-grid-gui#edit-layout).
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/CiwEB-84PPtaoyL95BcBx-20260316-121738.gif" size="100" width="1908" height="992" position="center" showCaption="false" indent="1"}

- **Live collaboration&#x20;**— See your active teammates in real-time via their cursors and the presence widget in the toolbar, making it easier to coordinate without switching tools.

:::Paragraph{indent="1"}
For more information, see [Presence widget](https://help.make.com/explore-make-grid-gui#presence-widget).
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/anzPngRbatCxDPfnVOqRL-20260319-095005.png" size="100" width="3840" height="2237" position="center" showCaption="false" indent="1"}

- **View and edit objects from the Grid** — Open, review, or edit your connected objects such as Google Sheets, Google Docs, Slides, and more directly from  Grid.&#x20;

:::Paragraph{indent="1"}
For more information, see [Open your dependencies from Make Grid](https://help.make.com/how-to-use-make-grid#open-your-dependencies-from-grid).
:::

- **Improved navigation controls&#x20;**— Pan and zoom now work consistently across mice and trackpads, following the same conventions as other tools you already use. Use right-click to pan or pinch-to-zoom for smoother navigation.&#x20;

### Learn more

For additional information, see:&#x20;

- [Introduction to Make Grid](https://help.make.com/introduction-to-make-grid)&#x20;
- [Explore Make Grid GUI](https://help.make.com/explore-make-grid-gui)

[title] Make now a built-in connector on Anthropic Claude
[path] Release notes/2026/

Make is now a built-in connector on Anthropic Claude, making it faster and easier than ever to connect [Make MCP server](docId:95jjtReuq1qmRYiBxVBkX) to Claude.

Previously, connecting required manual steps, such as adding a URL and token. Now, find Make from the available connectors and complete the OAuth flow—no extra configuration needed.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/w8qa1DP_0H8rQoqbQ0KQ8-20260324-132256.gif)

## Key benefits

- **Simpler connection setup**: Add Make MCP server to your Claude account in a few clicks, without adding connection URLs or tokens.&#x20;
- **Smarter scenario runs**: Send requests in the chat, then let Claude choose the right scenario for the task.&#x20;
- **Run scenarios from Claude**: Trigger any scenario for any task without signing into Make.&#x20;

## How to get started&#x20;

To use Make from Claude, connect Make MCP server to Claude:

::::WorkflowBlock
:::WorkflowBlockItem
Open your Claude account.
:::

:::WorkflowBlockItem
Click your profile name on the left sidebar, then **Settings**.
:::

:::WorkflowBlockItem
Go to **Connectors**.&#x20;
:::

:::WorkflowBlockItem
Click **Browse connectors**.&#x20;
:::

:::WorkflowBlockItem
Search for Make and click the plus sign.&#x20;
:::

:::WorkflowBlockItem
In the OAuth consent screen, select your organization and its scopes.
:::

:::WorkflowBlockItem
Click **Allow&#x20;**&#x74;o proceed.&#x20;
:::
::::

You've connected Make MCP server to Claude using the new Make built-in connector.&#x20;

To learn about other connection options, see [Make MCP server](https://developers.make.com/mcp-server).  &#x20;

[title] Teams
[path] Your organization/Organizations & teams/

To control access to  and other  data, you can assign users to teams. Members of a team have access only to  and data that belong to their team.

The following items belong to a team:

- &#x20;
- Templates
- Connections
- Webhooks
- Keys
- Devices
- Data stores
- Data structures
- Custom functions
- Credential requests

All of these items always belong to only one team. You can't change which team a particular item belongs to.

A user can be a member of any number of teams within the same organization.

Every organization must have at least one team.

## Teams and organizations

Organizations are the most basic organizational unit, or container, to which all elements within  are assigned. An organization can contain any number of teams.

You register users into an organization. Then, you assign users to teams. A user can be a member of any number of organizations and any number of teams. A user can have a different role in each team.

:::hint{type="info"}
If you're on a plan lower than the [Teams pricing plan](https://www.make.com/en/pricing), you can only have one team in your organization and you can't manage roles within that one team.
:::

You can assign users to the following roles within the team:

## Create a team

You can create teams inside organizations. You must be an owner or an admin of an organization to manage its teams.

:::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.
:::

:::WorkflowBlockItem
Switch to the **Teams** tab.
:::

:::WorkflowBlockItem
Click **+Add team**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/4mSSL57quEGYfR0D7Re6S-20251003-084705.png)
:::

::::WorkflowBlockItem
In the **Add team** dialog box, enter the new team's name, and click **Add**.

:::hint{type="info"}
Enterprise customers can let the new team use any credits available in the organization, or set a maximum number of credits it can use. If this team reaches the established limit, their scenarios will be paused.

To set the limits, click the **+Set team limit** button and enter the required amount.
:::
::::
:::::

The new team appears in the list of teams. Click the team name or the **Edit** button to manage team members.

## Team roles

- **Team Admin** has full access to all data within the team. Team admins can create custom functions.
- **Team Member** has full access to all data within the team. Team members can create custom functions but cannot manage team members and cannot delete the team.
- **Team Monitoring&#xA0;**&#x68;as read-only access to the team, , and templates.
- **Team Operator** has read-only access to all data within the team. In addition, the Team Operator can activate or stop  and set up  schedules.
- **Team Restricted Member** (deprecated) has full access to all data within the team, but cannot modify the team.
- **Team Guest&#x20;**&#x68;as limited access to authorize, revoke, decline, or delete [credential requests](https://help.make.com/credential-requests).﻿

:::hint{type="info"}
Owners and admins of a team's parent organization always have Team Admin permissions.
:::

## Manage teams

You can view the team's consumption of credits and data transfer, manage team members and their roles, and set up notifications.

### Monitor credits and scenario executions

You can monitor credits and data transfer consumed by each team.&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.
:::

:::WorkflowBlockItem
Switch to the **Teams** tab.
:::

:::WorkflowBlockItem
Select a team.
:::
::::

Since  always belong to teams, their execution history is also tracked for each team separately.&#x20;

### Manage team members

When adding users to teams, you assign team roles to the users. Roles determine what permissions users have and what users can do with the team's data.

:::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.
:::

::::WorkflowBlockItem
Switch to the **Users** tab.

:::hint{type="info"}
For Enterprise users, it's an **Org Users** tab.
:::
::::

:::WorkflowBlockItem
To add a user to the team, click the **+Invite user** button.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/z-euOxDPIXV9QWfqSpYPg-20251003-134421.png)
:::

:::WorkflowBlockItem
In the **Invite** **user** dialog box:

- Enter the invitee's email
- Enter the invitee's name
- Select a role from the drop-down
- Select a team
- Add a note, if necessary



::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/V5CeZSlOkWC4s6oY_JUnA-20251003-134609.png" size="50" width="884" height="1034" position="center" darkWidth="884" darkHeight="1034" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.
:::
:::::

A person will receive an email with an invitation with a button to accept the invitation.

To **change a user's role**, click the current role in the **Role** column next to their name and select a new role from the menu.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/sFzERR2YSEgyd_ctnSR9j_image.png)

To **remove a user** from a team, select **None** from the **Role** menu. Make removes the user from its team role, which effectively removes the user from the team.

### Manage team notification options

Using **Notification options**, you can control how Make notifies team members about warnings and errors in Make.

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.&#x20;
:::

:::WorkflowBlockItem
Switch to the **Notification** **options** tab.
:::

:::WorkflowBlockItem
Enable or disable the toggles to switch the notifications **On** or **Off** as needed.
:::
::::

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/z32Rsz0QLvKl49qKTGQM_-20251003-145527.png)


[title] Nested If-else and Merge is now available
[path] Release notes/2026/

You can now build multi-level decision logic inside one scenario with Nested If-else & Merge. Keep related conditions in one visual flow, so teams can review changes faster and follow how each branch connects.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/mk3vZASqEHtorK2Z9Uuui_image.png)

### What's new

- **Nested decision paths**: Place an If-else module inside a branch of another If-else, so you can model detailed business rules without spreading logic across separate Router chains.
- **Cleaner scenario reviews**: Keep related branches together in one flow. Your teammates can now see the whole scenario at one glance to trace decisions, check changes, and understand what the scenario does.
- **Clear merge points**: Give each nested If-else its own Merge module, so every decision level closes in the right place and the scenario stays easier to maintain as rules change.

### When to use it

- A condition inside one branch depends on evaluating a second, related condition.
- You want to keep logically related rules together rather than splitting them across separate Router chains.
- You need teammates to be able to trace and review decision logic in a single flow.

For more information, see the [Nested If-else and Merge](docId:5F6OZVB5VL2gvDsA7EoRP) documentation.

[title] Bitbucket modules deprecation, new AI models, and more app updates
[path] Release notes/2026/

Here's a quick look at the latest app updates from .

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ASXCnlCMMVKg--_DpIOdP_amazon-seller-central-icon.png" size="50" isUploading="false" position="center" width="512" height="512" darkWidth="512" darkHeight="512" showCaption="false"}
:::

:::VerticalSplitItem
**Amazon Seller Central** — The **Create a Report** module now flags two settlement report options for deprecation on November 11, 2026. A replacement report type is already available, so no immediate action is needed.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://make-cxp-documentation.ams3.digitaloceanspaces.com/apps-center-icons/bitbucket.png" size="50" width="512" height="512" isUploading="false" darkWidth="512" darkHeight="512" showCaption="false"}
:::

:::VerticalSplitItem
**Bitbucket** — Due to Atlassian's API changes, most Bitbucket modules are now deprecated; only the **Watch a Repository**, **Watch a Workspace**, and **Make an API Call** modules remain. If your scenarios use the **Watch a Repository** trigger, re-select the repository to keep it working, and note that the **Events** field is now required in both watch modules.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/yAufeXqD1oGWOPBNi5MAm-kp3jQtyJ1Qg0NMkLevL_7-20250312-172848.png" size="50" width="113" height="113" isUploading="false" darkWidth="113" darkHeight="113" showCaption="false"}
:::

:::VerticalSplitItem
**Anthropic (Claude)** — Two updates to the app:

- The **Create a Message** module now supports the latest versions of the **Code Execution**, **Web Search**, and **Web Fetch** tools. A new **Response Inclusion** option excludes result blocks to reduce token usage, and the tool selector is now grouped for faster selection.
- The **Simple Text Prompt** module now includes the new **Claude Fable 5** model and new **stop\_reason** and **stop\_details** outputs that show why a generation stopped.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://make-cxp-documentation.ams3.digitaloceanspaces.com/apps-center-icons/amazon-bedrock.png" size="50" width="512" height="512" isUploading="false" darkWidth="512" darkHeight="512" showCaption="false"}
:::

:::VerticalSplitItem
**Amazon Bedrock** — Select the new **Claude Sonnet 5** model in the **Simple Text Prompt** module's **Model** dropdown for coding, complex reasoning, and professional-grade tasks.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/PL8X94efBsjvhfQV3wyyj-UUjn5uUTngOmDCOl0lrvW-20250814-103121.png" size="50" width="393" height="393" isUploading="false" darkWidth="393" darkHeight="393" showCaption="false"}
:::

:::VerticalSplitItem
**OpenAI (ChatGPT, Sora, Whisper)** — Three updates to the app:

- The **Create a Prompt Completion** and **Generate a Response** modules now support the new **GPT-5.6 Sol**, **Terra**, and **Luna** models.
- A new **Max** reasoning effort option is now available in the **Generate a Response** module, with updated help text noting that Temperature and Top P aren't supported by GPT-5.6 models.
- The **Generate a Completion** module now has clearer guidance for reasoning effort and other parameters.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/7Ek56n9PrRrHFO9JoywlF-20260203-162257.png" size="50" width="208" height="208" isUploading="false" darkWidth="208" darkHeight="208" showCaption="false"}
:::

:::VerticalSplitItem
**monday.com** — Two updates to the app:

- The item picker for a **Connect Boards** column now shows items from all connected boards, not just the first, in the **Create an Item (advanced)** and **Update Column Values of a Specific Item** modules.
- The **Run a Platform Agent (Beta)** module now has an **Execution Mode** field: **Interactive** (default) lets the agent pause for confirmation on ambiguous actions, while **Autonomous** completes tasks without confirmation — useful for unattended scenarios.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/hbUsC7-eqrf3YC2c02FoW_sage-intacct-photoaidcom-cropped.png" size="50" isUploading="false" position="center" width="121" height="121" darkWidth="121" darkHeight="121" showCaption="false"}
:::

:::VerticalSplitItem
**Sage Intacct** — New modules and updates to the app:

- The **Create a Purchasing Document** module creates new purchase orders, requisitions, or other document types.
- The **Get a Purchasing Document** module retrieves the details of a specific purchasing document by its ID.
- The **Update a Purchasing Document** module modifies an existing purchasing document.
- The **Search Purchasing Documents** module finds purchasing documents based on filter criteria, and no longer errors when you use a single filter.
- The **List Purchasing Documents** module gets a list of all purchasing documents of a specific type.
- Invoice modules now use the date data type for **createdDateTime** and **modifiedDateTime**, and connections no longer disconnect frequently during scenario runs.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[**]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/98AXEzfF4p2qHt9AFyGQ7_quickbooks-icon-photoaidcom-cropped.png" size="50" isUploading="false" position="center" width="510" height="510" darkWidth="510" darkHeight="510" showCaption="false"}
:::

:::VerticalSplitItem
**QuickBooks** — Two updates to the app:

- The **Update a Time Activity** module now preserves the original date of a time activity unless you map a new one, instead of resetting it to the current date.
- The **Create/Update Invoice**, **Credit Memo**, **Estimate**, and **Sales Receipt** modules now have an **Email status** field — set it to **Do not send** to create a transaction without emailing the customer.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[**]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Jfhfk-uJ0_dkCbhz5YEYP_axonaut-photoaidcom-cropped.png" size="50" isUploading="false" position="center" width="204" height="204" darkWidth="204" darkHeight="204" showCaption="false"}
:::

:::VerticalSplitItem
**Axonaut** — The **Create a Company** module now has an **Is B2C** field for creating B2C companies with employee details, and new **Language**, **IBAN**, and **BIC** fields; **Name** and **Business Manager** are no longer required. The **Update a Company** module now has fields to update **Currency**, **Language**, **IBAN**, and **BIC**.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/KlO9JJ9lyJEeWTB8RGRvv_image-232-photoaidcom-cropped.png" size="50" width="980" height="980" isUploading="false" darkWidth="980" darkHeight="980" showCaption="false"}
:::

:::VerticalSplitItem
**Getform** — **Getform** is now **Forminit**, with an updated logo across Make. This is a visual change only — existing scenarios and connections aren't affected.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/sOrt3hMp0YHV6WeojK7ga-20251030-113859.png" size="50" width="800" height="800" isUploading="false" darkWidth="800" darkHeight="800" showCaption="false"}
:::

:::VerticalSplitItem
**Microsoft 365 Email (Outlook)** — The **List Attachments** module no longer fails when processing attachments in S/MIME signed emails. It also handles a wider range of filename formats and character encodings, preventing scenario errors.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/nQQRccoMTH9jOMgPgqrFm-20250923-085017.png" size="50" width="800" height="800" isUploading="false" darkWidth="800" darkHeight="800" showCaption="false"}
:::

:::VerticalSplitItem
**WordPress** — The **Create a Post** module no longer requires the **Content** field, so you can create posts with only a title.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://make-cxp-documentation.ams3.digitaloceanspaces.com/apps-center-icons/formidable-forms.png" size="50" width="512" height="512" isUploading="false" darkWidth="512" darkHeight="512" showCaption="false"}
:::

:::VerticalSplitItem
**Formidable Forms** — The **List Form Entries** module no longer fails on forms with non-input fields like HTML blocks, dividers, or captchas, and the **Form ID** dropdown now loads correctly.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://make-cxp-documentation.ams3.digitaloceanspaces.com/apps-center-icons/fatture-in-cloud.png" size="50" width="512" height="512" isUploading="false" darkWidth="512" darkHeight="512" showCaption="false"}
:::

:::VerticalSplitItem
**Fatture in Cloud** — The **Create an Issued Document** module now sends the **paid\_date** field in the correct format, so scenarios no longer error on payment dates.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-K7D1KSeESGWEOBVk2p4QY-20250313-143759.png" size="50" width="113" height="113" isUploading="false" darkWidth="113" darkHeight="113" showCaption="false"}
:::

:::VerticalSplitItem
**Google Docs** — The **Create a Document from a Template** module no longer skips placeholders that appear after an empty (null) value, so all placeholders update correctly.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://make-cxp-documentation.ams3.digitaloceanspaces.com/apps-center-icons/jotform.png" size="50" width="512" height="512" isUploading="false" darkWidth="512" darkHeight="512" showCaption="false"}
:::

:::VerticalSplitItem
**Jotform** — Accounts with more than 50 forms can now see and select all available forms (up to 500) in modules like **Watch Submissions** and **Get Form Submissions**.
:::
::::


[title] New monday.com AI modules, MCP Client update, and more
[path] Release notes/2026/

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://images.archbee.com/oAyFj2GHlBeBVWF5OAir2/7Ek56n9PrRrHFO9JoywlF-20260203-162257.png?format=webp" size="50" width="800" height="800" isUploading="false" darkWidth="800" darkHeight="800" showCaption="false"}
:::

:::VerticalSplitItem
**monday.com&#x20;**— Two new AI-powered modules let you automate conversational tasks:

- **Run Platform Agent (Beta)** sends prompts to monday.com's Sidekick agent and supports conversational memory through a **Context ID**.
- **Generate a Chat Completion (Beta)** connects to the Platform AI Gateway to generate text or structured JSON for tasks like summarizing reports or classifying data.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{size="50" isUploading="false" position="center" darkSrc="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/6yqn7jgxQoVUSK38_9Eey-20251106-140000.png" darkWidth="206" darkHeight="207" width="206" height="207" showCaption="false"}
:::

:::VerticalSplitItem
**MCP Client&#x20;**— The **Execute an action with AI** module now lets you choose your AI provider:

- Use Make AI Provider to access OpenAI and Claude AI models through Make credits, with no external account or API key required
- Connect your own OpenAI API key to use models you already pay for with full control over spend. Either way, you can run AI steps directly within your MCP flow.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{size="50" isUploading="false" position="center" darkSrc="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/K_YD0GE-Z-WjajMwSNeDI-20251029-171006.png" darkWidth="800" darkHeight="800" width="800" height="800" showCaption="false"}
:::

:::VerticalSplitItem
**HubSpot CRM&#x20;**— We've moved authentication to HubSpot's more secure **OAuth v3 API**, improving connection security, preparing your scenarios for the eventual retirement of the v1 API, and standardizing error messages for easier troubleshooting. No action is required; existing connections continue to work.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/sOrt3hMp0YHV6WeojK7ga-20251030-113859.png" size="50" width="800" height="800" isUploading="false" darkWidth="800" darkHeight="800" showCaption="false"}
:::

:::VerticalSplitItem
**Microsoft 365 Email&#x20;**— A new **Trigger by** field in the **Watch Emails** and **Watch Emails in a Shared Folder** modules lets you trigger scenarios on emails moved into a folder, not just newly created ones. The default stays **Created Date**, so existing scenarios aren't affected.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{size="50" isUploading="false" position="center" darkSrc="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/NG8VCvKvhev5tNyb-cuur_manago-ai.png" darkWidth="208" darkHeight="208" width="208" height="208" showCaption="false"}
:::

:::VerticalSplitItem
**Manago AI&#x20;**— Salesmanago has been renamed to Manago AI across Make, with an updated logo. Existing scenarios and connections aren't affected.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/5NRhEo7O6dh6IEPIx66xl-20251029-172052.png" size="50" width="800" height="800" isUploading="false" darkWidth="800" darkHeight="800" showCaption="false"}
:::

:::VerticalSplitItem
**Google Sheets&#x20;**— We've fixed an issue where the **Add a Row** and **Update a Row** modules failed to write data when "Table contains headers" was enabled and columns had empty headers, so data is now reliably added or updated as expected.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://make-cxp-documentation.ams3.digitaloceanspaces.com/apps-center-icons/reddit.png" size="50" width="512" height="512" isUploading="false" darkWidth="512" darkHeight="512" showCaption="false"}
:::

:::VerticalSplitItem
**Reddit&#x20;**— The new **List Comments in a Post** module retrieves all comments and replies from a post, so you can monitor discussions and analyze sentiment more effectively, even on posts with many comments.

We've also improved the **List Subreddit Posts** module to return a clear error message instead of raw HTML when a subreddit doesn't exist.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://images.archbee.com/oAyFj2GHlBeBVWF5OAir2/9Xz4DOeIkL7gCgIVO50rA-20260518-111551.png?format=webp" size="50" width="800" height="800" isUploading="false" darkWidth="800" darkHeight="800" showCaption="false"}
:::

:::VerticalSplitItem
**Discord&#x20;**— The new **Get an Invite** and **Delete an Invite** modules let you retrieve and remove channel invites. We've also updated **Create a Channel Invite** to support assigning multiple roles at once, with the roles list filtered to show only assignable roles.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://make-cxp-documentation.ams3.digitaloceanspaces.com/apps-center-icons/github.png" size="50" width="512" height="512" isUploading="false" darkWidth="512" darkHeight="512" showCaption="false"}
:::

:::VerticalSplitItem
**GitHub&#x20;**— The new **Make an API Call** module sends a custom REST API call to any GitHub endpoint, so you can access API features not available in other modules and build highly customized scenarios.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://images.archbee.com/oAyFj2GHlBeBVWF5OAir2/L1z3rtH6mt81hn8Wqt2if-20260429-113432.png?format=webp" size="50" width="800" height="800" isUploading="false" darkWidth="800" darkHeight="800" showCaption="false"}
:::

:::VerticalSplitItem
**xAI** — The new **Create a response** module lets you generate AI responses using web search, code interpretation, and custom functions directly within scenarios.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://images.archbee.com/oAyFj2GHlBeBVWF5OAir2/c3mKLC3Hyhr4p6BZYixkk-20251029-171037.png?format=webp" size="50" width="800" height="800" isUploading="false" darkWidth="800" darkHeight="800" showCaption="false"}
:::

:::VerticalSplitItem
**Pipedrive&#x20;**— You can now assign up to ten users to a single task. The **Create a Task** and **Update a Task** modules include a new **Assignee IDs** field, and **Search Tasks** and **Get a Task** now return it too.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://make-cxp-documentation.ams3.digitaloceanspaces.com/apps-center-icons/trustpilot.png" size="50" width="512" height="512" isUploading="false" darkWidth="512" darkHeight="512" showCaption="false"}
:::

:::VerticalSplitItem
**Trustpilot&#x20;**— We've added a server-to-server connection type, so you can connect to Trustpilot using OAuth 2.0 with your API key and secret, ideal for automated scenarios that run without user interaction.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://make-cxp-documentation.ams3.digitaloceanspaces.com/apps-center-icons/amazon-bedrock.png" size="50" width="512" height="512" isUploading="false" darkWidth="512" darkHeight="512" showCaption="false"}
:::

:::VerticalSplitItem
**Amazon Bedrock&#x20;**— The **Create a conversation** module now supports models that require an inference profile, so you can select the required profile directly when configuring the module.
:::
::::


[title] Organizations & teams
[path] Your organization/

Add users to organizations and teams to manage roles and access.

::::LinkArray{contentSource="DOCS" sourceParentDocId="ef4WhaXRVBNsl4Bc7z0lA" childrenDocs="[object Object],[object Object]" itemsPerRow="2" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/6S1mZLnDSr61QkDw28NsN_1.png" headerType="IMAGE" docId="-FOYcASPYP9uYKGm7LQPB" displayMode="CARD" docSeoDescription="Create and manage organizations to structure teams, control access, and manage credit and data consumption."}
[Organizations](docId:-FOYcASPYP9uYKGm7LQPB)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/WCijRr_pfabQHtVkJpz4o_1.png" headerType="IMAGE" docId="btahAzLP8hMLnPlpMTblN" displayMode="CARD" docSeoDescription="Organize users into teams and assign roles to control access to scenarios and manage credit and data consumption."}
[Teams](docId\:btahAzLP8hMLnPlpMTblN)
:::
::::


[title] Deprecated OpenAI model automatically replaced
[path] Release notes/2026/

We've removed the deprecated `chatgpt-4o-latest` model from the OpenAI app and automatically migrated existing scenarios to `gpt-4o-2024-08-06`. No action is required on your part.

### What changed

The `chatgpt-4o-latest` model is no longer available for selection. Any scenarios that previously used this model now automatically send requests to `gpt-4o-2024-08-06`. We made this change to ensure your scenarios continue to run without interruption after OpenAI discontinued the original model.

### What this means for you

Your scenarios are unaffected and will continue to run as expected. The OpenAI modules in those scenarios will now display `gpt-4o-2024-08-06` as the selected model. Keep in mind that outputs may vary slightly due to differences in model behavior.

[title] Release notes
[path] /

Here you can find what's new at Make. Our release notes document all the new features, apps, modules, improvements, and bug fixes we've shipped. Use these notes to stay informed about changes to the platform and discover new capabilities for your automations.

::::LinkArray{contentSource="DOCS" sourceParentDocId="5wskR8LhZvkA9elh9kgVU" childrenDocs="[object Object],[object Object],[object Object]" displayMode="CARD" itemsPerRow="2"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/zxvKgDNFnjB_DSCJgrgDo_5.png" headerType="IMAGE" docId="k9flmpaDK9lmCQCcD_Hsq" displayMode="CARD" docSeoDescription="Stay updated with new features, apps, modules, improvements, and bug fixes in Make"}
[2026](docId\:k9flmpaDK9lmCQCcD_Hsq)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/5cve3c5DwgliP9Pu5C2Rp_5.png" headerType="IMAGE" docId="52YYbw8_asWBWUdQ42E4h" displayMode="CARD" docSeoDescription="Stay updated with new features, apps, modules, improvements, and bug fixes in Make"}
[2025](docId:52YYbw8_asWBWUdQ42E4h)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/J7DYmIFM844IzesX0wci9_5.png" headerType="IMAGE" docId="NmYgt3bWi9pA2Uqun_ooI" displayMode="CARD" docSeoDescription="Stay updated with new features, apps, modules, improvements, and bug fixes in Make"}
[2024](docId\:NmYgt3bWi9pA2Uqun_ooI)
:::
::::


[title] monday.com app v1 to v2 transition by May 1, 2026
[path] Release notes/2026/

We've released a new version of the monday.com app in Make. Here's what's changing and what you need to know.&#x20;

### What's changing?

Monday.com is updating their API version, and we've released a new version of the monday.com app in Make to support it. While we explored all options to maintain backward compatibility, this change requires an update to how the Make monday.com app works.

:::hint{type="warning"}
**Support timeline:**

- **Now through May 1, 2026:** Both v1 and v2 are available and fully supported.
- **After May 1, 2026:** v1 will no longer be supported. Scenarios still using v1 modules may stop working or return errors.
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Gi6wDXq74J13kWyqzbNBy-20260204-125747.png" size="42" width="715" height="585" position="center" darkWidth="715" darkHeight="585" showCaption="false"}

### Who is affected?

- **Everyone using monday.com:** You'll need to upgrade all your modules from v1 to v2 by May 1, 2026. If your scenarios use specific modules with mapping changes, you'll need to update your mappings before or during the upgrade. See below to check if this applies to you.
- **Not using monday.com?** No action needed.

### Do your modules have mapping changes?

Before you upgrade, check if you're using any of these affected modules. If not, skip to the upgrade steps.

**Affected Module Type 1: Discontinued fields**

- **Modules:** List Boards, Get a Board
- **What changed:** These fields no longer exist: `border`, `var_name`, `done_colors`, `color_mapping`, `labels_position_v2`, `hide_footer`
- **What you do:** Remove mappings that reference these fields.

**Affected Module Type 2: Timestamp renamed**

- **Modules:**
  - **Get & List:** Get an Item, Get an Item's Column Value, List Board's Items, List Group's Items
  - **Search:** Search Items in the Board by Column Values, Search Items in the Board by Column Values (advanced)
  - **Watch:** Watch Board's Items (poling trigger), Watch Board's Items by Column Values, Watch Group's Items, Watch Board’s Column Values, Watch Item's Column Value
- **What changed:** `changed_at` timestamp is now `updated_at`
- **What you do:** Remap any mappings using `changed_at` to use `updated_at` instead.&#x20;

### How to upgrade

::::WorkflowBlock
:::WorkflowBlockItem
**Step 1: Replace your v1 modules.**
In the Scenario Builder, look for the green upgrade arrow on your monday.com modules. Click it, then select "Show me new modules" to upgrade to v2.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/jDtz9Z3m8KrkI1bvdaZr7-20260203-122643.png" size="36" width="378" height="341" position="center" darkWidth="378" darkHeight="341" showCaption="false"}
:::

:::WorkflowBlockItem
**Step 2: Update affected mappings** (if applicable).&#x20;
For any modules listed above, find and remove or remap the discontinued or changed fields.&#x20;
:::

:::WorkflowBlockItem
**Step 3: Test your scenarios.**
Run your scenarios to ensure they work correctly.

:::
::::

:::hint{type="info"}
**Tip: Speed up your migration&#x20;**

You can use the [Make DevTool](https://help.make.com/make-devtool) to speed up your migration. Use the Swap Variable function to update mappings more efficiently across multiple modules instead of editing each one individually.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/EAOaZu1cJtp--1baV60kk_.blob)
:::

### Where to learn more

- Technical documentation: [monday.com](docId\:mJ_QahlKwGsr_o-ecOyiF)&#x20;

[title] OpenAI model deprecations on March 26, 2026
[path] Release notes/2026/

OpenAI will deprecate several models on **March 26, 2026**. When this happens, scenarios using these models will continue to run without interruption. Requests will automatically be processed by `gpt-4.1`. No action is required on your part.

## What changed

The following models will no longer be available for selection starting **March 26, 2026**:

- `gpt-4-0314`
- `gpt-4-1106-preview`
- `gpt-4-0125-preview`
- `gpt-4-turbo-preview`
- `gpt-4-turbo-preview-completions`

You will no longer be able to use these models in your scenarios.

Existing scenarios that use deprecated models might still display the model name in the model dropdown, but will use `gpt-4.1` for future requests.

## What this means for you

Your scenarios will continue to run without interruption after the models are deprecated, and no action is required on your part.

Outputs may vary slightly due to differences in model behavior.

:::hint{type="info"}
For more information about using OpenAI modules in Make, see the [OpenAI app documentation](https://apps.make.com/openai-gpt-3).
:::


[title] New Make Functions app
[path] Release notes/2026/

The Make Functions app introduces a visual way to handle data transformations within your . Previously, Make IML (Integromat Markup Language) functions were only accessible inside mapping fields. With this update, these functions are now available as standalone modules.

By transforming functions into modules, you can now build clear, step-by-step data transformation workflows by chaining them together. This makes complex logic easier to read and maintain without writing nested code.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/HHJKGIz1iC83yltvnwzie-20260505-113017.png)

## Key benefits

**Visual data transformation**: Functions are now modules that you can see and connect in the scenario builder. Each module has clearly defined inputs and outputs, so you can inspect and adjust transformations without editing mapping fields.

**Chained transformations**: Use the **Transform functions&#x20;**&#x6D;odule to combine multiple operations in one step, which makes complex data prep easier to read and maintain.

**Built-in search:&#x20;**&#x20;Find available functions as you build, you can now choose the right operation without memorizing function names in advance.

**Full function coverage:&#x20;** Functions includes six module types - String, Math, Array, Date, General, and Crypto, covering the most common data transformation tasks in a single app.

## How to use it

To add a  Functions module to your scenario:

::::WorkflowBlock
:::WorkflowBlockItem
In the scenario builder, click the **+** icon to add a new module.
:::

:::WorkflowBlockItem
Search for **Make Functions**, then select the module type you need (for example, **String functions** or **Date functions**).
:::

:::WorkflowBlockItem
In the **Operation** field, select the operation from the dropdown.
:::

:::WorkflowBlockItem
Fill in the required fields. Map values from previous modules where needed.
:::

:::WorkflowBlockItem
Click **OK**.
:::
::::

The module outputs a bundle you can map into subsequent modules.

To learn more about Make Functions, see the [Make Functions](docId\:v5lrz7Uqk1z12zxR6RuKq) page.

[title] Claude Opus 4.7 now in Make
[path] Release notes/2026/

Make now supports Claude Opus 4.7, Anthropic's flagship model for long, multi-step tasks. It brings more flexibility and reliability to your scenarios and agents with improved image reading and instruction-following.

## Key benefits

Anthropic’s latest model adds the following capabilities to your scenarios:

- **Consistency in complex automations:** A better understanding of instructions helps your agents plan, act, and check their work more reliably across multi-step workflows.
- **High-resolution image reading:** Extract more from screenshots, invoices, dashboards, diagrams, and PDFs in your image-heavy scenarios.
- **Reliable tool calling:** Agents can more accurately identify and call the right tools, requiring fewer tokens and less human intervention to do their job.
- **Large context handling:&#x20;**&#x57;ith up to a million tokens supported per call, the model allows agents to process large codebases, transcripts, knowledge bases, and chat histories without splitting content.
- **Reasoning control:** Use the new `xhigh `setting to control the model's effort level for tasks where quality matters most.

## Availability

Claude Opus 4.7 is available in these apps:

- **Anthropic Claude&#x20;**(through API key, or [automatically ](https://help.make.com/credits#automatic-ai-provider-connection)in the **Simple Text Prompt&#x20;**&#x6D;odule)
- **Make AI Toolkit&#x20;**(through API key or Make's AI Provider)
- **Make AI Agents&#x20;**(through API key)

[title] Scenario history and run replay improvements, app updates
[path] Release notes/2026/

## Scenario run replay improvements

**Replay runs from Run detail:&#x20;**&#x59;ou can now replay a  run directly from the [Run detail](https://help.make.com/scenario-run-replay#JRQkH) page, giving you another way to replay runs without navigating back to the  Builder.

**View replayed runs in detail:&#x20;**&#x41;fter you replay a  run, click [View run](https://help.make.com/scenario-run-replay#whEDm) to open its run details in a new tab. You can see the replayed run without leaving your current view.

## Scenario history columns

The  history now supports [showing and hiding columns](https://help.make.com/scenario-history#GiUD1). This gives you more control over what you see in the  history.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/r6HKaHZ_tSguH7vVLcMjB-20251212-115430.png)

***

## App updates



::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-UUjn5uUTngOmDCOl0lrvW-20250814-103121.png" size="50" width="393" height="393" darkWidth="393" darkHeight="393" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[OpenAI (ChatGPT, Sora, DALL-E, Whisper)](https://apps.make.com/openai-gpt-3)

We've added support for the **GPT-5.2** model in the OpenAI app.

The **GPT Image 1.5** model is now available in the following modules:

- **Generate images**
- **Edit images**
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/yAufeXqD1oGWOPBNi5MAm-kp3jQtyJ1Qg0NMkLevL_7-20250312-172848.png" size="54" width="113" height="113" darkWidth="113" darkHeight="113" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Anthropic Claude](https://apps.make.com/anthropic-claude)

We've released new Anthropic Claude modules that let you manage:

- **Files**
- **Skills**
- **Skill versions**

These modules give you more control when working with Claude resources in your .
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://make-cxp-documentation.ams3.digitaloceanspaces.com/apps-center-icons/figma.png" size="50" width="512" height="512" darkWidth="512" darkHeight="512" position="center" alt="Figma logo" showCaption="false"}
:::

:::VerticalSplitItem
[Figma](https://apps.make.com/figma)

Two new webhook modules are now available for Figma files:

- **Watch file comments**
- **Watch file updates**

You can use these modules to monitor changes and feedback in Figma.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/yAufeXqD1oGWOPBNi5MAm-2AmlQv0vjQsaODMeJ68Ek-20250312-173246.png" size="54" width="113" height="113" darkWidth="113" darkHeight="113" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Canva](https://apps.make.com/canva)

We've released new modules that allow you to work with Canva brand templates:

- **Autofill a Design from a Brand Template**
- **Search Brand Templates**
- **Get a Brand Template**
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/C4r0TYdKvcpg5VZD2xVPn-20260107-132617.png" size="50" width="800" height="800" darkWidth="800" darkHeight="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Google Gemini AI](https://apps.make.com/gemini-ai)

The **Generate a response** module now includes an optional **Image Size** field for image generation.

You can choose between **1K**, **2K**, and **4K** to control the resolution of generated images.
:::
::::


[title] Make AI Agents (New): MCP tools are now available
[path] Release notes/2026/

You can now add MCP tools in the [Make AI Agents (New)](https://help.make.com/make-ai-agents-new-app) app. Use the new **Add MCP&#x20;**&#x62;utton to connect to tools beyond the standard  apps and expand what your agent can do.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/IoutVZwKRusv_k0efmumf-20260527-114023.png)

## Key benefits

- **More tool coverage**: Add one or more MCP servers to give your agent access to tools that aren't already in .&#x20;
- **Unified agent decisions**: The agent chooses the right MCP, module, or scenario tools for each task, with everything it needs to act in one place.&#x20;
- **Reuse what you already have**: Add the same MCP servers your team uses in AI assistants like Claude, Cursor, or Copilot without setting up again.&#x20;
- **Handle multi-system work**: Build agents for tasks such as lead research, enrichment, and ticket handling without manually building scenarios or HTTP requests for each system.

## Learn more

To learn how to connect your agent to MCP tools, see [Create your first AI agent](docId\:hA1-tULW54S28IH4StIxr).

[title] Introducing MCP toolboxes
[path] Release notes/2026/

MCP toolboxes are now available in Make. Toolboxes are dedicated [Make MCP servers](docId\:DSXYGPC7BjnnX33pI786J)  that connect AI systems, such as Claude and ChatGPT, to specific sets of scenarios used as tools.&#x20;

With easy tool selection and configuration and the option to generate multiple keys per toolbox, they're ideal when you need to control which tools AI can access and securely share different tool sets with team members and clients.

To use MCP toolboxes, go to **MCP Toolboxes** in the left sidebar and click **Create toolbox**.

## Why use MCP with Make?

When connected using MCP,  and AI build on each other's strengths:  gives AI access to its large network of connections to third-party services and data, while AI intelligently chooses the right  resource for each task. &#x20;

**Benefits of Make MCP server:**

- Use one MCP server to access a wide range of tools instead of multiple servers
- Gain visibility into the tools that AI uses, with all tool runs visible in &#x20;
- Use tools that you built in  to help AI perform specific tasks, so you control the tools used and support reliable and cost-effective AI decision-making

## Key features

MCP toolboxes offer the following capabilities:

- **Selective tool access**: In each toolbox, choose which tools (scenarios) are available to AI, so you have granular control over what it can do and see in .
- **Toolbox sharing with keys**: Create multiple authorization keys per toolbox to easily and safely share tools with others.
- **Tool configuration**: Customize labels, descriptions, and annotations to help AI understand and use each tool efficiently. &#x20;
- **Unique URLs per toolbox**: Each toolbox gets its own server URL for secure connections.

## Get started

To learn more about MCP toolboxes, refer to these resources:

- [Introduction to MCP](docId\:DSXYGPC7BjnnX33pI786J) for an overview of MCP at &#x20;
- [MCP toolboxes](docId\:JqY6i5aCFIm-kOm9ERv7A) for managing toolboxes and connecting them to AI systems

:::hint{type="info"}
MCP toolboxes are available t&#x6F;**&#x20;all plans**.&#x20;
:::


[title] Filter copying, smarter app search, and scenario sorting
[path] Release notes/2026/

Building complex automations often means repeating the same work: copying filter logic, searching through app lists, and hunting through scenarios. We're excited to share the latest platform improvements designed to save you hours.&#x20;

## Copy & paste filters between modules

When building scenarios with multiple routes or error-handling paths, you end up recreating the same filter logic over and over. It's tedious, error-prone, and time-consuming.&#x20;

### What's new

- **Instant duplication:** Right-click to copy your filter logic and paste it onto another module in one action
- **Visual confirmation:** A subtle shimmer effect confirms your copy-paste worked

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/XejIod85snZ2m1l6S_Was-20260212-142316.png)
:::

:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/IOfhbLbzotubv_pUs-Xpa-20260212-142331.png)
:::
::::

### Who it's for

- **Power users:** Scale complex routing logic across large scenarios without manual replication
- **Teams:** Ensure consistency across error-handling paths and different branches
- **Everyone:** Save time by avoiding repetitive configuration

## Enhanced app search

Finding the right app in a long list takes time. We've made it faster and more intuitive.

### What's new

- **Organized app categories:** Apps are grouped into intuitive categories (Featured, Built-in tools, Productivity, AI) so you narrow down options quickly
- **Scenario context:** Apps already used in your scenario appear at the top for quick access to related modules
- **Polished interface:** Fresh UI with smooth animations makes browsing feel effortless

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/JtFNjuXONckSysTplEnjA-20260212-135659.png" size="68" width="1324" height="860" position="center" showCaption="false"}

### Who it's for

- Everyone building scenarios—find what you need without endless scrolling

## Updated scenario filtering and sorting

Managing dozens of scenarios gets messy. We have added the ability to sort scenarios by **Last edited** and redesigned the filtering interface to help you find relevant scenarios faster.

### What's new

- **Last edited sorting:** Scenarios now sort by most recent edits
- **Enhanced interface:** Cleaner dropdown menu with more sorting options (Name A-Z, Created newest/oldest, Credit usage)

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/0kPDmuVZ0shZGF1FMJN9p-20260212-143907.png" size="50" width="1030" height="578" position="center" showCaption="false"}

### Who it's for

- **Teams managing shared scenarios:** See which scenarios have been recently updated
- **Anyone with multiple scenarios:** Sort by last edited to find what you were working on

:::hint{type="info"}
Available on all plans. Start using these features in the Scenario Builder today.
:::


[title] Introducing Scenario recovery
[path] Release notes/2026/

:::hint{type="info"}
Scenario recovery is available to users on all plans.&#x20;
:::

Previously, if your session was interrupted while building or editing a scenario, any unsaved progress was lost.

With Scenario recovery, Make automatically saves a blueprint of your scenario as you work. If something interrupts your session, like a browser crash, a lost connection, or accidentally closing the tab, you can recover your unsaved changes when you return.

## Key benefits

- **Fast recovery:** Resume work without manually rebuilding unsaved changes from scratch.
- **Automatic backup**: Safeguard progress even if you forget to save manually. 
- **Protection from interruptions**: Retain all your scenario edits in case of sudden crashes, timeouts, or connectivity issues. 

## Where to find it

To recover unsaved changes from an automatically saved blueprint:

::::WorkflowBlock
:::WorkflowBlockItem
Open your scenario after an interruption.
:::

:::WorkflowBlockItem
If unsaved changes are detected, a dialog window will appear displaying: &#x20;

- A list of changes
- A scenario preview
- The date of the latest blueprint version&#x20;
:::

:::WorkflowBlockItem
Click **Recover**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/-m6aBSS0rtdls_wmzaRoK-20260313-160421.png)
:::
::::

:::hint{type="warning"}
This isn't an autosave feature. After recovering the changes, you still need to **manually** save the scenario. An automatically saved blueprint is a temporary version that will be overwritten by your latest changes or manual saves.
:::

## Where to learn more

- ﻿Technical documentation: [Scenario recovery](https://help.make.com/restore-and-recover-scenario#scenario-recovery)

[title] Access management
[path] Your organization/

Set up SSO and manage SAML certificates.

::::LinkArray{contentSource="DOCS" sourceParentDocId="BbVq-IisOUQLJb4T4UKMl" childrenDocs="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]" displayMode="CARD" itemsPerRow="2"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="Ku5mtX5grj5DBQAwSjlk0" displayMode="CARD" docSeoDescription="Set up single sign-on with your identity provider to authenticate users with OIDC or SAML 2.0."}
[Single Sign-on](docId\:Ku5mtX5grj5DBQAwSjlk0)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="c2tfQhgM9UQannl5dWZhk" displayMode="CARD" docSeoDescription="Configure Google SAML single sign-on to authenticate users with their Google accounts."}
[Google SAML](docId\:c2tfQhgM9UQannl5dWZhk)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="VH6038lSPDoXXxc-U4vmg" displayMode="CARD" docSeoDescription="Configure OIDC single sign-on with Microsoft Azure AD to authenticate organization users."}
[MS Azure AD OIDC](docId\:VH6038lSPDoXXxc-U4vmg)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="leFN8YTGnMlOiWhCpaEUM" displayMode="CARD" docSeoDescription="Configure SAML single sign-on with Microsoft Azure AD to authenticate organization users."}
[MS Azure AD SAML](docId\:leFN8YTGnMlOiWhCpaEUM)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="Q0SYPMV8_3Mmt_NiKfL2K" displayMode="CARD" docSeoDescription="Set up SAML SSO for Enterprise organizations."}
[Okta SAML](docId\:Q0SYPMV8_3Mmt_NiKfL2K)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="4wjm5Akj6VmC7a_Ga63Ay" displayMode="CARD" docSeoDescription="Manage Enterprise SP certificates to ensure secure SSO and prevent login failures."}
[SAML certificate management](docId:4wjm5Akj6VmC7a_Ga63Ay)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="sox7tIAcDDv9bdKVh5Kj2" displayMode="CARD" docSeoDescription="Claim your domain to prevent unauthorized accounts and ensure all new users are routed through Enterprise SSO."}
[Domain claim](docId\:sox7tIAcDDv9bdKVh5Kj2)
:::
::::


[title] WhatsApp Business Cloud connections, Bluesky media handling, new xAI and monday.com modules, and more
[path] Release notes/2026/

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-Dv-VaPAQ8k7UdBK2xFJ-k-20250829-120858.png" darkSrc="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-Dv-VaPAQ8k7UdBK2xFJ-k-20250829-120858.png" size="50" width="800" height="800" darkWidth="800" darkHeight="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[WhatsApp Business Cloud](https://apps.make.com/whatsapp-business-cloud) — You can now choose a setup type when creating a connection, so you can connect an existing WhatsApp Business Account, create a new one, or connect your WhatsApp Business App number.

The legacy connection type is also available as a fallback until **April 2027**, but new scenarios should use the embedded signup connection for better long-term compatibility.

The **Watch Events** trigger now accepts only the supported connection type to help prevent connection-related errors.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/cpvoNyznnr3WdSnvJmnRh-20260211-103030.png" darkSrc="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/cpvoNyznnr3WdSnvJmnRh-20260211-103030.png" size="50" width="800" height="800" darkWidth="800" darkHeight="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[NetSuite](https://apps.make.com/netsuite) — You can now clear existing field values in the **Create or Update a Record** module by mapping a field to `null` and enabling **Erase Null** Fields. This fixes an issue where `null` values didn’t remove existing data during **Update** or **Upsert** operations. The setting is disabled by default, so existing scenarios keep their current behavior.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/xzRMUtIJevh98V6Io9ds6-20260506-133228.png" darkSrc="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/xzRMUtIJevh98V6Io9ds6-20260506-133228.png" size="50" width="800" height="800" darkWidth="800" darkHeight="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Bluesky](https://apps.make.com/bluesky) — The **Create a Post** and **Create a Reply** modules now include an optional **Size** field for images and videos. Map the Size output from the Upload Media module to help prevent `[400] InvalidSize` errors when publishing posts with media. If you leave the field empty, Make uses the default maximum size.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/L1z3rtH6mt81hn8Wqt2if-20260429-113432.png" darkSrc="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/L1z3rtH6mt81hn8Wqt2if-20260429-113432.png" size="50" width="800" height="800" darkWidth="800" darkHeight="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[xAI](https://apps.make.com/xai) — The new **Create a response** module lets you generate AI responses with tools such as web search, X search, file search, a code interpreter, and custom functions.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/uVOMKhf9nBsiLfZUawFea-20260506-133505.png" darkSrc="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/uVOMKhf9nBsiLfZUawFea-20260506-133505.png" size="50" width="800" height="800" darkWidth="800" darkHeight="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Fatture in Cloud](https://apps.make.com/fatture-in-cloud) — The Create an Issued Document and Update an Issued Document modules now include 15 new input fields and five additional output fields, giving you more control when creating or updating e-invoices.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/7Ek56n9PrRrHFO9JoywlF-20260203-162257.png" darkSrc="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/7Ek56n9PrRrHFO9JoywlF-20260203-162257.png" size="50" width="208" height="208" darkWidth="208" darkHeight="208" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[monday.com](https://apps.make.com/monday) — The new **Aggregate Table (beta)** module lets you run calculations such as `SUM`, `AVERAGE`, and `COUNT` on monday.com boards without retrieving every item. You can group results by selected columns, build queries with dropdown fields or raw JSON, and get clearer outputs when grouping by a **Connect to Board** column.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/DntI3jsYzUitOgbCYiNCX-20260506-134243.png" darkSrc="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/DntI3jsYzUitOgbCYiNCX-20260506-134243.png" size="50" width="800" height="800" darkWidth="800" darkHeight="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[QuickBooks](https://apps.make.com/quickbooks) — Search modules now retrieve all matching results instead of stopping at the previous 100-item limit. Dropdown fields for records such as customers, accounts, classes, and vendors now show up to 1,000 items, making it easier to select the right data when configuring modules.

The **Get an Invoice** module also returns the `Invoice link` field for invoices that support online payments and have a valid customer email address in QuickBooks. The **Watch Events** trigger now supports the new QuickBooks webhook format, so existing scenarios keep working without any action in Make.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/8cSvFKNy4-AjEYYd9rOfl-20260506-134353.png" darkSrc="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/8cSvFKNy4-AjEYYd9rOfl-20260506-134353.png" size="50" width="800" height="800" darkWidth="800" darkHeight="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[ActiveCampaign](https://apps.make.com/activecampaign) — The **Pipeline** field in the **Watch Deals** and **List Deals** modules is now a dropdown menu. You can select a pipeline directly from your ActiveCampaign account or map its ID, so you no longer need to find and enter the Pipeline ID manually.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://make-cxp-documentation.ams3.digitaloceanspaces.com/apps-center-icons/salesmate.png" size="50" width="512" height="512" darkWidth="512" darkHeight="512" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Salesmate](https://apps.make.com/salesmate) — The **Create an Activity** and **Update an Activity** modules now include fields for `Primary Contact ID`, `Primary Company ID`, and `Related Deal ID`. You can use these fields to link activities to the right contacts, companies, and deals directly in your scenarios.
:::
::::

***

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://images.archbee.com/oAyFj2GHlBeBVWF5OAir2/5T4rB8igP2Lg8RSiBnL28-20260424-104302.png?format=webp" size="50" width="800" height="800" darkWidth="800" darkHeight="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[GoHighLevel](https://apps.make.com/highlevel) — We’ve released a new **Watch Events** instant trigger for more reliable event delivery. The previous trigger is now available as **Watch Events (legacy)** and is deprecated. To keep receiving new events, update your scenarios to use the new Watch Events trigger with a [GoHighLevel Events OAuth 2.0 connection](https://apps.make.com/highlevel#set-up-a-gohighlevel-webhook).
:::
::::


[title] Profile settings
[path] Your profile/

Manage your profile settings, including your email address, preferences, time zone, API keys, and two-factor authentication.

::::LinkArray{contentSource="DOCS" sourceParentDocId="MaZ5ywIXMLlUvurb2R8mN" childrenDocs="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]" itemsPerRow="2" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="9185H6UGYoFohnV-MwY8j" displayMode="CARD" docSeoDescription="Update your account email address, verify the change through security links, and contact support if you lose account access."}
[Change your email address](docId:9185H6UGYoFohnV-MwY8j)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="W6MIE5W1V2tVBemgxP-s_" displayMode="CARD" docSeoDescription="Customize your notification settings for Make updates and manage organization-specific alerts for scenario errors, warnings, and deactivations."}
[Manage your email preferences](docId\:W6MIE5W1V2tVBemgxP-s_)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="V0zw4C1wrKvEv7FxU_FnA" displayMode="CARD" docSeoDescription="Learn how to permanently delete your account, manage connection settings during the process, and understand the impact on your organization."}
[Delete your profile](docId\:V0zw4C1wrKvEv7FxU_FnA)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="Bn3S0_8AZJDynxbNzNP_a" displayMode="CARD" docSeoDescription="Learn the difference between organization and user time zones and how to customize your settings for scenario scheduling."}
[Manage time zones](docId\:Bn3S0_8AZJDynxbNzNP_a)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="7uUnpxNRJ1VEK4bJvXaR0" displayMode="CARD" docSeoDescription="Generate and manage API keys, select the necessary security scopes, and safely store your tokens for external access."}
[API key](docId:7uUnpxNRJ1VEK4bJvXaR0)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="WXHV3PbHkFgLwTRqVRWwY" displayMode="CARD" docSeoDescription="Secure your account by enabling 2FA, use authenticator apps to sign in, and manage recovery codes to ensure continuous access."}
[Two-factor authentication](docId\:WXHV3PbHkFgLwTRqVRWwY)
:::
::::


[title] Upgrade to the Enterprise plan
[path] Your organization/Subscription/

With the Enterprise plan, you get access to the most advanced  features, wider limits, priority support, and a separate Celonis Amazon Web Service environment.&#x20;

After signing up for Enterprise, you will need to migrate your data to our dedicated server in your region. This will give you access to a more stable and reliable infrastructure.  provides an effective tool to let you migrate your data fast and easily.

In this article, you will learn how to use the   **Migration tool** to move your data and start enjoying the Enterprise plan.

## Migration scope overview

The Migration tool has two modes:

- Fast mode enables automatic migration of selected  and their associated data. In some cases, the system may require you to take manual steps.
- Manual mode allows you to choose which data to migrate and how to handle it in your Enterprise instance.&#x20;

### Which data can you migrate?

The Migration tool migrates the following items:

-  and  folders
- Connections (except those that are associated with [connected systems and on-prem agents](docId:2D2-HUt5EUJNKigSzp0vM)&#x20;
- Webhooks and mailhooks
- Keys
- Data stores
- Data structures
- Custom apps&#x20;

:::hint{type="info"}
If the following items exist in your source instance, but no  use them, the Migration tool **doesn't** move them to the target instance:

- Connections
- Webhooks and mailhooks
- Keys
- Data stores
- Data structures
:::

### Which data can't you migrate?

- User accounts
- Organizations
-  executions history and logs
- Incomplete executions
- [Connections associated with connected systems and on-prem agents](docId\:AFQxzV-wYWKyLberqKwbV)
- Webhook and mailhook queues and logs
- [Devices](docId\:AFQxzV-wYWKyLberqKwbV)&#x20;
- [Payment details and extra credits](docId\:AFQxzV-wYWKyLberqKwbV)&#x20;

## Prepare your data

The Migration tool has some peculiarities that you need to keep in mind when migrating your data either in fast or manual mode. To arrange your target instance better, consider taking some measures that allow you to overcome limits of the Migration tool.

### Teams

**Keep in mind that**: Migration involves transferring data from one team in the source instance to another team in the target instance.

To have your data in different teams in the target instance:

::::WorkflowBlock
:::WorkflowBlockItem
In the target instance, create as many teams as needed.
:::

:::WorkflowBlockItem
In the Migration tool, select the team you want to migrate scenarios to, and then select the specific  to be moved to the selected team.
:::
::::

:::hint{type="info"}
You can't move  from one team to another after finishing migration. When migration is complete, you can clone  and select the desired team for them.

To avoid data inconsistency, we recommend not migrating data from the same team more than once.
:::

### Time zones

**Keep in mind that**: The Migration tool doesn't migrate the time zone settings. You need to set up time zones in the target instance.

If you aim to run  in the target instance according to the time zone that you have in the source instance, manually set up a time zone in the target instance. Learn more about [managing time zones](docId\:Bn3S0_8AZJDynxbNzNP_a).

### Scenarios

**Keep in mind that**: If your  contain apps that require you to whitelist IP addresses for access, you need them to have relevant IPs associated with the target instance.

Before migrating such scenarios, [add the following IPS to apps](docId\:d0Fwd60KZrVCj9b0OzrIy) depending on your zone: **eu1.make.celonis.com** or **us1.make.celonis.com**. You may delete those IPs from apps in the source instance after the migration is done.

**Keep in mind that**: The Migration tool doesn't migrate a webhook or mailhook queue. It can cause problems if you use [Process data in order](docId\:evAR6qLowV4yyUnEyV-00) because  data may arrive to the target instance before the queue is processed in the source instance.

To ensure to process data in order, do one of the options:

Option 1: Process the entire queue in the source instance before migrating.

Option 2:

::::WorkflowBlock
:::WorkflowBlockItem
Migrate  in the manual mode.
:::

:::WorkflowBlockItem
Disable  in the target instance and enable  in the source instance.
:::

:::WorkflowBlockItem
Process the webhook queue.
:::

:::WorkflowBlockItem
Once all the data is processed, enable  in the target instance.
:::
::::

:::hint{type="info"}
Data received after migration goes to the new webhook URL and will be processed once you enable  in the target instance.
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-M_grpiFO3U5vKaJAlvnNc-20241203-103945.png" size="70" width="2221" height="2801" position="flex-start" alt="Migrating scenarios" darkWidth="2221" darkHeight="2801" showCaption="false"}

### Connections

**Keep in mind that**: The Migration tool doesn't replace one connection with another if they have different scopes and permissions.

Ensure that scopes and permissions of connections in the target instance match scopes and permissions of connections that you want to replace.

### Data stores

**Keep in mind that**: Data may be inconsistent between the source and target instances if the Migration tool moves  that update data stores more frequently than every five minutes.

To avoid inconsistency:

:::::WorkflowBlock
::::WorkflowBlockItem
Stop all  in the source instance before starting migration.&#x20;

:::hint{type="info"}
You only have to stop  that contain the **Add/replace a record**, **Delete all records**, **Delete a record**, and **Update a record** modules.
:::
::::

:::WorkflowBlockItem
Migrate the .
:::

:::WorkflowBlockItem
Run the  in the target instance.
:::
:::::

### Custom apps

**Keep in mind that**: You cannot migrate  with published custom apps if you didn't install those apps into the target instance beforehand.

To have  with custom apps in the target instance:

:::::WorkflowBlock
::::WorkflowBlockItem
If the custom app has the **Private** status, publish it. Refer to the [App Builder documentation](https://developers.make.com/custom-apps-documentation/app-visibility#public-app) to learn more.

:::hint{type="info"}
It is not possible to migrate apps that have the **Private** status. Publish the app after making all the necessary changes.

When the custom app has the **Published** status, you cannot:

- Make the custom app Private again
- Delete the custom app
- Delete a module from the custom app
:::
::::

:::WorkflowBlockItem
Install the published custom app in the target instance.
:::

:::WorkflowBlockItem
Delete a module from the custom app.
:::
:::::

## Migrate your data

You can migrate as many  as you want at once. If you don't migrate all  at once, you can continue later.

Follow the next steps to start migration:

::::WorkflowBlock
:::WorkflowBlockItem
Go to the [Migration tool](https://migrate.make.com/).
:::

:::WorkflowBlockItem
Read all the information and click **Let's start**.
:::

:::WorkflowBlockItem
In the **Source** and **Target** sections, select .
:::

:::WorkflowBlockItem
In both sections, click **Sign in to source** and **Sign in to target** respectively, and log in to both  instances. Then click **Continue.**
:::

:::WorkflowBlockItem
In both **Organization** dropdown lists, select the source organization to migrate data from, and the target organization to migrate the data into.
:::

:::WorkflowBlockItem
In both **Team** dropdown lists, select the source team to migrate data from, and the target team to migrate data into. Then click **Continue**.
:::
::::

You see the list of all  that your source instance has. You can select the migration mode: fast or manual.

You see the list of all  that your source instance has. You can select the migration mode: fast or manual.

:::hint{type="info"}
The Migration tool doesn't migrate s that have errors: you can find them in the **Non-migratable&#x20;** tab. If you want to move those  to the target instance, you must first resolve the errors.
:::

### Manage your data and finish the migration

Depending on the migration mode you chose, you need to decide how to handle your data from the source instance. Some options are available only for the manual mode.

We highly recommend using the fast migration mode to ensure smooth and easy data transferring.

:::::WorkflowBlock
:::WorkflowBlockItem
Select custom apps to replace ones that migrated  use.
:::

::::WorkflowBlockItem
Select the action for connections:

- Duplicate a connection in the target instance
- Replace a connection with the one that exists in the target instance
- Use a previously migrated connection

:::hint{type="info"}
The set of scopes or permissions of a particular connection might differ between the source and the target instance. To see the scopes of a specific connection, go to the **Connection** section and click the eye icon.

If you need to extend scopes:

1. Log in to either a source or a target instance depending on where you need to extend scopes.
2. Create a new  or open an existing one.
3. Add a module that requires additional scopes.
4. Create a new connection.  will ask you to provide additional permissions. Click **Continue**.
5. On the app page where you're redirected to, confirm granting new scopes.
6. Optional: Delete the module or the newly created  if you don't need it.

Some apps allow adding scopes manually when creating a new connection. If you created a custom application in a service itself, you may extend scopes in your service account.
:::
::::

::::WorkflowBlockItem
Select the action for webhooks and mailhooks:

- Duplicate a webhook or mailhook
- Duplicate a webhook or mailhook and forward traffic

:::hint{type="info"}
We recommend always choosing the second option. If you just duplicate a webhook or mailhook, traffic will still be sent on the webhook or mailhook that you have in the source instance, and no data will appear in the target instance.

A duplicated webhook will have a different URL.
:::
::::

::::WorkflowBlockItem
If you have linked devices in your source instance, create a mock device in the target instance.

:::hint{type="info"}
You need to replace a mock device with a real device. See more information in the [devices section](docId\:AFQxzV-wYWKyLberqKwbV) below.
:::
::::

::::WorkflowBlockItem
Select the action for data stores:

- Duplicate a data store and migrate its content
- Duplicate a data store without its content
- Replace a data store with the one that exists in the target instance

:::hint{type="info"}
The Migration tool will replace data in the data store in the target instance with data from the source instance. If you use auto-generated keys,  will store data under different keys in the target instance.
:::
::::

:::WorkflowBlockItem
Select the action for data structures:

- Duplicate a data structure
- Replace a data structure with the one that exists in the target instance
:::

:::WorkflowBlockItem
Select the action for keys:

- Duplicate a key
  A duplicated key contains the relevant data, but the key ID is different.
- Replace a key with the one that exists in the target instance
:::

:::WorkflowBlockItem
Select the action for folders:

- Duplicate a folder
- Replace a folder with the one that exists in the target instance
:::

::::WorkflowBlockItem
Select what you want to do with the  both in the source and target instances.

:::hint{type="info"}
If at least one  contains webhooks or mailhooks,  automatically disables all migrated scenarios. You may enable them manually after migration.&#x20;
:::
::::

:::WorkflowBlockItem
Click **Start migration**.
:::
:::::

The Migration tool shows the list of  and entities it migrated and confirms that the migration process was successful. Click **Show log** to see the migration log.

If the migration fails, the Migration tool rolls back all changes made both to the source and target instances. Check the migration log out to find out reasons for the failure.

## Post-migration data setup

Using the Migration tool to move your data to a different server environment ensures smooth and easy migration. Still, you must consider specific details and take certain actions after migration to fully benefit from the Enterprise plan.

Your data will remain in your source instance after migration.

### Subscriptions and coupons

 doesn't automatically cancel your source instance subscription. After you fully set up your target instance, you need to manually cancel your subscription. After that, your source instance moves to [the Free pricing plan](https://www.make.com/en/pricing). You can use all available features within this plan.

Extra credits remain in the source instance. Contact our Support to move extra credits to the target instance.

### Scenarios

After migrating  scheduled as **immediately**, they execute once the  trigger receives new data.

Some  require additional configuration after migration. Pay attention to  that contain:

- Custom apps: They may require additional setup.
- Apps that require IP whitelisting: Make sure that the migrated scenarios have [updated IPs](docId\:d0Fwd60KZrVCj9b0OzrIy) in their apps.
- The app: Create a new connection and update all IDs mapped in the app modules. New IDs should be associated with the data based on the target instance.

### On-prem connections

The Migration tool doesn't migrate connections associated with [connected systems and on-prem agents](docId:2D2-HUt5EUJNKigSzp0vM). You need to manually create connections in the target instance and then link them to connected systems.&#x20;

### Webhooks and mailhooks

If during migration you selected duplicating webhooks or mailhooks and forwarding traffic, the old URL in the source instance still receives traffic, but redirects it to the new URL in the target instance. Don't delete the old URL in order not to lose traffic. Contact our Support to receive a list of pairs of old and new URLs.

### Devices

The Migration tool creates mock devices in the target instance to migrate  that use the iOS or Android app.

The mock device is called a deaf device in the target instance.

After migration, to use such , you must:

::::WorkflowBlock
:::WorkflowBlockItem
Create a new device manually in the target instance.
:::

:::WorkflowBlockItem
Replace a mock device with the newly created in all relevant .
:::

:::WorkflowBlockItem
Delete all mock devices.
:::
::::


[title] Connect your third-party  automation and AI agents
[path] Release notes/2026/

You can now extend your landscape in Make Grid. View your n8n workflows, Claude Managed Agents, and Relevance AI assets in the same view as your Make scenarios, all mapped together, all visible at once.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/TQt734pkB8Zi09BySZrTO_image.png)

## What you can do

- **See everything in one map:** View your Claude Managed Agents, n8n automations and agents, and Relevance AI agents alongside your Make scenarios in a single Grid view, so architecture reviews start from the full picture, not a partial one.
- **Trace dependencies across platforms:** Follow how scenarios, workflows, and AI agents connect to each other before you touch a database, service, or agent that other systems rely on.
- **Spot AI and PII exposure:** See how AI and personal data flows and show up across your extended stack, so governance conversations account for everything, not just what's built in Make.
- **Track usage by provider:** Turn on Grid layers to see unit or credit consumption for each provider, and connect usage spikes back to the automations and agents driving them.
- **Search across systems:** Find every place a specific application, webhook URL, or ID is referenced across connected platforms, without opening five different tools to check.

## Learn more

To learn more about manage providers, see [Connect external providers](docId\:qyowLD4jybx1abyJRDqc9) page.


[title] Your profile
[path] /

Find resources to manage your profile and explore Make’s programs.

::::LinkArray{contentSource="DOCS" sourceParentDocId="smDUn4B88WLD7ddAVGFuo" childrenDocs="[object Object],[object Object]" itemsPerRow="2" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="MaZ5ywIXMLlUvurb2R8mN" displayMode="CARD" docSeoDescription="Manage your profile settings, including your email address, preferences, time zone, API keys, and two-factor authentication."}
[Profile settings](docId\:MaZ5ywIXMLlUvurb2R8mN)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/LiZbVKOM9blStlKJT3oaX_1.png" headerType="IMAGE" docId="NWC5J8dKUwL7uaZFyvWls" displayMode="CARD" docSeoDescription="Learn more about our special initiatives, including the affiliate program and our NGO program."}
[Make programs](docId\:NWC5J8dKUwL7uaZFyvWls)
:::
::::


[title] Content search in Make Grid
[path] Release notes/2026/

Content search lets you search across modules, fields, tokens, webhook URLs, and notes in every  in your account. Search your entire landscape from a single global search bar in Make Grid, instead of opening scenarios one by one.

## What changed

The global search bar in Make Grid now searches inside your scenario configurations, not just their names. You can find any of the following:

- Any module used across your scenarios.
- Specific fields by ID.
- Webhook URLs referenced anywhere in your configs, including inside message or email bodies.
- Notes you or your team left on scenarios.
- Anything inside a module config, including AI agent prompts.

## Key benefits

- **Search your entire landscape at once** – You do not need to open scenarios one by one.
- **Understand the impact before you make a change** – see every scenario that touches a module, field, or webhook before you edit it.
- **Find your own notes and context** – search the notes you left yourself or your team, not just configs.
- **Cover what other tools can't** – includes AI agent prompts and anything inside a module config, not just top-level fields.
- **Skip the workaround** – no more exporting blueprints into an external database just to get basic search.

Content Search is available to all users on the Core, Pro, Teams, and Enterprise plans.

## Resources

- [Make Grid extended search demo](https://www.loom.com/share/2bf1a253713244d58b6249f0cd6280de)
- [Search scenarios by content](docId\:xOd6UEOpgxIAyBaPflAB_)

[title] Monthly and annual subscriptions
[path] Your organization/Subscription/

In , you can choose between a monthly and annual subscription.

### Monthly subscription

If you have a monthly subscription, your billing cycle is one month, and you have a monthly allocation of credits in the tier you choose. For example, if you subscribe on January 12th, your next payment is due on February 12th.

### Annual subscription

If you have an annual subscription, you pay the whole yearly amount up front, and we allocate all the credits that belong to the specific plan and tier you chose. There is no monthly credits allotment, but the bulk of credits is available for you to use flexibly over the year.

:::hint{type="info"}
With the Core plan, you always have monthly allocated credits, even if you have an annual subscription. Only Pro and Teams plans have an annual package of credits.
:::

### Change your billing cycle

If you change from a monthly to an annual subscription, and vice versa, we look at your current and future credit tier. The tier determines whether the action is an upgrade or a downgrade.

Changing from a monthly to an annual subscription to an equal or higher tier is an [upgrade](docId\:gs-eeU8aLcJLqMnJM1ZtM) (e.g., from 10,000 per month in Pro to 120,000 per year in Pro).

Changing from an annual to a monthly subscription to a lower tier is a [downgrade](docId\:gs-eeU8aLcJLqMnJM1ZtM) (e.g., from 240,000 credits per year in Pro to 20,000 credits per month in Pro).

[title] New module output search, raw data view, undo and redo, and Gemini 3.5 Flash
[path] Release notes/2026/

Here's a quick look at our most recent product improvements and fixes.&#x20;

## Search in module output

You can now search inside the module output dialog to find the data you need faster. Search by key or value to inspect large outputs without scanning every field.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/M4uShPhgF2l3KLo_b4DGQ-20260520-075843.png)

### Key benefits

- **Find keys faster**: Jump straight to the field you need when you are checking module output.
- **Match exact values**: Search for specific values to confirm the data a module returned.
- **Review large outputs with less effort**: Move through complex payloads faster when a module returns many fields.

### Where to find it

To view the search option of a module output:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
Run your  in the  Builder.
:::

:::WorkflowBlockItem
Click the output bubble above a module.&#x20;
:::
::::

You can now search for values in your output bundle.

## Raw data view for module bundles

You can now view, copy, or download the raw bundle data of any module. Use the raw data view to understand input and output data, share it with support, or work with it outside of .

### Key benefits

- **View formatted JSON:** Bundle data displays in JSON with syntax highlighting, so you can spot fields, nested objects, and values when troubleshooting.
- **Copy content:** Copy input or output bundle data to paste into tickets, chats, or your own tools.
- **Download as JSON:** Save data as JSON files to send to support or inspect in your preferred editor.

### Where to find it

To view the raw bundle data of a module:&#x20;

::::WorkflowBlock
:::WorkflowBlockItem
In the  Builder, click the output bubble above a module.&#x20;
:::

:::WorkflowBlockItem
Once you expand an operation, click the three-dot menu next to **Input**.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/9NzXNS8tBmf1HWunOBEnC-20260521-093836.png" size="70" width="659" height="685" darkWidth="659" darkHeight="685" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Select **View raw input&#x20;**&#x6F;r **View raw output**.&#x20;
:::

:::WorkflowBlockItem
Optionally, copy or download the input or output bundle data.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/wGkGLlpuWT5ISsv8PWBwl-20260521-094405.gif" size="70" width="1178" height="758" darkWidth="1178" darkHeight="758" position="center" showCaption="false"}
:::
::::

You've now viewed the raw bundle data of a module.&#x20;

## Gemini 3.5 Flash now in Make&#x20;

Google has introduced Gemini 3.5 Flash, a new model that coordinates multi-step workflows with minimal input and preserves its reasoning across long exchanges.

### Key benefits

- **Quick prototyping:** Test alternate solution paths as you build. The model generates and compares variations so you can move from idea to working approach faster.
- **Autonomous execution:** The model runs multi-step workflows and iterates in seconds, sustaining performance across longer tasks without manual intervention.
- **High-volume processing:** The model processes documents at scale for extraction and classification, so you can handle larger volumes without adding manual review steps.
- **Low-latency responses:** The model preserves its reasoning across exchanges, so you don't re-explain your approach with each new request.

### Availability

Use Gemini 3.5 Flash in these apps:

- [Google Gemini AI ](https://apps.make.com/gemini-ai)
- [Make AI Agents (New)](docId\:jMOlI8G2T7FJfcFBGBZgN)&#x20;
- [Make AI Toolkit](docId\:CfGqHRAekfeXyGbyOW_wC)&#x20;

## Undo and Redo now available in the  Builder&#x20;

You can now reverse or reapply changes to  with **Undo&#x20;**&#x61;nd **Redo&#x20;**&#x69;n the  toolbar. Test, rearrange, and correct  without manually rebuilding modules, routes, or mappings.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/T6SPc2qsf85QNh8xk7UVq-20260525-141607.gif)

### Key benefits

- **Scenario edit control:** Undo or redo changes while building your .
- **Keyboard shortcuts:** Use `Cmd`+`Z` to undo and `Cmd`+`Shift`+`Z` or `Cmd`+`Y` to redo.
- **Scenario structure edits:** Reverse changes to modules, connections, routes, and module placement so you can build with less rework.
- **Module configuration edits:** Undo field mappings and text in modules to correct input changes without re-entering values.
- **Scenario testing:** Try structural or configuration updates to your shared  before applying them.&#x20;

### Availability

**Undo&#x20;**&#x61;nd **Redo&#x20;**&#x61;re available to all users in the  toolbar of the  Builder.&#x20;

To learn how to use them, see [Undo and redo scenario changes](docId\:yciPTD5a8Z78ypItvuapG).

[title] Anthropic Claude model deprecations on June 15, 2026
[path] Release notes/2026/

Anthropic is deprecating two Claude models on **June 15, 2026**. After that date, scenarios using these models will fail.

### What's changing?

The following models will no longer be available on the Anthropic Claude API starting June 15, 2026:

- Claude Sonnet 4
- Claude Opus 4

After June 15, 2026, all requests using these models will return an error. Existing modules in your scenario that use these models will fail when they run.

### What do you need to do?

Review your Anthropic Claude modules and replace any deprecated models with a supported model.

| **Deprecated model** | **Replacement model** |
| -------------------- | --------------------- |
| Claude Sonnet 4      | Claude Sonnet 4.6     |
| Claude Opus 4        | Claude Opus 4.6       |

Review [Anthropic's model pricing](https://platform.claude.com/docs/en/about-claude/pricing) documentation for these replacement models, as your costs may change depending on your usage.

### Resources

- [Anthropic model deprecations](https://platform.claude.com/docs/en/about-claude/model-deprecations#2026-04-14-claude-sonnet-4-and-claude-opus-4-models)
- [Make Help Center — Anthropic Claude documentation](https://apps.make.com/anthropic-claude)

[title] SAML certificate management
[path] Your organization/Access management/

:::hint{type="info"}
This feature is available to Enterprise customers.
:::

The SSO setup page lets you manage your service provider (SP) certificates. You can activate, deactivate, copy, or download your SP certificates.

 provides a new certificate when your active SP certificate is close to expiring. Email notifications let you know when it's time to rotate your certificates.

## Rotate service provider certificates

To maintain the security of your SSO setup,  supports service provider (SP) certificate rotation on a three-year basis. When your SP certificate is 90 days from expiring,  provides a new certificate and sends you an email. Rotate your certificate before it expires to avoid login failure. You can see when your certificate expires by looking under the **Expires** column of the **Service Provider Certificates** section of your SSO setup.

You can activate your new certificate and copy or download it with the following steps:

::::WorkflowBlock
:::WorkflowBlockItem
Click **Organization** in the left sidebar.
:::

:::WorkflowBlockItem
Click the **SSO** tab.
:::

:::WorkflowBlockItem
Under **SSO configuration**, find your **Service Provider Certificates**.
:::

:::WorkflowBlockItem
Find your new certificate. Refer to the **Valid from** and **Expires** dates if you are unsure.
:::

:::WorkflowBlockItem
On the right side of the row for your new certificate, click **Activate**.
:::

:::WorkflowBlockItem
Next to **Activate**, click the icon to download or copy your certificate, depending on how you need to enter your certificates with your identity provider.
:::

:::WorkflowBlockItem
Go to your identity provider and update your service provider certificate. If you use Okta, refer to our [Okta SAML page](docId\:Q0SYPMV8_3Mmt_NiKfL2K)  for details.
:::
::::

If you have more than one active certificate,  deactivates the certificate that expires first. You can check the **Expires** column to see when your certificates expire.

:::hint{type="warning"}
Only click **Save** if you make other changes to your setup. Clicking **Save**:

- is not required to activate and rotate your certificate.
- immediately logs out all organization members.
:::

## Activate a certificate

You can see which certificates are active by looking in the **Status** column.

Active means the certificate is in use in your SAML SSO configuration. No further action required.

Inactive means the certificate is not used in your SAML SSO configuration.  automatically deactivates certificates that expire as long as you have another valid active certificate.

::::WorkflowBlock
:::WorkflowBlockItem
Click **Organization** in the left sidebar.
:::

:::WorkflowBlockItem
Click the **SSO** tab.
:::

:::WorkflowBlockItem
Under **SSO configuration**, find your **Service Provider Certificates**.
:::

:::WorkflowBlockItem
Find the certificate in the list.
:::

:::WorkflowBlockItem
Under **Actions**, click **Activate**.
:::

:::WorkflowBlockItem
A popup asks you to confirm activation. Click **Activate**.
:::
::::

:::hint{type="warning"}
Only click **Save** if you make other changes to your setup. Clicking **Save**:

- is not required to activate your certificate.
- immediately logs out all organization members.
:::

## Deactivate a certificate

You can only deactivate a certificate if there is another active certificate. This prevents accidental deactivation of your only active certificate. At least once certificate must be active.

If you have more than one active certificate,  deactivates the older certificate for you when it expires. Don't worry,  won't deactivate your only active certificate.

::::WorkflowBlock
:::WorkflowBlockItem
Click **Organization** in the left sidebar.
:::

:::WorkflowBlockItem
Click the **SSO** tab.
:::

:::WorkflowBlockItem
Under **SSO configuration**, find your **Service Provider Certificates**.
:::

:::WorkflowBlockItem
Find the certificate in the list.
:::

:::WorkflowBlockItem
Under **Actions**, click **Deactivate**.
:::
::::

## Copy a certificate

If your identity provider (IdP) lets you paste your service provider (SP) certificates into your setup, you can copy your SP certificate into your clipboard.

::::WorkflowBlock
:::WorkflowBlockItem
Click **Organization** in the left sidebar.
:::

:::WorkflowBlockItem
Click the **SSO** tab.
:::

:::WorkflowBlockItem
Under **SSO configuration**, find your **Service Provider Certificates**.
:::

:::WorkflowBlockItem
Find the certificate in the list.
:::

:::WorkflowBlockItem
On the right side of the row for your certificate, click the icon.&#x20;
:::

:::WorkflowBlockItem
Select **Copy**.
:::
::::

Your SP certificate is copied to your clipboard and ready to paste into your IdP setup.

## Download a certificate

If your identity provider (IdP) lets you upload your service provider (SP) certificates into your setup, you can download your SP certificate as a `.pem` file.

::::WorkflowBlock
:::WorkflowBlockItem
Click **Organization** in the left sidebar.
:::

:::WorkflowBlockItem
Click the **SSO** tab.
:::

:::WorkflowBlockItem
Under **SSO configuration**, find your **Service Provider Certificates**.
:::

:::WorkflowBlockItem
Find the certificate in the list.
:::

:::WorkflowBlockItem
On the right side of the row for your certificate, click the icon.&#x20;
:::

:::WorkflowBlockItem
Select **Download**.
:::
::::

Your browser downloads your SP certificate as a `.pem` file. You can find it in your downloads folder.

[title] Okta SAML
[path] Your organization/Access management/

:::hint{type="info"}
This feature is available to Enterprise customers.
:::

The following manual configuration creates an SAML SSO configuration for your Enterprise organization.

## Prerequisites

- `Owner` role in an Enterprise organization
- Okta account with admin access

## Supported features

This configuration supports the following:

- Service Provider initiated SSO
- Single Log Out \[optional]

## Configuration steps

Before configuring SSO, you need to assign a namespace and create a Service Provider certificate and private key. These important steps provide information you need to enter later.

### Create your namespace

::::WorkflowBlock
:::WorkflowBlockItem
Click **Organization** in the left sidebar.
:::

:::WorkflowBlockItem
Click the **SSO** tab.
:::

:::WorkflowBlockItem
Under **Namespace**, enter the namespace you want for your organization. For example, `acmecorp`. Your organization members enter this namespace when they log in via SSO.
:::

:::WorkflowBlockItem
Under **SSO type**, select **SAML 2.0**.
:::

:::WorkflowBlockItem
Copy the **Redirect URL** and save it in a safe place. You will use this later when you create your SAML integration in Okta.
:::
::::

### Download your Make Service Provider certificate

::::WorkflowBlock
:::WorkflowBlockItem
Click **Organization** in the left sidebar.
:::

:::WorkflowBlockItem
Click the **SSO** tab.
:::

:::WorkflowBlockItem
Scroll down to find **Service Provider Certificates**.
:::

:::WorkflowBlockItem
Find your new certificate. Refer to the **Valid from** and **Expires** dates if you are unsure.
:::

:::WorkflowBlockItem
On the right side of the row for your certificate, click the icon.
:::

:::WorkflowBlockItem
Select **Download**.
:::
::::

Your browser downloads your SP certificate as a `.pem` file. You can find it in your downloads folder.

### Create an SAML integration

::::WorkflowBlock
:::WorkflowBlockItem
Log in to Okta and go to **Applications > Applications**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-Z4pJ5QzVF8vN-HhMSCek4-20250210-120304.png" size="40" width="524" height="1254" position="flex-start" alt="Okta - Applications" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Create App Integration**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-vjKb8zeRXvjjIOTDQWezs-20250210-120518.png" size="80" width="1280" height="198" position="flex-start" alt="Okta - Create App Integration" showCaption="false"}
:::

:::WorkflowBlockItem
Select **SAML 2.0** in the popup winder and click **Next**.

![Okta - SAML 2.0](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-YM-UtsSzf3VUED6AxqZrL-20250210-120611.png)
:::

:::WorkflowBlockItem
In the **General Settings** tab, name your app and upload your icon.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-Ccy4xYwXpFlMwZjqtLvpL-20250210-135617.png" size="80" width="1280" height="694" position="flex-start" alt="General Settings" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Next**.
:::

:::WorkflowBlockItem
In the **Configure SAML** tab, enter the Single sign-on URL that you copied in the steps to [create your namespace](docId\:Q0SYPMV8_3Mmt_NiKfL2K) above.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-hinxEv_xzreJUvGVmUZrD-20250210-134944.png" size="80" width="1280" height="755" position="flex-start" alt="SAML single sign on settings" showCaption="false"}
:::

:::WorkflowBlockItem
Enter the Audience URI (SP Enttity ID) as `https://www.make.com/sso/saml/{{namespace}}/metadata.xml`.
:::

:::WorkflowBlockItem
Keep the **Default Relay State** blank.
:::

:::WorkflowBlockItem
Enter the following information:

| **Field**                      | **Value**         |
| ------------------------------ | ----------------- |
| Name ID format                 | EmailAddress      |
| Application Username           | Okta username     |
| Update application username on | Create and update |


:::

:::WorkflowBlockItem
Click **Show Advanced Settings**.
:::

:::WorkflowBlockItem
Verify that all of the information provided matches the following:

![Advanced settings](https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-peiF1UzXhPIWrbB3jqDm7-20250210-124821.png)

Set **Assertion Encryption** to **Encrypted**. For the Signature Certificate field, upload the  [Service Provider Certificate](docId\:Q0SYPMV8_3Mmt_NiKfL2K)  you downloaded above.
:::

:::WorkflowBlockItem
Under **Attibute Statements (optional)**, add the attribute as shown in the image and click **Next** to save.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-SiQbDIa-JShNXnnDKXv5I-20250210-130651.png" size="80" width="1280" height="684" position="flex-start" alt="optional attributes" showCaption="false"}
:::

:::WorkflowBlockItem
Select the following options and click **Finish**.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/yAufeXqD1oGWOPBNi5MAm-O8awu-iFAcJ71R18K-B_r-20250210-130411.png" size="80" width="1280" height="1022" position="flex-start" alt="Okta saml final steps" showCaption="false"}
:::

:::WorkflowBlockItem
Assign people to your  application under the **Assignments** tab in Okta.
:::

:::WorkflowBlockItem
Under the **Sign On** tab in Okta, view the SAML setup instructions.&#x20;
:::

:::WorkflowBlockItem
Copy the **Identity Provider Single Sign-On URL** and the **Identify provider certficate** and save them in a safe place.
:::

:::WorkflowBlockItem
In , under **Organization > SSO**, update the **IdP log URL** field and the **Identify provider certficate** field with the information obtained in Okta in step 16.&#x20;
:::

:::WorkflowBlockItem
Enter the following in the **Login IML resolve** field:

```text
{"email":"{{get(user.attributes.email, 1)}}","name":"{{get(user.attributes.profileFirstName, 1)}}{{get(user.attributes.profileLastName, 1)}}","id":"{{user.name_id}}"}
```
:::

:::WorkflowBlockItem
Set:

- **Allow Unecrypted Assertions** to **No**
- **Allow Unsigned Responses** to **No**
- **Sign Requests** to **Yes**
:::

:::WorkflowBlockItem
Select the team and **Save**.
:::
::::

Once saved, the page will reload. Sign out.

:::hint{type="info"}
You will receive an email with the subject **Activation complete: SSO ready for your organization** upon successful activation. If you encounter any issues while logging in using SSO, disable SSO using the "one-time link" (valid for 24 hours).&#x20;
:::

## Service Provider initiated SSO

1. Go to [make.com](https://make.com).&#x20;
2. Click **Sign in with SSO**.
3. Enter the namespace you chose for your organization.
4. Log in using your Okta credentials and consent to 's access to your user data.


[title] The Make CLI is now live
[path] Release notes/2026/

Now available to all users, the Make CLI is an open-source command-line interface that gives developers and&#x20;AI agents programmatic access to Make from the terminal.&#x20;

## Key capabilities

With the Make CLI, you can:

- **Access Make from the command line**: Create and manage scenarios, connections, data  &#x20;stores, webhooks, and other Make resources.&#x20;
- **Integrate Make into your development workflow:** Use Make alongside Git, CI/CD,
  and the rest of your stack.&#x20;
- **Connect your AI agents to Make:** Give coding agents like Claude Code or Cursor
  access to Make through the terminal, with no additional setup.&#x20;

## Get started

To install the Make CLI and run your first commands, see the [Make CLI documentation](https://developers.make.com/make-cli).&#x20;

:::hint{type="warning"}
**The Make CLI is best suited for developers and advanced users.&#x20;**&#x43;ommands can
create, modify, and delete your scenarios, connections, data stores, and
other Make resources. Always test the Make CLI in a non-production environment before using commands in your workflows.&#x20;
:::


[title] Introducing two-factor authentication enforcement
[path] Release notes/2026/

:::hint{type="info"}
This feature is available to **Enterprise** customers.
:::

Organization Admins and Owners can now enforce **Two-factor authentication (2FA)** for the entire organization.&#x20;

## Key benefits

- **One-step enforcement**: Require 2FA for all users in one action
- **Mandatory 2FA for everyone**: Make sure all accounts in your organization are protected
- **Reduced security risks**: Prevent unauthorized access and potential account takeovers&#x20;

## Where to find it

In the left sidebar, click Click **Org,&#x20;**&#x74;hen the three dots next to the **Organization** **settings,&#x20;**&#x61;nd select **Enforce 2FA**.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/zpsODlhf3vTZ1fZQ6zfM--20260211-150815.png)

## Limitations

2FA enforcement applies only to users who sign in using Make’s native authentication method (email and password).&#x20;

If a user signs in through an external provider (e.g., Google) or an Identity Provider (SSO/SAML), this Make-level enforcement does not apply. In these cases, 2FA must be configured and enforced within the external provider or Identity Provider.&#x20;

## Where to learn more

- ﻿Technical documentation: [Two-factor authentication enforcement](docId\:VYfkiUv9dctl3wOKhSMN9)&#x20;


[title] Introducing User roles visibility
[path] Release notes/2026/

Make now has a dedicated **User roles** page where organization and team administrators can view all system roles and their associated permissions.

## What's new

The new **User roles** page in **Org** settings lists all default system roles available in your organization and teams, with a short description of each role's access level. Now you can select any role to see its full details.

## Key benefits

- Clear overview of all available roles and what each one includes.
- Faster, more confident role assignment when adding or managing users.
- Reduced risk of incorrectly assigned permissions.

## Where to find it

In the left sidebar, go to **Org** > **User roles**. Select **Organization roles** or **Team roles** to switch between the two views. Click **View** next to any role to see its details.

![]()

## Learn more about roles

- [Organization roles](https://help.make.com/organizations#organization-roles)
- [Team roles](https://help.make.com/teams#team-roles)


[title] OpenAI GPT-5.4 and GPT-5.3 models now available in Make
[path] Release notes/2026/

OpenAI's `GPT-5.4` and `GPT-5.3` models are now available in Make, bringing faster, more cost-efficient AI with expanded context and smarter tool handling to your automations.

## What's new

- `GPT-5.4` is a faster, more cost-efficient, and more accurate model with expanded context and improved tool handling, built for professional-grade automation at scale.
- `GPT-5.3` is an updated model optimized for chat-based interactions with improved accuracy and context handling.

## Where to use in Make

- [OpenAI (ChatGPT, Sora, DALL-E, Whisper)](https://apps.make.com/openai-gpt-3): **Simple Text Prompt,** **Generate a Response,** and **Generate a Completion&#x20;**&#x6D;odules
- [Make AI Toolkit](https://apps.make.com/ai-tools) & [Make AI Agents](https://help.make.com/make-ai-agents-new)

[title] Credits per team management
[path] Your organization/Administration/

:::hint{type="info"}
This feature is available to **Enterprise** customers.
:::

Organization owners and administrators can set [credit](https://help.make.com/credits#CHMs2) limits<font color="#EF4444"> </font>for their teams. A team's allocated credits always reset, or renew, on its organization's usage reset date.&#x20;

For example, an organization with 1,000,000 total credits allocates 50,000 credits to a team. Once the team uses their 50,000 credits, their scenarios pause until their credits reset or their organization allocates more credits, if available. The team's next reset date is August 1st, when the organization's total credits reset.&#x20;

**Benefits**

Team credit limits offer many benefits:

- **Control over the team's consumption**
  You can set credit limits for all teams within an organization.
- **Credits continuity**
  Credit limits help avoid stopping the organization's scenarios due to a team's overconsumption.
- **Real-time credits usage monitoring**
  The team dashboard shows individual team consumption as well as total organizational usage in real time.
- **Flexibility in credit allocation**
  You can change allocated limits as needed.
- **Proactive usage notifications**
  You will receive an email at 75%, 90%, and 100% usage thresholds to allow for proactive credit management.

## Set the team credit limit

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.&#x20;
:::

:::WorkflowBlockItem
Switch to the **Teams** tab.
:::

:::WorkflowBlockItem
Click **Edit** for the team for which you would like to set the credits limit.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/3KfRQQqzaBloy0SE0isPS-20251003-154358.png)
:::

:::WorkflowBlockItem
Click **Set team limit** and enter the maximum number of credits you would like to allocate for this team.

If the team reaches the established limit, their scenarios will be paused.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/qzHzZBYxGgmCU7aJb3pNy-20251003-154317.png" size="50" width="876" height="832" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

## View team credit usage

You can view the team credit limit and usage in the **Teams&#x20;**&#x74;ab.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ak7sFU6xg7AJAjfvGX2ef-20251003-154527.png)

:::hint{type="info"}
Team credit consumption includes usage from mid-December 2024 to the present. Usage before this date is not included.
:::

## Change the team credit limit

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.&#x20;
:::

:::WorkflowBlockItem
Switch to the **Teams** tab.
:::

:::WorkflowBlockItem
Click **Edit** for the team for which you would like to change the credits limit.
:::

:::WorkflowBlockItem
Update the team credit limit value to the new maximum number of credits the team can use.
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

If you change the limit to an amount less than what has already been consumed by the team, the team will be paused.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/laIIGlOq1yFeP2Yv8Sle0-20251003-154747.png" size="40" width="884" height="810" position="center" showCaption="false"}

## Remove the team credit limit

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, click **Org**.&#x20;
:::

:::WorkflowBlockItem
Switch to the **Teams** tab.
:::

:::WorkflowBlockItem
Click **Edit** for the team for which you would like to change the credits limit.
:::

:::WorkflowBlockItem
Click **Remove** to remove the team credit limit.
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

For a team without a credit limit, you will only see the total operations used. In this example, **My team** has no credit limit set, while **Team Beta** has a credit limit set to 1000.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/OAfctIhG8avDL8fobHie1-20251003-155305.png)

## Usage notification

As a team approaches its usage limit, starting at 75% usage, an orange notification icon will appear next to the team's credit limit.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ioio4T5pCgXF3RmEp_WEH-20251003-155921.png)

When a team reaches its limit, you will see a red notification icon next to the team's operation limit, the bar will turn black, and all scenarios will pause.

When a team in your organization has reached 75%, 90%, and 100% of the allocated credits, organization owners and admins will receive an email detailing this information.

To avoid interruptions, the organization owner or admin can:

- adjust the team's credit limit or reallocate credits.
- monitor and optimize the team's scenarios.

Team admins will also receive an email with this information.


[title] OpenAI GPT-5.5 is now available in Make
[path] Release notes/2026/

Make now supports GPT-5.5, OpenAI's new flagship model for agent work, multi-step tasks, and long-context tasks. Use it in scenarios that require planning across many steps, calling multiple tools, and handling documents, spreadsheets, code, or research with more consistent output.

## Key benefits

OpenAI's latest model brings the following benefits to your scenarios:&#x20;

- **Improved multi-step workflows:** Agents can handle complex tasks with less human intervention.&#x20;
- **More reliable tool use**: Better at choosing the right tools, passing clean arguments, and chaining tool calls, completing more scenario runs on their own.
- **More accurate outputs:** Fewer hallucinations than previous models mean more predictable results across scenarios.
- **Document and data work:** Analyze datasets, draft documents and spreadsheets, and write or debug code in scenarios where the model needs to reason through detailed inputs.
- **Long context:** Share large transcripts, codebases, or knowledge sources in a single request with support for up to one million tokens.
- **Output efficiency:** Uses fewer output tokens than GPT-5.4 for comparable tasks, offsetting costs across heavier workloads.

## Availability

OpenAI GPT-5.5 is available in these apps:

- [OpenAI (ChatGPT, Sora, Whisper) ](docId\:BFy7nHwuWeTGFUEf-Zmop) (through API key, or [automatically](https://help.make.com/credits#automatic-ai-provider-connection) in the **Simple Text Prompt&#x20;**&#x6D;odule)
- [Make AI Toolkit ](docId\:CfGqHRAekfeXyGbyOW_wC) (through API key or Make's AI Provider)
- [Make AI Agents](docId\:jMOlI8G2T7FJfcFBGBZgN) (through API key or Make's AI Provider)

[title] Administration
[path] Your organization/

Discover features to manage organization usage and members.

::::LinkArray{contentSource="DOCS" sourceParentDocId="tKMaI67IEKy4oQCbdlZqR" childrenDocs="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]" itemsPerRow="2" displayMode="CARD"}
:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="mHfnDWqFb2ifCE4JCBffe" displayMode="CARD" docSeoDescription="Monitor operations, errors, and execution metrics across your scenarios to optimize performance."}
[Analytics dashboard](docId\:mHfnDWqFb2ifCE4JCBffe)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="8REKIEsMXC06kKlrpLa9n" displayMode="CARD" docSeoDescription="Set credit limits for teams to control consumption and pause scenarios when limits are reached."}
[Credits per team management](docId:8REKIEsMXC06kKlrpLa9n)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="nd42L9f49fassUlBHnzja" displayMode="CARD" docSeoDescription="Delete all your user data stored on Make including scenarios, connections, and personal information."}
[Delete user data](docId\:nd42L9f49fassUlBHnzja)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="WJ9B1ixMMgxSNhz_e5211" displayMode="CARD" docSeoDescription="Set session timeout to automatically log out inactive users. "}
[Set the length of your session timeout](docId\:WJ9B1ixMMgxSNhz_e5211)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="ORayiYsh5PQZ0V9xfR_1P" displayMode="CARD" docSeoDescription="Monitor user activity across your organization or team."}
[Audit logs](docId\:ORayiYsh5PQZ0V9xfR_1P)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="waNrCVezePFz7f_eiYBDH" displayMode="CARD" docSeoDescription="Enable or disable experimental and AI features across your organization."}
[Feature controls](docId\:waNrCVezePFz7f_eiYBDH)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="VYfkiUv9dctl3wOKhSMN9" displayMode="CARD" docSeoDescription="Enforce two-factor authentication (2FA) for your organization (Enterprise plans only). "}
[Two-factor authentication enforcement](docId\:VYfkiUv9dctl3wOKhSMN9)
:::

:::LinkArrayItem{headerImage="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e_qHb1m7hHbasnTc0QETS_1.png" headerType="IMAGE" docId="3zFgIYDeBSiT777a7Bw64" displayMode="CARD" docSeoDescription="Enable, manage, and view private spaces in your organization. "}
[Private spaces](docId:3zFgIYDeBSiT777a7Bw64)
:::
::::


[title] Functions, standalone module setup, scenario note cloning, and more
[path] Release notes/2026/

Here's a quick look at our most recent product improvements and fixes.

## New functions: arrayDiff, arrayIntersect, set, and escapeJSON

 now includes four built-in functions, **arrayDiff, arrayIntersect, set,&#x20;**&#x61;nd **escapeJSON**, to give you more ways to transform data directly in mapping fields. Use them to compare arrays, update collections, and prepare raw JSON with fewer modules.&#x20;

### Key benefits

- **Compare arrays:&#x20;**&#x55;se **arrayDiff(array1; array2)** to find new or missing records, and **arrayIntersect(array1; array2)** to find matching records.&#x20;
- **Update collections:&#x20;**&#x55;se **set(collection or array; key; value)** to add or replace fields in a collection without rebuilding the whole structure.
- **Format JSON:&#x20;**&#x55;se **escapeJSON(text)** to escape quotes, backslashes, and other special characters before sending raw JSON in webhooks or API calls.
- **Build scenarios in fewer steps:** Move data by mapping it to a single field instead of using extra iterators, aggregators, filters, or search modules, and reduce overall credit usage.&#x20;

### Availability

These functions are available on all plans from the mapping panel or **Make Functions** app.

### Learn more

To learn how to use the new functions, see the documentation:&#x20;

- [Array functions ](https://help.make.com/array-functions)(**ArrayDiff** and **ArrayIntersect**)
- [General functions ](https://help.make.com/general-functions#set)(**set**)
- [Text and binary functions](https://help.make.com/text-and-binary-functions#escapejson) (**escapeJSON**)

## Configure modules before connecting them

You can now configure and run modules before connecting them to the rest of your scenario. Preview available fields in modules, test sample inputs, and decide next steps based on the actual output.

### Key benefits

- **Configure first, connect later:** Review available fields in a module and set it up before deciding where it goes in your scenario.
- **Test with sample inputs:** Run modules with hardcoded values to verify outputs without building the rest of the route.
- **Check outputs before building:** See what a module returns before mapping fields, adding filters, or splitting routes, so the scenario is built around actual results.
- **Build complex scenarios step by step:** Test parts of a scenario separately before connecting them (useful when working with multiple routes and filters).

### Availability

This improvement is available on all plans.

## Copy notes when cloning a scenario

Previously, cloning a scenario didn't include its notes. Now,  copies scenario notes too, so your cloned scenario has the same setup tips and handoff details as the original.

### Key benefits

- **Shared context:** Copy comments and reminders into the cloned scenario, so the next build starts with the same guidance.
- **Faster reuse:** Naming rules, variable mapping, and other configuration notes stay attached when you clone for a new client, region, or use case.

### Learn more

To learn how to clone a scenario, see [Clone a scenario](https://help.make.com/clone-a-scenario).

[title] Context modules added to Make AI Agents app
[path] Release notes/2025/

:::hint{type="info"}
Make AI Agents is available in Open Beta to all users on paid plans.&#x20;
:::

Previously, Make AI Agents required you to manually upload context files in th&#x65;**&#x20;AI Agents&#x20;**&#x63;onfiguration tab, making real-time updates to files difficult. Now, you can manage your agent's access to the latest context files directly in a scenario using context modules. Found in th&#x65;**&#x20;Make AI Agents&#x20;**&#x61;pp, context modules allow you to add, delete, and retrieve context files— all within a scenario.&#x20;

## What's new?

- You can now manage your AI agent's context in a scenario using **Make AI Agents&#x20;**&#x63;ontext modules.&#x20;
- Add, update, retrieve, and delete context files using the corresponding modules.&#x20;
- Choose between uploading context as files or plain text.
- Replace outdated context files with new versions.
- Remove specific context or all context files from an agent's memory.&#x20;
- You can still manually upload context files in the **AI Agents** configuration tab, on the left sidebar.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/Q31995ot4OZzZRNwsMBrJ-R3dn4lKt_5IyEWztHG635-20250813-074626.png" size="54" width="461" height="367" position="center" showCaption="false"}

## Where to find it

You can find context modules in the Scenario Builder:

1. Click on the **Create a new scenario** button in the top right-hand corner, which takes you to the Scenario Builder.&#x20;
2. In the app search next to the giant plus, type and select **Make AI Agent**.&#x20;
3. Under the **Context&#x20;**&#x63;ategory, you can see all context modules.&#x20;

## Learn more

To find out more about Make AI Agents context modules and their settings, head to [Make AI agent reference](docId\:YuE3-2TSsMXUX1SWpT8ep).




[title] New GPT Image model and Anthropic Claude module
[path] Release notes/2024/

# App updates

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/PL8X94efBsjvhfQV3wyyj-UUjn5uUTngOmDCOl0lrvW-20250814-103121.png" size="50" width="393" height="393" darkWidth="393" darkHeight="393" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[OpenAI](https://apps.make.com/openai-gpt-3) — We now support the new GPT Image 1.5 model in the following modules:

- Generate images
- Edit images
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/AddlbbPXUPVkrjqxDMFQ4-20260116-165347.png" size="50" width="208" height="208" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Anthropic Claude](https://apps.make.com/anthropic-claude) — There is a new **Download a file** module that allows you to download files that were generated by Anthropic Claude.
:::
::::




[title] Enhanced notes & team-level operations management
[path] Release notes/2025/

## Improvements and changes

- We have improved the notes experience, making it easier and more enjoyable to create and manage notes. In addition to a fresh new look, notes now support rich text formatting. For more information, refer to our new [Scenario notes](https://help.make.com/scenario-notes) documentation.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-2ciYtPu5Qhz95aUvzGU1i-20250228-135411.png" size="100" width="2248" height="996" position="center" showCaption="false" indent="2"}

- Managing operations at the team level is now easier with the new **Enterprise** feature, [Operations per Team Management](https://help.make.com/operations-per-team-management). Benefits include improved control over team consumption, operational continuity, real-time monitoring of operations usage, flexibility in operations allocation, and proactive usage notifications.

## Updated apps

- [OpenAI](https://www.make.com/en/help/ai-in-make/openai--dall-e---chatgpt-) - The **GPT-4o** and **GPT-4o-mini** series of models now include a new [Predicted Outputs](https://platform.openai.com/docs/guides/predicted-outputs) parameter in the **Create a Completion** module. Additionally, **o3** models are now supported in this module, and this update has also been reflected in the documentation.
- [Workday Human Capital Management](https://www.make.com/en/help/apps/hr-management/workday-human-capital-management) - A new **Make a REST API Call** module has been released to enable interaction with Workday's API for greater flexibility.
- [Make](https://www.make.com/en/help/apps/process-management/make) - We have released the following **Incomplete Scenario Executions** modules that allow you to manage and monitor incomplete executions effectively:
  - List scenario incomplete executions
  - Get incomplete execution detail
  - Retry incomplete executions in a scenario
  - Delete incomplete executions in a scenario
- [Workday Financial Management](https://www.make.com/en/help/apps/business-operations-and-erps/workday-financial-management) - The **Make a REST API Call** module has been added, allowing users to interact with Workday's API for enhanced flexibility.
- [Salesforce](https://www.make.com/en/help/apps/crm-and-sales-tools/salesforce) - A new module, **Make an API Call (Advanced)**, has been added, allowing for advanced API interactions with Salesforce.


[title] 2024
[path] Release notes/

The 2024 release of  introduces the following new features and updates.

::::LinkArray{contentSource="CUSTOM" itemsPerRow="1"}
:::LinkArrayItem
`December 13, 2024`

[Analytics dashboard, profile setting updates, and more](docId\:tIfFw_CjPCKgHRnfHTNse)&#x20;

Explore Make's new Analytics dashboard for Enterprise users, enhanced profile settings, improved cancellation process, and UiPath & Google Ads app enhancements.
:::

:::LinkArrayItem
`November 29, 2024`

[New Snapchat integration](docId\:m8j4Qry6VnWE9aqoQR_OG)&#x20;

Discover Make's new Snapchat Conversions app for improved conversion tracking, ServiceNow connection type updates, and enhanced LinkedIn Conversion API with multiple campaign support.
:::

:::LinkArrayItem
`November 19, 2024`

[Scenario inputs now available for all users](docId\:R-kdzACpgTSCO8UwqwkhR)&#x20;

Check Make's newest updates: scenario inputs now for all users, connection updates, new TikTok Audiences, Lusha, and xAI apps, plus enhanced custom app capabilities and API improvements.
:::

:::LinkArrayItem
`November 1, 2024`

[Editor revamp and subscenarios launch](docId\:yh_6q3rsiVEFUIAAVEW37)&#x20;

Discover a revamped editor, subscenarios feature, and custom app improvements.
:::

:::LinkArrayItem
`October 18, 2024`&#x20;

[Scenario ID fix and apps updates](docId\:mxOE-T9zlk6th3w4F29lY)

Discover new image editing and lead tracking apps and updates to SAP ECC Agent and Anthropic Claude.
:::

:::LinkArrayItem
`October 5, 2024`

[Account security updates, billing changes, app updates](docId\:CqL-zHgSWS_WjgsU_f0TK)&#x20;

Learn about enhanced account security, payment method improvements, and new Skai app.
:::

:::LinkArrayItem
`September 23, 2024`

[Scenario history fixes, new Microsoft app](docId\:KyJBesr1rgoeYXydCJSur)

Explore multiple scenario history fixes, the new Microsoft Advertising Reports app, and updates to LinkedIn, Cflow, SectorFlow\.AI, and DataForSEO.
:::

:::LinkArrayItem
`September 6, 2024`

[DevTool update, scenario sorting, fixed issues](docId\:g_tDk-lJao-u32a4CbrPG)&#x20;

Check out Make DevTool rebranding, new scenario sorting, higher API token limits, Microsoft Advertising Conversions app, and updates to LinkedIn and Pipedrive.
:::

:::LinkArrayItem
`August 23, 2024`

[Introducing Audit Logs](docId\:U7HA_yR9PahPvpUOuvOXm)&#x20;

Find out about Audit Logs, the new Enterprise feature for tracking account activities and monitoring who did what and when across your organization.
:::

:::LinkArrayItem
`August 16, 2024`

[Organization management updates and app changes](docId\:RVTNoqMZioQ2SNb-IPwav)&#x20;

See what's new with organization management, app search improvements, and updates to Bird, TikTok Campaign Management, BambooHR, OpenAI, Shortcut, and Ortto.
:::

:::LinkArrayItem
`July 29, 2024`

[Scenario builder improvements, security updates, and new apps](docId\:FTxniua-y3hfTjoQFyyV8)&#x20;

Explore scenario builder improvements, enhanced 2FA security, new Canva, Zoom, and Motion apps, plus Active Campaign and Zoom Administration updates.
:::

:::LinkArrayItem
`July 12, 2024`

[New GPT Image model and Anthropic Claude module](docId\:k3vN73qzt5wa_cffdF3AA)&#x20;

Discover GPT Image 1.5 model for OpenAI image generation and editing, plus the new Anthropic Claude file download module.
:::

:::LinkArrayItem
`June 28, 2024`

[Operation tracking fix, new and updated apps](docId:69wRzHjHP5kzbhaAArzo_)&#x20;

See what's new with operation tracking improvements, the new SuiteDash CRM app, and updates to YouTube, SugarCRM, OpenAI Batch Modules, Smartsheet, and BigQuery.
:::

:::LinkArrayItem
`June 14, 2024`

[Make API and dashboard improvements, app updates](docId\:VnTFlySRo9VSSI5U5NwLp)&#x20;

Learn about new Make API endpoints, dashboard timezone updates, the Sage Intacct and Google Ads Reports apps, plus improvements to Celoxis and Custify.
:::

:::LinkArrayItem
`June 3, 2024`

[SSO settings update and new apps](docId\:K2XHzl8kmC206S48-TMbs)&#x20;

Explore SSO improvements, new Crossbeam and watsonx.ai apps, Stripe's new connection type, and updates to Firebase Cloud Messaging and Google Chrome v2.
:::

:::LinkArrayItem
`May 3, 2024`

[User management improvements, new Google app](docId\:tHSUvipba9K2XlTbRiDa-)&#x20;

Check out user role filtering improvements, Google Search Console for SEO support, and the new Flodesk email marketing app.
:::

:::LinkArrayItem
`April 18, 2024`

[Scenario execution fixes, new TikTok apps](docId\:giePhB27b_a0i1DwVZHYY)

Discover new TikTok Conversions and Reports apps, BigCommerce integration, Azure OpenAI capabilities, and LinkedIn Search Organizations module.
:::

:::LinkArrayItem
`April 5, 2024`

[Improved app search in the Scenario Builder](docId\:WrjF9ApiU_ggCCFpmx1hT)&#x20;

Discover faster app search with module insights, recently used apps, and quick access to tools and functions in the Scenario Builder.
:::

:::LinkArrayItem
`April 2, 2024`

[SSO certificate updates and app changes](docId\:bwPHhmeHiD1o1Ir2kiYxe)&#x20;

Find out about SSO certificate management, OpenAI image editing, Anthropic Claude updates, and new ZoomInfo, Confluence, TikTok Lead Forms, and Cohere apps.
:::

:::LinkArrayItem
`March 13, 2024`

[Table view improvements](docId:5JckRfyg-scT6f6OTpMKp)&#x20;

Check out Table view search functionality for scenarios and updates to Salesforce Pardot and HighLevel LeadConnector.
:::

:::LinkArrayItem
`March 4, 2024 `

[Filter setup status badges, fixed issues](docId:5499rFow6ogicinIErK-u)&#x20;

Explore filter setup improvements, Leonardo.AI image generation, Google Vertex AI Gemini, TickTick productivity app, and NetSuite and Workday updates.
:::

:::LinkArrayItem
`February 12, 2024`

[Module setup badges, community apps](docId\:zFpN7xrB1XUENxcBPs84J)&#x20;

Discover module setup status badges for templates, community apps with usage metrics, and verification badges for Make verified apps.
:::

:::LinkArrayItem
`January 29, 2024`

[SSO improvements and scenario execution fixes](docId\:j4Q1d77dwxKW-hwuiDsai)&#x20;

Learn about SSO domain verification and enforcement, coupon subscription updates, webhook queue improvements, and multiple scenario execution fixes.
:::

:::LinkArrayItem
`January 16, 2024`

[Introducing dynamic connections](docId\:KLC0SMmaeAw-hSs_DlvN5)&#x20;

Find out about dynamic connections, an Enterprise feature that lets teams share scenarios while using their own credentials.
:::

:::LinkArrayItem
`January 11, 2024`

[New Make Community link](docId\:U1ovro_C9-29be5FzTEvv)&#x20;

Discover Make Community access in Help and subscription period information for Enterprise users.
:::
::::


[title] Scenario ID fix and apps updates
[path] Release notes/2024/

## Fixed issues

- We fixed a bug that was causing an error when multiple  were called in an array using the  ID. Now, multiple  ID values are passed in the  URL.

## Apps updates

### New apps:

- [Schogini Image Wizard](https://www.make.com/en/help/apps/file-and-document-management/schogini-image-wizard) - Easily edit images with the new Schogini Image Wizard app, allowing you to blur, resize, rotate, and more, all within .
- [Poper](https://www.make.com/en/help/apps/website-building/poper) - Watch new leads in your Poper account using the new app in .

### Updated apps:

- [SAP ECC Agent](https://www.make.com/en/help/apps/business-operations-and-erps/sap-agent) - We’ve created a custom function that lets you apply padding to any values across all SAP ECC Agent modules.
- [MailerSend](https://www.make.com/en/help/apps/marketing/mailersend) - Starting November 1, MailerSend has made changes that affect all modules. Check out the article and take the necessary steps to ensure smooth work with MailerSend.
- [Anthropic Claude](https://www.make.com/en/help/apps/it-and-development/anthropic-claude#anthropic-claude-2014867) - There is a new **Make an API Call** module for Anthropic Claude.


[title] Organization management updates and app changes
[path] Release notes/2024/

## Improvements and changes

- Non-admin users can now decide to leave an organization, with the option to either keep or delete their connections. A confirmation window will appear to help them decide how to manage their connections.
- We’ve added helpful tooltips to the app search. Now, when you hover over the app type badge (Verified, Built-in, Community, etc.), a tooltip will appear, providing a clear explanation of what each badge represents.

## Fixed issues

- Sometimes, module outputs failed to load properly. We've fixed this bug and now you can see module outputs without any issues.

## App updates

- [Bird](https://www.make.com/en/help/apps/communication/bird) - This app, formerly known as MessageBird, has been rebranded. We’ve updated our documentation to reflect this change.
- [TikTok Campaign Management](https://www.make.com/en/help/apps/marketing/tiktok) - The existing TikTok app has been renamed to TikTok Campaign Management. This app allows you to manage your campaigns and ads in your TikTok Business account efficiently.
- [BambooHR](https://www.make.com/en/help/apps/hr-management/bamboohr) - The API key connection method has been deprecated. Now, only the OAuth connection is available for connecting the app.
- [OpenAI](https://www.make.com/en/help/ai-in-make/openai--dall-e---chatgpt-) - In the **Message an Assistant** module, you can now select a tool that a model will call.
- [Shortcut](https://www.make.com/en/help/apps/marketing/shortcut) - Previously called Clubhouse, this app is now named Shortcut. Our documentation has been updated to align with the new name.
- [Ortto](https://www.make.com/en/help/apps/marketing/ortto) - The app formerly known as Autopilot has been rebranded to Ortto. We’ve made updates to our documentation to reflect this rebranding.


[title] Analytics dashboard, profile setting updates, and more
[path] Release notes/2024/

## Improvements and changes

- Our new [Analytics dashboard](https://www.make.com/en/help/general/analytics-dashboard), available to **Enterprise** users, gives you a clear view of your account’s key metrics. You can easily see what’s happening across all of your , so you can stay on top of things and make informed decisions to optimize performance.
- We’ve updated your options in the profile settings. Before, you were unable to change the country you first chose when registering. Now, you can change your country if necessary.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-Rl0zCSqUmQvAvFw-70W1C-20250218-145724.png" size="58" width="902" height="1674" position="center" showCaption="false"}

- We've updated our **downgrading and cancelation** process. Now, if you downgrade to a plan that only offers one team, or if you cancel and revert to the Free plan, you will be asked to choose the team you want to keep. You will also see a table, comparing the features of your old and new plan, before you commit to the change. For more information, refer to our [Changing your subscription](https://www.make.com/en/help/general/changing-your-subscription--upgrading,-downgrading,-or-canceling-#changing-your-subscription--upgrading--downgrading--or-canceling-) article.
- You can now schedule resolving multiple incomplete executions at once with the Make API. This feature is best for resolving incomplete executions caused by temporary errors like rate limit or connection errors, or for incomplete executions where you fixed the error already.

## App updates

### Updated apps

- [UiPath](https://www.make.com/en/help/apps/business-operations-and-erps/uipath) - We’ve added a new connection type for UiPath. You can choose to use the original OAuth connection or the new version with client credentials.
- [Google Ads Campaign Management](https://www.make.com/en/help/apps/marketing/google-ads-campaign-management) - There is a new module named **Search Objects (SearchStream Query)**. Additionally, the **Search Objects** module was renamed to **Search Objects (Search Query)**.


[title] Improved app search in the Scenario Builder
[path] Release notes/2024/

## Improved app search

We're excited to introduce our improved in-product app search designed to help you discover apps and build  faster!

What’s new:

- Improved search speed and reliability.
- Apps related to your search query show up in the app search window with added insight into available modules.
- Your recently used apps move to the top for a speedy build.
- The new right-hand bar gives you quick access to common tools and functions.
- While creating or editing the  you see a new section in the list of apps called **Apps in scenario**. It helps you get quicker access to already used apps.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/uEaLmCp1Uc0yVj0kKXf2U_uuid-d3f28fac-5519-55ba-930c-50c8171a51d5.gif)

If you want to learn more or leave feedback for this feature go to [this Community post](https://community.make.com/t/feature-spotlight-enhanced-app-search/32674).

[title] Apps updates
[path] Release notes/2025/

## New apps

- [Braze](https://www.make.com/en/help/apps/marketing/braze) - Braze is a platform that helps businesses deliver personalized messaging and experiences to their users across various channels. It enables brands to build stronger relationships with customers through targeted campaigns, real-time data analytics, and user insights. In , you can manage user profiles, catalogs, and catalog items, as well as send messages and make API calls.
- [Snapchat Campaign Management](https://www.make.com/en/help/apps/marketing/snapchat-campaign-management) - We now have a new Snapchat app that enables you to manage your ad accounts, ad squads, and organization members within your Snapchat Ads Manager account.

## Updated apps

- [OpenAI](https://www.make.com/en/help/ai-in-make/openai--dall-e---chatgpt-) - We have renamed the module **Create a Completion (Prompt) (GPT-3, GPT-3.5, GPT-4)** to **Create a Completion (Prompt) (GPT and o1 Models)**.
- [Instagram for Business (Facebook login)](https://www.make.com/en/help/apps/marketing/instagram-for-business#instagram-for-business--facebook-login-) - We have renamed our **Instagram for Business** app to **Instagram for Business (Facebook login)** allowing you to configure Facebook authentication and access features such as managing media, posts, stories and more for Instagram Business accounts.
- [OneSignal](https://www.make.com/en/help/apps/communication/onesignal) - The process for creating a connection with OneSignal in  has changed. You now need to create a custom application in your OneSignal account and obtain an API key to use when setting up the connection.


[title] Introducing Credit usage history
[path] Release notes/2025/

:::hint{type="success"}
**Credit usage&#x20;**&#x69;s available to users on all plans.&#x20;
:::

Previously, tracking your credit usage required you to check several places in Make, such as the module output, scenario list, history, and diagram. This disjointed view prevented you from seeing credits used in one place, limiting opportunities to monitor and optimize usage.&#x20;

Introducing **Credit usage**, a unified history of credits used per scenario run across all scenarios and AI agents in your organization.&#x20;

## What's new?&#x20;

The new **Credit usage&#x20;**&#x74;able provides an overview of your credit usage across all features, displaying:

- Scenario or AI agent name and type, including a link to the scenario run
- Credits used per run
- Data transferred per run
- Usage timestamp&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/ioja8-KANdpnqkPDYtEU5-20251126-140521.png" size="98" width="1916" height="912" position="center" showCaption="false"}

## Key benefits

- **Centralized monitoring:&#x20;**&#x54;rack all credit usage from your organization in one place instead of checking multiple locations.&#x20;
- **Reduce future credit usage**: Quickly identify high-usage scenarios or agents that may benefit from optimization.&#x20;
- **Analyze run-level usage metrics**: Review a scenario run in detail, including its source name, feature type, credits used, data transferred, and usage timestamp.&#x20;
- **Investigate execution details**: Click any scenario name for a detailed overview of credit usage in its execution log.&#x20;

## Where to find it

You can find **Credit usage&#x20;**&#x69;n your Organization dashboard:

::::WorkflowBlock
:::WorkflowBlockItem
In the left sidebar, go to **Org**.&#x20;
:::

:::WorkflowBlockItem
Under **My Plan**, go to **Credit usage**.&#x20;
:::

:::WorkflowBlockItem
Optionally, click on a scenario run in the **Name&#x20;**&#x66;ield to analyze its credit usage in more detail.&#x20;
:::
::::

## Learn more

To find out more about **Credit usage** and other options for tracking credits, see [How to track credits](https://help.make.com/how-to-track-credits#J7zJZ).&#x20;



:::hint{type="info"}
**Enterprise plan users:&#x20;**&#x54;he **Credits usage** table is now your default resource for monitoring all credit usage in your organization.&#x20;
:::


[title] Operation tracking fix, new and updated apps
[path] Release notes/2024/

## Fixed issues

- We've updated how we track  operations. Now, the list includes operations used to resolve incomplete executions. Plus, the Make API endpoint for listing [Make operations usage](https://www.make.com/en/api-documentation/scenarios-consumptions-get) also covers these operations.

## Apps updates

### New apps

- [SuiteDash](https://www.make.com/en/help/apps/productivity/suitedash) - We're excited to announce a new powerful CRM tool integration with ! This highly requested app allows you to manage contacts and companies directly within your SuiteDash account. Now, you can automatically create tasks, projects, and update client information in SuiteDash based on triggers from other apps. Additionally, this integration ensures that data for contacts, invoices, and project statuses are synced and up-to-date across all platforms.

### Updated apps

- [YouTube](https://www.make.com/en/help/apps/marketing/youtube) - We’ve added new modules that will let you manage your videos, channels, and playlists.
- [SugarCRM](https://www.make.com/en/help/apps/crm-and-sales-tools/sugarcrm) - In the advanced settings section, we’ve added a new field API Version that will allow you to enter the version you want to work with.
- [OpenAI](https://www.make.com/en/help/ai-in-make/openai--dall-e---chatgpt-) - Introducing Batch Modules! Now you can work in bulk with our app’s functionality. We've added five new Batch modules and an Upload a File module.
- [Smartsheet](https://www.make.com/en/help/apps/productivity/smartsheet) - We’ve added a new Search Rows module.
- [BigQuery](https://www.make.com/en/help/apps/business-intelligence/bigquery) - We’ve added a new Get Query Results by Job ID module.


[title] Adjustments to plans and pricing
[path] Release notes/2025/

As of today, November 6, 2025, we've updated extra credit costs, adjusted credit limits for Core and Pro plans, and made custom AI provider connections available on all paid plans.

Here's what changed:

### Extra credit purchase updates

The cost of extra credits is now the same whether you purchase them manually or through auto-purchasing—both include a 25% additional cost.&#x20;

| **Purchase method** | **Previously**                                                      | **Now**                                                                        |
| ------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| Automatic & via API | Additional credits cost 30% more than credits included in your plan | Additional credits now cost **25%** more than credits included in your plan ⬇️ |
| Manual              | No additional cost                                                  | Additional credits now cost **25%** more than credits included in your plan ⬆️ |

**Example:** If you have auto-purchasing enabled and you're on a plan with 80,000 credits, once you exceed that limit, Make will automatically purchase an extra 10,000 credits for you. These automatic purchases include a 25% additional cost compared to the credits in your plan.

You can also purchase extra credits manually at any time, starting from 1,000 credits (in multiples of 1,000). Manual purchases now include the same 25% additional cost as automatic purchases.

For more details, see the [Extra credits](https://help.make.com/extra-credits) page.&#x20;

:::hint{type="info"}
If you regularly use more credits than those included in your plan, we recommend moving to a plan that better matches your credit usage. Higher-tier plans have lower per-credit costs, so you'll minimize spending on extra credits by being on the right plan.
:::

### Updated credit limits for Core and Pro plans

We've adjusted the monthly credit limits for Core and Pro plans.&#x20;

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Core plan**
:::

:::VerticalSplitItem
- Now includes up to 300,000 credits per month
- Credit tiers above 300,000 have been upgraded to Pro and are no longer available on Core
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Pro plan**
:::

:::VerticalSplitItem
- Now includes up to 8 million credits per month
- New credit tiers have been added, giving you access to more credits within your plan
:::
::::

If you had a monthly subscription for the **Core plan** with more than **300,000 credits per month**, you've been automatically upgraded to Pro. Your monthly cost and number of credits stay the same, but now you can enjoy all the features of Pro at no extra cost! For example, if you previously paid $338.13/month for 500,000 credits, you'll continue to pay $338.13/month on Pro.

### Custom AI provider connections on all paid plans

All paid plan users can now choose between Make's AI Provider or custom AI provider connections for Make's AI features, such as Make AI Agents and Make AI Toolkit. Previously, only Pro plan users and above could use custom AI provider connections.

As of today, whether you're on Core, Pro, or higher, you can:

- Connect directly to OpenAI, Anthropic, or other AI providers using your own connection, such as an API key.
- Use your own connection in features like Make AI Toolkit and Make AI Agents.
- Pay your AI provider directly for token usage.

***

*These changes are now live. If you have any questions, please reach out to our&#x20;*[support team](https://www.make.com/en/ticket)*.*

[title] Introducing module tools for AI agents
[path] Release notes/2025/

:::hint{type="warning"}
Make AI Agents is available o&#x6E;**&#x20;all plans** using **Make's AI Provider**, with the option to use **custom AI provider connections** on **paid plans**.
:::

Previously, Make allowed you to add scenarios and MCP tools to your AI agent. Even if you just wanted to use a single module, you still had to create a scenario and manually configure its inputs and outputs.

### What's new

- You can now add modules as tools for the AI agents, alongside scenarios and MCP tools.
- When you set up the module tool, Make automatically creates a scenario for it. &#x20;
- You no longer need to define the scenario inputs and outputs, which makes the setup faster and easier. &#x20;

### Where to find it

The **Tools** section of the **AI Agents configuration tab** now allows you to add a **Module**.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/t1ai2khb0xYYe5G4F9WYY-20251002-142638.png" size="62" width="1420" height="1422" position="center" showCaption="false"}

You can also add modules in the **Tools** section of the **Make AI Agents > Run an agent** module, once you create an AI agent.

::Image[]{src="https://app.archbee.com/api/optimize/PL8X94efBsjvhfQV3wyyj-isZv2imINzBC6WG-URo_m-20250910-153140.png" size="60" width="1226" height="1334" position="center" showCaption="false"}

### Where to learn more

- ﻿Technical documentation:[ Module tools](https://help.make.com/module-tools-for-ai-agents)﻿


[title] Make AI Content Extractor, new Shopify version, app updates
[path] Release notes/2025/

### New apps

| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/trQdi3ntDq6rmvsXz_NqI_image.png" size="50" width="255" height="255" darkWidth="800" darkHeight="800" position="center" showCaption="false"} | [Make AI Content Extractor](https://apps.make.com/make-ai-extractors) - We've released a new built-in app that extracts structured text and metadata from files like PDFs, Word documents, images, and audio recordings—directly within your Make scenarios. The app is currently in open beta, available to all customers on paid plans, except for the Enterprise plan at the moment. |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/5tDHf-0O7Siy1kqtSwUWe_image.png" size="50" width="255" height="255" darkWidth="800" darkHeight="800" position="center" showCaption="false"} | [Pictory](https://apps.make.com/pictory) - This AI-powered platform enables you to create and edit engaging videos quickly and easily. You can manage transcriptions, summaries, and video generation in your Pictory account using this new app.                                                                                                                                       |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/RoGtH9Tjvzi0jkiDCUp3b_image.png" size="50" width="255" height="255" darkWidth="800" darkHeight="800" position="center" showCaption="false"} | [Postiz](https://apps.make.com/postiz) - This open-source social media tool lets you create, update, and delete posts, upload files, and retrieve post data from your Postiz account—directly within your scenarios.                                                                                                                                                                    |

### Updated apps

| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ZinbyUdrUHXvZZGPXAz1Y_image.png" size="50" width="255" height="255" darkWidth="800" darkHeight="800" position="center" showCaption="false"} | [OpenAI](https://apps.make.com/openai-gpt-3) - We’ve added new parameters to our **Create a Model Response** module and **Create a Completion** module.                                                                                                                         |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/VYYfWg8mhZBCuP9a8SdZ__image.png" size="50" width="255" height="255" darkWidth="800" darkHeight="800" position="center" showCaption="false"} | [Shopify](https://apps.make.com/shopify) – We’ve released an updated version of the Shopify app using the GraphQL API, offering better performance and improved data handling. To learn more, see [Shopify tips and examples](https://apps.make.com/shopify-tips-and-examples). |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/zB3_qNlK2ZD8_snIciLSh_image.png" size="50" width="255" height="255" darkWidth="800" darkHeight="800" position="center" showCaption="false"} | [Webhooks](https://apps.make.com/gateway) - You can now attach multiple API keys to your custom webhook. This feature provides an extra layer of security to control access management.                                                                                         |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/CuGmlX9faLfqZEo-CL8Cy_image.png" size="50" width="255" height="255" darkWidth="800" darkHeight="800" position="center" showCaption="false"} | [Make](https://apps.make.com/make) - Connections to the Make app can now be established using OAuth2 or an API key.                                                                                                                                                             |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/cUiZpop37YoOuYp4LjJPQ_image.png" size="50" width="255" height="255" darkWidth="800" darkHeight="800" position="center" showCaption="false"} | [Salesforce Pardot](https://apps.make.com/salesforce-pardot) - It’s now possible to connect using OAuth client credentials, streamlining the authentication process.                                                                                                            |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/gIikUUJ_YDxMEuH-83oh1_image.png" size="50" width="255" height="255" darkWidth="800" darkHeight="800" position="center" showCaption="false"} | [Calendly](https://apps.make.com/calendly) - We've added a new module: **Cancel an Event**.                                                                                                                                                                                     |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ksol3XVYlJdAXBg4Yzbyu_image.png" size="50" width="255" height="255" darkWidth="800" darkHeight="800" position="center" showCaption="false"} | [LiveChat](https://apps.make.com/livechat) - A new connection procedure has been imlpemented for LiveChat, requiring your client credentials.                                                                                                                                   |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/bg-u445WxKMo93HR8pKSI_image.png" size="50" width="255" height="255" darkWidth="800" darkHeight="800" position="center" showCaption="false"} | [Printful](https://apps.make.com/printful) - The API key connection type has been deprecated. You can now create a connection using client credentials.                                                                                                                         |


[title] Account security updates, billing changes, app updates
[path] Release notes/2024/

## Improvements and changes

- As an increased security measure, we’ve updated our process for deleting an account. Now, if you’d like to delete your account, you’ll be asked to provide the same level of verification that is required for administering your account. For example, if you have 2FA enabled, that will be required for deleting an account.
- It’s now possible to add or change your payment method on the Subscriptions page. You can still add your payment method from the Organization settings dropdown as well.
- We’ve added a new section in the organization dashboard: now you can monitor all your  that  automatically disabled due to some error appeared in a .

## Fixed issues

- Users rarely couldn’t see the operation usage in their organization dashboards. This is fixed now.
- Under specific conditions, the polling trigger starting point could reset to the original setting when you created the trigger. We fixed the issue, so the polling trigger metadata are always correct.
- When the HTTP module returned invalid Unicode characters after you ran the  manually, you couldn’t save the . This is no longer happening.

## Apps updates

### New apps:

- [Skai](https://www.make.com/en/help/apps/marketing/skai) - With a new Skai app, you can configure a report and run it, as well as download a report file.

### Updated apps:

- [Bigin by Zoho CRM](https://www.make.com/en/help/apps/crm-and-sales-tools/bigin-by-zoho-crm) - Deals are now called Pipelines in Bigin by Zoho CRM. Our modules have been updated to match this change.
- [LinkedIn Offline Conversions](https://www.make.com/en/help/apps/marketing/linkedin-offline-conversions) - The app is called **LinkedIn Conversions API** and now includes a new module, **Send Conversion Events**. Additionally, we added a new connection type that allows connecting via OpenID Connect for enhanced security.


[title] Module setup badges, community apps
[path] Release notes/2024/

## Improvements and changes

- Using templates to create. is now much easier and more flexible.
  - We added an "X" icon that allows you to easily close the module settings. This means you can now open and set up modules in any order you prefer.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-mIlCUtTLjgtF9D9GPkEAH-20250228-122909.png" size="100" width="2485" height="1370" position="center" showCaption="false" indent="3"}

- We introduced badges for each module to make sure you don't miss any important information:

| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-v2oCmD6i5T5Ef8MHYFtvX-20250228-123107.png" size="34" width="157" height="150" position="center" showCaption="false"} | A green badge indicates that all required fields are filled in.                         |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-kQPJPliclXtruQML9n6Do-20250228-125334.png" size="34" width="157" height="150" position="center" showCaption="false"} | An orange badge signals that you need to provide some additional information.           |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-daMqq1CIW45KriHSW1mmL-20250228-125406.png" size="34" width="157" height="150" position="center" showCaption="false"} | A gray badge reminds you that you still need to get started with setting up the module. |

Once you complete the setup and all your badges turn green, you will see a side panel that gives you the option to run, edit, or schedule your .

![](https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-S4xwJEETbdjVDP_rpied3-20250228-131019.png)

- We renamed the **add-on apps** to **community apps**. In addition, on the  [integrations](https://www.make.com/en/integrations?addOnApps=1\&nativeApps=0) page, we show the number of  that are using the community app.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-fhGQldZtiOqqqrPyyikvF-20250228-131137.png" size="60" width="936" height="740" position="center" showCaption="false" indent="2"}

- On the  [integrations](https://www.make.com/en/integrations?addOnApps=1\&nativeApps=0) page, we show the verification badge for  verified apps with their author and maintainer. This brings more clarity to who developed the app and who you should reach out to if you experience issues.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-9cX8H8CUQL9POlSwNk04x-20250228-131228.png" size="60" width="810" height="500" position="center" showCaption="false"}

## Fixed issues

- If a  contained an iterator followed by an aggregator, sometimes it would get stuck when processing a large number of bundles. The  then failed to create  logs. Now  run smoothly and create  logs.


[title] Editor revamp and subscenarios launch
[path] Release notes/2024/

### Improvements and changes

- We revamped the toolbar in our  editor! We have made numerous visual and functionality improvements, like moving the **Run once&#x20;**&#x62;utton into the toolbar or making the toolbar expandable. Read more about the new toolbar [here](https://www.make.com/en/help/scenarios/scenario-editor).

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/U_7VMkqudS_B4v-zNiVWq_uuid-cc5c22ef-796b-b54b-e6b9-107110a1fd01.png" size="100" width="1646" height="159" position="center" showCaption="false" indent="2"}

- The [subscenarios](https://www.make.com/en/help/scenarios/subscenarios) have officially exited closed beta and are now available to all users in **Teams and Enterprise&#x20;**&#x6F;rganizations.
- The custom IML function for developing custom apps has been re-enabled! It was disabled because of security reasons, and is now available again.
- We are migrating the existing custom apps to the new technology in batches, so it might take time until you can edit a custom IML function in an already existing custom app. You can read more about the re-enablement [here](https://developers.make.com/custom-apps-documentation/app-structure/custom-iml-functions/re-enablement-of-the-custom-iml-functions-in-make).


[title] Make AI Toolkit, simplified MCP token creation, apps updates
[path] Release notes/2025/

# Simplified MCP token creation&#x20;

 has simplified the way you create tokens for the Make MCP server. There is no longer a distinction between API tokens and MCP tokens in the product. To learn how to create a token, see [Obtaining MCP Token](https://developers.make.com/mcp-server/make-cloud-mcp-server/obtaining-mcp-token).

# New app: Make AI Toolkit

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/4CkrlJIBl1di_p1x71ery-yHgyjnUA9YLOCLNjX8KgV-20250910-135252.png" size="40" width="800" height="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Make AI Toolkit](https://apps.make.com/ai-tools) is a new app that streamlines common AI tasks using either Make's built-in AI Provider or your own external AI models. The toolkit offers essential capabilities including sentiment analysis, text categorization, language identification, information extraction, text standardization, summarization, translation, and text chunking.
Users on all plans have access to Make's AI Provider:&#x20;

- **Free and Core plans:** Full access using Make's AI Provider
- **Pro and higher plans:** Connect your own API keys to use external providers (OpenAI, Claude, Gemini, and more)

**Migration note:** Make AI Toolkit replaces the previous Make AI Tools app for new implementations. Existing scenarios using Make AI Tools will continue to work without any changes.
:::
::::



# Updated apps

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/4CkrlJIBl1di_p1x71ery--mUJPAILXDnv-oiq678Id-20250910-135557.png" size="40" width="800" height="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Slack](https://apps.make.com/slack) — Following Slack’s update to conversation rate limits, we’ve added a new optional field **Enable pagination** to the following modules:

- Watch Public Channel Messages
- Watch Private Channel Messages
- Watch Direct Messages
- Watch Multiparty Direct Messages
- List Replies

For more details, see the [Conversation rate limits in Slack ](docId\:kLvbSOs7QZqobQ2mqXeGU) section.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/4CkrlJIBl1di_p1x71ery-Dv-VaPAQ8k7UdBK2xFJ-k-20250829-120858.png" size="40" width="800" height="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Whatsapp Business Cloud](https://apps.make.com/whatsapp-business-cloud) — We’ve renewed the connection process for the WhatsApp Business Cloud app. Creating a connection is now simpler, as it does not require a Facebook Developer account. Additionally, **Watch Events** webhooks are now set up automatically.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/OIowiPUEnIQfyUwEJbqvo_runway.png" size="40" width="800" height="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Runway](https://apps.make.com/runway-ml-api) — We now support the **Gen-4 Image** model in the **Generate an image** module. When using this model, you need to provide one or more reference images.
:::
::::


[title] SSO settings update and new apps
[path] Release notes/2024/

## Improvements and changes

- We added a new read-only **Audience URI** field to the SSO settings, where you can find the path to the `metadata.xml`. This can be useful for setting up SSO on the provider’s side. Also, we included a link to the documentation in the SSO settings so that users can access the information more easily.

![](https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-hkPe7rcwXycbJfeej2d8Y-20250228-114658.png)

## Apps updates

### New apps:

- [Crossbeam](https://www.make.com/en/help/apps/marketing/crossbeam) - This app helps you find potential partnerships among your customers and identify account overlap to uncover new leads and boost your sales.
- [watsonx.ai](https://www.make.com/en/help/apps/ai/watsonx-ai) - This AI app lets you generate responses to a prompt using a variety of large language models (LLMs).

### Updated apps:

- [Firebase Cloud Messaging](https://www.make.com/en/help/apps/marketing/fcm) - It was required to enter additional credentials to create a connection before. Now you can just sign in to your Google account to work with Firebase Cloud Messaging and enjoy!
- [Stripe](https://www.make.com/en/help/apps/commerce/stripe) - In the beginning of June, Stripe will deprecate all API keys that you used to create a connection in . To prepare for this, we created a new connection type: Restricted API key. Don’t forget to switch to the new connection type to continue working with Stripe!
- [Google Chrome (v2)](https://www.make.com/en/help/apps/communication/chrome) - We’ve released version 2 of our Chrome app to align with the new API, so you can continue to send notifications through your browser.


[title] Scenario history fixes, new Microsoft app
[path] Release notes/2024/

## Fixed issues

- Previously, unsaved filter settings didn’t display correctly when you returned to finish them. This has now been fixed, and the correct filter values are shown when you come back to update a filter with unsaved changes.
- Rarely, opening a module output in  history resulted in an endless loading loop. We fixed the issue, so no endless loading should occur when you open module outputs.
- Sometimes incomplete executions were wrongly marked as resolved. This is now fixed.
- When you swapped an instant trigger with a polling trigger, the  didn’t run on schedule. We fixed the issue so your  run on schedule when you swap instant trigger with a polling trigger.
- In rare cases, the  history displayed a  as running even though it wasn’t. We’ve fixed the running  visualization, and now the  status in the history shows correctly.

## Apps updates

### New apps:

- [Microsoft Advertising Reports](https://www.make.com/en/help/apps/marketing/microsoft-advertising-reports) - This new app allows you to manage reports in your Microsoft Advertising account, giving you the tools to track and analyze your ad performance more effectively.

### Updated apps:

- [LinkedIn Lead Forms](https://www.make.com/en/help/apps/marketing/linkedin-lead-forms) - We’ve added a helpful use case: Automated Lead Integration and Management from LinkedIn to Google Sheets.
- [Cflow](https://www.make.com/en/help/apps/it-and-development/cflow) - This app allows you to automate workflows by creating and managing approval processes directly from your Cflow account, streamlining business operations.
- [SectorFlow.AI](https://www.make.com/en/help/app/sectorflow) - We've updated the documentation for this app to make it easier to navigate and find the information you need.
- [DataForSEO](https://www.make.com/en/help/apps/business-intelligence/dataforseo) - We now have a newly updated and detailed documentation for this app, offering clear guidance to help you make the most of its features.


[title] Introducing scenario sharing
[path] Release notes/2025/

:::hint{type="success"}
Scenario sharing is available on all plans.
:::

You can now share your scenario with others through a link or post directly on social media.

## Key benefits 

- **Always up to date**: No need to export, import, re-export, and copy scenario blueprint after any change. The link always shows the latest saved version.
- **Perfect for demos**: Viewers can see the automation instantly; no login or Make account is required to view the public page.
- **Streamlined sharing**: It's more flexible and straightforward than creating and sharing a scenario through a template.
- **Enhanced visibility**: You can share links to your scenarios on social media platforms or anywhere you want.

## Where to find it

To begin sharing, click the **Share** button in the upper-right corner of the Scenario Builder or diagram:  

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Luorwg4gYj8m-mUL1jyKB-20251105-151416.png)

Then, enable the **Public** **scenario** **page**:

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/PxS2Vf2gK52gHAnjCdxGG-20251105-151810.png" size="40" width="782" height="740" position="center" showCaption="false"}

A **Public scenario page&#x20;**&#x77;ill be created where others can view your automation or log in to Make and copy the scenario to their accounts:

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/gvBi1dveGiVlV4lCiC5Mw-20251105-160625.png)

To share a scenario through social media, choose the **Share via social** option and post the link with a preview and short description:&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/_6YFX81ka5rfm86WFZGhC-20251105-160648.png" size="40" width="1090" height="550" position="center" showCaption="false"}

:::hint{type="info"}
To enhance the sharing experience, we've also moved the **Import blueprint** and **Export blueprint&#x20;**&#x6F;ptions to the upper-right corner of the Scenario Builder.&#x20;

You can now copy the scenario blueprint to your clipboard and paste it into other scenarios, LLMs, or other compatible tools.
:::

## Where to learn more

- ﻿Technical documentation: [Scenario sharing](https://help.make.com/scenario-sharing)
- ﻿Technical documentation: [Scenario blueprints](https://help.make.com/blueprints)

[title] Organization and team info, apps updates
[path] Release notes/2025/

## UI update: Organization and team info visible again

You can now quickly check which **organization** and **team** you’re in while working on the Scenario Builder. When the [enhanced navigation](https://help.make.com/new-navigation-now-live-for-all-users) was introduced, this information was temporarily hidden. Simply hover over the  name to see your organization and team names again. This helps you confirm that you’re editing the correct  in the right workspace.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/urjMqYEATxImmgT-VGXa3_image.png" size="78" width="2190" height="1070" position="center" darkWidth="2190" darkHeight="1070" showCaption="false"}

## Apps updates

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/PL8X94efBsjvhfQV3wyyj-UUjn5uUTngOmDCOl0lrvW-20250814-103121.png" size="40" width="393" height="393" position="center" darkWidth="393" darkHeight="393" showCaption="false"}
:::

:::VerticalSplitItem
[OpenAI (ChatGPT, Sora, DALL-E, Whisper)](https://apps.make.com/openai-gpt-3) — We’ve added new **Video** **modules** that let you generate and remix videos with Sora, track new video jobs, list and delete videos, and retrieve detailed video information. Module names were also refined for better clarity.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/-I9C4UH4mVqNS2bdpU3tq-20251106-140225.png" size="52" width="510" height="510" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[MCP Client](https://apps.make.com/mcp-client) — The list of verified remote MCP servers has been expanded. This update lets you securely connect to more trusted remote servers directly.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/Nkv2jSoCwU9t4Y5lXr4fP-20251029-171459.png" size="40" width="800" height="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Notion](https://apps.make.com/notion) — We've added the **Internal connection** type to all modules that were missing it. You can now use this connection type in any Notion module.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/OIowiPUEnIQfyUwEJbqvo_runway.png" size="40" width="800" height="800" position="center" darkWidth="800" darkHeight="800" showCaption="false"}
:::

:::VerticalSplitItem
[Runway](https://apps.make.com/runway-ml-api) — We've added a new **Generate a Video from a Video&#x20;**&#x6D;odule that allows you to create an AI-generated video using an existing video and a text prompt.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/ulB2xVTAFFzzwubnkRuPj-20251029-124309.png" size="40" width="800" height="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Virtuagym](https://apps.make.com/virtuagym) — The Virtuagym connection process is now simpler. You no longer need to provide your username and password when creating a new connection.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/Jwa5GmCdD6ssIG9Zj_Q99-20251029-130712.png" size="40" width="800" height="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Parseur](https://apps.make.com/parseur) — We've added a new trigger module, **Watch Process Failed**, that triggers when a process doesn’t complete successfully.
:::
::::


[title] [RESOLVED] Alert: An outage may have impacted your scenario execution on 4 September, 2025
[path] Release notes/2025/

### 10 September, 2025

This incident has been fully resolved. All Make services are operating normally.

**What we did to recover:** Thanks to our extensive monitoring and incident response procedures, our engineering team responded within minutes to mitigate the impact and restore service. We conducted a thorough investigation, reconstructed the complete chain of events, and implemented proactive measures to defend against similar disruptions.

**Prevention measures:** We've implemented additional hardening steps and have more planned for the near future to prevent similar incidents from occurring.

**Delayed webhook deliveries:** You may have received delayed webhook calls as third-party systems automatically retried their requests during the outage. This is normal behavior and indicates that Make's webhook queuing mechanisms worked as designed.

**Need help?** If you continue to experience any issues, please [contact our Customer Care team](https://www.make.com/en/ticket).

***

### 4 September, 2025&#x20;

We experienced an outage today (4 September 2025) between 14:37 CEST and 16:35 CEST that affected the execution of all scenarios. While our systems are now running as normal, scenarios that should have been triggered during the outage may not have been executed.

**How your scenarios may have been impacted**

- **Scenarios that rely on data or triggers being sent to Make** (instant triggers, and scheduled scenarios that receive data from other sources such as webhooks) did not run during the outage. If data was sent to Make at that time, it was not received, and scenarios were not executed.
- **Scenarios that fetch data from other sources** (scheduled triggers) did not run during the outage. Most of these have already been run with a delay. If not, they will run shortly.
- **In a small number of cases, scenarios that were running when the outage began** may not have been fully executed. If this is the case, you will see an error in your execution history.

**What you need to do now**

If data was sent to Make during the outage, it was not received, and scenarios were not executed. We therefore recommend you:

- Check other systems for any events that should have triggered a scenario during the outage window.
- Review your execution history to see if any data was not received.
- If any was missed, re-send it to trigger the scenario again.

:::hint{type="warning"}
Please note that many apps or services retry sending data several times. In some cases, you may therefore find that data that should have been sent to Make during the outage will follow later.
:::

Finally, you may have received email notifications that your scenarios were stopped or deactivated. We have automatically reactivated any scenarios that were deactivated as a result of this outage, but you may wish to check all your scenarios to be sure.We know that Make is important to your business and rest assured that we are here to support you. We regret disruptions in any form and we will work hard to avoid similar situations in the future.&#x20;

We will continue sharing updates on the Make [status page](https://status.make.com/).&#x20;

[title] Scenario builder improvements, security updates, and new apps
[path] Release notes/2024/

## Improvements and changes

- Previously, the route order numbers were hidden by default when using a router in your  . We have now enabled the **Show route order** option as the default setting, making it easier to view and manage route orders.

![](https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-wbc3ohY_lyFGQL5WOS3Z5-20250228-112954.png)

- To help avoid accidental deletion of organizations or teams, we've added an additional step. Users now need to type the name of the organization or team to confirm the deletion.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-JGQ_tbJFkv9qMVPRtkwvd-20250228-113013.png" size="60" width="897" height="631" position="center" showCaption="false"}

- You can now update your keys in the **Keys** tab. To do so, navigate to the **Keys** tab, locate the key you want to update, and click the **Edit** button.
- Note that you can only overwrite the existing value with a new one. Both the previous and updated key values will not be visible when editing.
- We've added a **Remember this device** option for two-factor authentication (2FA). When enabled, this feature allows users to skip 2FA on the same device for 30 days. This option makes accessing your account faster and easier on trusted devices.
- Previously, the cloned   were saved in the **Uncategorized** folder. Now, they stay in the same folder as the original .

## Fixed issues

- When using the **Search** or **Get** modules, if the processed data exceeded 3.5 MB and there were many output bundles, only the last set of bundles would be shown in the module's output. This issue has been resolved. Now, regardless of the amount of processed data or the number of output bundles, all bundles are displayed correctly in the module output.

## Apps updates

### New apps:

- [Canva](https://www.make.com/en/help/apps/marketing/canva) - This app provides an intuitive design platform that allows users to create professional-quality graphics and documents with ease, regardless of their design experience. Within , you can manage your design assets, folders, and other items to automate working with your projects.
- [Zoom](https://www.make.com/en/help/apps/communication/zoom-user) - Experience seamless virtual communication with high-quality video conferencing and easy screen sharing. Before  had only Zoom for administrators, but now you can enjoy Zoom as a user: handle your webinars, meetings, chats, and cloud recordings from the user prospective.
- [Motion](https://www.make.com/en/help/apps/ai/motion) - Motion is a powerful productivity app designed to streamline task and project management with automated scheduling and time-blocking features. With  modules, you can manage your tasks, projects, and comments.

### Updated apps:

- The already existing Zoom app is now called [Zoom Administration](https://www.make.com/en/help/apps/communication/zoom): you can use it if you have the administrator role in the Zoom account.
- [Active Campaign](https://www.make.com/en/help/apps/marketing/activecampaign) - We added several new modules such as **Watch Tasks**, **Watch Deals**, **Create a Deal** and others to let you leverage your data in a more flexible way.


[title] Upcoming adjustments to plans and pricing
[path] Release notes/2025/

**Effective November 6, 2025**, we're updating extra credit costs, adjusting credit limits for Core and Pro plans, and making custom AI provider connections available on all paid plans. 

Here's what's changing:

### Extra credit purchase updates

The cost of extra credits will be the same whether you purchase them manually or through auto-purchasing.

| **Purchase method** | **Currently**                                                       | **After November 6**                                                        |
| ------------------- | ------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| Automatic & via API | Additional credits cost 30% more than credits included in your plan | Additional credits will cost 25% more than credits included in your plan ⬇️ |
| Manual              | No additional cost                                                  | Additional credits will cost 25% more than credits included in your plan ⬆️ |

If you regularly use more credits than those included in your plan, we recommend moving to a plan that better matches your credit usage. Higher-tier plans have lower per-credit costs, so you'll minimize spending on extra credits by being on the right plan.

**Example:** If you have auto-purchasing enabled and you're on a plan with 80,000 credits, once you exceed that limit, Make will automatically purchase an extra 10,000 credits for you. These automatic purchases include a 25% additional cost compared to the credits in your plan.

You can also purchase extra credits manually at any time, starting from 1,000 credits (in multiples of 1,000). From November 6, manual purchases will include the same 25% additional cost as automatic purchases.

### Updated credit limits for Core and Pro plans

We're adjusting the monthly credit limits for Core and Pro plans.

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Core plan**
:::

:::VerticalSplitItem
- Will include up to 300,000 credits per month
- Credit tiers above 300,000 will be upgraded to Pro and will no longer be available on Core
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
**Pro plan**
:::

:::VerticalSplitItem
- Will include up to 8 million credits per month
- New credit tiers will be added, giving you access to more credits within your plan
:::
::::

If you have a monthly subscription for the **Core plan** with more tha&#x6E;**&#x20;300,000 credits per month**, you'll be automatically upgraded to **Pro**. Your monthly cost and number of credits will stay the same, but now you can enjoy all the features of Pro at no extra cost!&#x20;
For example, if you currently pay $338.13/month for 500,000 credits, you'll continue to pay $338.13/month on Pro.

### Your own AI provider connections on all paid plans

All paid plan users will be able to choose between Make's AI Provider or another provider for Make's AI features, such as Make AI Agents and Make AI Toolkit. Currently, only Pro plan users and above can choose their own connection to a provider.

After November 6, 2025, whether you're on Core, Pro, or higher, you'll be able to:

- Connect directly to OpenAI, Anthropic, or other AI providers using your own connection, such as an API key.
- Use your own connection in features like Make AI Toolkit and Make AI Agents.
- Pay your AI provider directly for token usage.

***

*These changes will take effect on November 6, 2025. We'll publish another update when the changes go live.*

[title] Coming soon: credits as new billing unit in Make
[path] Release notes/2025/

Effective August 27th, 2025, **we're replacing operations with credits as our billing unit**, allowing for more flexible pricing that better reflects your actual usage of Make.

### What's coming?

**The change:** Starting August 27th, you'll be billed in credits instead of operations. Operations will refer to individual module runs that process or check for data, and credits will be what you buy and consume for those operations and other usage-based factors. 

**Why it's happening:** The transition to credits enables a more flexible pricing model based on your actual usage of the platform, taking into account factors such as processing complexity or if Make's AI provider is used.

### What it means for you

- **Existing operations:&#x20;**&#x4F;n August 27th, your available operations automatically convert to credits at a 1:1 ratio. For example, if you had 1000 operations, you'll have 1000 credits after the transition.
- **Subscription:** Your current plan and pricing remain unchanged. Manual and automatic credit purchases will work the same as they do now with operations.
- **Credit usage by feature:&#x20;**&#x4D;ost features use 1 credit for every 1 operation. Certain features, including some AI modules, will consume credits differently based on usage-based factors.&#x20;
- **Visibility and tracking:&#x20;**&#x59;ou will see credits in several places throughout Make. In the Scenario Builder, next to the scenario name, you'll be able to toggle the credit usage view on and off. 

### How credits work

Credits are the currency you buy and consume to use features in Make.

Credit usage can be fixed or dynamic:

- **Fixed:** Standard features consume a set number of credits per run.&#x20;
- **Dynamic:** Some AI features and advanced modules consume varying credits per run based on usage-based factors (e.g., AI tokens, file size, or run time).

Features with dynamic credit usage will be marked with tags and tooltips in the product interface.&#x20;

### Where to learn more

To find out more about credits and what to expect, head to our documentation:

- [Credits](docId\:hh-nrTakEqakBmg63UUiN)&#x20;
- [Operations](docId\:ZR2rWmILMJ_19R85MlAwM)&#x20;


[title] User management improvements, new Google app
[path] Release notes/2024/

## Improvements and changes

- We’ve added a small but important improvement to the **Users** tab. Now you can filter users by their role at both organization and team levels. Simply click on the filter icon and select the role that you would like to see in the list.

![](https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-t_5hA8ql6vmxwB80jL7Lg-20250228-114744.png)

## Fixed issues

- Recently, when searching for modules in the  editor, the **Instant** tag was missing from instant triggers and they were mistakenly labeled as **ACID** (polling) triggers. This issue has been resolved, and it now works as expected.

## Apps updates

### New apps:

- [Google Search Console](https://www.make.com/en/help/apps/marketing/google-search-console) - This app provides additional online marketing support to monitor and troubleshoot your website’s Google Search results.
- [Flodesk](https://www.make.com/en/help/apps/marketing/flodesk) - This app allows users to create visually engaging emails for designing and managing email marketing campaigns.


[title] Make TypeScript SDK & App updates
[path] Release notes/2025/

## Improvements and changes

### &#x20;TypeScript SDK now available

We've added a new client library to our API documentation – the [Make TypeScript SDK](https://developers.make.com/api-documentation/client-libraries). This library provides developers with:

- Comprehensive type definitions
- Support for most  API endpoints
- Built-in error handling
- Response typing

The SDK is fully compatible with pure JavaScript projects, allowing seamless integration regardless of your preferred development approach.

### Improved collection handling

We've simplified your workflow with automatic collection conversion. When mapping a collection to a text field,  now automatically converts it to a JSON string for you. This eliminates the manual conversion step previously required, saving you time and reducing potential errors in your .

## Apps updates

### New apps

| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-1Udpj9Lud4dOoK7Sv6r1y-20250502-140647.png" size="46" width="255" height="255" position="center" darkWidth="800" darkHeight="800" showCaption="false"} | [SAP SuccessFactors](https://apps.make.com/sap-successfactors) - A cloud-based human capital management software that helps companies manage employee information. You can now retrieve and search for the records in your SAP SuccessFactors account. |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/XXfboxHEPdSjV_Qbhj9-s_image.png" size="46" width="800" height="800" position="center" darkWidth="800" darkHeight="800" showCaption="false"}           | [XLSX](https://apps.make.com/xls) - The XLSX app is our built-in app available on all plans. It allows you to aggregate data in an XLSX file without the need to connect to the Microsoft 365 Excel app.                                               |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/DNOnYIbd8Y8nGD6gSL1Sw_amazon-bedrock.png" size="46" width="255" height="255" position="center" darkWidth="800" darkHeight="800" showCaption="false"}  | [Amazon Bedrock](https://apps.make.com/amazon-bedrock) - We've released the new Amazon app. You can now build AI-powered automations that create text, images, or chat responses using your Bedrock setup.                                             |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/rkSKh2vC9kG18epozkflM_clay.png" size="46" width="255" height="255" position="center" showCaption="false"}                                             | [Clay](https://apps.make.com/clay) - The new Clay app lets you create new webhook records in your Clay tables.                                                                                                                                         |

### Updated apps

| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/VV_44qpGW80K3fOZ_fhkz_2025-04-09-14-03-17.png" size="46" width="510" height="510" position="center" showCaption="false"} | [OpenAI](https://apps.make.com/openai-modules#67hWK) - The OpenAI app now includes four new modules that help you manage model responses more effectively:<br />* List Input Items
* Get a Model Response
* Create a Model Response
* Delete a Model Response |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-RKhQJKgoH-vlMHJp4CX1L-20250502-140037.png" size="46" width="255" height="255" position="center" showCaption="false"}     | [xAI](https://apps.make.com/xai) - A new module called **Generate an image** is now available. It lets you create images based on a prompt.                                                                                                                   |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery--Zr_eOgG3Az5MxXdbLGPp-20250502-140104.png" size="46" width="255" height="255" position="center" showCaption="false"}     | [Monday.com](https://apps.make.com/monday) - We have two new modules that will let you monitor the events and search items in the board by column values:<br />* Watch Events
* Search Item sin the Board by Column Values (advanced)                         |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-w64fOztXa5YwrZxis3qKD-20250502-140255.png" size="46" width="255" height="255" position="center" showCaption="false"}     | [Facebook Pages](https://apps.make.com/facebook-pages) -  A new module is now available that lets you publish Reels directly to your Facebook Page:<br />* Publish a Reel                                                                                     |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-zfWJBFR3SCdvSXrmmR0gp-20250502-140448.png" size="46" width="255" height="255" position="center" showCaption="false"}     | [Crowdin](https://apps.make.com/crowdin) - The app now supports both OAuth and API key authentication, giving you two different ways to create a connection.                                                                                                  |


[title] Make AI Web Search, MCP client and MCP server improvements
[path] Release notes/2025/

## New app: Make AI Web Search

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/iRjHJsjSF6I9BhtVtxd1S-20251113-094417.png" size="50" width="205" height="205" position="center" darkWidth="205" darkHeight="205" showCaption="false"}
:::

:::VerticalSplitItem
We've released Make AI Web Search, a built-in app that lets you search and get real-time information directly in your . You can run all web searches securely within , without relying on external integrations.

Use the **Generate a response** module to run a web search based on your prompt. You can select whether you want the AI's text response to be parsed as JSON and apply location-based filters. These options give you more control over the search context and the format of the AI-generated output, making the results easier to use in the rest of your .

For more details and credit usage information, refer to the [Make AI Web Search documentation](https://apps.make.com/make-ai-web-search).
:::
::::

## MCP Client: Execute an action with AI

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/-I9C4UH4mVqNS2bdpU3tq-20251106-140225.png" size="60" width="510" height="510" position="center" darkWidth="510" darkHeight="510" showCaption="false"}
:::

:::VerticalSplitItem
We've added **Execute an action with AI**, a new MCP Client module that uses AI to complete tasks with MCP tools. Select which tools the AI can access, describe the task, and the module automatically identifies and executes the right tool.

For more information, refer to the [MCP Client documentation](https://apps.make.com/mcp-client).
:::
::::

## Stateless Streamable HTTP transport in Make MCP server

Make MCP server now uses Stateless Streamable HTTP as the default transport method for more reliable connections. Use this method when connecting to any MCP client that supports Streamable HTTP. For clients that support only SSE, continue using the SSE transport method.

To connect  MCP server to a client, see the [Developer Hub documentation](https://developers.make.com/mcp-server/).


[title] SSO improvements and scenario execution fixes
[path] Release notes/2024/

## Improvements and changes

- Enterprise customers can now claim and verify an email domain for their Single Sign-On (SSO) setup, allowing for SSO enforcement.  recognizes users with the claimed email domain and prompts them to use SSO. See our [article on domain claim](docId\:sox7tIAcDDv9bdKVh5Kj2) for information on setup and provisioning options.
- Using a coupon for a higher plan now changes your subscription. Once the coupon expires, you automatically stay on your new plan. Or, you can manually downgrade to your original plan. See our [article on coupons](docId\:ICTrw0S99OVzeFU6y3Y-k) for details.

## Fixed issues

- Under the SSO option **Default teams for newly created users**, the list of teams showed deleted teams. This list now shows only valid teams.
- It wasn't possible to delete records in a webhook queue: the **Delete** button wasn't clickable. Now you can delete them.
- The infinite scroll in the  history wasn't infinite: it got stuck and didn't show all records. Now you have access to the full history.
- The hints for creating names of custom functions and  inputs were incorrect. The hints now show the correct requirements for custom function and  inputs names.
- Doubled and unaligned texts appeared when you clicked the **Create a connection** button. We solved it, so you have beautifully aligned and correct texts.
- When you tried to resolve incomplete executions, the **Run once** button wasn't clickable. Also, a module that caused an error lost its mapping. We fixed both issues.
- Mapping pills showed their raw name. Pills now have descriptive names.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/EUW-11ydLZ9tJbZ7pw_12_uuid-b3cecf61-90ac-30ee-0eaf-f77eb9e1900f.png" size="34" width="175" height="139" position="center" showCaption="false" indent="2"}

- When you ran the **Explain flow** option and then deleted one or more modules, the dot showing the flow was stuck. We unfroze the dot, and now it shows the full flow (and takes into account the deleted modules).

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-EhSDDaZUWp3gyxFmT5LxX-20250228-131453.png" size="74" width="758" height="732" position="center" showCaption="false" indent="2"}

- The built-in option that  uses to decode URLs in the output refused to decipher links. Now URLs in the output are legible and don't contain odd symbols.


[title] Scenario rate limits for instant triggers
[path] Release notes/2025/

:::hint{type="success"}
Available for all users on all plans.
:::

Previously, instant  used to run at full speed, often overwhelming third-party services and triggering "Too Many Requests" errors that could halt your automations. Now you can set execution limits to control the pace, ensuring reliable workflows and smoother interactions with third-party applications.

### What's new?

- You can set how many instant scenarios can start per minute.
- It prevents APIs from rejecting requests due to excessive calls.
- System handles timing automatically—no sleep modules needed.
- Sudden spikes get distributed evenly instead of overwhelming services.
- It prevents high-volume scenarios from blocking other automations.
- Missed executions get reprocessed automatically.

### Where to find it?

In the  Builder, the **Schedule setting** now includes a "[Maximum runs per minute](https://help.make.com/schedule-a-scenario#lcstO)" option to configure your rate limits. When a  reaches its configured  run limit, it queues and processes requests gradually as the limit allows.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-RjVvWHA9qXu4KSSViRnUC-20250728-145641.png" size="66" width="1232" height="1010" position="center" showCaption="false"}

:::hint{type="success"}
Available for scenarios with instant triggers.
:::

### Learn more

- [Technical documentation: Set up scenario rate limits](https://help.make.com/schedule-a-scenario#lcstO)
- [Community announcement: Rate limit your scenarios](https://community.make.com/t/feature-spotlight-scenario-rate-limits/88197)


[title] DevTool update, scenario sorting, fixed issues
[path] Release notes/2024/

## Improvements and changes

- Our [DevTool](https://www.make.com/en/help/scenarios/make-devtool#make-devtool), which helps users debug their , has been rebranded and is now called **Make DevTool** in the Chrome Web Store. If you’ve been using it before the name change, there’s no need to worry - it will continue to work as usual, just under a new name.
- Users with API access can now create up to **100 API tokens**. The former limit was 5.
- We've added new sorting options to the  list, allowing you to sort  alphabetically from A to Z or by creation date, either from newest to oldest or oldest to newest. Previously, sorting was only available in the **Table** view, and  in the **List** view were sorted by status (active/inactive) and then alphabetically from A to Z.
- We're excited to announce that we've added new functions!
- When creating a new module in your custom app, you now have three options to choose from:
- These options help you speed up the process of writing boilerplate code.
- User search no longer requires accents to find a match. Now, searching for a name like "Tomas" will return results for "Tomáš", "Tomás", and "Tomas", making it easier to find users with different accent marks.

## Fixed issues

- Previously, some  would reach their run time limit earlier than expected. This issue has now been resolved, ensuring all scenarios run within their specified time limits.
- When a  was cloned in the **Table** view, the **Created By** column was left empty. Now, it shows the name of the user who created the original . Please note that the **Table** view is available only for **Enterprise** customers.
- The links to incomplete executions in the notification emails sometimes didn't work. This issue has been fixed, and the links now function correctly.
- When manually resolving an incomplete execution,  didn’t create a new incomplete execution if another module returned an error. This issue has been fixed, so a new incomplete execution is created if an error occurs during the resolution process.
- Before, when a  was cloned, the **Created By** column was empty. Now the name of the user who created the original  is shown.

## Apps updates

### New apps:

- [Microsoft Advertising Conversions](https://www.make.com/en/help/apps/marketing/ms-advertising-conversions) - A new app allows managing offline and online conversions in your Microsoft Adversiting account.

### Updated apps:

- [LinkedIn](https://www.make.com/en/help/apps/marketing/linkedin) - We have a new, secure connection method using **OpenID** that enhances privacy and security for your LinkedIn integrations. This feature is also available in certain LinkedIn apps.
- [Pipedrive CRM](https://www.make.com/en/help/apps/crm-and-sales-tools/pipedrive-crm#build-pipedrive-crm-scenarios) - We added a couple of new modules that allows you to list deals according to different criteria as well as watch emails.
- [Adobe Acrobat Sign](https://www.make.com/en/help/apps/file-and-document-management/adobe-sign) - Now you can define scopes for your connection if you have a custom application in your Adobe Acrobat Sign account.
- [UiPath](https://www.make.com/en/help/apps/business-operations-and-erps/uipath) - The On-prem connection type is no longer available to use.
- [Cin7 Core](https://www.make.com/en/help/apps/business-operations-and-erps/dear-inventory) - Dear Inventory has rebranded to Cin7 Core. We have updated our documentation to ensure it accurately reflects this change.
- [Active Campaign](https://www.make.com/en/help/apps/marketing/activecampaign) - We added new modules for working with custom objects in your Active Campaign account: **Create or Update Custom Object Records** and **List Custom Object Records**.
- [LinkedIn Lead Forms](https://www.make.com/en/help/apps/marketing/linkedin-lead-forms) - Previously we had two LinkedIn Lead Forms apps for working with forms and responses. Now you don’t have to split work - just use a new **LinkedIn Lead Forms** app.


[title] Google Sheets add-on, new OpenAI module
[path] Release notes/2025/

### New app

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://images.archbee.com/oAyFj2GHlBeBVWF5OAir2/OTBb1d9wjsRlEGlsDdTZ0_cropped-adp-workforce-now.png?format=webp" size="40" width="800" height="800" darkWidth="800" darkHeight="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[ADP Workforce Now](https://apps.make.com/adp-workforce-now) — This new HR management app lets you access job applications, worker data, job requisitions, and onboarded applicants from your ADP account. It helps you bring essential HR data into your scenarios and keep them aligned. The ADP Workforce Now app is only available on the [Make Enterprise plan](https://www.make.com/en/enterprise).
:::
::::

### Updated apps

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/L6MT49gFwxtpkTbxO0Dqb_cropped-openai-gpt-3.png" size="40" width="800" height="800" darkWidth="800" darkHeight="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[OpenAI](https://apps.make.com/openai-gpt-3) — We’ve added a new module named **Download a Container** **file**, which lets you retrieve container files using their IDs.

The **Create a model response** module now includes a new **Tool choice** option: **Code interpreter**.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/ARE6lBnw39qe_OUF5yvuB_google-sheets.png" size="40" width="800" height="800" darkWidth="800" darkHeight="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Google Sheets](https://apps.make.com/google-sheets) — The Make add-on for Google Sheets is back. You can install it from the [Google Workspace Marketplace](https://workspace.google.com/marketplace/app/make/947306521495?flow_type=2) to connect your spreadsheets with Make, run scenarios, and send or receive data without leaving Google Sheets.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://images.archbee.com/oAyFj2GHlBeBVWF5OAir2/o1NZQUX6QYwx1WF9AavFd_cropped-microsoft-teams.png?format=webp" size="40" width="800" height="800" darkWidth="800" darkHeight="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Microsoft Teams](https://apps.make.com/microsoft-teams) — The **Send a message** module now includes an **Attachments** field, allowing you to add attachments using OneDrive links.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/jUf51s89GtVbx1RS_bNln_image.png" size="40" width="211" height="233" darkWidth="800" darkHeight="883" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Monday.com](https://apps.make.com/monday) — This app now includes two modules for creating items: **Create an Item** (by board ID) and **Create an Item (advanced)**, which offers an alternative setup for item creation.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/OIowiPUEnIQfyUwEJbqvo_runway.png" size="40" width="800" height="800" darkWidth="800" darkHeight="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Runway](https://apps.make.com/runway-ml-api) — We’ve added a new module, **Generate an Image**, that creates images from a text prompt and optional reference images.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Pl1O6_0qP9kKN0IlPueOf_trello.png" size="40" width="800" height="800" darkWidth="800" darkHeight="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Trello](https://apps.make.com/trello) — The **Watch Boards** module has been renamed to Watc&#x68;**&#x20;Boards Created by Me** to better reflect its functionality.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/6WcF21beVeYucad2e99GE_klaviyo.png" size="40" width="800" height="800" darkWidth="800" darkHeight="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Klaviyo](https://apps.make.com/klaviyo) — We've added a new connection type: **Klaviyo OAuth**. The previous API key connection option is now deprecated.
:::
::::


[title] Introducing Audit Logs
[path] Release notes/2024/

## Improvements and changes

We're excited to introduce [Audit Logs](docId\:ORayiYsh5PQZ0V9xfR_1P), a powerful new feature designed to help you monitor activities within your  account! With Audit Logs, you can:

- **Track Key Events:&#x20;**&#x53;tay informed about significant events in your Organization or Team, such as  creation or deletion, connection updates, user removals, and more.
- **Identify User Actions:** Easily see who did what and when, as Audit Logs provide the user’s name and a timestamp for each event.
- **Filter and Sort Easily:** Focus on the information that matters most by selecting a specific timeframe, filtering by event type, or tracking the actions of a particular user.
- **View Detailed Event Information:** Access comprehensive details for each event logged.

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/clR-Uv_1WsXVm43qhJIFy_uuid-32b0b4d8-47a8-b484-694e-8d259cfc6399.png)

Audit Logs are available with the **Enterprise** plan, giving you enhanced visibility and control over your environment.

[title] Make API and dashboard improvements, app updates
[path] Release notes/2024/

## Improvements and changes

- We created new Make API endpoints to help you monitor the usage of operations in your . Learn more about them in the [Make API documentation](https://www.make.com/en/api-documentation).
- We updated the timezones for operations and data transfer in your organization and team dashboards. Instead of showing usage in GMT+0, the dashboards will now display data based on each user’s account timezone.
- The organization and team dashboards now include data from incomplete executions, covering both operations and data transfer usage.

:::hint{type="warning"}
If your   frequently have incomplete executions, you may notice an increase in usage metrics on the dashboards.
:::

- Previously, it was not possible to open a  in a new tab from the Table view of the **Scenarios** tab. Now, you can right-click on a  from the list and select the option to open it in a new tab. Note that the Table view is only available for the **Enterprise** accounts.

![](https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-NO10zMjDPCREo8Sby5pjy-20250228-113835.png)

## Fixed issues

- We resolved an issue where, in rare cases,  were running indefinitely and blocking the processing of webhook queue items. With this fix,  will no longer get stuck, allowing the webhook queue items to be processed smoothly.

## Apps updates

### New apps

- [Sage Intacct](https://www.make.com/en/help/apps/business-operations-and-erps/sage-intacct) - This app allows you to keep accounting, staff management tools, and reports in one place. Within , you can handle records in your Sage Intacct account.
- [Google Ads Reports](https://www.make.com/en/help/apps/marketing/google-ads-reports) - This app is an integral part of Google Ads that is responsible for marketing reports based on data in your Google Ads account.

### Updated apps

- [Celoxis](https://www.make.com/en/help/apps/productivity/celoxis) - The API URL for Celoxis has been updated, ensuring all app parts and documentation reflect this mandatory change.
- [Custify](https://www.make.com/en/help/apps/business-intelligence/custify) - The app documentation has been updated with revised module names and improved structure.


[title] New Snapchat integration
[path] Release notes/2024/

### New apps

- [Snapchat Conversions](https://www.make.com/en/help/apps/marketing/snapchat-conversions) - This new app allows you to directly send conversions event data to Snapchat's servers, improving conversion tracking accuracy and enhancing campaign performance through better measurement.

### Updated apps

- [ServiceNow](https://www.make.com/en/help/apps/customer-support/servicenow#servicenow) - We have a new connection type that uses custom app client credentials. Our documentation has been updated to explain both connection types.
- [LinkedIn Conversion API](https://www.make.com/en/help/apps/marketing/linkedin-conversions-api) - Now you can associate multiple campaigns with a conversion rule: just add as many campaigns as you want by their IDs.


[title] Scenario inputs now available for all users
[path] Release notes/2024/

## Improvements and changes

- Users can now update their existing connections when their credentials change, instead of creating and reconfiguring new connections.
  - Note: This feature is being enabled in stages. Some apps may not yet support connection updates.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-kSO3qf_yfwtwB_ez0PIO3-20250218-145854.png" size="56" width="895" height="1489" position="center" showCaption="false"}

- The [scenario inputs](https://www.make.com/en/help/scenarios/scenario-inputs) are now available to all  users. Previously,  inputs were available only to users in organizations with the **Pro** plan or higher.
- The  entity in the  API now has the `isActive` parameter. This parameter shows whether a  [is active](https://www.make.com/en/help/scenarios/active-and-inactive-scenarios). The `islinked` parameter is now Make API still returns the `islinked` parameter for backward compatibility.
- Custom app developers now have the ability to utilize data structures directly within custom apps. Users can create a data structure and integrate it into their app, similar to how data structures function in data stores.
- Previously, when a Team Admin only had an organization member role, they were unable to add new users to the team. Now, a Team Admin with a member role can see all the organization users and add users to the team.
- Custom app developers can now add a banner to the module settings. You can use banners in module settings to highlight new features or announce changes.

## Fixed issues

- When parsing a date with the `parseDate` function in the timestamp format in milliseconds, users had to convert the timestamp to a number first. This is no longer required. The `parseDate` function converts timestamps in seconds or in milliseconds directly.
- Previously, attempting to add a custom property would result in an error stating that the property data already exists if there was an empty value for that property. Now, the function recognizes an empty object as a condition and allows the user to add the new property without receiving an error.

## Apps updates

### New apps

- [TikTok Audiences](https://www.make.com/en/help/apps/marketing/tiktok-audiences) - A new app that enables you to manage custom audiences, customer audience contacts, customer file audiences, and saved audiences directly from your TikTok Business account.
- [Lusha](https://www.make.com/en/help/apps/crm-and-sales-tools/lusha) - This new app helps businesses find accurate and verified contact and company information for easy prospecting and research.
- [xAI](https://www.make.com/en/help/apps/ai/xai) - An app enabling users to create text completions from prompts or chats, supporting streamlined automation and enhanced workflows.

### Updated apps

- [LinkedIn Conversions API](https://www.make.com/en/help/app/linkedin-conversions-api#linkedin-conversions-api) - The documentation has been updated with additional details, including Salesforce configuration guidance, required LinkedIn account permissions, and steps for setting up conversion events.
- [Snack Prompt](https://www.make.com/en/help/app/snack-prompt) - We've updated the documentation to include more detailed information about the modules in the app.


[title] New Gmail app is now available
[path] Release notes/2025/

We're excited to announce that a new [Gmail app ](https://apps.make.com/google-email)is now available to all customers.

The new Gmail app simplifies the setup and offers new module enhancements:&#x20;

- **Easier setup**: Unlike [Gmail (Legacy)](https://apps.make.com/gmail-legacy), it doesn't require creating a Google Cloud Platform project and OAuth credentials for personal Gmail accounts.
- **New modules and improvements**: Additional parameters in existing modules plus new modules like **Reply to an Email,** **Search Emails**, **Get an Email,** **Send a Draft Email,** **List Email Attachments and Media&#x20;**&#x61;n&#x64;**&#x20;Make an API Call.**

**How to use it:**

Add a Gmail module to your scenario and select **V4** in the upper-right corner. 

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/HhSsIoxgLczjUT5V0Ruuy-20251008-125933.png" size="44" width="774" height="786" position="center" showCaption="false"}

:::hint{type="info"}
Learn more in our technical documentation: [Gmail app](https://apps.make.com/google-email)&#x20;
:::


[title] Introducing credits: new billing unit live in Make
[path] Release notes/2025/

As of today, we've officially transitioned from operations to credits as the term used for Make's billing unit. Here's what to know:

- **Your plan**: Your current plan and pricing, including the cost of buying credits, remain unchanged. The cost of credits [varies by plan](https://www.make.com/en/pricing).&#x20;
- **Credit usage for non-AI features**: Your credit usage won't increase—1 operation still uses 1 credit.&#x20;
- **Credit usage for third-party AI apps:** AI apps like OpenAI, ChatGPT, Claude, etc. still use 1 credit per operation.
- **Credit usage for Make's built-in AI features:&#x20;**&#x20;Your credit usage may increase if you're using Make's AI Provider, as we align billing with actual AI usage costs.&#x20;

### What's changed

- You are now billed in credits instead of operations.
- Operations now refer to individual module runs that process or check for data.
- All of your existing operations have been automatically converted to credits at a 1:1 ratio (for example, your 1000 operations are now 1000 credits).&#x20;
- Your credit consumption is now based on operations, AI tokens, or other usage-based factors, depending on the feature.
- You'll see both operations and credits in Make: credits are what you buy and consume to use features, and operations are the activities that use those credit.

### Where to find it

You can manage and track your credit usage in several places throughout Make:

- **Dashboard**: Daily credit usage, credits left, usage reset, and extra credits purchasing.
- **Subscription**: Total credits, percentage used, and extra credits purchasing.&#x20;
- **Scenarios**: Credits used per scenario.
- **Diagram**: Credits used in a specific scenario and its runs.
- **Scenario Builder**: Credits used per module as you build and run scenarios.&#x20;
- **History**: Credits used in individual scenario runs.&#x20;

### Where to learn more

Check out these resources to find out more about credits:

- Help Center: [Credits & operations](docId:7MJcR2V5eiL5mOp95RGHE)&#x20;
- Blog: [Introducing credits](https://www.make.com/en/credits)
- Pricing page: [Pricing](https://www.make.com/en/pricing)




[title] New navigation now live for all users
[path] Release notes/2025/

Starting November 4, 2025, our redesigned navigation is live for all users, making it easier than ever before to move around the platform and access features.

## What's changed

- **Updated left sidebar**: Horizontal tabs have been moved to a new vertical submenu,  making it easier to see available features at a glance.
- **New Organization & Teams picker**: Redesigned for faster switching between organizations and teams.
- **New top-right menu**: Notifications, resources, and your profile settings are now located in the top-right corner for quicker, easier access.
- **Visual refresh**: The interface features an updated left sidebar and other visual styling updates, including improved buttons, dropdowns, and lists.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/waL8asf4yZhAlEpH3NKZT-20251104-101443.png" size="100" width="2978" height="1679" position="center" showCaption="false" indent="2"}

## What this means

- All users now see the new navigation by default.
- The option to switch back to the old navigation is no longer available.

:::hint{type="warning"}
The [Custom apps](https://developers.make.com/custom-apps-documentation) pages are keeping their original tab structure for now. A dedicated redesign for this section is planned for later.
:::


[title] Scenario execution fixes, new TikTok apps
[path] Release notes/2024/

## Fixed issues

- When rerunning an incomplete execution caused by an error in a route in a router, only the route where the error occurred would be executed while resolving the incomplete executions. Any subsequent routes would be ignored. Now, all subsequent routes are also processed when resolving incomplete executions.
- Previously, custom functions couldn't handle parameters with binary data types, such as email attachments or pictures. This caused failures when trying to process files with custom functions. We fixed it and now you can successfully use custom functions to process raw binary data.

## Apps updates

### New apps:

- [TikTok Conversions](docId\:J8YlCKny3hnPdYL4TfEoU) - Introducing an app that allows you to track conversion events that occur outside of TikTok and optimize your ads accordingly.
- [TikTok Reports](docId\:jlo8Q87_5e21TPjYABKxi) - With this app you can create detailed reports on the performance of your TikTok advertising campaigns.
- [BigCommerce](docId\:KW24bUlw8TbLOebGDWw6a) - Using this app you can manage your BigCommerce orders, carts, customers, products, and blog posts.
- [Azure OpenAI](docId\:iLIWXpAgVqcgKwhR8ODqF) - This AI app lets you generate images and create transcriptions, translations, and chat completions.

### Updated apps:

- [LinkedIn](docId\:fF1v8RymQVJoDnGn7Ys2Z) - A new module, **Search Organizations**, has been added to help you easily locate organizations by vanity name or email domain.
- [LinkedIn Matched Audiences](docId:5zCCAJ4uH9y-8LIYQ8w0N) - Four modules have been deprecated due to a LinkedIn API change: **Attach a Seed Audience**, **Create a Lookalike Audience**, **List Lookalike Audience’s Seeds**, and **Update a Campaign Target**.


[title] Table view improvements
[path] Release notes/2024/

## Improvements and changes

- Previously, you could only filter and sort  in the Table view. But now, you can also search for specific  using the search bar in the upper left corner. This option is only available to Enterprise customers.
- The template guided setup makes sure you don't miss any important fields when setting up each module:

## Fixed issues

- Clicking the **Details** button in the webhook queue resulted in an error. We fixed it, so you can see all the data that webhooks received.

## Apps updates

### New and updated apps:

- [Salesforce Pardot ](docId\:Dai3BV9epIZzpP8wyaWUO)- Salesforce Pardot is a marketing platform for email campaigns and lead management. Our app allows users to manage their records, files, and folders in their Pardot account.
- [HighLevel LeadConnector](docId\:BnTuae4MKH12siZCm_Noy) - A new **Watch Events** module was added. It can be used as an alternative to **Watch Contact** and **Watch Opportunities**. Also we switched to API v.2 for this app, making sure that the overall experience is better.


[title] Affiliate payouts, incomplete execution retries, new apps
[path] Release notes/2025/

## Improvements and changes

- To ensure faster and more seamless payments, Wise has replaced PayPal as our exclusive payment provider for affiliates. When you register for the [affiliate program](https://help.make.com/affiliate-program#4-zYG), you’ll be asked to provide your Wise email address, account type, and preferred payout currency. If you're already part of the program, you can [update your account information](https://help.make.com/affiliate-program#61YP5) at any time. 
- We've improved the way incomplete executions are retried. When retrying a large number of incomplete executions, we now limit how many are processed at the same time. This helps prevent retries from failing due to `RateLimitError` caused by too many simultaneous requests.
- You can now write `/` in mapping fields to get completion suggestions based on what you write next.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/7YZV9D7oUx3c01tNQgcju_image.png" size="80" width="1502" height="1128" position="center" showCaption="false" indent="2"}

- You can now map the entire output bundle from one module to another.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/begOn59VF5v7JdFaMleDA_2025-04-17-10-40-33.png" size="64" width="1388" height="898" position="center" showCaption="false" indent="2"}

## Fixed issues

- Sometimes, a confirmation prompt to discard changes to  notes appeared even when you didn’t make any. This is fixed now.
- The app search wasn’t visible in rare cases when adding the first module to a new . We fixed the issue so this doesn't happen anymore.

## Apps updates

### New apps

| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/5Fo58m5a2LrFpP4tJSiGb_adobe-workfront.png" size="46" width="510" height="510" position="center" showCaption="false"}     | [Adobe Workfront](https://apps.make.com/adobe-workfront) - A work management platform designed to help teams plan, execute, and deliver projects efficiently. This new app lets you connect with Adobe Workfront to manage tasks, projects, issues, and users directly from . |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-KW8wnZLd35HX2GFBmSOjG-20250409-115919.png" size="48" width="510" height="510" position="center" showCaption="false"}     | [Amazon Rekognition](https://apps.make.com/amazon-rekognition) - This new app lets you connect with Amazon Rekognition to detect objects, scenes, and faces; moderate content; and extract text from images and videos.                                                       |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/EhzXNvw5jUtwcRCCKhyyr_2025-04-09-14-01-21.png" size="46" width="510" height="510" position="center" showCaption="false"} | [Kimi](https://apps.make.com/kimi) - AI language model developed by Moonshot AI that allows you to create chat completions and list the available models.                                                                                                                     |



### Updated apps

| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/VV_44qpGW80K3fOZ_fhkz_2025-04-09-14-03-17.png" size="46" width="510" height="510" position="center" showCaption="false"} | [OpenAI](https://apps.make.com/openai-gpt-3) - Now we support GPT-4.5 models. You can see the new GPT-4.5 group in the model selection dropdown.                                                                                                                                   |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/H-7MQtuMfBpTsif1VQNK2_2025-04-09-14-04-00.png" size="46" width="510" height="510" position="center" showCaption="false"} | [Hugging Face](https://apps.make.com/huggingface) - Two new modules are now available:<br />* Create a Chat Completion (Prompt)
* Generate an Image                                                                                                                                |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/OqHetRPgFqTlvs94up3Ad_2025-04-09-14-05-04.png" size="46" width="510" height="510" position="center" showCaption="false"} | [Twilio](https://apps.make.com/twilio) - A new module, **Make an API Call for Lookup**, is now available. This module lets you send custom API requests to Twilio's Lookup API, helping you retrieve information about phone numbers - such as line type, carrier, or caller name. |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/lPOyQuF0YEGo22BwcpWnC_2025-04-09-14-06-13.png" size="46" width="510" height="510" position="center" showCaption="false"} | [ServiceTitan](https://apps.make.com/service-titan) - We've added a new connection type to reflect recent changes in the ServiceTitan app. You can now connect using either your own ServiceTitan application or the default  ServiceTitan application.                            |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/DVs-ObYFXamAM2UDZD6g-_2025-04-09-14-07-09.png" size="46" width="510" height="510" position="center" showCaption="false"} | [Azure DevOps](https://apps.make.com/azure-devops) – From now you can choose between **Azure DevOps** and **Azure DevOps (Azure App OAuth)** when setting up a connection, giving you more flexibility in how you authenticate.                                                    |




[title] Incomplete executions retry
[path] Release notes/2025/

## Improvements and changes

Users can now retry multiple incomplete executions at once. You can either select specific incomplete executions or attempt to retry all of them. You can see approximately when an incomplete execution will be rerun in the  incomplete executions tab.

![](https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-fiz3N2vn3zPJmJsu5ddfI-20250218-145324.png)

## Apps updates

We've improved the way that custom app logos are processed for more accurate representation. For more details on how single color, multicolor, and grayscale logos are processed, view the specifications and examples [here](https://developers.make.com/custom-apps-documentation/app-logo#app-logo).




[title] Introducing dynamic connections
[path] Release notes/2024/

## Dynamic connections

With dynamic connections, you and your teammates use connections as [scenario inputs](docId\:dI1PkXe4s6-sTrIU9SpVv). You can create a  with your connections, and your colleagues provide their connections to run the . To learn more about how to use dynamic connections, check out the [article in our Help Center](docId\:XaRn5csZErJvoEC_OM1VP). Dynamic connections are available for **Enterprise** plan users only.

[title] Scenario run replay and naming capabilities now available
[path] Release notes/2025/

:::hint{type="success"}
Both scenario run replay and customize run name are available on all plans.
:::

You can now **replay scenario runs&#x20;**&#x74;o easily test scenarios and backfill data, and **customize scenario run names** to distinguish between runs in the scenario history.&#x20;

## Scenario run replay

Scenario run replay uses trigger data from a previous run in a current version of the scenario. This allows you to test scenarios, resolve errors, and backfill data without obtaining new trigger data.

You can use scenario run replay in two locations in Make, depending on your use case:

- **Scenario Builder**: Use **Run with existing data** (in the **Run once** dropdown) for easy testing and debugging as you build scenarios. This capability replays a previous run's trigger data on the current version of the scenario you're working on, even if unsaved.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/z59Y43NmVyGdBSI2vdQjN-20251010-130318.png" size="60" width="694" height="497" position="center" showCaption="false"}

- **Scenario history**: Use **Replay scenario run** (next to the **Details** button) to backfill data or replay errored runs after resolving errors. This capability replays a previous run's trigger data on the last-saved version of your scenario.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/gVfSqIH5pH1u9VGVuZQlq-20251010-133826.png" size="80" width="1795" height="478" position="center" showCaption="false"}



:::hint{type="info"}
Replayed runs appear in your scenario history and [consume credits](docId\:So6VnaYMUsFuaNYZOLVxq) like standard runs.
:::

## Customize run name

You can now define custom names for scenario runs using the **Scenarios** > **Customize run name** module. This helps you identify and search for specific runs in your [scenario history](docId:9Z2XnH-Lyy62CFAhjFHj5).

Add this module anywhere in your scenario route to name runs conditionally based on data mapped from a preceding module. Custom run names appear in the **Run name** column of the scenario history.

To find **Customize run name**, create a new scenario, or click on a scenario in your scenarios list. In the Scenario Builder, add the **Scenarios** > **Customize run name** module to a scenario.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/NJe-1erP3uYhvoX4cauH--20251023-114803.png" size="80" width="1296" height="532" position="center" showCaption="false"}



:::hint{type="info"}
As the **Customize run name** module does not use any credits, you can add clarity to your scenario runs for free.&#x20;
:::

## Learn more

To find out more about scenario run replay and naming in Make, head to our Help Center:

- [Scenario run replay](docId\:ay1LLXGjveo3e6ShLOf6O)&#x20;
- [Customize run name](docId\:f8FHRvoQwCk48nX_FJRyf)&#x20;








[title] Make Grid public beta is now live!
[path] Release notes/2025/

**June 24, 2025**

We're excited to announce that **Make Grid** is now available in public beta for all paid plans!&#x20;

### What is Make Grid?&#x20;

Make Grid is the first-of-its-kind, fully observable, auto-generated visual map that gives you a complete view of your automation and AI landscape. Think of it as your automation command center — a fully interactive world where your scenarios, apps, data stores, and AI components take form as visual objects you can explore and orchestrate in real-time.

### Why Grid changes everything

As your automation grows, complexity grows with it. What starts as a few simple workflows can quickly become hundreds of moving parts across different teams and use cases. Make Grid transforms that complexity into a visual landscape you can see, understand, and control — no matter how sophisticated your system becomes.

### What you can do with Grid

✨ **Visualize your entire automation ecosystem** at a glance
&#x20;🤝 **Collaborate better** with visual documentation that everyone can understand
&#x20;🔍 **Debug faster** with instant visibility into dependencies and connections
&#x20;📈 **Scale with confidence** using real-time insights and monitoring

Unlike static documentation, Grid updates automatically as you build and modify your automation, so you always have an accurate view of your system.

### Who's it for?

Grid is designed for teams with serious scale — multiple users, dozens of scenarios, and fast-moving priorities. Whether you're a technical builder or a decision-maker steering strategy, Grid gives everyone the same clear view and the confidence to move fast.

### Ready to get started?

Make Grid is available now in public beta for all paid plans. See your automation landscape like never before and discover new ways to optimize, collaborate, and scale.

[Explore Make Grid](https://www.make.com/en/grid)**&#x20;→**

::embed[]{url="https://www.youtube.com/watch?v=HvD-q_pPwIE&t=64s"}


[title] New Make AI Agents Reasoning feature: OpenAI reasoning model users must verify organization
[path] Release notes/2025/

Starting **November 24th**, Make AI Agents will support **Reasoning**, a capability that exposes the agent’s thought process before proceeding with the next step.&#x20;

If you use a reasoning model and the agent requires deeper reasoning for a task, this feature will be visible in its output in the **Reasoning&#x20;**&#x66;ield of the **executionSteps**.

Due to a new OpenAI requirement for users to verify their organizations to use reasoning models, **users of AI agents with&#x20;**[OpenAI reasoning models](https://platform.openai.com/docs/guides/reasoning) (GPT-5, GPT-5-mini, GPT-5-nano, O3, O4-mini, and O3-mini) must **verify their organization in OpenAI** **by the 24th** to allow affected agents to continue running after the feature release.

## What's happening?

- Make AI Agents' **Reasoning&#x20;**&#x66;eature launches on November 24th.&#x20;
- Users of OpenAI reasoning models (**GPT-5, GPT-5-mini, GPT-5-nano, O3, O4-mini, and O3-mini**) in AI agents must verify their OpenAI organization by the 24th.
- If users don't verify by this date, agents using OpenAI reasoning models will stop running.&#x20;

## What's next?

To keep AI agents using OpenAI reasoning models running after the 24th, you can **verify your OpenAI organization** if you want to continue using the same model, or **switch AI models**.&#x20;

### Option 1: Verify your OpenAI organization&#x20;

To verify your organization in OpenAI:

::::WorkflowBlock
:::WorkflowBlockItem
Log in to your account on OpenAI Platform.
:::

:::WorkflowBlockItem
Click on the **Settings&#x20;**&#x69;con in the top-right corner.
:::

:::WorkflowBlockItem
In **Organization settings**, click the **Verify Organization** button under **Verifications**.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/EKHpFVHe_VkZBptXQoYVz-20251103-164948.png)
:::
::::

Once an organization is verified, no further action is needed in .

### Option 2: Switch AI models&#x20;

If you choose not to verify your organization in OpenAI, you can:

- Switch to a **OpenAI model without reasoning**, such as GPT-4o or GPT-4.1.
- Switch to the **Large model** (GPT-5) if you're using **Make's AI Provider**.

Agents that use models without reasoning will continue running.

## FAQs

:::ExpandableHeading
### Why do I need to verify my organization now?

On November 24th,  will execute a system-wide migration to introduce the Reasoning feature to all compatible models. This update is subject to the OpenAI requirement for users to verify their OpenAI organization to use reasoning models.
:::

:::ExpandableHeading
### What happens if I don’t verify by November 24th?

If you don't verify your organization by November 24th, any AI agents using OpenAI reasoning models will return an error message indicating that verification is required to resume service.
:::

:::ExpandableHeading
### How do I know if my model is affected?

OpenAI's update impacts AI agents with OpenAI models that are "reasoning-capable," including:

- GPT-5
- GPT-5-mini
- GPT-5-nano
- O3
- O3-mini
- O4-mini

To enable your AI agents using OpenAI reasoning models to continue running, make sure to verify your OpenAI organization before November 24th.&#x20;
:::

:::ExpandableHeading
### Will other models continue to work?

Yes. Make's AI Provider models, and those of custom AI providers, such as Gemini and Anthropic, will continue to run normally after November 24th. The new organization verification requirement only affects OpenAI reasoning models.&#x20;
:::

:::ExpandableHeading
### What’s the difference between models with and without reasoning?

The key difference between models with and without reasoning is how information is processed when handling tasks:

- **Complexity:** Reasoning models are designed to process more complex or multi-step queries than those without reasoning, ideal for tasks related to coding, mathematics, and complex problem-solving.&#x20;
- **Reasoning:&#x20;**&#x52;easoning models consume tokens to generate internal reasoning steps, allowing them to perform advanced planning and analysis before producing a response.
- **Speed:&#x20;**&#x57;hile reasoning models are newer and more capable than modules without reasoning, they are typically slower to process information.
:::

## Learn more

To find out more about OpenAI verification and the new Make AI Agents reasoning feature, see these resources:&#x20;

- [OpenAI organization verification ](https://apps.make.com/openai-gpt-3#vklrW)
- [Make AI Agents Reasoning feature ](https://help.make.com/make-ai-agents-app#OWPW0)

[title] Enhanced navigation in Make
[path] Release notes/2025/

We’ve introduced a redesigned navigation in  to give you a smoother, more intuitive experience across the platform. The new navigation makes it easier to move around and access everything you need without clutter.

### Key features

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/LSKEImuH8p1SWuCeYGDVJ-20251001-131949.png)

- **Updated left sidebar:** Moved horizontal tab links to a new vertical submenu which makes it easier to see available features.
- **Clear structure with grouped sections:** In the Organization dashboard, features have been grouped into subcategories for quicker access: Organization, My Plan, and Utilities.
- **Updated top-right menu:** Moved Help, Discover, Notifications, and Profile to the top-right corner to declutter the left sidebar.
- **New Organization & Teams picker:** Redesigned for faster switching between organizations and teams.

### Availability

- The new navigation is currently available through a pop-up announcement for early access.
- All new users will see the new navigation by default.
- Until **November 4**, users who joined before **September 25** can switch between the old and new navigation in **Profile** > **Profile settings** by clicking the three dots and selecting the **Enable/Disable new navigation** button.&#x20;

:::hint{type="info"}
The deadline for switching between the old and new navigation has been extended from **November 1st** to **November 4th.&#x20;**
:::



::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/xcuDhrVb5egny6gn3Mo11-20251002-113738.png" size="50" width="914" height="726" position="center" showCaption="false"}

:::hint{type="info"}
You can share your feedback directly by clicking the **Navigation feedback** link in the lower-left submenu to help us improve future updates.
:::


[title] New HTTP app is now available
[path] Release notes/2025/

We're excited to announce that a new HTTP app is now available to all customers.&#x20;

## Key benefits 

The new HTTP app lets you create powerful, secure, and scalable integrations with any API with more simplicity:&#x20;

- **Easier setup**: An updated UI simplifies the workflow with HTTP requests.&#x20;
- **Reusable data structures for request bodies**: A new data structure editor helps to ensure valid JSON requests and enables data reuse across scenarios.&#x20;
- **New built-in pagination:** A new capability allows you to configure pagination directly within the module and retrieve large data sets in a structured, manageable way.
- **Full compliance with HTTP standards:** A new app is fully compliant with current HTTP standards and allows following redirects with 3xx status codes.
- **Secure keychain storage and management**: A secure keychain stores and encrypts API keys and tokens in one place, allowing simple rotation of keys and credentials management independently of scenarios.&#x20;
- **Secure connections with Mutual TLS and proxy**: Support for Mutual TLS and configurable proxy settings enables encrypted and high-security connections.&#x20;

## Where to find it

Add an HTTP app to your scenario and select **V4** in the upper-right corner:

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/1icxE8tAXT5dsVOdtLkRw-20251126-113605.png" size="50" width="594" height="232" position="center" showCaption="false"}

## Where to learn more

- Technical documentation: [HTTP app](https://apps.make.com/http)

[title] Introducing Feature controls
[path] Release notes/2025/

We've launched the Feature controls page, which provides simple **ON/OFF&#x20;**&#x74;oggles to independently enable or disable specific AI and beta capabilities across your organization.

:::hint{type="info"}
This page controls only AI and beta capabilities, not entire application modules.
:::

### Key benefits

**Strategic rollout**: You can now maintain complete control over the adoption rate of features. Easily enable or disable AI and beta capabilities at the organizational level to manage feature rollout.

**Risk management**: You can effectively manage changes and ensure new features are introduced in a controlled and tested manner. This also ensures that maintain allignment with your internal governance policies.

**Manage specific capabilities**: With the Feature controls page, you can instantly manage access to key features, including:

- [Make AI Toolkit](https://apps.make.com/ai-tools)
- [Make AI Agents](https://help.make.com/introduction-to-ai-agents)&#x20;

### Who can use it?

:::hint{type="info"}
This feature is available for all users on th&#x65;**&#x20;Enterprise plan**.
:::

Only users with the Admin or Organization Owner role will be able to see and use the new feature controls. You can find it under **Organization&#x20;**> **Feature controls.**

![](https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/7PWgeGXFoSZr6cJ_Zil4_-20251125-153534.png)

For more information, see the [Feature controls page](docId\:waNrCVezePFz7f_eiYBDH).

[title] Make AI Agents: The next step in automation
[path] Release notes/2025/

We're excited to introduce  AI Agents, now available on all paid plans. Transform your automation strategy with intelligent agents that work seamlessly within your existing  .

### What's new?&#x20;

 AI Agents enable you to build, customize, and manage intelligent AI workflows that automate complex business processes with adaptive decision-making capabilities.

::embed[]{url="https://www.youtube.com/watch?v=CeDpKvGeRa4&t=50s"}

### Key features

- **Centralized management**: Create reusable agents that work across multiple workflows, reducing redundancy.
- **Flexible customization**: Maintain consistency with global system prompts while allowing -specific adaptations.
- **Model selection**: Choose from various LLMs including OpenAI-compatible models to support real-time decision making.

### Availability

Available now for all paid  plans.

:::hint{type="info"}
Learn more in our [Make AI Agents documentation](https://help.make.com/make-ai-agents).
:::


[title] SSO certificate updates and app changes
[path] Release notes/2024/

## Improvements and changes

- [Managing and rotating](docId:4wjm5Akj6VmC7a_Ga63Ay) SAML service provider (SP) certificates became easier for the Enterprise customers. Organization owners can now activate, deactivate, copy, and download SP certificates within the SSO settings. They can also see which certificates are active. When it's time to rotate certificates, users will receive a notification from , giving them time to schedule the switch and minimize downtime.
- Additionally, we’ve extended the validity of SP certificates to three years, instead of just one.

![](https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-dnAFUlC_K2laSa4Ru6Lgv-20250228-115510.png)

To learn more, check out our [SAML certificate management](https://www.make.com/en/help/access-management/saml-certificate-management) article.

- We've updated the banners that let you know when you've reached your operations limit. Now, when you see one of these banners, you'll get all the details about your upgrade options right there. If you decide to upgrade or purchase more operations, you can just click the link in the banner.

![](https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-3-J7SK0JJPhgIpPZQBceo-20250228-115609.png)

## Fixed issues

-  built-in functions that use timezone information, like the `addDays` function, didn’t work in custom functions. We fixed the custom function’s context, so now you can use the date functions in your custom functions.

## Apps updates

### New and updated apps:

- [OpenAI](docId\:RTwoKr-rLL9u-M-gyqbd8) - We’ve added some new functionality to our OpenAI app. Not only can you generate an image using OpenAI modules, now you can also edit or extend an image with the new module called **Edit an Image**. Don’t forget to include transparency in the image file, or a mask layer, to make sure that the image can be edited later.
- [Anthropic Claude](docId\:q_LCdvAQngdjPuQjgKsgN) - We’ve added a new module called **Create a Message**. Also, we now support the latest model Claude 3 Haiku.
- [ZoomInfo](docId\:dCBTO_jhLET2w_IjWCSN4) - This new app lets you manage companies, contacts, scoops, and more.
- [Confluence](docId\:YKAVhQ8tVApwI8bCo-Agy) - Our new productivity app will help you keep track of all your Confluence content, including pages and blog posts.
- [Deel](docId\:KDQV1uGGflTxj3l8q91Bo) - We switched to the newest API version. Make sure to use the correct URL with the new API version when using the **Make an API Call** module. Also, the **Create a Record** module now allows creating the *Global Payroll Contract* and *Contact for Contractors* types of records.
- [Tiktok Lead Forms](docId\:UE5EW27YybBsYXiqblENm) - This new app with an instant trigger allows you to trigger a  whenever you receive a new lead.
- [Cohere](docId\:vIrgXudxxlRfrtw_Hjxi5) - With this new AI app, you can create conversations and classify texts.
- [X (formerly Twitter) ](docId:0vH4TtDWi_2K_Z0bc5rKQ)- Our app has a new name to match the recent rebranding.


[title] AI Assistant Beta retirement – October 14, 2025
[path] Release notes/2025/

The current Make AI Assistant will be retiring on **October 14, 2025&#x20;**&#x74;o make way for a smarter, next-generation AI experience.

**What this means:**

- AI Assistant Beta will no longer be available after **October 14, 2025**.
- When you open AI Assistant, a retirement orange banner will appear at the top of the AI Assistant panel.

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/1-RU8yWYwk8JUzXIze7U_-20251010-165243.png" size="58" width="2716" height="1720" position="flex-start" showCaption="false" indent="2"}

Stay tuned for updates on the new AI experience launching soon!

[title] Credit dashboard display fix
[path] Release notes/2025/

We've resolved a UI bug that was causing confusion about credit consumption and remaining balances across several dashboard components.

### Issues resolved

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/yjwhINLS3fc-NXg38fV_d-TBcTy3oi7I2DJQOdWO144-20250901-101940.png)
:::

:::VerticalSplitItem
**Credits left box** now displays correct credit values instead of operations.
:::
::::

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/yjwhINLS3fc-NXg38fV_d-o0oD4N1lce9j8Z5s5nIxj-20250901-103711.png)
:::

:::VerticalSplitItem
**Usage progress bar** shows accurate credit consumption.
:::
::::

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/yjwhINLS3fc-NXg38fV_d-pJhJa9OnvTjU6QfeRpuu_-20250901-103731.png)
:::

:::VerticalSplitItem
**Subscription page credits section** displays proper credit balances.
:::
::::

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
![](https://archbee-image-uploads.s3.amazonaws.com/yjwhINLS3fc-NXg38fV_d-lhoxX7rsnFQr61N9ptsOR-20250901-104011.png)
:::

:::VerticalSplitItem
**Teams page** shows correct credit usage per team.
:::
::::

### Important notes

- This was purely a display issue - billing calculations, account pausing, and usage notifications were working correctly throughout.
- Historical data and consumption tracking were not affected.
- Organizations that appeared paused due to display errors should now show accurate status.

The transition from operations to credits billing (effective August 27) is now properly reflected across all dashboard components.


[title] The Make Code app is available
[path] Release notes/2025/

We're excited to share the release of [Make Code](docId\:mkN0za9LLNQPHyF1mXmz8), a built-in app that allows you to add arbitrary JavaScript or Python code to your .&#x20;

It is available to all customers on [paid plans](https://www.make.com/en/pricing).

With the  Code app, you can write code within the module with the help of an IDE that offers familiar features such as common syntax, auto completion, and error highlighting, or you can add code dynamically from previous modules in your scenario

### Key benefits

- Supports JavaScript and Python
- Built-in IDE experience with common syntax, auto completion, and error highlighting
- Fully-isolated sandbox environment to test your code and ensure safe execution
- Access to data outputs and error logs, to help you troubleshoot code executions effectively
- Ability to share code in a  blueprint

### Features

| **Features**                                                                                                                    | **Core** | **Pro** | **Teams** | **Enterprise** |
| ------------------------------------------------------------------------------------------------------------------------------- | -------- | ------- | --------- | -------------- |
| Standard JavaScript and Python libraries<br />* JavaScript: moment, moment-timezone, lodash
* Python: pendulum, toolz, requests | X        | X       | X         | X              |
| Ability to import custom libraries                                                                                              |          |         |           | X              |
| Sandbox environment with:<br />* 1 CPU
* 512 MB RAM
* 30 second maximum execution time                                          | X        | X       | X         |                |
| Sandbox environment with:<br />* 2 CPUs
* 1024 MB RAM
* 300 second maximum execution time                                       |          |         |           | X              |

### Credit usage

The  Code app consumes two credits for every one second of code execution time. You can see the code execution time in the module output.

The billed code execution time does not include backend processing time, so your billed output time will be shorter than the actual time it takes to process.&#x20;

The majority of use cases will execute in less than one second.&#x20;

::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/6DMef3aEdRDn352wPAHdU-20251002-064527.png" size="40" width="886" height="1358" position="flex-start" alt="Output bundle with execution time" showCaption="false"}

Details regarding dynamic credit usage can be found in the [Credits](docId\:hh-nrTakEqakBmg63UUiN) article.

### Where to learn more

Check out these resources to find out more about the  Code app:

- [Make Code module details](docId\:mkN0za9LLNQPHyF1mXmz8)
- [Make Code examples](docId\:mkN0za9LLNQPHyF1mXmz8)




[title] Scenario inputs scheduling, OpenAI modules support GPT-5
[path] Release notes/2025/

### Scheduling update for required scenario inputs

Previously, it was unclear in the product that scenarios with required [scenario inputs](https://help.make.com/scenario-inputs-and-outputs) must have on-demand scheduling. Now, when you try to save a scenario with required scenario inputs, you will be prompted to update the scenario scheduling to on demand and save the scenario again.

### New app

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-sf6OQPKTUZ7ezZ7oocn_M-20250814-092819.png" size="40" width="800" height="800" position="center" darkWidth="800" darkHeight="800" showCaption="false"}
:::

:::VerticalSplitItem
[Zoho WorkDrive](https://apps.make.com/zoho-workdrive) — We’ve released the Zoho WorkDrive app. Zoho WorkDrive is a cloud-based storage platform that helps teams collaborate. With this app, you can manage files and folders, track changes, and create or update team folders in your Zoho WorkDrive account.
:::
::::

### Updated apps

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://images.archbee.com/oAyFj2GHlBeBVWF5OAir2/L6MT49gFwxtpkTbxO0Dqb_cropped-openai-gpt-3.png?format=webp" size="40" width="800" height="800" position="center" darkWidth="800" darkHeight="800" showCaption="false"}
:::

:::VerticalSplitItem
[OpenAI](https://apps.make.com/openai-gpt-3) — We now support **GPT-5** for more accurate responses, richer context understanding, and improved reliability in the OpenAI modules. This new model also handles longer inputs and produces higher-quality results for your scenarios.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://images.archbee.com/oAyFj2GHlBeBVWF5OAir2/OIowiPUEnIQfyUwEJbqvo_runway.png?format=webp" size="40" width="800" height="800" position="center" darkWidth="800" darkHeight="800" showCaption="false"}
:::

:::VerticalSplitItem
[Runway](https://apps.make.com/runway-ml-api) — The Runway app has a new **Generate an image** module. Use it to create images directly in your Runway account from Make.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-lpTQD1NYiPmSn7CzclfXq-20250826-002736.png" size="40" width="800" height="800" position="center" darkWidth="800" darkHeight="800" showCaption="false"}
:::

:::VerticalSplitItem
[Zoho CRM](https://apps.make.com/zohocrm) — The Zoho CRM app in Make now supports all zones, so you can connect your account regardless of region.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-FMskTE684ktN6G0bMSTJR-20250826-003112.png" size="40" width="800" height="800" position="center" darkWidth="800" darkHeight="800" showCaption="false"}
:::

:::VerticalSplitItem
[Zoho Invoice](https://apps.make.com/zoho-invoice) — We’ve added full zone support to the Zoho Invoice app in Make. You can now connect your account from any region without restrictions.
:::
::::


[title] OAuth 2.0 integration, enhanced analytics, new apps
[path] Release notes/2025/

## Improvements and changes

- You can now connect third-party apps or clients with  using the **OAuth 2.0** protocol. Check out the latest updates in our [Make API documentation update.](https://developers.make.com/api-documentation/authentication/requesting-an-oauth-2.0-client)
- We’ve added more filter options to our [Analytics dashboard](https://www.make.com/en/help/general/analytics-dashboard), available to **Enterprise** users. Additional filters include **Status**, **Team**, and **Folder** for overall stats, with **Executions Change** and **Folder** now available in the scenario breakdown.
- Scenario execution history can now be exported into a CSV file. This is a useful option for users who want to analyze their scenario execution history in an external system. Before exporting, you can choose to hide check runs or the change log, depending on what data you want to include in the file.
- You can now rename keys without specifying their values. Previously, when renaming keys, you had to provide the current values. If you did not, the values would be replaced with blank entries.

## Apps updates

### New apps

| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-PASUbseL76OKZPjabg8ed-20250305-142221.png" size="70" width="521" height="525" position="center" showCaption="false"} | [Bluesky](https://www.make.com/en/help/apps/marketing/bluesky) - A social media platform designed for open and independent networking. This new app lets you connect with Bluesky to manage users, posts, messages, media, likes, and lists in your account.            |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-dS1-Kd8-iI3nBcRAyq8Sa-20250305-144000.png" size="70" width="255" height="253" position="center" showCaption="false"} | [ClickFunnels 2.0](https://www.make.com/en/help/apps/marketing/click-funnels-2) - We have a new version of ClickFunnels. This version allows you to monitor contacts, orders, and form submissions, as well as manage contacts and orders in your ClickFunnels account. |

### Updated apps

| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-aUJqDNAWM9Il5aoQ-sOCy-20250305-144617.png" size="70" width="255" height="241" position="center" showCaption="false"} | [Google Vertex AI (Gemini)](https://www.make.com/en/help/apps/ai/google-vertex-ai) - We have added new modules that allow you to create and process images:<br />* Generate an Image
* Generate an Image Caption
* Generate an Answer for an Image                                                                                                                                                                                        |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-GEGduO5-qaReYrww_5YBi-20250305-144951.png" size="70" width="255" height="230" position="center" showCaption="false"} | [Runway](https://www.make.com/en/help/apps/file-and-document-management/runway-ml-api) - In the **Generate a Video from Image(s)** module, we have added two new fields: **First URL** and **Last URL**, which require an HTTPS URL pointing to an image used to generate the video. The **Ratio** field has also updated values to select. Additionally, we have added a new field **API version** into the **Make an API Call** module. |



- [Front](https://www.make.com/en/help/apps/productivity/front) – We have updated the Front app logo to match the latest branding.
- [ClickFunnels Classic](https://www.make.com/en/help/apps/marketing/clickfunnels) - The previous version of ClickFunnels has been renamed due to the API deprecation. The new version, [ClickFunnels 2.0](https://www.make.com/en/help/apps/marketing/click-funnels-2), is now available.
- [Base.com](https://www.make.com/en/help/apps/commerce/baselinker) – The BaseLinker app has been updated and renamed to Base.com, along with a new logo.


[title] X (formerly Twitter) app integration discontinued
[path] Release notes/2025/

Starting today, we are removing the X (formerly Twitter) app integration from our offering due to X's API policy requirements and pricing that prevent us from providing a reasonable integration to our customers.

### Timeline

- **Effective immediately (April 3, 2025**): You will not be able to create any new scenarios using the X (formerly Twitter) integration.
- **May 30, 2025**: Your existing scenarios using X (formerly Twitter) will stop working.
- **After May 30**, you will still be able to view existing scenarios using X (formerly Twitter) in your Make account, however, these scenarios will fail upon execution.

### Recommended actions

We recommend exploring alternative social media apps on Make to serve your objectives and taking necessary steps to avoid disruptions in your workflows.

Alternative options include:

- Social media management apps like Buffer and Hootsuite
- Social media platforms like Bluesky, Mastodon, and others

### Frequently Asked Questions

:::ExpandableHeading
**Why is the X (formerly Twitter) app integration being decommissioned?**

We are removing the X (formerly Twitter) app integration from our offering due to requirements in their API policy and pricing that prevent us from providing a reasonable integration to our customers.
:::

:::ExpandableHeading
**Why can’t Make pay for X’s API access like other platforms?**

We are unable to providing a reasonable integration to our customer based on X’s API policy requirements and pricing.


:::

:::ExpandableHeading
**When will the X (formerly Twitter) integration be removed?**

Starting from April 3, 2025, the X (formerly Twitter) app integration will no longer be accessible in our app search. Existing scenarios using the X integration will continue running until May 30, 2025, after which the scenarios will fail.
:::

:::ExpandableHeading
**Can I still create new scenarios with X (formerly Twitter)?&#x20;**

No. From April 3, 2025, you will no longer be able to create scenarios using the X (formerly Twitter) app integration.
:::

:::ExpandableHeading
**What will happen to scenarios currently leveraging the X (formerly Twitter) app integration after the decommission date?**

Existing scenarios using the X (formerly Twitter) app integration will continue running until May 30, 2025, after which the scenarios will fail and return an error upon execution.
:::

:::ExpandableHeading
**Will I have access to my X (formerly Twitter) scenarios after they stop working?**

You will be able to view scenarios with the X (formerly Twitter) app after it has been decommissioned, however, your scenarios will fail and return an error upon execution.You will be able to view scenarios with the X (formerly Twitter) app after it has been decommissioned, however, your scenarios will fail and return an error upon execution.
:::

:::ExpandableHeading
**What are alternative approaches to connecting to the X (formerly Twitter) platform?**

We recommend that you please explore alternative social media apps on Make to serve your objective and take the necessary steps to avoid any disruptions in your workflows. Alternative social platform integrations available include: social media management apps like Buffer and Hootsuite, social media channels like Bluesky, Mastodon and more.
:::

:::ExpandableHeading
**Does this impact the xAI app on Make as well?**

No. At the time of this writing, X and xAI have separate API policies and requirement
:::


[title] New Make Community link
[path] Release notes/2024/

## Improvements and changes

- A link to [Make Community](https://community.make.com/) now appears in the sidebar **Help** submenu.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/wVPgUiu_jQwL3WCSuh2DV_uuid-96de4e1c-9cce-369f-ff5d-49545486cc97.png" size="38" width="215" height="252" position="center" showCaption="false" indent="2"}

- Enterprise customers can now see their current subscription period and reset date on their organization dashboard.


[title] New MCP server connection options, role permission fix, apps updates
[path] Release notes/2025/

### New connection options for Make MCP server

You can now connect compatible MCP clients to Make MCP server using **OAuth** or **Streamable HTTP**. These new options give you more flexibility when setting up secure and efficient connections. Existing methods, including Server-Sent Events (SSE) and MCP tokens, remain available.

:::hint{type="info"}
Learn more about Make MCP server and its connection options in [Make MCP Server documentation](https://developers.make.com/mcp-server/).
:::

### Fix for Team Restricted Member role permission

We've fixed an issue with the permissions assigned to the Team Restricted Member role. The role now fully aligns with our documentation and does not have any unexpected modification capabilities.

**What we fixed**

We've removed the permission that allowed the Team Restricted Member role to modify team settings.

**What this means for you&#x20;**

If you have the Team Restricted Member role, you will no longer be able to modify any team settings for the team you are a part of.

The Team Restricted Member role remains supported for existing teams, even though it is considered deprecated. This fix allows the role to function securely and in the way it was originally intended.

### Apps updates

**New app**

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/4CkrlJIBl1di_p1x71ery-14PCuQwy7070RlIuw21yY-20250824-210824.png" size="40" width="800" height="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[LinkedIn Events](https://apps.make.com/linkedin-events) — A new LinkedIn app that lets users and organizations create and manage virtual or in-person events directly in .
:::
::::

**Updated apps**

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/dxugoA8GuZXFsqy2fBqLN-20251008-130159.png" size="40" width="800" height="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Make AI Content Extractor](https://apps.make.com/make-ai-extractors) — The [credit usage](https://apps.make.com/make-ai-extractors#J7fs5) for the following modules has been updated:

- Extract text from a document
- Extract information from an invoice
- Extract information from a receipt
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/lInxGqgi-9kO6wJ-EnlNe-20250919-133045.png" size="40" width="800" height="800" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Frame.io](https://apps.make.com/frame-io) — We've released a new version for the Frame.io app. This new version ensures seamless integration and up-to-date functionality.
:::
::::

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://app.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/nbBN-eSRcML_RIhupsDbd-20250926-111201.png" size="40" width="418" height="418" position="center" showCaption="false"}
:::

:::VerticalSplitItem
[Tellent Recruitee](https://apps.make.com/recruitee) — The Recruitee app has been renamed to **Tellent Recruitee** reflect the platform’s rebranding.
:::
::::


[title] Make AI Tools now available in Open Beta
[path] Release notes/2025/

:::hint{type="info"}
Make AI Tools is currently in beta. There may be changes to functionality or pricing.
:::

We're excited to launch Make AI Tools for all paid plan customers. This pre-built app includes 9 AI modules that handle common tasks like sentiment analysis, text categorization, and language translation — all without needing to write prompts or set up third-party AI accounts.

The new modules include Analyze Sentiment, Categorize Text, Extract Information, Summarize Text, Translate Text, Identify Language, Standardize Text, Chunk Text, and Request Anything for custom prompts. Perfect for automating customer feedback analysis, support ticket routing, document processing, and content translation.

### Technical details

Make AI Tools uses GPT-4.1 nano and includes 10 million input and 10 million output tokens per month per organization at no additional cost during the Open Beta. Your data is not stored or used for AI training — we only keep interaction logs for 30 days as part of standard Make scenario logging.

### Getting started

Available now for all paid plan customers in your Make dashboard. Start with simple tasks like analyzing customer sentiment or categorizing support tickets, then expand to more complex workflows as you get comfortable with the tools.

:::hint{type="info"}
For detailed module descriptions, examples, and implementation guidance, see the [Make AI Tools documentation](https://apps.make.com/ai-tools).
:::


[title] Latest AI models for OpenAI and Gemini, UI updates to module rename panel
[path] Release notes/2025/

### UI updates to module rename panel

We've enhanced the module renaming experience with an updated panel design that's more intuitive and user-friendly.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/Jb7ZzDdQaFyML8NMcun1Y_image.png" size="60" width="872" height="1096" position="center" showCaption="false"}

### Updated apps

| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/VV_44qpGW80K3fOZ_fhkz_2025-04-09-14-03-17.png" size="46" width="510" height="510" position="center" showCaption="false"} | [OpenAI](https://apps.make.com/openai-gpt-3) - You now have access to OpenAI's most advanced models:<br />* **GPT-4.1** - Enhanced reasoning and problem-solving capabilities
* **o4** - Optimized for complex tasks with improved accuracy                |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-aUJqDNAWM9Il5aoQ-sOCy-20250305-144617.png" size="46" width="255" height="241" position="center" showCaption="false"}     | [Google Vertex AI (Gemini)](https://apps.make.com/google-vertex-ai) - New Gemini models are now available in the app:<br />* **Gemini 2.5 Flash** - Faster responses for everyday tasks
* **Gemini 2.5 Pro** - Advanced capabilities for complex scenarios |
| ::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/e8AP7lgYBetWs0iUa9LQX_image.png" size="46" width="255" height="255" position="center" showCaption="false"}               | [YouTube](https://apps.make.com/youtube) - We have two new modules available in the app:<br />* **Delete a Video** - Remove videos directly from your channel
* **Make an API Call** - Access any YouTube endpoint for custom integrations                 |


[title] Filter setup status badges, fixed issues
[path] Release notes/2024/

## Improvements and changes

- During guided template setup, filters now have setup status badges:
  - Your filter has unsaved changes:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-uRkpg562BDXChBG3sAFZj-20250228-115752.png" size="70" width="1468" height="748" position="center" showCaption="false" indent="3"}

:::Paragraph{listStyleType="disc" listStart="2" indent="2"}
Your filter is set up and ready:
:::

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/4CkrlJIBl1di_p1x71ery-CpESc9zj-JYv8vTVYi-SB-20250228-121756.png" size="70" width="1468" height="748" position="center" showCaption="false" indent="3"}

## Fixed issues

- Custom functions sometimes took too long to finish, which caused an error and disabled your . We reviewed the timeout settings on custom functions. Before using custom functions, check the [limits](docId:6aXxxE6k-Lc5Pm-4qrLaV).
- Webhooks migrated from the Integromat platform sometimes returned a `ConnectionError`. We fixed the issue so your legacy webhooks remain stable.
- In some cases, domain verification did not work for SSO domain claim. Verification now works as expected.
- Sharable links to templates went to the organization dashboard. These links now go directly to the specific template.
- Switching from one team to another sometimes resulted in an error message. Navigating to a different team now works just fine.

## Apps updates

### New and updated apps:

- [Leonardo.AI ](docId\:KBDC_RF68_B7Eafr7mGWd)- This new app helps you generate images using the latest AI art generator, Leonardo AI, a popular alternative to Midjourney.
- [TickTick](docId\:OToP3kTwkShXDmxnocreA) - Manage your to-do lists and tasks with this helpful productivity app.
- [Google Vertex AI (Gemini)](docId\:XyVb7j789YKY3Ymlt9_oX) - A powerful new app that can answer anything with the **Create a Completion** module using the gemini-pro model, as well as analyze image and video files with the gemini-pro-vision model. This app is a replacement for the recently deprecated Google Cloud Vision app.
- [NetSuite](docId\:ZJdYh3CMLFgRySiqSAAYs) - It is now possible to trigger a  when a custom date field is updated. Use the **Watch Records** module for this purpose. Also, we added new hints in the **Create or Update a Record** module.
- [Workday Financial Management](https://www.make.com/en/help/apps/business-operations-and-erps/workday-financial-management) and [Workday Human Capital Management](https://www.make.com/en/help/apps/hr-management/workday-human-capital-management) - You can select the format in which to get a RaaS report with the help of the **Get RaaS Report** module. Also, we added helping hints to let users know where to get credentials to create an OAuth2 connection.

