> ## Documentation Index
> Fetch the complete documentation index at: https://docs.release0.com/llms.txt
> Use this file to discover all available pages before exploring further.

# How to integrate your Agent with NocoDB

> Integrate NocoDB with Release0 to create dynamic, data-driven chatbot interactions using structured data management. Learn how to fetch, create, update, and delete records in your agent dialogs.

## Overview

**NocoDB** is an open-source backend that enables structured data management without writing code. When integrated with a **Release0 agent**, it allows for dynamic, data-driven interactions that enhance the functionality and personalization of your automated experiences.

<iframe width="560" height="315" src="https://www.youtube.com/embed/31PuQWeLObo" title="YouTube video player" frameBorder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowFullScreen />

## Advantages of Using NocoDB with Release0 Agent

Connecting NoCodeDB to your Release0 agent allows you to:

* Fetch and display content based on *User Inputs*.
* Create responsive flows with database-driven logic.
* Adapt dialogs in real-time based on database values.
* **Create** new records (e.g., form submissions).
* **Read** data for personalization or decision-making.
* **Update** fields based on conversation outcomes.
* **Delete** entries if needed.

> **Example**: Display product options based on the user’s selected category using `{{user.selected_category}}`.

This guide explains how to use the **NocoDB** element to interact with your NocoDB tables in an Agent Dialog. You can create, update, or retrieve data from your NocoDB tables. This includes identifying the **Table ID** and configuring the **Search Records** action effectively.

## How to Find Your Table ID

To locate your **Table ID** in NocoDB:

1. Navigate to your **NocoDB dashboard**.
2. Locate your desired table in the left-hand sidebar.
3. Click on the **three dots** icon (`...`) next to the table name.
4. Find the **Table ID** in the pop-up menu (as shown in the image). Copy it for use.

<Frame style={{ maxWidth: '400px' }}>
  <img src="https://mintcdn.com/release0-13d037a7/zvlYXMCad2PgakaD/images/elements/integrations/nocodb/nocodb-table-id.png?fit=max&auto=format&n=zvlYXMCad2PgakaD&q=85&s=68d2f510b3475079d1fb8a8df28984e2" alt="Release0.com - NocoDB Table ID" width="503" height="395" data-path="images/elements/integrations/nocodb/nocodb-table-id.png" />
</Frame>

## Using the Search Records Action

The **Search Records** action in NocoDB allows you to retrieve specific records from your tables. This action requires:

* **Table ID** (mandatory)
* **View ID** (optional, for filtering specific views)
* Additional configuration such as filters and response mapping.

### Steps to Configure

1. In your Agent Dialog editor, select the **NocoDB element**.
2. Choose the **Search Records** action.
3. Input the following fields:
   * **Table ID**: Paste the copied Table ID.
   * **View ID**: If you want to filter data by a specific view, add its ID here.
   * **Filter**: Set conditions to retrieve `All`, `First`, `Last`, or `Random` records.
   * **Response Mapping**: Map retrieved data fields to variables for use in your agent.

### Example Setup

#### Input

```json theme={null}
{
  "Table ID": "pl0jailghvv7x",
  "View ID": "awyy0nk17stiqr",
  "Filter": "First",
  "Response Mapping": {
    "Name": "VariableName",
    "Email": "VariableEmail"
  }
}
```

#### Workflow Example

In this simple example we are going to create a work order record for a repair company. To keep the example simple we will only ask for the user name, email, and serial number of the device.

The first step is to create a **Text element** to greet the user and ask for their name, email, and serial number.

<Frame style={{ maxWidth: '800px' }}>
  <img src="https://mintcdn.com/release0-13d037a7/zvlYXMCad2PgakaD/images/elements/integrations/nocodb/collect-data.png?fit=max&auto=format&n=zvlYXMCad2PgakaD&q=85&s=661ab11a5751c71706f0f067eda14ed4" alt="Release0.com - NocoDB Text element" width="1265" height="919" data-path="images/elements/integrations/nocodb/collect-data.png" />
</Frame>

We are also creating a **Date** field and a **Order Status** by using variables.

Next we can head to NocoDB site to create a new table. We will create a table called **Orders** with the following fields:

* **Name**: Text
* **Email**: Text
* **Serial**: Text
* **Date**: Text
* **OrderStatus**: Text

<Frame style={{ maxWidth: '800px' }}>
  <img src="https://mintcdn.com/release0-13d037a7/zvlYXMCad2PgakaD/images/elements/integrations/nocodb/nododb-table.png?fit=max&auto=format&n=zvlYXMCad2PgakaD&q=85&s=3eb8f5e54d94f55ea3c175652f8bc240" alt="Release0.com - NocoDB Table" width="2260" height="512" data-path="images/elements/integrations/nocodb/nododb-table.png" />
</Frame>

Next we can connect the NocoDB element to the **Create Record** action. We will use the **Table ID** from the table configuration and the **Response Mapping** to map the variables we created in the previous step.

<Frame style={{ maxWidth: '400px' }}>
  <img src="https://mintcdn.com/release0-13d037a7/zvlYXMCad2PgakaD/images/elements/integrations/nocodb/create-order-connection.png?fit=max&auto=format&n=zvlYXMCad2PgakaD&q=85&s=ac3540559565c89dd54c7d057ed29547" alt="Release0.com - NocoDB Create Record" width="647" height="497" data-path="images/elements/integrations/nocodb/create-order-connection.png" />
</Frame>

Now we can map the variables we created in the previous step to the NocoDB fields. We will map the **Name** variable to the **Name** field, the **Email** variable to the **Email** field, and so on.

<Frame style={{ maxWidth: '400px' }}>
  <img src="https://mintcdn.com/release0-13d037a7/zvlYXMCad2PgakaD/images/elements/integrations/nocodb/save-records-nocodb.png?fit=max&auto=format&n=zvlYXMCad2PgakaD&q=85&s=a9ef626e79336bf046f82ca778b06971" alt="Release0.com - NocoDB Create Record Configuration" width="724" height="848" data-path="images/elements/integrations/nocodb/save-records-nocodb.png" />
</Frame>

Then we complete the records creation with a confirmation message.

<Frame style={{ maxWidth: '600px' }}>
  <img src="https://mintcdn.com/release0-13d037a7/zvlYXMCad2PgakaD/images/elements/integrations/nocodb/create-record.png?fit=max&auto=format&n=zvlYXMCad2PgakaD&q=85&s=19971df72a4b6bf57fb1da4177ce4215" alt="Release0.com - NocoDB Confirmation Message" width="951" height="715" data-path="images/elements/integrations/nocodb/create-record.png" />
</Frame>

We can test this scenario by running the agent and entering the data.

<Frame style={{ maxWidth: '800px' }}>
  <img src="https://mintcdn.com/release0-13d037a7/zvlYXMCad2PgakaD/images/elements/integrations/nocodb/order-creation-test.png?fit=max&auto=format&n=zvlYXMCad2PgakaD&q=85&s=1415f1331af5dd56e34afe8d22415f94" alt="Release0.com - NocoDB Table Records" width="1215" height="800" data-path="images/elements/integrations/nocodb/order-creation-test.png" />
</Frame>

Once we have entered the data we can check the NocoDB table to see if the record was created.

<Frame style={{ maxWidth: '800px' }}>
  <img src="https://mintcdn.com/release0-13d037a7/zvlYXMCad2PgakaD/images/elements/integrations/nocodb/nocodb-records.png?fit=max&auto=format&n=zvlYXMCad2PgakaD&q=85&s=d1d6e2563c4c288a6b3b5d388560e0e4" alt="Release0.com - NocoDB Table Records" width="2106" height="434" data-path="images/elements/integrations/nocodb/nocodb-records.png" />
</Frame>

Next scenario is to change the order Name. We can do this by creating a new **Text element** to ask for the Serial Number and change the order name. For this scenario we add a new NocoDB element and select the Update Existing Record action. We will use the **Serial Number** from the table configuration and the **Response Mapping** to map the variables we created in the previous step to look for the record we want to update.

<Frame style={{ maxWidth: '600px' }}>
  <img src="https://mintcdn.com/release0-13d037a7/zvlYXMCad2PgakaD/images/elements/integrations/nocodb/update-records-nocodb.png?fit=max&auto=format&n=zvlYXMCad2PgakaD&q=85&s=6b7ee956725c04a13bca5b9743108586" alt="Release0.com - NocoDB Update Record" width="711" height="694" data-path="images/elements/integrations/nocodb/update-records-nocodb.png" />
</Frame>

We can check the data before and after the update by running the agent and entering the data.

Before the update:

<Frame style={{ maxWidth: '800px' }}>
  <img src="https://mintcdn.com/release0-13d037a7/zvlYXMCad2PgakaD/images/elements/integrations/nocodb/order-creation-test1.png?fit=max&auto=format&n=zvlYXMCad2PgakaD&q=85&s=dc9a3212050ebdcf3a8942b01bf1f8dc" alt="Release0.com - NocoDB Table Records" width="2122" height="420" data-path="images/elements/integrations/nocodb/order-creation-test1.png" />
</Frame>

Update order by running the agent and entering the data.

<Frame style={{ maxWidth: '600px' }}>
  <img src="https://mintcdn.com/release0-13d037a7/zvlYXMCad2PgakaD/images/elements/integrations/nocodb/order-creation-test-agent.png?fit=max&auto=format&n=zvlYXMCad2PgakaD&q=85&s=27f9d76c7cda65e7278b2618079f6111" alt="Release0.com - NocoDB Update Record Configuration" width="848" height="436" data-path="images/elements/integrations/nocodb/order-creation-test-agent.png" />
</Frame>

After the update:

<Frame style={{ maxWidth: '800px' }}>
  <img src="https://mintcdn.com/release0-13d037a7/zvlYXMCad2PgakaD/images/elements/integrations/nocodb/order-creation-test2.png?fit=max&auto=format&n=zvlYXMCad2PgakaD&q=85&s=10f744e047bcee0ae8cc49ba3ee37433" alt="Release0.com - NocoDB Table Records" width="2028" height="424" data-path="images/elements/integrations/nocodb/order-creation-test2.png" />
</Frame>

Now we can test the last scenario by **searching a record** by the **Serial Number**.

We can do this by creating a new **Text element** to ask for the Serial Number and display the order.

For this scenario we add a new NocoDB element and select the **I want to search for my request status**. We will use the **Serial Number** from the table configuration.

In the NocoDB configuration element we will enter the search field as the serial field from our NodoDB table and map it to the serial variable we have taken from the input field.

Next we will fill in the **Response Mapping** to map the variables we created in the previous step to look for the record we want to search for.

<Frame style={{ maxWidth: '400px' }}>
  <img src="https://mintcdn.com/release0-13d037a7/zvlYXMCad2PgakaD/images/elements/integrations/nocodb/order-search-config.png?fit=max&auto=format&n=zvlYXMCad2PgakaD&q=85&s=01ba97305b7f82250f6b1f768aed7e71" alt="Release0.com - NocoDB Search Record" width="693" height="851" data-path="images/elements/integrations/nocodb/order-search-config.png" />
</Frame>

Now we can check the data by running the agent and entering the data of the serial number to search for the order.

<Frame style={{ maxWidth: '600px' }}>
  <img src="https://mintcdn.com/release0-13d037a7/zvlYXMCad2PgakaD/images/elements/integrations/nocodb/order-search-test.png?fit=max&auto=format&n=zvlYXMCad2PgakaD&q=85&s=87491c7384655ad6a23dffc810a42ce7" alt="Release0.com - NocoDB Table Records" width="824" height="451" data-path="images/elements/integrations/nocodb/order-search-test.png" />
</Frame>

## Validation and Testing

Before deploying, ensure:

* The correct **Table ID** and **View ID** are used.
* Filters return the expected results.
* Mapped variables work correctly within the agent's workflow.
