# Action Buttons Overview Source: https://docs.softr.io/actions/action-buttons-overview What Action Buttons are and where you can use them. **Action Buttons** are available to all the subscription plans. Button Visibility options depend on the subscription plan. See [plan comparison](https://www.softr.io/pricing). **Action Buttons** are buttons that you can add to [List](/building-blocks/vikC2AWEpQGkZd4jGyoVxo/list-block/pQhPYuA28VXr5tLLFBcbCU), [List Details](https://www.notion.so/19c85b4352da4f79bef36e82d78fc650), [Kanban](https://www.notion.so/3513ac5b44034e1093cf96231dde3997), [Table](https://www.notion.so/92aacbbfe80e41af8f43119403c2ffe7), or [Calendar](https://www.notion.so/cc2a9bc28a5a45a0be6385c5ba1b2dff) blocks to allow your application users to update the [data connected to the block](https://www.notion.so/4230abecf813402aa2926466c313290a), add new data, navigate to other sections in your app, and more. In particular, **Action Buttons** let your users perform all of the [CRUD](https://developer.mozilla.org/en-US/docs/Glossary/CRUD) (Create, Read, Update, Delete) operations on your application’s data. The **Action Buttons** are available from the **Actions** tab in block settings sidebar and are divided into the following three categories: 1. **Topbar Buttons**. Includes the [Add Record](/actions/ntEfT9zSJk6aY54G6W5KGU/add-record/3LrUMpQY4BKfDDQj6eb8h8) action and the standard **Open Page**, **Open URL**, and **Scroll To** actions that are discussed in greater detail under [on click actions](/actions/ntEfT9zSJk6aY54G6W5KGU/item-on-click-actions/f1ns7phZfNNvgwXA6tTN3M). 2. **Item Buttons.** This category includes actions that can be applied to distinct records in your data such as the [Update Record](/actions/ntEfT9zSJk6aY54G6W5KGU/edit-record/irSJXPF1gCMXNmfsQFscvx), [Delete Record](/actions/ntEfT9zSJk6aY54G6W5KGU/delete-record/peV9LGdJbM9sKHKynqopkH), and [One-click update](/actions/ntEfT9zSJk6aY54G6W5KGU/one-click-update/8BaX5i6KLZhZCrSZERGnej). It includes the standard [on click actions](/actions/ntEfT9zSJk6aY54G6W5KGU/item-on-click-actions/f1ns7phZfNNvgwXA6tTN3M) as well. 3. [Item on Click](/actions/ntEfT9zSJk6aY54G6W5KGU/item-on-click-actions/f1ns7phZfNNvgwXA6tTN3M). In this category, instead of creating a button, you can specify what happens when a user clicks on an item in your data representation. Note: You cannot add or edit records located in synced tables. Actions tab The only exception is the [Kanban](https://www.notion.so/3513ac5b44034e1093cf96231dde3997) block, where there’s also a **Drag and drop** toggle that lets you choose whether you want to allow your users to drag and drop the board items or not. Drag and drop toggle on Kanban block # Add Record Source: https://docs.softr.io/actions/add-record Letting users add new records to your data. ## Overview ### Adding the Button This [Action Button](/actions/ntEfT9zSJk6aY54G6W5KGU/action-buttons-overview/idg8Fqf2kjFwcx6kyP3jNq) is available under **Topbar Buttons** and lets users add new records/rows to your [data source](https://www.notion.so/4230abecf813402aa2926466c313290a). Add Record buttons are only available on List Blocks and can be added by clicking on the List Block, selecting the Actions tab, clicking the **+ Add Topbar Button**, then choosing **Add Record** from the dropdown. Notion image By default, you’ll have one **Add record** button added to your block, which you can remove if needed. ### Adding Form Fields When you give users the option to add a new record, they’ll likely need some fields to fill out. Once the button has been added, you can: 1. Give the button a label 2. Add fields that the user should be able to fill out for the new record. Each field will have its own set of options, but at minimum each will have a label, a placeholder, whether its required or not, and a way to map it to your data source. Notion image ### About the Modal You won’t be able to see the live form that the users will see when adding a record unless you preview or use the app live. However, you can set the title of the **Add Record** modal as well as what the Add and Cancel buttons say. You can preview the modal by clicking the eye icon in the upper right of the section. If you need to change the theme of the modal such as background, text color, button color, etc., you can do that in the [Theme](/styling/7qXYEkNvWQamR6vcLXzZnF/application-theme/91YGSL2aDJajXdbPBhitbc) menu tab. Notion image ### Setting the On Form Submission In this section of the Add Record button, you can set the Success message that appears the user when the submit, as well as the Action that happens upon submitting the form. You have several choices here: * **Open new record’s details page** - This will immediately send the user to a details page displaying the new records details. If you do not have a details page for this type of record, you will be asked to create one. * **Close the modal** - This will close the popup and return the user to the original screen before clicking the Add Record button. * **Open a page** - This will link the user to a page in your app that you specify * **Open an external URL** - This will send the user to a URL link that you specify Notion image ### Button Visibility After the button has been created, you can click on the yellow highlighted branching icon to set visibility conditions based on a Logged-in User’s [User Group](/user-groups-and-permissions/3oA6AaFzUiePs2sW2TpYrF/user-groups/6XQfKMeKHUvBcAjKvLs3g3). Notion image ## Example So, let’s see how you can set this action up and what features are available. We’re going to use a [List block](/building-blocks/vikC2AWEpQGkZd4jGyoVxo/list-block/pQhPYuA28VXr5tLLFBcbCU) connected to an [Airtable](/data-sources/1YYStCJukT15Lh2j93qo9A/airtable/jHX7kfH7QvkVcELQvS3VoX) data source, which shows a list of tasks for a hypothetical product development team and has three fields: **Name** (the name of the task), **Assignee** (who it is assigned to), and **Status** (the current progress status of the task). We want to enable an “Add new task” button to allow development team members add new tasks to the list. List of tasks First, we are going to configure the button label. Button label Then, we are going to customize other texts for the button. As you can see in the following gif, it’s also possible to preview the **Add record** pop-up, through which users are going to add new record details. Setting up button texts and previewing the modal Next, we need to specify the field from our data source that are going to be available when adding a new record. To do that, we need to hit the **Add field** at the top of the button settings and add the necessary fields. To add a new task, we need to specify its **Name**, **Assignee**, and **Status**. Therefore, we are going to add a Text field and map it to the **Name** field on Airtable as well as add two dropdown fields and map them to **Assignee** and **Status**, as these two are single-select fields in our Airtable data source. Adding fields for the add new task functionality Among other fields, you can also add a [Signature field](/displaying-and-creating-data/vikC2AWEpQGkZd4jGyoVxo/layout-customizable-form/jCim5VWZePgZuaRsUZBnpG#signature-field) to capture eSignatures when adding records. Note that [computed fields](/data-sources/1YYStCJukT15Lh2j93qo9A/airtable/jHX7kfH7QvkVcELQvS3VoX#airtable-computed-fields) will not appear in the list of mappable fields for the form. You cannot add or edit records located in synced tables. Now, we need to define who can see and use the button (see [button visibility](/user-groups-and-permissions/3oA6AaFzUiePs2sW2TpYrF/action-button-visibility/tqpb8TkUD4U4DCAUA2hjKo)). Button visibility options depend on the subscription plan: → On Free and Starter plans you can decide who can see the button (All Users, Logged-in Users, or Non Logged-in Users) → On Professional plan you can also configure conditional visibilitybut can’t set [custom user groups](/user-groups-and-permissions/3oA6AaFzUiePs2sW2TpYrF/user-groups/6XQfKMeKHUvBcAjKvLs3g3). → On Business plan you have access to all the features in Button Visibility. See [plan comparison](https://www.softr.io/pricing). The users of our task list are the same people who are working on those tasks, so we are going to [connect the same Airtable base](/add-and-manage-users/pxnkp9H3qyEVMF6XUceqnj/syncing-users-with-a-data-source/hshRGygHr4T33EnaLntGf9) with tasks and assignees to Softr as a user database. Airtable table with the list of tasks and assignees. The users sync between Softr and data source is one-way (from Softr to data source), so, if you connect a data source with users without having them [in Softr](/add-and-manage-users/pxnkp9H3qyEVMF6XUceqnj/users-menu/5JTzjtbvp8Skemd26A9ho9) first, you’ll need to create the same users in Softr as well to establish the connection. We are also going to create a [user group](/user-groups-and-permissions/3oA6AaFzUiePs2sW2TpYrF/user-groups/6XQfKMeKHUvBcAjKvLs3g3) that includes project managers only. Creating a user group for project managers. Next, we are going to set up button visibility so that only the **Project Managers** user group is able to access the button. Setting button visibility Now, let’s test the setup and see how it works from the user’s perspective. ### Testing adding new tasks To test our setup, we are going to log into our application with one of the project manager users and add a new task to the list. The following gif illustrates that. Adding a new task # Ask AI Source: https://docs.softr.io/actions/ask-ai Let users ask an in-app AI chat assistant about your data ## Overview Ask AI is Softr's built-in chat assistant that acts like a real-time analyst, reading your live app data and answering questions instantly. Unlike other AI tools that give vague answers or require complex setup, Ask AI is embedded directly into your Softr apps with no API keys. All you need to do is toggle it on! Here are some key features: 🔍 **Reads from your app data** * Pulls from live data inside dynamic blocks in your Softr apps * Gives real-time answers based on your current data 🛡️ **Secure by default** * Respects your app's permissions and visibility rules * Users only see data they're authorized to access (no accidental data exposure) ⚡ **No setup required** * Built directly into your Softr application—just toggle it on at the block level * No API keys or complex configurations needed ## How to Add Ask AI to Your App **Step 1:** In the Softr Studio, navigate to your dynamic block's **Actions** section Notion image **Step 2:** Select **Add Topbar** button and choose Ask AI from the options. Notion image **Step 3:** From here, you can adjust the label and icon, and use the dropdown to customize messages, instructions, response style, suggested prompts, and appearance. Notion image **Step 4:** Publish your app. The chat interface will now be available to your users (depending on block permissions) Notion image Notion image ## Security & Permissions Ask AI only analyzes the data a user is allowed to see at the block level, always respecting your app's permissions and visibility settings. You can decide who sees the Ask AI button—like showing it to managers but hiding it from clients. And when users ask questions, Ask AI only analyzes the data they're allowed to see, including filtered views (like "tasks assigned to me"). ## Requirements & Limitations ✅ **Supported** * Dynamic blocks (e.g. Tables, Lists), and Vibe coding block connected to any of Softr's supported data sources (except REST API) ❌ **Not Supported** * Static blocks or blocks connected to REST API data sources * Ask AI is currently only available at the block level to ensure secure, permissioned responses. * App-wide Ask AI implementation is coming soon! ### AI Credits Ask AI is available on all plans, including free. Every query directed to Ask AI consumes AI credits based on the complexity of the response and the amount of data analyzed. Each query counts toward your workspace's total monthly credit usage. ## FAQ Yes. Every Softr plan (including Free) comes with a set amount of monthly AI credits to use toward Ask AI and other AI features. If you run out of AI credits in a given month, your Ask AI will pause until your credits reset with your plan or you purchase a credit add-on. [Learn more about AI credits](/workspace-and-billing/jZP6yaeXMiJCuB6HhS4xKd/ai-credits/5VRMhf7Q6xvy7AJqyiQLx5). # Call API Source: https://docs.softr.io/actions/call-api Buttons can trigger an action to send a POST, PUT, PATCH, or DELETE request to any REST API or webhook endpoint, allowing you to interface directly with external services and tools. ``` Adjust the code: 1. Replace **example.softr.app** under **src** with your app's Softr subdomain or your custom domain if you've connected one. Add the page path you would like to embed e.g. `my_softr_domain.com/page1`. If you want to embed the Home page, no page path is needed. 2. Inside the value of **id** ("`softr-we-erw45hrubuyt23`" in the above code), replace the part that comes after `softr-` with the actual ID of your page, which is the last component of the page's URL when it's open in the Softr Studio (see below). Locating the page ID # Page Settings Source: https://docs.softr.io/application-settings/page-settings Customize Page Settings Just like an app has various screens and views, your Softr app has pages that will be used to hold the content of your app. These pages are categorized into two different types: * Application Pages - These pages will hold the primary content of your app, whether its static content or dynamic content pulled from your datasource. You can fully customize these to suit your needs. * Utility Pages - These pages are generated for you and handle more of the “housekeeping” side of your app such as password reset pages, 401 pages, invalid link pages, signup, login, and more. You can customize these to match your brand, but the core function of these pages is set for you. Pages work in tandem with Navigation to help create a fluid, seamless experience for both you as the builder and the users of your application. Learn more about [Navigation](/application-settings/n3K2UEfpC9BpHgakMzUU5Y/navigation-settings/49UoDpTpTMxcBVDnRVTncV) here. ## Creating a page You can access all pages by clicking on the [Pages](/application-settings/n3K2UEfpC9BpHgakMzUU5Y/page-settings/49UoDpTpTPJe69RafDsALq) menu in the upper left of Softr Studio: Notion image At the top of the Pages menu, you can see all of your app pages and also add new ones using the gold “**+”** button. You can re-order pages by clicking and holding on the Page name, then dragging it up and down the Page stack. Notion image Hovering over any page will reveal a gear icon and an kebab icon. The kebab icon allows you to duplicate a page, delete a page, or hide a page by making it a draft. The only page that you cannot set as a draft or delete is the Home page. You can name change the Home page’s settings and duplicate it, but it cannot be hidden or removed (your app has to have a home page!). Notion image Clicking the gear icon will let you edit the page’s general settings like name, url slug, SEO settings, Navigation, visibility, and more. Notion image ## Page Settings **General** In the general settings, you can change the Page’s name (visible in Studio and in search engine results) and the url slug for the page (used to link people directly to this page in your app). Notion image **Navigation** In this section, select the Navigation you want to use for this page. You can use different navigation for different pages, create a new navigation from scratch, or choose not to use navigation at all. Notion image **SEO** The SEO section is where you will define the parameters for optimizing the page for search engines so that when someone searches for your app online, it appears in the search results. You want to use the SEO section to plug in keywords and phrases that match what your primary audience is searching for. Alternatively you can turn off search engine indexing if you don’t want people to be able to find this page in online search results. * **Title** - Shown in search engine results * **Description** - Show in search engine results * **Search engine indexing** - Turn this on for your page to appear in search engines and off to prevent search engines from showing it in search results. This is handy for hiding non-relevant pages to search engines such as account pages, private pages, or pages with sensitive information. * **Canonical URL** - You can tell search engines to prefer another version of this page over the current one. For instance, you have an old pricing page called `/old-pricing` that you still need to reference and show up in search results, but you prefer to show the new one called `/pricing` anytime someone performs a search for “app pricing”. Notion image Here is an example of a search result where the pages SEO settings are displayed in a search engine. You can see the title of each page, along with a description, nested under the home page (softr.io). Proper SEO settings will help search engines better understand your site, rank it higher in search, and provide enhanced search results like this: Notion image **Social** Here you can edit settings for the page when someone shares the page link on social sites. This information appears in the social preview. It can also be helpful in boosting SEO slightly. * Title - This title is displayed as the page name in the social preview * Description - This is displayed as the page description in the social preview * Social Image - This image is shown in the social preview and looks best when following the recommended aspect ratio and pixel sizes. Notion image Here’s an example of a social preview in iMessage on iOS. Note that the social preview will look a bit different for every platform: Notion image **Default footer** Here you can toggle whether to use the default footer you setup on the Home page or turn off the default and create a new footer specifically for the current page. You can also simply turn it off and not put in a footer if the page doesn’t need one. No footer is common for dashboards and reporting interfaces. Notion image **Visibility** Here you can select who this page should be visible to. Choose between All Users, Non-logged-in users, all logged-in users, or logged-in users from a specific user group(s). If a user tries to visit a page they are not allowed to see, they will be redirected to the Permission Denied utility page (401 page). More on utlity pages below. For more information on page visibility, you can also check out [this help article](/user-groups-and-permissions/3oA6AaFzUiePs2sW2TpYrF/page-visibility/nWJaN689VKA1TUeaEfzK9u). Notion image **Custom Code** In the custom code section of the page settings, you can inject HTML, CSS, and vanilla Javascript into the header or footer of the page. Any code added in these sections will apply only to the current page. You can learn more about implementing custom code and see some code snippets in our [Custom Code docs](/custom-code/3idxDhKqz1qPdqBuWbs61G). Notion image # Utility Pages Source: https://docs.softr.io/application-settings/utility-pages Customize pre-built utility pages. Utility pages are setup for you automatically, based on the functionality you setup in the [**Authentication**](/core-concepts-overview/c5VwEbsWtTfPyUZjmEKvfx/user-authentication/7gJmq6B7syYE3hRoFxLs5J) tab of the Users menu. They cannot be deleted, but you can disable certain ones depending on your User Authentication settings. They facilitate core functions of any web app so your users have a great experience and you don’t have to spend time figuring out what to build or how to build it. Notion image While you can change the name and url of these pages in the page settings, we recommend sticking with the defaults. You can also edit the branding of these pages. Each utility page will have its own settings and capabilities. Let’s explore the functions of these pages as they are know by their default names: * **Log in** - This page is to let your app users log in to your app. You can also create multiple login pages, which is helpful for onboarding different roles or branding them in different ways. It is only available in your app if Login is enabled in your User Authentication settings. * [**Sign up**](https://docs.softr.io/building-blocks/vikC2AWEpQGkZd4jGyoVxo/signup/54HYs3JEjYZA33S96fP3de) - This page is to allow people to sign up to your app as a user. You can also create multiple signup pages, which is helpful for onboarding different roles or branding them in different ways.It is only available in your app if Signup is enabled in your User Authentication settings. * [Onboarding Flow](/building-blocks/vikC2AWEpQGkZd4jGyoVxo/onboarding-flow/5MmuwRtpDR2JL56SooLXgo) - The onboarding flow pages allow you to build custom user onboarding steps or flows that new users can go into based on things like their user group, email domain, etc. You can setup flows to route people to different pages, ask them to complete their profile, or even create their company page before getting deeper into the app. * [**Account settings**](https://docs.softr.io/building-blocks/vikC2AWEpQGkZd4jGyoVxo/account-settings/54HYs3JEjZj8DGwRCNUpH9) - This page is to allow users to edit their account/profile information such as their name, email, password, avatar, and any other information you want to let them edit. It is only available in your app if Login is enabled in your User Authentication settings. * **Forgot password** - This page is to allow users to enter the email for their account so they can receive a forgot password email. It is only available in your app if Login is enabled in your User Authentication settings. * **Reset password** - This page is to allow users to enter a new password after clicking on the Reset password link in the [forgot password email](/add-and-manage-users/pxnkp9H3qyEVMF6XUceqnj/user-email-notifications/sZRpewgUkBFFvhKSsQrBx7#forgot-password-email). Its only available in your app if Login is enabled in your User Authentication settings. * **Link expired** - This is shown to people who are using a valid link but whose login session has ended or the list item is no longer available. It will always be available in your app and cannot be deleted. * **Permission denied** - This is equivalent to a traditional 401 page and is shown to users who try to access pages they are not allowed to see. It will always be available in your app and cannot be deleted. * **Page not found** - This is equivalent to a traditional 404 page and is shown to users who try to access a page or link that does not exist in your app. It will always be available in your app and cannot be deleted. # Account Settings Source: https://docs.softr.io/building-blocks/account-settings Let your users manage their account ## Overview The Account Settings block lives on the Account Settings page in your app and allows your users to self-manage their email, password, name, photo, and any other fields you want to let them edit. You can turn on this page by adjusting your settings in [User Authentication](/core-concepts-overview/c5VwEbsWtTfPyUZjmEKvfx/user-authentication/7gJmq6B7syYE3hRoFxLs5J). Read more about Utility pages [here](/application-settings/n3K2UEfpC9BpHgakMzUU5Y/utility-pages/49UoDpTpTPbkoKVwksoqfh). To edit the Account Settings page and block, click on the Pages menu button, scroll to the Utility pages section, and select the Account Settings page. Once on the page, click anywhere on the page to bring up the block settings. Notion image ## Content The content tab holds a variety of options for you to adjust the Account Settings block: ### **Cover Image** The Cover Image can be toggled off or on and you can upload a custom cover image to suit the look and feel of your app. Notion image ### **Title and Subtitle** The Title and Subtitle are shown at the top of the page and can be changed to whatever you like or removed completely if needed. Notion image ### **Form Fields** The Form Fields section offers a ton of functionality for controlling what users can edit about their account or profile. The fields above the divider are defaults and cannot be turned off, because they provide critical functionality your app needs to function. However, they do offer several options to customize how they look and function: * **Avatar**: This field can be disabled completely if no avatar is desired or available for users. * **Email**: This field can be customized with custom text for everything from the field name itself to allowing users to change their email addresses and the messaging around it. To edit the password reset emails themselves, check out [User Email Notifications](/add-and-manage-users/pxnkp9H3qyEVMF6XUceqnj/user-email-notifications/sZRpewgUkBFFvhKSsQrBx7). Notion image * **Password**: Change the language and labels of the password editing/reset capabilities. Note that users using SSO or Google Sign-in will not be able to change their password here. * **Name**: Change the placeholder text and control if you want to let users update their name or not. You can also add custom fields that you want users to be able to change about their profile by clicking on the **Add Field** button. Customize the field type, label, and placeholder like you can on forms, list blocks, or anywhere else in Softr. Notion image ### Update Button Edit the text on the Update button to suit your language or preferred phrasing. Also update the success message to display to the user once the change is confirmed. ## Styles Click on the Styles tab to change everything from background color, sizing, and rounding to surface/card colors and shadows. Other elements like text color and button color can be changed in your app’s [Theme panel](/styling/7qXYEkNvWQamR6vcLXzZnF/application-theme/91YGSL2aDJajXdbPBhitbc). Notion image # Advanced Form Features Source: https://docs.softr.io/building-blocks/advanced-form-features Get the most out of your forms with advanced features. ## Destination In this section, you customize the form and set where it's going to be sent. To start configuring the form fields, you first need to set the form's **Destination**. Form destination Here, you have the following options: * [Send to data source](/building-blocks/vikC2AWEpQGkZd4jGyoVxo/tutorial-sending-form-data-to-a-data-source/pgX6BhyR98bLopZtgsXMwU) * Add to [Mailchimp](/integrations/etS18kJqm1fuD58KCsjC3z/mailchimp/2GvSLRGrgMfe8S3drMWao1) * Add to [Mailerlite](/integrations/etS18kJqm1fuD58KCsjC3z/mailerlite/i1Ex2KK1HwqsceB1SnYWby) * Send to [Zapier](/integrations/etS18kJqm1fuD58KCsjC3z/zapier/vFrfgfV12U9F9SNqbrAHLd) * Send to [Make](/integrations/etS18kJqm1fuD58KCsjC3z/make/dNDFZTp7eeNj7HnaUV6YMa) * Forward to your email You can learn more about each option under its respective article (links added above). And you also have the **Forward to your email** option, which simply sends the submission to the specified email address. So, let's select the **Forward to your email** option and go over the fields types and their settings. ## **On Form Submit** After the form is submitted, you can either display a success message or take the user to a different page. ### **Success Message** Configuring the success message You can customize the message as well as configure styling and formatting. ### **Open Page** “Open Page” option Just select the page, and the user will be taken there after successful submission. ## Field settings Field settings All the field types (apart from **Hidden Fields**, which we'll consider separately), have the following common settings: * **Label** – a label for the field (appears above or next to the field depending on the form layout) * **Placeholder** – placeholder text for the field * **Field** – a unique identifier (i.e. name) for the field * **Required** - is the user required to fill in the field or not Now, let's see what field types are available: * **Email** – a field where users can enter their email address * **Text/Long text** – for single/multiple line texts * **URL** – for submitting a URL * **Phone number** – here users can provide their phone numbers. Please, note that validation is applied on entered phone numbers * **File** – a field where users can upload files * **Date** – a date field where users can choose a date from a calendar pop-up * **DateTime** – allows providing date and time within a single field. Can be mapped to any text type field in Airtable (e.g. Single Line Text) DateTime field * **Checkbox** - a checkbox field with a yes/no value. If you are mapping the field to Airtable, you need to use a "Checkbox" field type there as well. * **Rating** - allows submitting a rating (1-5 stars). If you are mapping the field to Airtable, you need to use a "Rating" field type there as well. * **Address** - this is a regular text field, where users can enter their address, but it also has **address autocomplete**. However, to enable autocomplete, you first need to integrate Google Maps in **Settings => Integrations => Google MAP**. Follow the instructions [here](https://developers.google.com/maps/documentation/javascript/get-api-key), to get the map API key * **Hidden** - described below separately * **Number** * **Dropdown** – a dropdown where users can select one of the provided options. Here, you also have the **Options** parameter, where you can list all the options separated by a semicolon (**without spacing**). Dropdown field type If you’ve mapped the dropdown field to a **single- or multi-select field** in Airtable, a **Sync options with data source** will appear, which lets you sync all the values from Airtable automatically instead of adding them manually. “Sync options with data source” toggle * **Multiselect Dropdown** – similar to **Dropdown** but with the possibility to select more than one option For dropdowns, you can also toggle to enable users to add additional options if the one they are selecting does not exist yet. This is great for adding additional selection options. Note that this is not yet possible for linked records in a dropdown. Notion image ### **Signature field** **eSignature capture** is available for the users on the [Professional plan and above](https://www.softr.io/pricing). This form field allows users to either type or write their signature (using finger on a touch device or mouse on desktop). The signature is then saved as an image in your data source (e.g. in a File field in Softr Databases, an Attachment field in Airtable, or as an image URL in Google Sheets). Signature field selection and draw or type option modals Images on the records can serve as a reference for anyone entitled to access that record. It is important to ensure that your record-keeping practices meet any specific legal requirements for your industry and jurisdiction. [Read more](https://www.pandadoc.com/electronic-signature-law/) about electronic signature laws across countries. ### Hidden field Hidden field settings This field type allows sending hidden data that the user doesn't see (you can find a use case [here](https://developers.google.com/maps/documentation/javascript/get-api-key)). There are **4 categories**, so let's examine them one by one. **1. Logged-in user** By default, here, you have the following options: * **Email.** Collects the email address of the logged-in user. * **Name.** Collects the name of the logged-in user. * **Record ID.** If you've [connected a data source to your users database](/add-and-manage-users/pxnkp9H3qyEVMF6XUceqnj/syncing-users-with-a-data-source/hshRGygHr4T33EnaLntGf9), you can choose this option to collect the Record ID (you can learn about [Airtable](/data-sources/1YYStCJukT15Lh2j93qo9A/airtable/jHX7kfH7QvkVcELQvS3VoX) Record IDs [here](https://developers.google.com/maps/documentation/javascript/get-api-key), and learn how those work for Google Sheets [here](https://developers.google.com/maps/documentation/javascript/get-api-key)) of the user. **2. URL Parameter** Using this option, you can collect any of the page’s URL parameters. Let's consider a specific example to see how that works. For instance, if you've created a job board with Softr, each job announcement will have a **recordId** (you can learn about [Airtable](/data-sources/1YYStCJukT15Lh2j93qo9A/airtable/jHX7kfH7QvkVcELQvS3VoX) Record IDs [here](https://developers.google.com/maps/documentation/javascript/get-api-key), and learn how those work for Google Sheets [here](https://developers.google.com/maps/documentation/javascript/get-api-key)) in its page URL, indicating the [data source](/4230abecf813402aa2926466c313290a) record corresponding to that particular job. So, if you have a form on that page to receive job applications, you can set a hidden field to collect the **recordId** to identify which job announcement the application has been submitted for. Your page URL will look something like **yoursite.com/job-details/senior-product-manager?recordId=rec7HcXAgKmlk8inf**, so if you set your hidden field value as “**recordId,”** it will collect the value of **recordId** ("rec7HcXAgKmlk8inf" in this case). **3. Page URL** This parameter allows to get **the full URL of the page** the form has been submitted from. **4. Custom value** Here’ you can collect any custom value that you’re not able to collect using the previous options. For instance, you can use it to collect a custom text along with the submission. This can be useful is you have the same form on different pages, and want to mark each of the forms distinctively. Another important use case is collecting additional logged-in user parameters. If you've [synced your users database with a data source](/add-and-manage-users/pxnkp9H3qyEVMF6XUceqnj/syncing-users-with-a-data-source/hshRGygHr4T33EnaLntGf9), you can use this option to collect any of the field values corresponding to the user. Here, the value has the following format:**\{LOGGED\_IN\_USER:FIELD:'field name'}** ('field name'is replaced with the actual name of the field). Let's say you have connected an [Airtable](/data-sources/1YYStCJukT15Lh2j93qo9A/airtable/jHX7kfH7QvkVcELQvS3VoX) data source and have a **Status** field in your users base as shown below. Users Base on Airtable So, if you set your hidden field's value as **Status,** the values of the **Status** field will be collected for each user submitting the form (e.g. for Elise it will be "Active"). ## Form Prefill Using this feature, you can send your Softr form to others with one or more fields prefilled with values. Let's see how that works. Let's say your form URL is **yourdomain.com/form**. To prefill a certain field for this form, you need to add a parameter to your form URL and assign a value to it in the following format: > **?prefill\_tagname=value** If it's the first parameter in your URL (e.g. you could already have other parameters not related to the prefill), it needs to start with "?." However, if you already have other parameters in the form URL, attach the new ones using "&" at the beginning: **\&prefill\_tagname=value** For instance, if you have a text field with a **Tag** "NAME," and you want to prefill it with "John," your URL will look as follows: > **yourdomain.com/form?prefill\_NAME=John** Text field settings Please, note that the **Tag** value is case-sensitive and should match exactly the value in your field settings. Below, you can see what we described in action. Prefilling the name field If the field type receives a single value and doesn't have any special formatting involved, it can be prefilled in a similar way. **Hidden fields** work the same way as well. Please, note that the **File** field type is not supported. Further on, if you need to prefill **multiple fields**, just add the new values next to each other as shown below: > **?prefill\_NAME=John\&prefill\_Email=[john@softr.io](mailto:john@softr.io)** Now, let's see how prefill works for the field types that receive their values differently. ### **Multi-select Dropdown** Here, you need to list all the preselected values separated by a comma: > **prefill\_Option=X\&prefill\_Option=Y** ### ****Date and DateTime**** You can use a date like `?prefill_date=2024.10.25`. But it’s not limited to this format; since we’re using [JavaScript’s Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) object, you have a broad range of formats to choose from, like `2024/10/25` or even `October 25, 2024`. You can also pre-fill with date and time, like `prefill_date=2024.10.25 15:30`. If the pre-filled date or datetime is invalid, nothing will be displayed. Some examples: > **?prefill\_datefield=dd/mm/yyyy
> ?prefill\_datetimefield=mm-dd-yy HH:MM** Since the time picker has fixed values available for selection (e.g. 01:30 or 16:00), you should use the same values when setting the prefill for the DateTime field. ### **Checkbox** For the checkbox type, you can set the value as "true" (use lowercase only) if you want it to be pre-checked: > **?prefill\_checkbox=true** That's it. Now, you should be able to send your form URL to your users with any of the fields prefilled with your preferred values. Email marketing services (e.g. [Mailchimp](/integrations/etS18kJqm1fuD58KCsjC3z/mailchimp/2GvSLRGrgMfe8S3drMWao1)) often provide variables that you can use as values in your prefill configuration to be able to send the form URL to a group of users at once so that each user has his/her own info (e.g. Name, Email, etc.) prefilled. ## **Enable reCaptcha** By adding reCaptcha authentication to your form, you'll protect it from getting spammed or misused. Please, note that Softr only supports [reCaptcha v3](https://developers.google.com/recaptcha/docs/versions). For reCaptcha to be enabled the app needs to be published. To set up reCaptcha, you need to go to [https://www.google.com/recaptcha/admin/create](https://www.google.com/recaptcha/admin/create) and enter your site details as shown below. reCaptcha setup In the next screen, you just need to copy the **Site Key** and **Secret Key.** Getting Site Key and Secret Key To finalize the setup, paste the Site Key and Secret Key in your Softr app's **Settings => Integrations => Google reCaptcha.** Adding reCaptcha keys ## **Using Forms on Details Pages** Conditional forms can be particularly powerful when used on details pages, where the form's behavior can depend on specific data from a list details record. To ensure that these forms operate correctly, special attention must be given to how data fields are mapped and utilized within the form. ### **Setting up Forms on Details Pages** When adding a conditional form to a details page in Softr, the form can interact dynamically with the data displayed on that page. This setup allows you to create forms that respond and adapt based on the specific details of the record being viewed. ### **Field mapping and conditions** To utilize record-specific data in your conditional logic: 1. **Data mapping**: Ensure that any field used in the form’s conditions is corresponds to a mapped field in the list details block. This mapping is crucial because it allows the form to access the relevant data to evaluate conditions correctly. 2. **Configure conditions**: When setting up conditions in your form that depend on list details, refer directly to the mapped fields. For example, if you have a form on a real estate listing page that should display additional questions about mortgage options only if the property price is above a certain value, you must map the property price field from the list details to the form. 3. **Validate field mapping**: Verify that the fields used in your conditions are not only mapped but also correctly pulling data from the list details. If the field isn’t mapped, the conditional logic based on that field will not function, potentially causing the form to behave unexpectedly. ### **Testing and troubleshooting** * **Testing**: Thoroughly test the form by navigating through different records on the details page to ensure that the conditional logic triggers as expected for different data scenarios. * **Troubleshooting**: If a condition doesn’t work, double-check the field mappings and the logical statements used in your conditions. Ensure there are no discrepancies between the field names in the database and those referenced in your form settings. # Calendar Source: https://docs.softr.io/building-blocks/calendar Display your data in a calendar layout. The **Calendar Block** provides a dynamic way to display and manage date-based information. Perfect for organizing schedules, tracking deadlines, or visualizing project timelines, it helps users see upcoming events and tasks at a glance. Notion image ## **Use case examples** * **Project Timelines:** Map out project milestones, deadlines, and task timelines. * **Company Calendar:** Coordinate team schedules by visualizing meeting times, vacation days, and work shifts in a single shared calendar. Use color coding to distinguish between team members or event types. * **Training Sessions:** Schedule employee training events and allow easy access to session times, locations, and participant lists. Calendar block is available for Professional, Business, and Enterprise plans. # Configure a Calendar block **Build with AI:** Instead of configuring manually, you can add a Calendar block instantly with the **AI Co-Builder**. Just click the AI icon in the editor and type: *"Add a calendar showing our upcoming marketing campaigns."* ## Source The **Source** panel connects the list block to your data source. Here, you can: * Connect the list block to your[data source](/core-concepts-overview/c5VwEbsWtTfPyUZjmEKvfx/connect-your-data-source/41p6U2eZs6NZ5qZp7iKvnn). * Set up[conditional filters](/user-groups-and-permissions/3oA6AaFzUiePs2sW2TpYrF/conditional-filters/mDnn7jnpPiYmJcT99jpt7m) to display only the data that meets specific criteria. * **Define sorting rules** and set the number of items to display per page. * **Customize the empty state message** that appears when no data matches the requirements. Once you connect to your source data, you can configure Content, Actions, and block Visibility settings. Some configuration options depend on the [data source](/core-concepts-overview/c5VwEbsWtTfPyUZjmEKvfx/connect-your-data-source/41p6U2eZs6NZ5qZp7iKvnn). For more details, check the documentation for your specific data source. Notion image ## **Content** In the **Content** tab, customize the Calendar layout data fields, adjust their display, and add features like search and filters to help users find information quickly. ### **Event fields** The **Calendar block** uses default event fields to display your events. Make sure to map the following required fields: * **Event Title:** Displays the name of the event on the calendar. * **Start Time:** Specifies when the event begins, shown on the calendar. * **End Time:** Specifies when the event ends, shown on the calendar. Notion image If you’re using [GSheet](/data-sources/1YYStCJukT15Lh2j93qo9A/google-sheets/jznC9Jr3Jri224AVmHVn4a) as your data source you can specify if the date field includes time and define the time format you would like it to be displayed. ### Calendar Views Customize how users interact with the calendar by enabling multiple view options. Available views include: * **Month View:** Ideal for an overview of all events within a month. * **Week View:** Focuses on events for a single week, with detailed time slots. * **Day View:** Displays events for a single day, perfect for detailed scheduling. * **Agenda View:** Lists events in chronological order for a streamlined overview. You can decide which views are available for your users and set a **default view** they will see when they open the calendar. Notion image ### **Event Popover** The **Event Popover** appears when a user clicks on an event. By default, it includes: * Event Title * Event start and end date You can customize the popover to include additional fields from your data source, such as location, description, or tags, providing more context for each event. Notion image ### **Item fields** **Item Fields** lets you connect fields from your **data source** to each list item, making it easy to display the information you need. You can control what information appears by adding, removing, or rearranging fields such as task names, assignees, or descriptions. For each field in the **Item Fields** section of the secondary section, you can customize the following options: * **Type:** Defines the display field type that controls how content appears in the block (e.g., text, checkbox, or image). * **Content:** Chooses the specific data field from connected data sources to display. * **Label (Optional):** Adds context to the field. If left blank, the label will not be visible to users. Notion image **Note:** Some display field types are compatible only with specific data formats. For example, if a field is set to display images, you cannot map it to text data. Ensure the field type matches your data source field format to avoid display issues. **Supported field types** | | | | ----------------- | --------------------------------------------------------------------------------------------------------- | | **Display Field** | **Description** | | **Text** | Displays plain text. Ideal for names, titles, or short descriptions. | | **Rich Text** | Supports long text, markdown, or HTML formatting. Allows for more detailed descriptions or notes. | | **Headings** | Various heading sizes. | | **Email** | Displays email addresses as clickable mailto links, allowing users to start an email directly. | | **URL** | Displays website links as clickable URLs, allowing users to navigate to external pages. | | **Tag** | Allows you to display one or more tags, helpful for organizing items by category or status. | | **File** | Provides a link for users to download attachments, such as PDFs or other documents. | | **Video** | Embed video content from a supported source, allowing users to watch content directly in the block. | | **Audio** | Embed audio files, letting users listen to content directly within the block. | | **Image** | Displays a single image, useful for things like profile pictures or product images. | | **Image gallery** | Displays multiple images in a gallery format, useful for showcasing a collection of visuals. | | **Embed** | Allows you to embed content from other services, such as YouTube videos, Calendly, or social media posts. | | **Rating** | Displays a rating system, typically with stars, to visually represent ratings or scores. | | **Checkbox** | Shows a checkbox, useful for indicating completed items or allowing users to mark items as done. | | **Divider** | Visual content separator. | ### **Search bar** The **Search Bar** allows users to search through items in your block, making it easier to find specific entries quickly. You can configure which parameters you want the search to be performed by adding fields to Search by input. For instance, if you’re displaying a list of employees, you might select “Name,” “Department,” and “Job title” as searchable fields. Notion image If no fields are selected, the search bar will display all items regardless of the search term. To ensure meaningful search results, always select at least one field. ## Actions [Actions](/core-concepts-overview/c5VwEbsWtTfPyUZjmEKvfx/actions-adding-and-editing-data-/41p6U2eZs87asLz6dV5AMy) let you define what happens when users interact with a block, such as navigating to a new page, editing records, or triggering workflows. This ensures your app not only displays data but also offers dynamic user engagement. Notion image **Topbar buttons** * [Add record](/actions/ntEfT9zSJk6aY54G6W5KGU/add-record/3LrUMpQY4BKfDDQj6eb8h8): Create new entries in your data. * [Open page](/actions/ntEfT9zSJk6aY54G6W5KGU/item-on-click-actions/f1ns7phZfNNvgwXA6tTN3M): Navigate to another page within your app. * **Open URL**: Redirect users to an external link. * **Scroll to**: Move the view to a specific section within the block. **On Click Actions:** * **Do nothing:** Nothing happens when the user clicks on the item. * **Open popover:** Opens the default popover * **Open URL**: Redirect users to an external link. * **Scroll to**: Move the view to a specific section within the block. * [Open details page](/actions/ntEfT9zSJk6aY54G6W5KGU/item-on-click-actions/f1ns7phZfNNvgwXA6tTN3M):: Open the details page of the selected record. **Event popover buttons:** * [Edit record](/actions/ntEfT9zSJk6aY54G6W5KGU/edit-record/irSJXPF1gCMXNmfsQFscvx): Modify the details of a specific record. * [One-Click Update](/actions/ntEfT9zSJk6aY54G6W5KGU/one-click-update/8BaX5i6KLZhZCrSZERGnej): Apply predefined updates to a record with a single click. * [Open details page](/actions/ntEfT9zSJk6aY54G6W5KGU/item-on-click-actions/f1ns7phZfNNvgwXA6tTN3M): Open the details page of the selected record. * [Delete Record](/actions/ntEfT9zSJk6aY54G6W5KGU/delete-record/peV9LGdJbM9sKHKynqopkH): Remove a record from your data. * **Open URL**: Redirect users to an external link. * **Scroll to**: Move the view to a specific section within the block. * [Download file](/actions/ntEfT9zSJk6aY54G6W5KGU/download-file/8Sr2y4CREVcW2GEEDYUhfJ): Provide users with a direct option to download associated files. * [Call API](/actions/ntEfT9zSJk6aY54G6W5KGU/call-api/i9f1s3w9wib3oRmS4HZ7MX): This action triggers a custom API call for advanced integrations (*available for Professional, Business, and Enterprise plans).* ## Visibility Control who can see a block by setting up [visibility](/user-groups-and-permissions/3oA6AaFzUiePs2sW2TpYrF/block-visibility/3spA2dfQNrcGcPNmnDXHB3) rules. This helps tailor the user experience by showing relevant content to the right audience, improving personalization and security. Notion image ## Style Customize the look and feel of your blocks with s[tyling](/core-concepts-overview/c5VwEbsWtTfPyUZjmEKvfx/style-your-app/41p6U2eZs8AZmBW8mHykXA) options. Adjust fonts, colors, spacing, and more to align with your app’s branding and create a polished, professional design. Notion image ## Relevant Guides * [How to set up a record detail page?](/building-blocks/vikC2AWEpQGkZd4jGyoVxo/item-details-block-/4bE8XaFbJp45wkAwuWiz8f) * [How to filter list records by Page URL parameter?](/how-to-guides/ioi5BbuQ2RDM7aHPrpXnjG/how-to-filter-list-by-page-url-parameters/42JZoeYwMstwaL9aoBdRjz) # Chart Block Overview Source: https://docs.softr.io/building-blocks/chart-block-overview Adding charts to your Softr app. Chart block is available for users on the [Professional plan and above](https://www.softr.io/pricing). Using the Chart block, you can add different types of charts to your Softr app. The charts get the data from [data sources](/4230abecf813402aa2926466c313290a). In the following articles, you can get familiar with different chart layouts that are available. In this article, we’ll set up a chart (using a **Bar Chart** as an example) from the scratch and explain each configuration option. To start configuring the chart, you first need to link it to a [data source](/4230abecf813402aa2926466c313290a) to start displaying your data. We are going to use [Airtable](/data-sources/1YYStCJukT15Lh2j93qo9A/airtable/jHX7kfH7QvkVcELQvS3VoX) for that purpose. So, let’s start. If you make an update in your data source, **it will take 15 min** until that change is reflected in your chart in preview, and live mode. Learn more about data sampling and data freshness at the end of this article. ## Linking a data source Linking an Airtable base and table This part is similar to the [List](/building-blocks/vikC2AWEpQGkZd4jGyoVxo/list-block/pQhPYuA28VXr5tLLFBcbCU) block settings, where you need to connect a data sourcefrom the **Data** tabto get your chart data. Please note, that you first need to have your [data source](/4230abecf813402aa2926466c313290a) linked in **Settings => Data Sources** to be able to connect a specific database. ### Conditional Filters Under the **Source** tab, you also have the **Conditional Filters** section. Chart **Conditional Filters** work similar to [List conditional filters](/user-groups-and-permissions/3oA6AaFzUiePs2sW2TpYrF/conditional-filters/mDnn7jnpPiYmJcT99jpt7m). If you want to refer to an Airtable Linked Record in your condition, use a relevant **Lookup Field** (supported), not a Linked Record itself (not supported). ## Features Now, let's see what we have in the **Features** tab of block's settings. ### **Title and Subtitle** Here you set a **Title** and **Subtitle** for the block. Title and subtitle ### **Type** Next, you have the **Type** parameter where you select between different chart types. Let’s select the **Bar Chart** type and move on to configuring our data. ### Metrics Here’s when we start connecting our data to display it through the chart. We’re going to use an Airtable table with a database of quarterly incomes and expenses as shown below. Airtable table with data As you can see, each record has a **Type** field, a **Sub-type**, and a corresponding value, which is negative in case of expenses. Let’s say we want to display the sum of incomes and expenses for each month. For that, we have to define what is our metric. In our case incomes and expenses are stored in Airtable **Value** field, and the metric should be a sum of those. In the chart block settings, we need to choose **Aggregate function** → Sum, and **Field** → Value Notion image The **Aggregate function** has the following options: * **Sum**. Calculates the Sum of all the values for a given category. * **Average**. Calculates the average of all the values for a given category. * **Min**. Picks the smallest value of all the values of the category. * **Max**. Picks the biggest value of all the values of the category. * **Count distinct values**. Adds up the number of records that **contain a unique value**. * **Count all**. Adds up the number of records present in a given grouping category. ### Groupings Under **Groupings**, we need to select the field by which we want our metric to be grouped and shown on the X-axis. In our case it is the **Date** field. Notion image As a result, we have the following chart that shows the sum of incomes and expenses for each month. Notion image Now, let’s explore each setup option in greater detail. **Time interval** When using **date** or **timestamp** fields, you can further group your date-like records by Time interval option: Notion image Let’s say our time interval is set to month: Time interval: month When we change time interval to a year, metric values get aggregated for each year: Time interval: year For the **day** and **month** time intervals you can choose relevant **display formats**: | | | | ------------- | --------------------------------------------- | | Time interval | Display formats | | Day | YYYY-MM-DD MM/DD/YYYY DD/MM/YYYY MMM DD, YYYY | | Month | YYYY-MM MM/YYYY YYYY/MM MMM YYYY | **Sort by** Next, we have the **Sort by** dropdown, which will have the following options: * **Categories // A-Z.** Order by the **Category** field values from A to Z. * **Categories // Z-A.** Order by the **Category** field values from Z to A. * **Values // A-Z.** Order by the **Value** field values from A to Z. * **Values // Z-A.** Order by the **Value** field values from Z to A. Example: If our **Group by** field is the Date field, and we select “**Categories //A-Z,”** we’ll have the following ordering: 2019-01, 2019-02, 2019-03, etc. (by alphabetical order), as on the screenshot above. We can also sort by the **Value** field. So, if we select **“Values // Z-A,”** the month with the highest value will come first, and chart bars will be sorted in ascending order as shown below. Notion image **Max categories** Further on, we can select how many categories (i.e. chart bars) should be displayed at most. So, if we set the number to 2, only the first two months will be visible on our chart. Notion image Lastly, we have two toggles. The first lets you **Show axis label**, which is the **Date** field in our example. Notion image **Include empty cells** The last toggle lets you choose whether you want to **include empty cells** in the category field. In the example below, we’ve removed one of the values in the Date field. Notion image So, with “Include empty cells” toggle turned on, the chart will look as follows. Notion image **Sub-grouping** Next, you can enable the **Sub-grouping** toggle to split up the chart into subcategories. In our data, we have a **Sub-type** field that indicates the exact type of each income or expense record. So, we’re going to segment our data by this field. The following image shows the resulting bar chart, where each month has four bars corresponding to each Sub-type value. Notion image If you want to refer to an Airtable Linked Record in your grouping, use a relevant **Lookup Field** (supported), not a Linked Record itself (not supported). Lastly, we can choose to **Treat empty cells as 0** as well as **Show axis label**. ## Options ### **Orientation** This option can be used to change the orientation of the chart from horizontal to vertical. Switching chart orientation ### Show zoom When this option is enabled, the users will be able to zoom into any area of the chart. There's also a **Zoom out** option that reverts the last zoom in action. See below how that works. Zoom in and out ### Show tooltip When this option is enabled, the users will see a tooltip when hovering over each individual bar. The tooltip contains all the information about that specific bar. ### Enable download When this option is enabled, the users will be able to download the chart to their device in **.svg** format. ## **Data sampling and data freshness** ### Charts in edit mode * Data sampling - only a small sample of records is used to generate your charts in edit mode to optimize performance * Data freshness - data shown in edit mode is real-time. ### Charts in preview mode * Data sampling - all the specified records are being shown, limited by the max number of “records per dynamic block” specified in your plan. * Data freshness - data refreshes every 15 minutes. * Chartsinclude the Information about when the data on the chart was last refreshed. * App builders can instantly refresh data in preview mode. Instant data refresh is only available in preview mode for testing purposes. Not available to your end users in the live app. ### Charts in live mode * Data sampling - all the specified records are being shown, limited by the max number of “records per dynamic block” specified in your plan. * Data freshness - data refreshes every 15 minutes. Chartsinclude the Information about when the data on the chart was last refreshed. ### Hiding data freshness information Sometimes, you might want to hide data freshness information, typically in cases where a chart serves purely as a visual aid for your narration on a website, rather than being the object of analysis. Here’s a little custom CSS snippet that will allow you to hide the data freshness information: ```css theme={null} ``` # Column Container Source: https://docs.softr.io/building-blocks/column-container Display your blocks side by side ## Overview This Block Container lets you arrange blocks side by side in columns, creating flexible and visually appealing layouts. It's ideal for dashboards, account details, and other structured content, helping you organize related information more effectively within a single container.