diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3eeafddd67..02c54a197d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -873,6 +873,7 @@ jobs: - name: Comment coverage report on PR if: github.event_name == 'pull_request' uses: py-cov-action/python-coverage-comment-action@v3.38 + continue-on-error: true with: GITHUB_TOKEN: ${{ github.token }} MERGE_COVERAGE_FILES: false diff --git a/README.md b/README.md index bae94f8644..efae7c63bb 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,20 @@ -## Baserow is an open-source no-code platform and the best alternative to Airtable +## Baserow: build databases, automations, apps & agents with AI โ€” no code -### ๐Ÿšจ Repository Migration Notice - -Baserow has moved from GitLab to GitHub. All issues have been successfully migrated, -but merged and closed merge requests (PRs) were not imported. You can still browse the -old repository and its history at: https://gitlab.com/baserow/baserow. - -Please use this GitHub repository for all new issues, discussions, and contributions -going forward at: https://github.com/baserow/baserow. - -It lets you easily build databases, applications, automations, and dashboards โ€” all in -one secure, self-hostable environment. Empower your team to create powerful tools -without writing a single line of code. +Baserow is the secure, open-source platform for building databases, applications, +automations, and AI agents โ€” all without code. Trusted by over 150,000 users, Baserow +delivers enterprise-grade security with GDPR, HIPAA, and SOC 2 Type II compliance, plus +cloud and self-hosted deployments for full data control. With a built-in AI Assistant +that lets you create databases and workflows using natural language, Baserow empowers +teams to structure data, automate processes, build internal tools, and create custom +dashboards. Fully extensible and API-first, Baserow integrates seamlessly with your +existing tools and performs at any scale. * A spreadsheet database hybrid combining ease of use and powerful data organization. * Create applications and portals, and publish them on your own domain. -* Automate repetitive workflows with automations (coming soon). +* Automate repetitive workflows with automations. * Visualize your data with dashboards. +* Kuma, powerful AI-assistant to builds complete solutions. +* GDPR, HIPAA, and SOC 2 Type II compliant. * Easily self-hosted with no storage restrictions or sign-up on https://baserow.io to get started immediately. * Best Alternative to Airtable. @@ -30,20 +28,29 @@ without writing a single line of code. [![Deploy to Heroku](https://www.herokucdn.com/deploy/button.svg)](https://www.heroku.com/deploy/?template=https://github.com/baserow/baserow/tree/master) ```bash -docker run -v baserow_data:/baserow/data -p 80:80 -p 443:443 baserow/baserow:1.35.3 +docker run -v baserow_data:/baserow/data -p 80:80 -p 443:443 baserow/baserow:2.0.0 ``` ![Baserow database screenshot](docs/assets/screenshot.png "Baserow database screenshot") -![Baserow form screenshot](docs/assets/screenshot_form.png "Baserow form view screenshot") +![Baserow form screenshot](docs/assets/screenshot_kuma_form.png "Baserow form view and Kuma screenshot") ![Baserow kanban screenshot](docs/assets/screenshot_kanban.png "Baserow kanban view screenshot") ![Baserow application builder](docs/assets/screenshot_application_builder.png "Baserow application builder screenshot") ![Baserow application builder](docs/assets/screenshot_automations.png "Baserow automations screenshot") -(coming soon) +![Baserow application builder](docs/assets/screenshot_dashboard.png "Baserow dashboard screenshot") + +## ๐Ÿšจ Repository Migration Notice + +Baserow has moved from GitLab to GitHub. All issues have been successfully migrated, +but merged and closed merge requests (PRs) were not imported. You can still browse the +old repository and its history at: https://gitlab.com/baserow/baserow. + +Please use this GitHub repository for all new issues, discussions, and contributions +going forward at: https://github.com/baserow/baserow. ## Get Involved @@ -109,7 +116,7 @@ Created by Baserow B.V. - bram@baserow.io. Distributes under the MIT license. See `LICENSE` for more information. -Version: 1.35.3 +Version: 2.0.0 The official repository can be found at https://github.com/baserow/baserow. diff --git a/backend/docker/docker-entrypoint.sh b/backend/docker/docker-entrypoint.sh index 0a4f4b0bf9..26ee23c43e 100755 --- a/backend/docker/docker-entrypoint.sh +++ b/backend/docker/docker-entrypoint.sh @@ -6,7 +6,7 @@ set -euo pipefail # ENVIRONMENT VARIABLES USED DIRECTLY BY THIS ENTRYPOINT # ====================================================== -export BASEROW_VERSION="1.35.3" +export BASEROW_VERSION="2.0.0" # Used by docker-entrypoint.sh to start the dev server # If not configured you'll receive this: CommandError: "0.0.0.0:" is not a valid port number or address:port pair. diff --git a/backend/src/baserow/config/settings/base.py b/backend/src/baserow/config/settings/base.py index fe90e5dcf6..39ad3f13ca 100644 --- a/backend/src/baserow/config/settings/base.py +++ b/backend/src/baserow/config/settings/base.py @@ -457,7 +457,7 @@ "name": "MIT", "url": "https://github.com/baserow/baserow/blob/develop/LICENSE", }, - "VERSION": "1.35.3", + "VERSION": "2.0.0", "SERVE_INCLUDE_SCHEMA": False, "TAGS": [ {"name": "Settings"}, diff --git a/backend/src/baserow/version.py b/backend/src/baserow/version.py index 6ca9da3f76..2101409026 100644 --- a/backend/src/baserow/version.py +++ b/backend/src/baserow/version.py @@ -1 +1 @@ -VERSION = "1.35.3" +VERSION = "2.0.0" diff --git a/changelog.md b/changelog.md index 00f8e7c38f..431fb803b7 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,55 @@ # Changelog +## Released 2.0.0 + +### New features +* [Builder] Element can be visually hidden on complex conditions [#2566](https://gitlab.com/baserow/baserow/-/issues/2566) +* [Database] Regenerate all table/view AI field values at once [#2586](https://gitlab.com/baserow/baserow/-/issues/2586) +* [Builder] Support advanced formulas. Formulas can now use functions and operators. [#3258](https://github.com/baserow/baserow/-/issues/3258) +* [Database] Multiple collaborators lookup fields filters [#3450](https://gitlab.com/baserow/baserow/-/issues/3450) +* [Database] Duration lookup field type filters [#3471](https://gitlab.com/baserow/baserow/-/issues/3471) +* [Database] Ability to find items anywhere in the workspace [#3732](https://gitlab.com/baserow/baserow/-/issues/3732) +* [Database] Add filters support for AI field [#3801](https://gitlab.com/baserow/baserow/-/issues/3801) +* [Database] Workspace search [#3826](https://github.com/baserow/baserow/-/issues/3826) +* [Database] Date dependencies in table [#3829](https://github.com/baserow/baserow/-/issues/3829) +* [Database] AI field auto-update [#4115](https://gitlab.com/baserow/baserow/-/issues/4115) +* [Builder] Added the AI agent workflow action. [#4116](https://github.com/baserow/baserow/-/issues/4116) +* [Database] Show primary field value in workspace search result for RowSearchType [#4181](https://gitlab.com/baserow/baserow/-/issues/4181) +* [Builder] Introduced the new 'Slack send message' workflow action. [#4237](https://github.com/baserow/baserow/-/issues/4237) +* [Core] Add TOTP 2fa support [#725](https://gitlab.com/baserow/baserow/-/issues/725) +* [Core] Added GitHub actions feature branch pipeline. +* [Core] Introduced Kuma, an AI-powered assistant to help you manage your workspace. [#3676](https://github.com/baserow/baserow/-/issues/3676) +* [Core] Introduced the ability to sync the knowledge base based on an exportable file. +* [Automation] Introducing automation builder; automate repetitive tasks and workflows. +* [Database] Show workspace settings modal if clicked on deactivated AI field. + +### Bug fixes +* [Core] Only close the last opened modal when the esc key is pressed. [#3495](https://gitlab.com/baserow/baserow/-/issues/3495) +* [Database] Hide tooltip when value dynamically changes to null [#3501](https://gitlab.com/baserow/baserow/-/issues/3501) +* [Database] Log files that cannot be downloaaded during import [#3581](https://gitlab.com/baserow/baserow/-/issues/3581) +* [Core] Close the dropdown when using the tab key to move out from the collaborators field [#3717](https://gitlab.com/baserow/baserow/-/issues/3717) +* [Database] Long text boxes in forms don't maintain their expanded size. [#3801](https://gitlab.com/baserow/baserow/-/issues/3801) +* [Database] Serialize create/update rows actions execution to keep store consistent [#3850](https://gitlab.com/baserow/baserow/-/issues/3850) +* [Database] Allow formula field to reference AI field with choice output type [#3851](https://gitlab.com/baserow/baserow/-/issues/3851) +* [Database] Allow create new entry in linked table using pop-up window [#4104](https://gitlab.com/baserow/baserow/-/issues/4104) +* [Database] Fix CSV import throwing 'no fetchall attribute' error and respect primary field order [#4163](https://gitlab.com/baserow/baserow/-/issues/4163) +* [Builder] Fix scope issue with form input and repeat elements [#4185](https://gitlab.com/baserow/baserow/-/issues/4185) +* [Builder] Fix formula recursion error when the same data source is used twice in one formula of workflow action [#4195](https://gitlab.com/baserow/baserow/-/issues/4195) +* [Builder] Fix synchronised button loading state in tables [#4268](https://github.com/baserow/baserow/-/issues/4268) +* [Builder] Fix broken menu element +* [Builder] Fix collection element broken when they are in container +* [Database] Fix bug where the form validation does not work if iOS recognizes a phone number in the field name. +* [Builder] Fix workflow action configuration broken +* [Database] Added a tooltip to indicate that indexing is not available for this field type. [#3810](https://gitlab.com/baserow/baserow/-/issues/3810) +* [Core] Allow setting custom base URL for OpenAI. [#4108](https://github.com/baserow/baserow/-/issues/4108) + +### Refactors +* [Builder] Added support for Advanced Formulas. [#3258](https://github.com/baserow/baserow/-/issues/3258) + +### Breaking API changes +* [Builder] Data source now return content with human property names instead of technical ones [#4135](https://gitlab.com/baserow/baserow/-/issues/4135) + + ## Released 1.35.3 ### New features diff --git a/changelog/entries/unreleased/breaking_change/4135_data_source_now_return_content_with_human_property_names_ins.json b/changelog/entries/2.0.0/breaking_change/4135_data_source_now_return_content_with_human_property_names_ins.json similarity index 100% rename from changelog/entries/unreleased/breaking_change/4135_data_source_now_return_content_with_human_property_names_ins.json rename to changelog/entries/2.0.0/breaking_change/4135_data_source_now_return_content_with_human_property_names_ins.json diff --git a/changelog/entries/unreleased/bug/3495_fix_pressing_esc_in_file_field_modal_over_the_edit_file_moda.json b/changelog/entries/2.0.0/bug/3495_fix_pressing_esc_in_file_field_modal_over_the_edit_file_moda.json similarity index 100% rename from changelog/entries/unreleased/bug/3495_fix_pressing_esc_in_file_field_modal_over_the_edit_file_moda.json rename to changelog/entries/2.0.0/bug/3495_fix_pressing_esc_in_file_field_modal_over_the_edit_file_moda.json diff --git a/changelog/entries/unreleased/bug/3501_hide_tooltip_when_value_dynamically_changes_to_null.json b/changelog/entries/2.0.0/bug/3501_hide_tooltip_when_value_dynamically_changes_to_null.json similarity index 100% rename from changelog/entries/unreleased/bug/3501_hide_tooltip_when_value_dynamically_changes_to_null.json rename to changelog/entries/2.0.0/bug/3501_hide_tooltip_when_value_dynamically_changes_to_null.json diff --git a/changelog/entries/unreleased/bug/3581_log_files_that_cannot_be_downloaaded_during_import.json b/changelog/entries/2.0.0/bug/3581_log_files_that_cannot_be_downloaaded_during_import.json similarity index 100% rename from changelog/entries/unreleased/bug/3581_log_files_that_cannot_be_downloaaded_during_import.json rename to changelog/entries/2.0.0/bug/3581_log_files_that_cannot_be_downloaaded_during_import.json diff --git a/changelog/entries/unreleased/bug/3717_close_dropdown_when_using_tab_to_move_out_of_collaborators_field.json b/changelog/entries/2.0.0/bug/3717_close_dropdown_when_using_tab_to_move_out_of_collaborators_field.json similarity index 100% rename from changelog/entries/unreleased/bug/3717_close_dropdown_when_using_tab_to_move_out_of_collaborators_field.json rename to changelog/entries/2.0.0/bug/3717_close_dropdown_when_using_tab_to_move_out_of_collaborators_field.json diff --git a/changelog/entries/unreleased/bug/3801_long_text_fields_in_form_expanded_size_is_reverted.json b/changelog/entries/2.0.0/bug/3801_long_text_fields_in_form_expanded_size_is_reverted.json similarity index 100% rename from changelog/entries/unreleased/bug/3801_long_text_fields_in_form_expanded_size_is_reverted.json rename to changelog/entries/2.0.0/bug/3801_long_text_fields_in_form_expanded_size_is_reverted.json diff --git a/changelog/entries/unreleased/bug/3850_serialize_createupdate_rows_actions_execution_to_keep_store_.json b/changelog/entries/2.0.0/bug/3850_serialize_createupdate_rows_actions_execution_to_keep_store_.json similarity index 100% rename from changelog/entries/unreleased/bug/3850_serialize_createupdate_rows_actions_execution_to_keep_store_.json rename to changelog/entries/2.0.0/bug/3850_serialize_createupdate_rows_actions_execution_to_keep_store_.json diff --git a/changelog/entries/unreleased/bug/3851_allow_formula_field_to_reference_ai_field_with_choice_output.json b/changelog/entries/2.0.0/bug/3851_allow_formula_field_to_reference_ai_field_with_choice_output.json similarity index 100% rename from changelog/entries/unreleased/bug/3851_allow_formula_field_to_reference_ai_field_with_choice_output.json rename to changelog/entries/2.0.0/bug/3851_allow_formula_field_to_reference_ai_field_with_choice_output.json diff --git a/changelog/entries/unreleased/bug/4104_allow_create_new_entry_in_linked_table_using_popup_window.json b/changelog/entries/2.0.0/bug/4104_allow_create_new_entry_in_linked_table_using_popup_window.json similarity index 100% rename from changelog/entries/unreleased/bug/4104_allow_create_new_entry_in_linked_table_using_popup_window.json rename to changelog/entries/2.0.0/bug/4104_allow_create_new_entry_in_linked_table_using_popup_window.json diff --git a/changelog/entries/unreleased/bug/4163_fix_csv_import_throwing_no_fetchall_attribute_error_and_respect_pr.json b/changelog/entries/2.0.0/bug/4163_fix_csv_import_throwing_no_fetchall_attribute_error_and_respect_pr.json similarity index 100% rename from changelog/entries/unreleased/bug/4163_fix_csv_import_throwing_no_fetchall_attribute_error_and_respect_pr.json rename to changelog/entries/2.0.0/bug/4163_fix_csv_import_throwing_no_fetchall_attribute_error_and_respect_pr.json diff --git a/changelog/entries/unreleased/bug/4185_fix_scope_issue_with_form_input_and_repeat_elements.json b/changelog/entries/2.0.0/bug/4185_fix_scope_issue_with_form_input_and_repeat_elements.json similarity index 100% rename from changelog/entries/unreleased/bug/4185_fix_scope_issue_with_form_input_and_repeat_elements.json rename to changelog/entries/2.0.0/bug/4185_fix_scope_issue_with_form_input_and_repeat_elements.json diff --git a/changelog/entries/unreleased/bug/4195_fix_formula_recursion_error_when_the_same_data_source_is_use.json b/changelog/entries/2.0.0/bug/4195_fix_formula_recursion_error_when_the_same_data_source_is_use.json similarity index 100% rename from changelog/entries/unreleased/bug/4195_fix_formula_recursion_error_when_the_same_data_source_is_use.json rename to changelog/entries/2.0.0/bug/4195_fix_formula_recursion_error_when_the_same_data_source_is_use.json diff --git a/changelog/entries/unreleased/bug/4268_fix_synchronised_button_loading_state_in_tables.json b/changelog/entries/2.0.0/bug/4268_fix_synchronised_button_loading_state_in_tables.json similarity index 100% rename from changelog/entries/unreleased/bug/4268_fix_synchronised_button_loading_state_in_tables.json rename to changelog/entries/2.0.0/bug/4268_fix_synchronised_button_loading_state_in_tables.json diff --git a/changelog/entries/unreleased/bug/fix_broken_menu_element.json b/changelog/entries/2.0.0/bug/fix_broken_menu_element.json similarity index 100% rename from changelog/entries/unreleased/bug/fix_broken_menu_element.json rename to changelog/entries/2.0.0/bug/fix_broken_menu_element.json diff --git a/changelog/entries/unreleased/bug/fix_collection_element_broken_when_they_are_in_container.json b/changelog/entries/2.0.0/bug/fix_collection_element_broken_when_they_are_in_container.json similarity index 100% rename from changelog/entries/unreleased/bug/fix_collection_element_broken_when_they_are_in_container.json rename to changelog/entries/2.0.0/bug/fix_collection_element_broken_when_they_are_in_container.json diff --git a/changelog/entries/unreleased/bug/fix_form_validation_with_phone_number_in_name.json b/changelog/entries/2.0.0/bug/fix_form_validation_with_phone_number_in_name.json similarity index 100% rename from changelog/entries/unreleased/bug/fix_form_validation_with_phone_number_in_name.json rename to changelog/entries/2.0.0/bug/fix_form_validation_with_phone_number_in_name.json diff --git a/changelog/entries/unreleased/bug/fix_workflow_action_configuration_broken.json b/changelog/entries/2.0.0/bug/fix_workflow_action_configuration_broken.json similarity index 100% rename from changelog/entries/unreleased/bug/fix_workflow_action_configuration_broken.json rename to changelog/entries/2.0.0/bug/fix_workflow_action_configuration_broken.json diff --git a/changelog/entries/unreleased/feature/2566_element_can_be_visually_hidden_on_complex_conditions.json b/changelog/entries/2.0.0/feature/2566_element_can_be_visually_hidden_on_complex_conditions.json similarity index 100% rename from changelog/entries/unreleased/feature/2566_element_can_be_visually_hidden_on_complex_conditions.json rename to changelog/entries/2.0.0/feature/2566_element_can_be_visually_hidden_on_complex_conditions.json diff --git a/changelog/entries/unreleased/feature/2586_regenerate_all_tableview_ai_field_values_at_once.json b/changelog/entries/2.0.0/feature/2586_regenerate_all_tableview_ai_field_values_at_once.json similarity index 100% rename from changelog/entries/unreleased/feature/2586_regenerate_all_tableview_ai_field_values_at_once.json rename to changelog/entries/2.0.0/feature/2586_regenerate_all_tableview_ai_field_values_at_once.json diff --git a/changelog/entries/unreleased/feature/3258_support_advanced_formulas_formulas_can_now_use_functions_and.json b/changelog/entries/2.0.0/feature/3258_support_advanced_formulas_formulas_can_now_use_functions_and.json similarity index 100% rename from changelog/entries/unreleased/feature/3258_support_advanced_formulas_formulas_can_now_use_functions_and.json rename to changelog/entries/2.0.0/feature/3258_support_advanced_formulas_formulas_can_now_use_functions_and.json diff --git a/changelog/entries/unreleased/feature/3450_multiple_collabolators_lookup_fields_filters.json b/changelog/entries/2.0.0/feature/3450_multiple_collabolators_lookup_fields_filters.json similarity index 100% rename from changelog/entries/unreleased/feature/3450_multiple_collabolators_lookup_fields_filters.json rename to changelog/entries/2.0.0/feature/3450_multiple_collabolators_lookup_fields_filters.json diff --git a/changelog/entries/unreleased/feature/3471_duration_lookup_field_type_filters.json b/changelog/entries/2.0.0/feature/3471_duration_lookup_field_type_filters.json similarity index 100% rename from changelog/entries/unreleased/feature/3471_duration_lookup_field_type_filters.json rename to changelog/entries/2.0.0/feature/3471_duration_lookup_field_type_filters.json diff --git a/changelog/entries/unreleased/feature/3732_ability_to_find_items_anywhere_in_the_workspace.json b/changelog/entries/2.0.0/feature/3732_ability_to_find_items_anywhere_in_the_workspace.json similarity index 100% rename from changelog/entries/unreleased/feature/3732_ability_to_find_items_anywhere_in_the_workspace.json rename to changelog/entries/2.0.0/feature/3732_ability_to_find_items_anywhere_in_the_workspace.json diff --git a/changelog/entries/unreleased/feature/3801_add_filters_support_for_ai_field.json b/changelog/entries/2.0.0/feature/3801_add_filters_support_for_ai_field.json similarity index 100% rename from changelog/entries/unreleased/feature/3801_add_filters_support_for_ai_field.json rename to changelog/entries/2.0.0/feature/3801_add_filters_support_for_ai_field.json diff --git a/changelog/entries/unreleased/feature/3810_indexing_not_available_for_this_field_type.json b/changelog/entries/2.0.0/feature/3810_indexing_not_available_for_this_field_type.json similarity index 100% rename from changelog/entries/unreleased/feature/3810_indexing_not_available_for_this_field_type.json rename to changelog/entries/2.0.0/feature/3810_indexing_not_available_for_this_field_type.json diff --git a/changelog/entries/unreleased/feature/3826_workspace_search.json b/changelog/entries/2.0.0/feature/3826_workspace_search.json similarity index 100% rename from changelog/entries/unreleased/feature/3826_workspace_search.json rename to changelog/entries/2.0.0/feature/3826_workspace_search.json diff --git a/changelog/entries/unreleased/feature/3829_date_dependencies_in_table.json b/changelog/entries/2.0.0/feature/3829_date_dependencies_in_table.json similarity index 100% rename from changelog/entries/unreleased/feature/3829_date_dependencies_in_table.json rename to changelog/entries/2.0.0/feature/3829_date_dependencies_in_table.json diff --git a/changelog/entries/unreleased/feature/4108_openai_custom_base_url.json b/changelog/entries/2.0.0/feature/4108_openai_custom_base_url.json similarity index 100% rename from changelog/entries/unreleased/feature/4108_openai_custom_base_url.json rename to changelog/entries/2.0.0/feature/4108_openai_custom_base_url.json diff --git a/changelog/entries/unreleased/feature/4115_ai_field_autoupdate.json b/changelog/entries/2.0.0/feature/4115_ai_field_autoupdate.json similarity index 100% rename from changelog/entries/unreleased/feature/4115_ai_field_autoupdate.json rename to changelog/entries/2.0.0/feature/4115_ai_field_autoupdate.json diff --git a/changelog/entries/unreleased/feature/4116_ai_node.json b/changelog/entries/2.0.0/feature/4116_ai_node.json similarity index 100% rename from changelog/entries/unreleased/feature/4116_ai_node.json rename to changelog/entries/2.0.0/feature/4116_ai_node.json diff --git a/changelog/entries/unreleased/feature/4181_show_primary_field_value_in_workspace_search_result_for_rows.json b/changelog/entries/2.0.0/feature/4181_show_primary_field_value_in_workspace_search_result_for_rows.json similarity index 100% rename from changelog/entries/unreleased/feature/4181_show_primary_field_value_in_workspace_search_result_for_rows.json rename to changelog/entries/2.0.0/feature/4181_show_primary_field_value_in_workspace_search_result_for_rows.json diff --git a/changelog/entries/unreleased/feature/4237_introduced_the_new_slack_send_message_workflow_action.json b/changelog/entries/2.0.0/feature/4237_introduced_the_new_slack_send_message_workflow_action.json similarity index 100% rename from changelog/entries/unreleased/feature/4237_introduced_the_new_slack_send_message_workflow_action.json rename to changelog/entries/2.0.0/feature/4237_introduced_the_new_slack_send_message_workflow_action.json diff --git a/changelog/entries/unreleased/feature/725_add_totp_2fa_support.json b/changelog/entries/2.0.0/feature/725_add_totp_2fa_support.json similarity index 100% rename from changelog/entries/unreleased/feature/725_add_totp_2fa_support.json rename to changelog/entries/2.0.0/feature/725_add_totp_2fa_support.json diff --git a/changelog/entries/unreleased/feature/added_github_actions_pipeline.json b/changelog/entries/2.0.0/feature/added_github_actions_pipeline.json similarity index 100% rename from changelog/entries/unreleased/feature/added_github_actions_pipeline.json rename to changelog/entries/2.0.0/feature/added_github_actions_pipeline.json diff --git a/changelog/entries/unreleased/feature/introduce_kuma_baserow_ai_assistant.json b/changelog/entries/2.0.0/feature/introduce_kuma_baserow_ai_assistant.json similarity index 100% rename from changelog/entries/unreleased/feature/introduce_kuma_baserow_ai_assistant.json rename to changelog/entries/2.0.0/feature/introduce_kuma_baserow_ai_assistant.json diff --git a/changelog/entries/unreleased/feature/introduced_sync_knowledge_base.json b/changelog/entries/2.0.0/feature/introduced_sync_knowledge_base.json similarity index 100% rename from changelog/entries/unreleased/feature/introduced_sync_knowledge_base.json rename to changelog/entries/2.0.0/feature/introduced_sync_knowledge_base.json diff --git a/changelog/entries/unreleased/feature/introducing_automation_builder_automate_repetitive_tasks_and.json b/changelog/entries/2.0.0/feature/introducing_automation_builder_automate_repetitive_tasks_and.json similarity index 100% rename from changelog/entries/unreleased/feature/introducing_automation_builder_automate_repetitive_tasks_and.json rename to changelog/entries/2.0.0/feature/introducing_automation_builder_automate_repetitive_tasks_and.json diff --git a/changelog/entries/unreleased/feature/workspace_modal_deactivated_ai_field.json b/changelog/entries/2.0.0/feature/workspace_modal_deactivated_ai_field.json similarity index 100% rename from changelog/entries/unreleased/feature/workspace_modal_deactivated_ai_field.json rename to changelog/entries/2.0.0/feature/workspace_modal_deactivated_ai_field.json diff --git a/changelog/entries/unreleased/refactor/3258_added_support_for_advanced_formulas.json b/changelog/entries/2.0.0/refactor/3258_added_support_for_advanced_formulas.json similarity index 100% rename from changelog/entries/unreleased/refactor/3258_added_support_for_advanced_formulas.json rename to changelog/entries/2.0.0/refactor/3258_added_support_for_advanced_formulas.json diff --git a/changelog/releases.json b/changelog/releases.json index df22e59ca7..b26ef8eb73 100644 --- a/changelog/releases.json +++ b/changelog/releases.json @@ -1,5 +1,9 @@ { "releases": [ + { + "name": "2.0.0", + "created_at": "2025-11-17" + }, { "name": "1.35.3", "created_at": "2025-10-08" diff --git a/deploy/all-in-one/README.md b/deploy/all-in-one/README.md index 9be93a4e69..a6e19bb9b1 100644 --- a/deploy/all-in-one/README.md +++ b/deploy/all-in-one/README.md @@ -15,7 +15,7 @@ tool gives you the powers of a developer without leaving your browser. [Vue.js](https://vuejs.org/) and [PostgreSQL](https://www.postgresql.org/). ```bash -docker run -v baserow_data:/baserow/data -p 80:80 -p 443:443 baserow/baserow:1.35.3 +docker run -v baserow_data:/baserow/data -p 80:80 -p 443:443 baserow/baserow:2.0.0 ``` ## Quick Reference @@ -52,7 +52,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:1.35.3 + baserow/baserow:2.0.0 ``` * Change `BASEROW_PUBLIC_URL` to `https://YOUR_DOMAIN` or `http://YOUR_IP` to enable @@ -75,7 +75,7 @@ docker run \ ## Image Feature Overview -The `baserow/baserow:1.35.3` image by default runs all of Baserow's various services in +The `baserow/baserow:2.0.0` image by default runs all of Baserow's various services in a single container for maximum ease of use. > This image is designed for simple single server deployments or simple container @@ -223,7 +223,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:1.35.3 + baserow/baserow:2.0.0 ``` ### Behind a reverse proxy already handling ssl @@ -236,7 +236,7 @@ docker run \ -v baserow_data:/baserow/data \ -p 80:80 \ --restart unless-stopped \ - baserow/baserow:1.35.3 + baserow/baserow:2.0.0 ``` ### On a nonstandard HTTP port @@ -249,7 +249,7 @@ docker run \ -v baserow_data:/baserow/data \ -p 3001:80 \ --restart unless-stopped \ - baserow/baserow:1.35.3 + baserow/baserow:2.0.0 ``` ### With an external PostgresSQL server @@ -268,7 +268,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:1.35.3 + baserow/baserow:2.0.0 ``` ### With an external Redis server @@ -287,7 +287,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:1.35.3 + baserow/baserow:2.0.0 ``` ### With an external email server @@ -307,7 +307,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:1.35.3 + baserow/baserow:2.0.0 ``` ### With a Postgresql server running on the same host as the Baserow docker container @@ -345,7 +345,7 @@ docker run \ -v baserow_data:/baserow/data \ -p 80:80 \ -p 443:443 \ - baserow/baserow:1.35.3 + baserow/baserow:2.0.0 ``` ### Supply secrets using files @@ -372,7 +372,7 @@ docker run \ -v baserow_data:/baserow/data \ -p 80:80 \ -p 443:443 \ - baserow/baserow:1.35.3 + baserow/baserow:2.0.0 ``` ### Start just the embedded database @@ -385,7 +385,7 @@ docker run -it \ --name baserow \ -p 5432:5432 \ -v baserow_data:/baserow/data \ - baserow/baserow:1.35.3 \ + baserow/baserow:2.0.0 \ start-only-db # Now get the password from docker exec -it baserow cat /baserow/data/.pgpass @@ -417,7 +417,7 @@ docker run -it \ --rm \ --name baserow \ -v baserow_data:/baserow/data \ - baserow/baserow:1.35.3 \ + baserow/baserow:2.0.0 \ backend-cmd-with-db manage dbshell ``` @@ -540,19 +540,19 @@ the command below. ```bash # First read the help message for this command -docker run -it --rm -v baserow_data:/baserow/data baserow/baserow:1.35.3 \ +docker run -it --rm -v baserow_data:/baserow/data baserow/baserow:2.0.0 \ backend-cmd-with-db backup --help # Stop Baserow instance docker stop baserow # The command below backs up Baserow to the backups folder in the baserow_data volume: -docker run -it --rm -v baserow_data:/baserow/data baserow/baserow:1.35.3 \ +docker run -it --rm -v baserow_data:/baserow/data baserow/baserow:2.0.0 \ backend-cmd-with-db backup -f /baserow/data/backups/backup.tar.gz # Or backup to a file on your host instead run something like: docker run -it --rm -v baserow_data:/baserow/data -v $PWD:/baserow/host \ - baserow/baserow:1.35.3 backend-cmd-with-db backup -f /baserow/host/backup.tar.gz + baserow/baserow:2.0.0 backend-cmd-with-db backup -f /baserow/host/backup.tar.gz ``` ### Restore only Baserow's Postgres Database @@ -568,13 +568,13 @@ docker stop baserow docker run -it --rm \ -v old_baserow_data_volume_containing_the_backup_tar_gz:/baserow/old_data \ -v new_baserow_data_volume_to_restore_into:/baserow/data \ - baserow/baserow:1.35.3 backend-cmd-with-db restore -f /baserow/old_data/backup.tar.gz + baserow/baserow:2.0.0 backend-cmd-with-db restore -f /baserow/old_data/backup.tar.gz # Or to restore from a file on your host instead run something like: docker run -it --rm \ -v baserow_data:/baserow/data -v \ $(pwd):/baserow/host \ - baserow/baserow:1.35.3 backend-cmd-with-db restore -f /baserow/host/backup.tar.gz + baserow/baserow:2.0.0 backend-cmd-with-db restore -f /baserow/host/backup.tar.gz ``` ## Running healthchecks on Baserow @@ -625,7 +625,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:1.35.3 + baserow/baserow:2.0.0 ``` Or you can just store it directly in the volume at `baserow_data/env` meaning it will be @@ -634,7 +634,7 @@ loaded whenever you mount in this data volume. ### Building your own image from Baserow ```dockerfile -FROM baserow/baserow:1.35.3 +FROM baserow/baserow:2.0.0 # Any .sh files found in /baserow/supervisor/env/ will be sourced and loaded at startup # useful for storing your own environment variable overrides. diff --git a/deploy/all-in-one/supervisor/start.sh b/deploy/all-in-one/supervisor/start.sh index 1d23a33122..bade988cc1 100755 --- a/deploy/all-in-one/supervisor/start.sh +++ b/deploy/all-in-one/supervisor/start.sh @@ -14,7 +14,7 @@ cat << EOF โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ•šโ–ˆโ–ˆโ–ˆโ•”โ–ˆโ–ˆโ–ˆโ•”โ• โ•šโ•โ•โ•โ•โ•โ• โ•šโ•โ• โ•šโ•โ•โ•šโ•โ•โ•โ•โ•โ•โ•โ•šโ•โ•โ•โ•โ•โ•โ•โ•šโ•โ• โ•šโ•โ• โ•šโ•โ•โ•โ•โ•โ• โ•šโ•โ•โ•โ•šโ•โ•โ• -Version 1.35.3 +Version 2.0.0 ========================================================================================= EOF diff --git a/deploy/cloudron/CloudronManifest.json b/deploy/cloudron/CloudronManifest.json index ae2cf00991..aeff8652c6 100644 --- a/deploy/cloudron/CloudronManifest.json +++ b/deploy/cloudron/CloudronManifest.json @@ -8,7 +8,7 @@ "contactEmail": "bram@baserow.io", "icon": "file://logo.png", "tags": ["no-code", "nocode", "database", "data", "collaborate", "airtable"], - "version": "1.35.3", + "version": "2.0.0", "healthCheckPath": "/api/_health/", "httpPort": 80, "addons": { diff --git a/deploy/cloudron/Dockerfile b/deploy/cloudron/Dockerfile index d49df6ba08..c017a2fef5 100644 --- a/deploy/cloudron/Dockerfile +++ b/deploy/cloudron/Dockerfile @@ -1,4 +1,4 @@ -ARG FROM_IMAGE=baserow/baserow:1.35.3 +ARG FROM_IMAGE=baserow/baserow:2.0.0 # This is pinned as version pinning is done by the CI setting FROM_IMAGE. # hadolint ignore=DL3006 FROM $FROM_IMAGE AS image_base diff --git a/deploy/helm/baserow/Chart.yaml b/deploy/helm/baserow/Chart.yaml index 483bad2ab7..57a074c584 100644 --- a/deploy/helm/baserow/Chart.yaml +++ b/deploy/helm/baserow/Chart.yaml @@ -3,7 +3,7 @@ name: baserow description: The open platform to create scalable databases and applicationsโ€”without coding. type: application version: 1.0.36 -appVersion: "1.35.3" +appVersion: "2.0.0" home: https://github.com/baserow/baserow/blob/develop/deploy/helm/baserow?ref_type=heads icon: https://baserow.io/img/favicon_192.png sources: diff --git a/deploy/helm/baserow/README.md b/deploy/helm/baserow/README.md index cb8620d485..a0fd635c1e 100644 --- a/deploy/helm/baserow/README.md +++ b/deploy/helm/baserow/README.md @@ -232,7 +232,7 @@ caddy: | ------------------------------------------------------------------ | --------------------------------------------------------------------------------------- | ----------------------- | | `global.baserow.imageRegistry` | Global Docker image registry | `baserow` | | `global.baserow.imagePullSecrets` | Global Docker registry secret names as an array | `[]` | -| `global.baserow.image.tag` | Global Docker image tag | `1.35.3` | +| `global.baserow.image.tag` | Global Docker image tag | `2.0.0` | | `global.baserow.serviceAccount.shared` | Set to true to share the service account between all application components. | `true` | | `global.baserow.serviceAccount.create` | Set to true to create a service account to share between all application components. | `true` | | `global.baserow.serviceAccount.name` | Configure a name for service account to share between all application components. | `baserow` | diff --git a/deploy/helm/baserow/charts/baserow-common/Chart.yaml b/deploy/helm/baserow/charts/baserow-common/Chart.yaml index a6c5ace7f2..d703238489 100644 --- a/deploy/helm/baserow/charts/baserow-common/Chart.yaml +++ b/deploy/helm/baserow/charts/baserow-common/Chart.yaml @@ -21,4 +21,4 @@ version: 1.0.36 # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "1.35.3" +appVersion: "2.0.0" diff --git a/deploy/helm/baserow/charts/baserow-common/README.md b/deploy/helm/baserow/charts/baserow-common/README.md index 1c290fb639..6fcfd8fc98 100644 --- a/deploy/helm/baserow/charts/baserow-common/README.md +++ b/deploy/helm/baserow/charts/baserow-common/README.md @@ -6,7 +6,7 @@ | ------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | | `global.baserow.imageRegistry` | Global Docker image registry | `baserow` | | `global.baserow.imagePullSecrets` | Global Docker registry secret names as an array | `[]` | -| `global.baserow.image.tag` | Global Docker image tag | `1.35.3` | +| `global.baserow.image.tag` | Global Docker image tag | `2.0.0` | | `global.baserow.serviceAccount.shared` | Set to true to share the service account between all application components. | `true` | | `global.baserow.serviceAccount.create` | Set to true to create a service account to share between all application components. | `true` | | `global.baserow.serviceAccount.name` | Configure a name for service account to share between all application components. | `baserow` | diff --git a/deploy/helm/baserow/charts/baserow-common/values.yaml b/deploy/helm/baserow/charts/baserow-common/values.yaml index 2b3b0eee96..99c07ac7e5 100644 --- a/deploy/helm/baserow/charts/baserow-common/values.yaml +++ b/deploy/helm/baserow/charts/baserow-common/values.yaml @@ -38,7 +38,7 @@ global: baserow: imageRegistry: baserow image: - tag: 1.35.3 + tag: 2.0.0 imagePullSecrets: [] serviceAccount: shared: true @@ -83,7 +83,7 @@ global: ## image: repository: baserow/baserow # Docker image repository - tag: 1.35.3 # Docker image tag + tag: 2.0.0 # Docker image tag pullPolicy: IfNotPresent # Image pull policy ## @param workingDir Application container working directory diff --git a/deploy/helm/baserow/values.yaml b/deploy/helm/baserow/values.yaml index bef335008d..b1afde922c 100644 --- a/deploy/helm/baserow/values.yaml +++ b/deploy/helm/baserow/values.yaml @@ -43,7 +43,7 @@ global: baserow: imageRegistry: baserow image: - tag: 1.35.3 + tag: 2.0.0 imagePullSecrets: [] serviceAccount: shared: true @@ -570,10 +570,10 @@ baserow-embeddings: resources: requests: cpu: 800m - memory: 256Mi + memory: 1536Mi limits: cpu: 1000m - memory: 512Mi + memory: 1536Mi readinessProbe: enabled: true httpGet: diff --git a/deploy/render/Dockerfile b/deploy/render/Dockerfile index 15aacab85a..efec50defc 100644 --- a/deploy/render/Dockerfile +++ b/deploy/render/Dockerfile @@ -1,4 +1,4 @@ -ARG FROM_IMAGE=baserow/baserow:1.35.3 +ARG FROM_IMAGE=baserow/baserow:2.0.0 # This is pinned as version pinning is done by the CI setting FROM_IMAGE. # hadolint ignore=DL3006 FROM $FROM_IMAGE AS image_base diff --git a/docker-compose.all-in-one.yml b/docker-compose.all-in-one.yml index 702f6a5b67..39bcfce10f 100644 --- a/docker-compose.all-in-one.yml +++ b/docker-compose.all-in-one.yml @@ -3,7 +3,7 @@ services: baserow: container_name: baserow - image: baserow/baserow:1.35.3 + image: baserow/baserow:2.0.0 environment: BASEROW_PUBLIC_URL: 'http://localhost' ports: diff --git a/docker-compose.no-caddy.yml b/docker-compose.no-caddy.yml index 6ee987c896..47fb46a71d 100644 --- a/docker-compose.no-caddy.yml +++ b/docker-compose.no-caddy.yml @@ -190,7 +190,7 @@ x-backend-variables: services: backend: - image: baserow/backend:1.35.3 + image: baserow/backend:2.0.0 restart: unless-stopped ports: - "${HOST_PUBLISH_IP:-127.0.0.1}:8000:8000" @@ -205,7 +205,7 @@ services: local: web-frontend: - image: baserow/web-frontend:1.35.3 + image: baserow/web-frontend:2.0.0 restart: unless-stopped ports: - "${HOST_PUBLISH_IP:-127.0.0.1}:3000:3000" @@ -246,7 +246,7 @@ services: local: celery: - image: baserow/backend:1.35.3 + image: baserow/backend:2.0.0 restart: unless-stopped environment: <<: *backend-variables @@ -267,7 +267,7 @@ services: local: celery-export-worker: - image: baserow/backend:1.35.3 + image: baserow/backend:2.0.0 restart: unless-stopped command: celery-exportworker environment: @@ -288,7 +288,7 @@ services: local: celery-beat-worker: - image: baserow/backend:1.35.3 + image: baserow/backend:2.0.0 restart: unless-stopped command: celery-beat environment: diff --git a/docker-compose.yml b/docker-compose.yml index 34c4374a9a..2065709f3d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -264,7 +264,7 @@ services: local: backend: - image: baserow/backend:1.35.3 + image: baserow/backend:2.0.0 restart: unless-stopped environment: @@ -278,7 +278,7 @@ services: local: web-frontend: - image: baserow/web-frontend:1.35.3 + image: baserow/web-frontend:2.0.0 restart: unless-stopped environment: BASEROW_PUBLIC_URL: ${BASEROW_PUBLIC_URL-http://localhost} @@ -322,7 +322,7 @@ services: local: celery: - image: baserow/backend:1.35.3 + image: baserow/backend:2.0.0 restart: unless-stopped environment: <<: *backend-variables @@ -343,7 +343,7 @@ services: local: celery-export-worker: - image: baserow/backend:1.35.3 + image: baserow/backend:2.0.0 restart: unless-stopped command: celery-exportworker environment: @@ -364,7 +364,7 @@ services: local: celery-beat-worker: - image: baserow/backend:1.35.3 + image: baserow/backend:2.0.0 restart: unless-stopped command: celery-beat environment: diff --git a/docs/assets/screenshot.png b/docs/assets/screenshot.png index 247755988d..f99133c32f 100644 Binary files a/docs/assets/screenshot.png and b/docs/assets/screenshot.png differ diff --git a/docs/assets/screenshot_kuma_form.png b/docs/assets/screenshot_kuma_form.png new file mode 100644 index 0000000000..d0c0d85b4f Binary files /dev/null and b/docs/assets/screenshot_kuma_form.png differ diff --git a/docs/installation/install-behind-apache.md b/docs/installation/install-behind-apache.md index d0ebc28935..b4488e5f62 100644 --- a/docs/installation/install-behind-apache.md +++ b/docs/installation/install-behind-apache.md @@ -3,7 +3,7 @@ If you have an [Apache server](https://www.apache.com/) this guide will explain how to configure it to pass requests through to Baserow. -We strongly recommend you use our `baserow/baserow:1.35.3` image or the example +We strongly recommend you use our `baserow/baserow:2.0.0` image or the example `docker-compose.yml` files (excluding the `.no-caddy.yml` variant) provided in our [git repository](https://github.com/baserow/baserow/tree/master/deploy/apache/). @@ -18,8 +18,8 @@ simplifies your life by: > If you do not want to use our embedded Caddy service behind your Apache then > make sure you are using one of the two following deployment methods: > -> * Your own container setup with our single service `baserow/backend:1.35.3` - and `baserow/web-frontend:1.35.3` images. +> * Your own container setup with our single service `baserow/backend:2.0.0` + and `baserow/web-frontend:2.0.0` images. > * Or our `docker-compose.no-caddy.yml` example file in our [git repository](https://github.com/baserow/baserow/tree/master/deploy/apache/). > > Then you should use **Option 2: Without our embedded Caddy** section instead. @@ -32,7 +32,7 @@ simplifies your life by: Follow this option if you are using: -* The all-in-one Baserow image `baserow/baserow:1.35.3` +* The all-in-one Baserow image `baserow/baserow:2.0.0` * Any of the example compose files found in the root of our git repository `docker-compose.yml`/`docker-compose.local-build.yml` /`docker-compose.all-in-one.yml` @@ -116,7 +116,7 @@ You should now be able to access Baserow on you configured subdomain. Follow this option if you are using: -* Our standalone `baserow/backend:1.35.3` and `baserow/web-frontend:1.35.3` images with +* Our standalone `baserow/backend:2.0.0` and `baserow/web-frontend:2.0.0` images with your own container orchestrator. * Or the `docker-compose.no-caddy.yml` example docker compose file in the root of our git repository. @@ -148,7 +148,7 @@ sudo systemctl restart apache2 You need to ensure user uploaded files are accessible in a folder for Apache to serve. In the rest of the guide we will use the example `/var/web` folder for this purpose. -If you are using the `baserow/backend:1.35.3` image then you can do this by adding +If you are using the `baserow/backend:2.0.0` image then you can do this by adding `-v /var/web:/baserow/data/media` to your normal `docker run` command used to launch the Baserow backend. diff --git a/docs/installation/install-behind-nginx.md b/docs/installation/install-behind-nginx.md index 69877a7b56..83874cc867 100644 --- a/docs/installation/install-behind-nginx.md +++ b/docs/installation/install-behind-nginx.md @@ -3,7 +3,7 @@ If you have an [Nginx server](https://www.nginx.com/) this guide will explain how to configure it to pass requests through to Baserow. -We strongly recommend you use our `baserow/baserow:1.35.3` image or the example +We strongly recommend you use our `baserow/baserow:2.0.0` image or the example `docker-compose.yml` files (excluding the `.no-caddy.yml` variant) provided in our [git repository](https://github.com/baserow/baserow/tree/master/deploy/nginx/). @@ -18,8 +18,8 @@ simplifies your life by: > If you do not want to use our embedded Caddy service behind your Nginx then > make sure you are using one of the two following deployment methods: > -> * Your own container setup with our single service `baserow/backend:1.35.3` - and `baserow/web-frontend:1.35.3` images. +> * Your own container setup with our single service `baserow/backend:2.0.0` + and `baserow/web-frontend:2.0.0` images. > * Or our `docker-compose.no-caddy.yml` example file in our [git repository](https://github.com/baserow/baserow/tree/master/deploy/nginx/). > > Then you should use **Option 2: Without our embedded Caddy** section instead. @@ -32,7 +32,7 @@ simplifies your life by: Follow this option if you are using: -* The all-in-one Baserow image `baserow/baserow:1.35.3` +* The all-in-one Baserow image `baserow/baserow:2.0.0` * Any of the example compose files found in the root of our git repository `docker-compose.yml`/`docker-compose.local-build.yml` /`docker-compose.all-in-one.yml` @@ -108,7 +108,7 @@ You should now be able to access Baserow on you configured subdomain. Follow this option if you are using: -* Our standalone `baserow/backend:1.35.3` and `baserow/web-frontend:1.35.3` images with +* Our standalone `baserow/backend:2.0.0` and `baserow/web-frontend:2.0.0` images with your own container orchestrator. * Or the `docker-compose.no-caddy.yml` example docker compose file in the root of our git repository. @@ -127,7 +127,7 @@ but you might have to run different commands. You need to ensure user uploaded files are accessible in a folder for Nginx to serve. In the rest of the guide we will use the example `/var/web` folder for this purpose. -If you are using the `baserow/backend:1.35.3` image then you can do this by adding +If you are using the `baserow/backend:2.0.0` image then you can do this by adding `-v /var/web:/baserow/data/media` to your normal `docker run` command used to launch the Baserow backend. diff --git a/docs/installation/install-on-aws.md b/docs/installation/install-on-aws.md index 992f1aace8..13a9f1dce6 100644 --- a/docs/installation/install-on-aws.md +++ b/docs/installation/install-on-aws.md @@ -49,7 +49,7 @@ overview this is what any AWS deployment of Baserow will need: ## Option 1) Deploying the all-in-one image to Fargate/ECS -The `baserow/baserow:1.35.3` image runs all of Baserowโ€™s various services inside the +The `baserow/baserow:2.0.0` image runs all of Baserowโ€™s various services inside the container for ease of use. This image is designed for single server deployments or simple deployments to @@ -67,7 +67,7 @@ Run. * You don't need to worry about configuring and linking together the different services that make up a Baserow deployment. * Configuring load balancers is easier as you can just directly route through all - requests to any horizontally scaled container running `baserow/baserow:1.35.3`. + requests to any horizontally scaled container running `baserow/baserow:2.0.0`. #### Cons @@ -75,7 +75,7 @@ Run. * Potentially higher resource usage overall as each of the all-in-one containers will come with its internal services, so you have less granular control over scaling specific services. - * For example if you deploy 10 `baserow/baserow:1.35.3` containers horizontally you + * For example if you deploy 10 `baserow/baserow:2.0.0` containers horizontally you by default end up with: * 10 web-frontend services * 10 backend services @@ -188,18 +188,18 @@ Generally, the Redis server is not the bottleneck in Baserow deployments as they Now create a target group on port 80 and ALB ready to route traffic to the Baserow containers. -When setting up the health check for the ALB the `baserow/baserow:1.35.3` container +When setting up the health check for the ALB the `baserow/baserow:2.0.0` container ,which you'll be deploying next, choose port `80` and health check URL `/api/_health/`. We recommend a long grace period of 900 seconds to account for first-time migrations being run on the first container's startup. #### 5) Launching Baserow on ECS/Fargate -Now we are ready to spin up our `baserow/baserow:1.35.3` containers. See below for a +Now we are ready to spin up our `baserow/baserow:2.0.0` containers. See below for a full task definition and environment variables. We recommend launching the containers with 2vCPUs and 4 GB of RAM each to start with. In short, you will want to: -1. Select the `baserow/baserow:1.35.3` image. +1. Select the `baserow/baserow:2.0.0` image. 2. Add a port mapping of `80` on TCP as this is where this images HTTP server is listening by default. 3. Mark the container as essential. @@ -244,7 +244,7 @@ container_definitions = < We recommend setting the timeout of each HTTP API request to 60 seconds in the @@ -484,7 +484,7 @@ This service is our HTTP REST API service. When creating the task definition you This service is our Websocket API service and when configuring the task definition you should: -1. Use the `baserow/backend:1.35.3` +1. Use the `baserow/backend:2.0.0` 2. Under docker configuration set `gunicorn` as the Command. 3. We recommend 2vCPUs and 4 GB of RAM per container to start with. 4. Map the container port `8000`/`TCP` @@ -496,7 +496,7 @@ should: This service is our asynchronous high priority task worker queue used for realtime collaboration and sending emails. -1. Use the `baserow/backend:1.35.3` image with `celery-worker` as the image command. +1. Use the `baserow/backend:2.0.0` image with `celery-worker` as the image command. 2. Under docker configuration set `celery-worker` as the Command. 3. No port mappings needed. 4. We recommend 2vCPUs and 4 GB of RAM per container to start with. @@ -509,7 +509,7 @@ This service is our asynchronous slow/low priority task worker queue for batch processes and running potentially slow operations for users like table exports and imports etc. -1. Use the `baserow/backend:1.35.3` image. +1. Use the `baserow/backend:2.0.0` image. 2. Under docker configuration set `celery-exportworker` as the Command. 3. No port mappings needed. 4. We recommend 2vCPUs and 4 GB of RAM per container to start with. @@ -520,7 +520,7 @@ imports etc. This service is our CRON task scheduler that can have multiple replicas deployed. -1. Use the `baserow/backend:1.35.3` image. +1. Use the `baserow/backend:2.0.0` image. 2. Under docker configuration set `celery-beat` as the Command. 3. No port mapping needed. 4. We recommend 1vCPUs and 3 GB of RAM per container to start with. @@ -537,7 +537,7 @@ This service is our CRON task scheduler that can have multiple replicas deployed Finally, this service is used for server side rendering and serving the frontend of Baserow. -1. Use the `baserow/web-frontend:1.35.3` image with no arguments needed. +1. Use the `baserow/web-frontend:2.0.0` image with no arguments needed. 2. Map the container port `3000` 3. We recommend 2vCPUs and 4 GB of RAM per container to start with. 4. Mark the container as essential. diff --git a/docs/installation/install-on-cloudron.md b/docs/installation/install-on-cloudron.md index 697366219d..f04f5002a5 100644 --- a/docs/installation/install-on-cloudron.md +++ b/docs/installation/install-on-cloudron.md @@ -46,7 +46,7 @@ $ cd baserow/deploy/cloudron After that you can install the Baserow Cloudron app by executing the following commands. ``` -$ cloudron install -l baserow.{YOUR_DOMAIN} --image baserow/cloudron:1.35.3 +$ cloudron install -l baserow.{YOUR_DOMAIN} --image baserow/cloudron:2.0.0 App is being installed. ... App is installed. @@ -89,7 +89,7 @@ the `baserow/deploy/cloudron` folder, you can upgrade your cloudron baserow serv the latest version by running the following command: ``` -cloudron update --app {YOUR_APP_ID} --image baserow/cloudron:1.35.3 +cloudron update --app {YOUR_APP_ID} --image baserow/cloudron:2.0.0 ``` > Note that you must replace the image with the most recent image of Baserow. The diff --git a/docs/installation/install-on-digital-ocean.md b/docs/installation/install-on-digital-ocean.md index dd037aac59..4d4f06b903 100644 --- a/docs/installation/install-on-digital-ocean.md +++ b/docs/installation/install-on-digital-ocean.md @@ -51,7 +51,7 @@ Navigate to the `Apps` page in the left sidebar of your Digital Ocean dashboard. on `Create App`, select `Docker Hub`, and fill out the following: Repository: `baserow/baserow` -Image tag or digest: `1.35.3` +Image tag or digest: `2.0.0` Click on `Next`, then on the `Edit` button of the `baserow-baserow` web service. Here you must change the HTTP Port to 80, and then click on `Back`. Click on the `Next` @@ -124,7 +124,7 @@ environment. In order to update the Baserow version, you simply need to replace the image tag. Navigate to the `Settings` tag of your created app, click on the `baserow-baserow` component, then click on the `Edit` button next to source, change the `Image tag` into -the desired version (latest is `1.35.3`), and click on save. The app will redeploy +the desired version (latest is `2.0.0`), and click on save. The app will redeploy with the latest version. ## External email server diff --git a/docs/installation/install-on-ubuntu.md b/docs/installation/install-on-ubuntu.md index 4f1de9d618..7640a99785 100644 --- a/docs/installation/install-on-ubuntu.md +++ b/docs/installation/install-on-ubuntu.md @@ -34,7 +34,7 @@ docker run -e BASEROW_PUBLIC_URL=http://localhost \ -v baserow_data:/baserow/data \ -p 80:80 \ -p 443:443 \ -baserow/baserow:1.35.3 +baserow/baserow:2.0.0 # Watch the logs for Baserow to come available by running: docker logs baserow ``` @@ -147,7 +147,7 @@ docker run \ -v /baserow/media:/baserow/data/media \ -p 80:80 \ -p 443:443 \ - baserow/baserow:1.35.3 + baserow/baserow:2.0.0 # Check the logs and wait for Baserow to become available docker logs baserow ``` diff --git a/docs/installation/install-using-standalone-images.md b/docs/installation/install-using-standalone-images.md index b7c532a916..47b4bb738c 100644 --- a/docs/installation/install-using-standalone-images.md +++ b/docs/installation/install-using-standalone-images.md @@ -10,9 +10,9 @@ Baserow consists of a number of services, two of which are built and provided as separate standalone images by us: -* `baserow/backend:1.35.3` which by default starts the Gunicorn Django backend server +* `baserow/backend:2.0.0` which by default starts the Gunicorn Django backend server for Baserow but is also used to start the celery workers and celery beat services. -* `baserow/web-frontend:1.35.3` which is a Nuxt server providing Server Side rendering +* `baserow/web-frontend:2.0.0` which is a Nuxt server providing Server Side rendering for the website. If you want to use your own container orchestration software like Kubernetes then these @@ -27,10 +27,10 @@ in the root of our repository. These are all the services you need to set up to run a Baserow using the standalone images: -* `baserow/backend:1.35.3` (default command is `gunicorn`) -* `baserow/backend:1.35.3` with command `celery-worker` -* `baserow/backend:1.35.3` with command `celery-export-worker` -* `baserow/web-frontend:1.35.3` (default command is `nuxt-local`) +* `baserow/backend:2.0.0` (default command is `gunicorn`) +* `baserow/backend:2.0.0` with command `celery-worker` +* `baserow/backend:2.0.0` with command `celery-export-worker` +* `baserow/web-frontend:2.0.0` (default command is `nuxt-local`) * A postgres database * A redis server diff --git a/docs/installation/install-with-docker-compose.md b/docs/installation/install-with-docker-compose.md index 8d59ccdccd..ac0cabc70e 100644 --- a/docs/installation/install-with-docker-compose.md +++ b/docs/installation/install-with-docker-compose.md @@ -15,7 +15,7 @@ guide on the specifics of how to work with this image. services: baserow: container_name: baserow - image: baserow/baserow:1.35.3 + image: baserow/baserow:2.0.0 environment: BASEROW_PUBLIC_URL: 'http://localhost' ports: diff --git a/docs/installation/install-with-docker.md b/docs/installation/install-with-docker.md index 6d113fc1ac..0e921bccc3 100644 --- a/docs/installation/install-with-docker.md +++ b/docs/installation/install-with-docker.md @@ -29,7 +29,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:1.35.3 + baserow/baserow:2.0.0 ``` * Change `BASEROW_PUBLIC_URL` to `https://YOUR_DOMAIN` or `http://YOUR_IP` to enable @@ -52,7 +52,7 @@ docker run \ ## Image Feature Overview -The `baserow/baserow:1.35.3` image by default runs all of Baserow's various services in +The `baserow/baserow:2.0.0` image by default runs all of Baserow's various services in a single container for maximum ease of use. > This image is designed for simple single server deployments or simple container @@ -200,7 +200,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:1.35.3 + baserow/baserow:2.0.0 ``` ### Behind a reverse proxy already handling ssl @@ -213,7 +213,7 @@ docker run \ -v baserow_data:/baserow/data \ -p 80:80 \ --restart unless-stopped \ - baserow/baserow:1.35.3 + baserow/baserow:2.0.0 ``` ### On a nonstandard HTTP port @@ -226,7 +226,7 @@ docker run \ -v baserow_data:/baserow/data \ -p 3001:80 \ --restart unless-stopped \ - baserow/baserow:1.35.3 + baserow/baserow:2.0.0 ``` ### With an external PostgresSQL server @@ -245,7 +245,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:1.35.3 + baserow/baserow:2.0.0 ``` ### With an external Redis server @@ -264,7 +264,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:1.35.3 + baserow/baserow:2.0.0 ``` ### With an external email server @@ -284,7 +284,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:1.35.3 + baserow/baserow:2.0.0 ``` ### With a Postgresql server running on the same host as the Baserow docker container @@ -322,7 +322,7 @@ docker run \ -v baserow_data:/baserow/data \ -p 80:80 \ -p 443:443 \ - baserow/baserow:1.35.3 + baserow/baserow:2.0.0 ``` ### Supply secrets using files @@ -349,7 +349,7 @@ docker run \ -v baserow_data:/baserow/data \ -p 80:80 \ -p 443:443 \ - baserow/baserow:1.35.3 + baserow/baserow:2.0.0 ``` ### Start just the embedded database @@ -362,7 +362,7 @@ docker run -it \ --name baserow \ -p 5432:5432 \ -v baserow_data:/baserow/data \ - baserow/baserow:1.35.3 \ + baserow/baserow:2.0.0 \ start-only-db # Now get the password from docker exec -it baserow cat /baserow/data/.pgpass @@ -394,7 +394,7 @@ docker run -it \ --rm \ --name baserow \ -v baserow_data:/baserow/data \ - baserow/baserow:1.35.3 \ + baserow/baserow:2.0.0 \ backend-cmd-with-db manage dbshell ``` @@ -517,19 +517,19 @@ the command below. ```bash # First read the help message for this command -docker run -it --rm -v baserow_data:/baserow/data baserow/baserow:1.35.3 \ +docker run -it --rm -v baserow_data:/baserow/data baserow/baserow:2.0.0 \ backend-cmd-with-db backup --help # Stop Baserow instance docker stop baserow # The command below backs up Baserow to the backups folder in the baserow_data volume: -docker run -it --rm -v baserow_data:/baserow/data baserow/baserow:1.35.3 \ +docker run -it --rm -v baserow_data:/baserow/data baserow/baserow:2.0.0 \ backend-cmd-with-db backup -f /baserow/data/backups/backup.tar.gz # Or backup to a file on your host instead run something like: docker run -it --rm -v baserow_data:/baserow/data -v $PWD:/baserow/host \ - baserow/baserow:1.35.3 backend-cmd-with-db backup -f /baserow/host/backup.tar.gz + baserow/baserow:2.0.0 backend-cmd-with-db backup -f /baserow/host/backup.tar.gz ``` ### Restore only Baserow's Postgres Database @@ -545,13 +545,13 @@ docker stop baserow docker run -it --rm \ -v old_baserow_data_volume_containing_the_backup_tar_gz:/baserow/old_data \ -v new_baserow_data_volume_to_restore_into:/baserow/data \ - baserow/baserow:1.35.3 backend-cmd-with-db restore -f /baserow/old_data/backup.tar.gz + baserow/baserow:2.0.0 backend-cmd-with-db restore -f /baserow/old_data/backup.tar.gz # Or to restore from a file on your host instead run something like: docker run -it --rm \ -v baserow_data:/baserow/data -v \ $(pwd):/baserow/host \ - baserow/baserow:1.35.3 backend-cmd-with-db restore -f /baserow/host/backup.tar.gz + baserow/baserow:2.0.0 backend-cmd-with-db restore -f /baserow/host/backup.tar.gz ``` ## Running healthchecks on Baserow @@ -602,7 +602,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:1.35.3 + baserow/baserow:2.0.0 ``` Or you can just store it directly in the volume at `baserow_data/env` meaning it will be @@ -611,7 +611,7 @@ loaded whenever you mount in this data volume. ### Building your own image from Baserow ```dockerfile -FROM baserow/baserow:1.35.3 +FROM baserow/baserow:2.0.0 # Any .sh files found in /baserow/supervisor/env/ will be sourced and loaded at startup # useful for storing your own environment variable overrides. diff --git a/docs/installation/install-with-helm.md b/docs/installation/install-with-helm.md index fae3b38ea8..6dd4c62ac4 100644 --- a/docs/installation/install-with-helm.md +++ b/docs/installation/install-with-helm.md @@ -133,7 +133,7 @@ You can specify a particular Baserow version by updating your `config.yaml`: ```yaml global: baserow: - image: 1.35.3 + image: 2.0.0 ``` Or specify the chart version directly: @@ -433,4 +433,4 @@ We recommend that you: 1. Set `config.publicFrontendUrl=https://your-baserow-servers-domain.com` 2. Set `config.publicBackendUrl=https://api.your-baserow-servers-domain.com` 3. Configure all the relevant `backend.config.aws` variables to upload and serve user - files in a S3 compatible service of your own choosing. \ No newline at end of file + files in a S3 compatible service of your own choosing. diff --git a/docs/installation/install-with-k8s.md b/docs/installation/install-with-k8s.md index d6ccba6931..9a5bf1eb37 100644 --- a/docs/installation/install-with-k8s.md +++ b/docs/installation/install-with-k8s.md @@ -165,7 +165,7 @@ spec: topologyKey: "kubernetes.io/hostname" containers: - name: backend-asgi - image: baserow/backend:1.35.3 + image: baserow/backend:2.0.0 workingDir: /baserow args: - "gunicorn" @@ -222,7 +222,7 @@ spec: topologyKey: "kubernetes.io/hostname" containers: - name: backend-wsgi - image: baserow/backend:1.35.3 + image: baserow/backend:2.0.0 workingDir: /baserow args: - "gunicorn-wsgi" @@ -281,7 +281,7 @@ spec: topologyKey: "kubernetes.io/hostname" containers: - name: backend-worker - image: baserow/backend:1.35.3 + image: baserow/backend:2.0.0 args: - "celery-worker" imagePullPolicy: Always @@ -298,7 +298,7 @@ spec: - secretRef: name: YOUR_ENV_SECRET_REF - name: backend-export-worker - image: baserow/backend:1.35.3 + image: baserow/backend:2.0.0 args: - "celery-exportworker" imagePullPolicy: Always @@ -315,7 +315,7 @@ spec: - secretRef: name: YOUR_ENV_SECRET_REF - name: backend-beat-worker - image: baserow/backend:1.35.3 + image: baserow/backend:2.0.0 args: - "celery-beat" imagePullPolicy: Always @@ -356,7 +356,7 @@ spec: topologyKey: "kubernetes.io/hostname" containers: - name: web-frontend - image: baserow/web-frontend:1.35.3 + image: baserow/web-frontend:2.0.0 args: - nuxt ports: diff --git a/docs/installation/install-with-traefik.md b/docs/installation/install-with-traefik.md index f550f53e18..52cca1de37 100644 --- a/docs/installation/install-with-traefik.md +++ b/docs/installation/install-with-traefik.md @@ -10,7 +10,7 @@ See below for an example docker-compose file that will enable Baserow with Traef ``` services: baserow: - image: baserow/baserow:1.35.3 + image: baserow/baserow:2.0.0 container_name: baserow labels: # Explicitly tell Traefik to expose this container diff --git a/docs/installation/supported.md b/docs/installation/supported.md index 2d1f74c283..e01c5d05cc 100644 --- a/docs/installation/supported.md +++ b/docs/installation/supported.md @@ -8,7 +8,7 @@ Software versions are divided into the following groups: before the release. * `Recommended`: Recommended software for the best experience. -## Baserow 1.35.3 +## Baserow 2.0.0 | Dependency | Supported versions | Tested versions | Recommended versions | diff --git a/docs/plugins/creation.md b/docs/plugins/creation.md index ff57698b07..84b7acf406 100644 --- a/docs/plugins/creation.md +++ b/docs/plugins/creation.md @@ -122,7 +122,7 @@ containing metadata about your plugin. It should have the following JSON structu { "name": "TODO", "version": "TODO", - "supported_baserow_versions": "1.35.3", + "supported_baserow_versions": "2.0.0", "plugin_api_version": "0.0.1-alpha", "description": "TODO", "author": "TODO", diff --git a/docs/plugins/installation.md b/docs/plugins/installation.md index 1a439d809e..a59243ce35 100644 --- a/docs/plugins/installation.md +++ b/docs/plugins/installation.md @@ -36,7 +36,7 @@ build your own image based off the Baserow all-in-one image. 4. Next copy the contents shown into your `Dockerfile` ```dockerfile -FROM baserow/baserow:1.35.3 +FROM baserow/baserow:2.0.0 # You can install a plugin found in a git repo: RUN /baserow/plugins/install_plugin.sh \ @@ -70,9 +70,9 @@ RUN /baserow/plugins/install_plugin.sh \ 5. Choose which of the `RUN` commands you'd like to use to install your plugins and delete the rest, replace the example URLs with ones pointing to your plugin. 6. Now build your custom Baserow with the plugin installed by running: - `docker build -t my-customized-baserow:1.35.3 .` + `docker build -t my-customized-baserow:2.0.0 .` 7. Finally, you can run your new customized image just like the normal Baserow image: - `docker run -p 80:80 -v baserow_data:/baserow/data my-customized-baserow:1.35.3` + `docker run -p 80:80 -v baserow_data:/baserow/data my-customized-baserow:2.0.0` ### Installing in an existing Baserow all-in-one container @@ -111,7 +111,7 @@ docker run \ -v baserow_data:/baserow/data \ # ... All your normal launch args go here -e BASEROW_PLUGIN_GIT_REPOS=https://example.com/example/plugin1.git,https://example.com/example/plugin2.git - baserow:1.35.3 + baserow:2.0.0 ``` These variables will only trigger and installation when found on startup of the @@ -120,7 +120,7 @@ container. To uninstall a plugin you must still manually follow the instructions ### Caveats when installing into an existing container If you ever delete the container you've installed plugins into at runtime and re-create -it, the new container is created from the `baserow/baserow:1.35.3` image which does not +it, the new container is created from the `baserow/baserow:2.0.0` image which does not have any plugins installed. However, when a plugin is installed at runtime or build time it is stored in the @@ -135,7 +135,7 @@ scratch. ### Installing into standalone Baserow service images -Baserow also provides `baserow/backend:1.35.3` and `baserow/web-frontend:1.35.3` images +Baserow also provides `baserow/backend:2.0.0` and `baserow/web-frontend:2.0.0` images which only run the respective backend/celery/web-frontend services. These images are used for more advanced self-hosted deployments like a multi-service docker-compose, k8s etc. @@ -145,8 +145,8 @@ used with docker run and a specified command and the plugin env vars shown above example: ``` -docker run --rm baserow/backend:1.35.3 install-plugin ... -docker run -e BASEROW_PLUGIN_GIT_REPOS=https://example.com/example/plugin1.git,https://example.com/example/plugin2.git --rm baserow/backend:1.35.3 +docker run --rm baserow/backend:2.0.0 install-plugin ... +docker run -e BASEROW_PLUGIN_GIT_REPOS=https://example.com/example/plugin1.git,https://example.com/example/plugin2.git --rm baserow/backend:2.0.0 ``` You can use these scripts exactly as you would in the sections above to install a plugin @@ -169,13 +169,13 @@ associated data permanently. [Docker install guide backup section](../installation/install-with-docker.md) for more details on how to do this. 2. Stop your Baserow server first - `docker stop baserow` -3. `docker run --rm -v baserow_data:/baserow/data baserow:1.35.3 uninstall-plugin plugin_name` +3. `docker run --rm -v baserow_data:/baserow/data baserow:2.0.0 uninstall-plugin plugin_name` 4. Now the plugin has uninstalled itself and all associated data has been removed. 5. Edit your custom `Dockerfile` and remove the plugin. -6. Rebuild your image - `docker build -t my-customized-baserow:1.35.3 .` +6. Rebuild your image - `docker build -t my-customized-baserow:2.0.0 .` 7. Remove the old container using the old image - `docker rm baserow` 8. Run your new image with the plugin removed - - `docker run -p 80:80 -v baserow_data:/baserow/data my-customized-baserow:1.35.3` + - `docker run -p 80:80 -v baserow_data:/baserow/data my-customized-baserow:2.0.0` 9. If you fail to do this if you ever recreate the container, your custom image still has the plugin installed and the new container will start up again with the plugin re-installed. @@ -207,7 +207,7 @@ associated data permanently. restart as the environment variable will still contain the old plugin. To do this you must: 1. `docker stop baserow` - 2. `docker run --rm -v baserow_data:/baserow/data baserow:1.35.3 uninstall-plugin plugin_name` + 2. `docker run --rm -v baserow_data:/baserow/data baserow:2.0.0 uninstall-plugin plugin_name` 3. Now the plugin has uninstalled itself and all associated data has been removed. 4. Finally, recreate your Baserow container by using the same `docker run` command you launched it with, just make sure the plugin you uninstalled has been removed @@ -222,7 +222,7 @@ check what plugins are currently installed. docker run \ --rm \ -v baserow_data:/baserow/data \ - baserow:1.35.3 list-plugins + baserow:2.0.0 list-plugins # or on a running container diff --git a/enterprise/backend/pyproject.toml b/enterprise/backend/pyproject.toml index c511db156b..8c50f46ddf 100644 --- a/enterprise/backend/pyproject.toml +++ b/enterprise/backend/pyproject.toml @@ -12,7 +12,7 @@ description="""Baserow is an open source no-code database tool and Airtable \ # mixed license license={file="LICENSE"} requires-python=">=3.11" -version = "1.35.3" +version = "2.0.0" classifiers = [] [project.urls] diff --git a/enterprise/backend/website_export.csv b/enterprise/backend/website_export.csv index e7769c54a0..d534a1a4cb 100644 --- a/enterprise/backend/website_export.csv +++ b/enterprise/backend/website_export.csv @@ -5,7 +5,7 @@ This guide maps out your journey from Baserow beginner to power user. Learn the ## Your Baserow learning journey -Baserow gives you four powerful builders that work together inside workspaces: [Database Builder][1] for organizing data, [Application Builder][2] for creating custom apps, [Dashboard Builder][3] for visualizing metrics, and [Automation Builder][4] for streamlining workflows. +Baserow gives you powerful builders that work together inside workspaces: [Database Builder][1] for organizing data, [Application Builder][2] for creating custom apps, [Dashboard Builder][3] for visualizing metrics, and [Automation Builder][4] for streamlining workflows. Your first step is understanding how these pieces fit together. This guide shows you the optimal path to learn each one, with practical milestones along the way. @@ -13,9 +13,9 @@ Your first step is understanding how these pieces fit together. This guide shows ## Understanding the Baserow workspace -Everything in Baserow lives inside a [workspace][5], your collaborative environment where teams organize projects, databases, applications, dashboards, and automations. +Everything in Baserow lives inside a [workspace][5], your collaborative environment where teams organize projects, databases, applications, dashboards, and automations. -Inside each workspace, you can create and manage four types of builders that form the foundation of Baserow: +Inside each workspace, you can create and manage builders that form the foundation of Baserow: - **[Database Builder][1]**: Structure and organize your data with tables, fields, and relationships. Databases provide the data foundation. - **[Application Builder][2]**: Design custom web applications without writing code. Applications present that data to users. @@ -24,11 +24,11 @@ Inside each workspace, you can create and manage four types of builders that for ## Step 1: Your account and first workspace -Before building anything, you need access to Baserow. You can choose [Baserow Cloud][6] for instant access with zero setup, or [install a self-hosted version][7] for complete control over your infrastructure. +Before building anything, you need access to Baserow. You can choose [Baserow Cloud][6] for instant access with zero setup, or [install a self-hosted version][7] for complete control over your infrastructure. > Cloud is recommended for quick starts, while self-hosting works best for organizations with specific security or compliance requirements. -Once you're logged in, you'll land on the Baserow dashboard, your home base for accessing everything you create. +Once you're logged in, you'll land on the Baserow home page, your home base for accessing everything you create. The first time you log in, Baserow may create a default workspace for you, or you can [set up a new workspace][8] from scratch. This is where you'll organize all your databases, applications, dashboards, and automations. @@ -40,9 +40,9 @@ The [Database Builder][1] is where most Baserow users start their journey. Here' A database contains multiple tables, each representing a different type of information. Within each table, you define fields (columns) that specify what information you're tracking: text, numbers, dates, formulas, and more. -The real power emerges when you create relationships between tables using [link to table fields][9], building a relational structure that mirrors how your business actually works. +The real power emerges when you create relationships between tables using [link to table fields][9], building a relational structure that mirrors how your business actually works. -Baserow also offers multiple ways to visualize the same underlying data through [views][10]. The same table can appear as a spreadsheet-like grid for data entry, a kanban board for project management, a calendar for scheduling, a gallery for visual content, or a form for collecting information from others. +Baserow also offers multiple ways to visualize the same underlying data through [views][10]. The same table can appear as a spreadsheet-like grid for data entry, a kanban board for project management, a calendar for scheduling, a gallery for visual content, or a form for collecting information from others. **Start here:** - [Introduction to databases in Baserow][11] @@ -77,7 +77,7 @@ What makes this powerful is that you're building real applications, not just vie ## Step 5: Visualize data with dashboards -The [Dashboard Builder][3] focuses specifically on analytics and monitoring. Dashboards present key metrics, trends, and insights at a glance. +The [Dashboard Builder][3] focuses specifically on analytics and monitoring. Dashboards present key metrics, trends, and insights at a glance. Dashboards excel at giving teams shared visibility into performance. Each dashboard draws live data from your databases, automatically updating as your underlying data changes. @@ -88,9 +88,9 @@ Dashboards excel at giving teams shared visibility into performance. Each dashbo ## Step 6: Automate workflows -The [Automation Builder][4] brings everything together by creating workflows that respond to events and connect different systems. +The [Automation Builder][4] brings everything together by creating workflows that respond to events and connect different systems. -Automations work with triggers (what starts the workflow), filters (conditions that must be met), and actions (what happens). +Automations work with triggers (what starts the workflow), filters (conditions that must be met), and actions (what happens). This is where Baserow becomes more than a database or application platform, it becomes a central hub that orchestrates your business processes. Combined with [webhooks][27] and the [Baserow API][28], automations can integrate with thousands of external services. @@ -102,7 +102,7 @@ This is where Baserow becomes more than a database or application platform, it b ## Step 7: Collaborate with your team -Baserow shines brightest when teams work together. [Invite collaborators][30] to your workspace and assign roles that control what they can access and modify. +Baserow shines brightest when teams work together. [Invite collaborators][30] to your workspace and assign roles that control what they can access and modify. [Role-based permissions][31] become more sophisticated with paid plans, allowing you to set different access levels at the workspace, database, or even individual table level. This means you can share specific parts of your workspace with external clients, give contractors access to relevant databases only, or ensure sensitive information remains visible to authorized team members. @@ -116,7 +116,7 @@ You can also [share individual views publicly][32] without requiring recipients ## Bringing it all together: A complete example -Here's how these four builders work together in practice. Imagine you're building a customer support system: +Here's how these core builders work together in practice. Imagine you're building a customer support system: **Database Builder**: Create tables for Tickets, Customers, and Support Agents. Define fields for ticket status, priority, description, timestamps, and relationships linking tickets to customers and agents. @@ -142,7 +142,7 @@ Workspaces contain everything, they're the top-level organizational unit. Inside Absolutely. Many users only need the Database Builder for organizing information, using different views to interact with their data. The Application Builder is optional, it's there when you need custom interfaces for specific users or workflows, but the database alone is a complete, powerful tool. -### Do I need to learn all four builders at once? +### Do I need to learn all core builders at once? No. The Database Builder is fundamental to everything else. Once you're comfortable creating tables, fields, and views, explore whichever builder solves your most pressing need: applications for custom tools, dashboards for metrics, or automations for efficiency. You can adopt each builder gradually as your needs grow. @@ -303,7 +303,7 @@ Bring your data to life by creating visual dashboards. This section guides you t * **[Go to Dashboard Builder โ†’][10]** ### Application Builder -Build custom internal tools, client portals, or web applications on top of your Baserow database without writing code. +Build custom internal tools, client portals, or web applications on top of your Baserow database without writing code. * **[Go to Application Builder โ†’][11]** @@ -323,7 +323,7 @@ Create ""if-this-then-that"" style workflows to automate repetitive tasks and in Understand how to manage your data's lifecycle and security. This covers [deleting and recovering data][13] from the trash, managing database [snapshots][14] for backups, and reviewing detailed [audit logs][15]. ### Collaboration & Permissions -Learn how to manage team members, assign role-based permissions, and share your data publicly or privately. +Learn how to manage team members, assign role-based permissions, and share your data publicly or privately. **Collaboration**: In this chapter, we'll guide you on how to leverage Baserow to streamline teamwork and boost productivity. Learn how to invite collaborators, manage workspace members, create teams, and share your work publicly. @@ -334,11 +334,11 @@ Learn how to manage team members, assign role-based permissions, and share your * **[Go to Role-based Permissions โ†’][17]** ### Integrations & API -Connect Baserow to over 4,000 apps using our webhooks, API, and native integrations with tools like Zapier and Make. Baserow takes an API-first approach, providing you with comprehensive API documentation, webhooks, and database tokens. +Connect Baserow to over 4,000 apps using our webhooks, API, and native integrations with tools like Zapier and Make. Baserow takes an API-first approach, providing you with comprehensive API documentation, webhooks, and database tokens. * **[Go to Integrations & API โ†’][18]** ### Enterprise, Billing, & Account -Manage your subscription, set up enterprise features like SSO, and configure your personal account settings. +Manage your subscription, set up enterprise features like SSO, and configure your personal account settings. **Billing**: In this chapter, we'll cover how you can unlock paid features in Baserow by subscribing to a paid plan. Learn how to use and manage your subscriptions to access Baserow's paid features for both cloud and self-hosted instances. @@ -542,7 +542,7 @@ A **trigger** is the starting event that causes a workflow to run (e.g., ""when ### What does ""billable user"" mean for my subscription? -Each billable user counts toward your plan's user limit. Guest access through public view sharing doesn't count toward your limit. Learn more about [billable users][4]. +Each billable user counts toward your plan's user limit. Guest access through public view sharing doesn't count toward your limit. Learn more about [billable users][4]. ### Can I use automation without the Application Builder? @@ -609,7 +609,7 @@ Create workspaces to organize your databases, applications, and team collaborati ## Overview -Workspaces are the foundation of your Baserow organization, every database, application, dashboard, and automation lives inside a workspace. +Workspaces are the foundation of your Baserow organization, every database, application, dashboard, and automation lives inside a workspace. Creating a workspace is the first step toward building your data infrastructure. This guide walks through workspace creation, configuration, and management to help you establish effective organizational structures. @@ -639,9 +639,9 @@ A workspace is an organized, collaborative environments for your team. Before cr ## Create a workspace -Creating a workspace automatically makes you the workspace admin with full control. When you create a new workspace, you become the workspace admin with full permissions and can invite collaborators. +Creating a workspace automatically makes you the workspace admin with full control. When you create a new workspace, you become the workspace admin with full permissions and can invite collaborators. - 1. Navigate to your Baserow home page + 1. Navigate to your Baserow home page 2. Click on your workspace in the top-left corner and click **Add new workspace**. 3. Enter a descriptive name for your workspace 4. Click **Enter** or click outside the name field to save @@ -691,7 +691,7 @@ Review workspace members periodically, especially after project completions, tea Once your workspace is created, start building: - **[Add a database](/user-docs/intro-to-databases)**: Click **+ Create new** โ†’ Select **Database** โ†’ Choose to start from scratch or use a template โ†’ Begin adding tables and fields. - - **[Build an application](/user-docs/application-builder-overview)**: Click **+ Create new** โ†’ Select **Application** โ†’ Design pages and add elements โ†’ Connect to your database data. + - **[Build an application](/user-docs/application-builder-overview)**: Click **+ Create new** โ†’ Select **Application** โ†’ Design pages and add elements โ†’ Connect to your database data. - **[Create a dashboard][9]**: Click **+ Create new** โ†’ Select **Dashboard** โ†’ Add widgets and connect data sources โ†’ Monitor your key metrics - **[Set up automations][10]**: Click **+ Create new** โ†’ Select **Automation** โ†’ Configure triggers and actions โ†’ Automate workflows @@ -703,7 +703,7 @@ On **Baserow Cloud**, anyone with an account can create workspaces by default. O ### How many workspaces can I create? -There's no limit on workspace creation. +There's no limit on workspace creation. ### What's the difference between Workspace Admin and Instance Admin? @@ -957,7 +957,7 @@ Baserow makes it easy to leave workspaces while ensuring no workspace is left wi ## Overview -Leaving a workspace removes your access to all databases and applications within that workspace, but the workspace itself remains active for other users. This is useful when you need to exit a project or team but want others to continue working. +Leaving a workspace removes your access to all databases and applications within that workspace, but the workspace itself remains active for other users. This is useful when you need to exit a project or team but want others to continue working. If you're the last admin, you'll need to assign another admin before leaving, or consider deleting the workspace entirely. @@ -1066,9 +1066,9 @@ Admin permission is required. Only workspace admins can delete workspaces. If yo ## Overview -Deleting a workspace removes it along with all databases, tables, applications, and data it contains. While Baserow provides a retention period to recover deleted workspaces from the trash, deletion becomes irreversible after this window closes. +Deleting a workspace removes it along with all databases, tables, applications, and data it contains. While Baserow provides a retention period to recover deleted workspaces from the trash, deletion becomes irreversible after this window closes. -This action affects all users in the workspace, so consider alternatives like leaving the workspace or transferring admin ownership if you simply need to step away. +This action affects all users in the workspace, so consider alternatives like leaving the workspace or transferring admin ownership if you simply need to step away. ![Workspace deletion menu location](https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/4b695b1f-f545-4927-be45-f3d32af39776/export_and_import_of_workspaces.webp) @@ -1165,7 +1165,7 @@ Go to the workspace **Members** page in settings. If your role shows ""Admin,"" Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. - - [Ask the Baserow community](https://community.baserow.io) + - [Ask the Baserow community](https://community.baserow.io) - [Contact support](https://baserow.io/contact) for questions about Baserow or help with your account.",,baserow_user_docs,https://baserow.io/user-docs/delete-a-workspace 9,Create a database,create-a-database,Create a Baserow database,"# Create a database in Baserow @@ -1178,7 +1178,7 @@ Learn ways to create databases in Baserow, from scratch, from templates, by dupl ## Overview -Creating a database in Baserow is straightforward and flexible. Whether you're starting fresh, using a pre-built template, copying an existing structure, or migrating from another platform, Baserow provides multiple pathways to get your project running quickly. +Creating a database in Baserow is straightforward and flexible. Whether you're starting fresh, using a pre-built template, copying an existing structure, or migrating from another platform, Baserow provides multiple pathways to get your project running quickly. Each method suits different scenarios: start from scratch for complete customization, use templates for quick setup, duplicate for consistency, or import to preserve existing work. @@ -1203,12 +1203,12 @@ Ask yourself: ## How to create a database -| Method | Best for | +| Method | Best for | |--------|----------| -| **From scratch** | Custom projects with unique requirements | -| **From template** | Common use cases (CRM, project management) | -| **Duplicate existing** | Replicating structure for new projects | -| **Import from Airtable** | Migrating from Airtable with existing data | +| **From scratch** | Custom projects with unique requirements | +| **From template** | Common use cases (CRM, project management) | +| **Duplicate existing** | Replicating structure for new projects | +| **Import from Airtable** | Migrating from Airtable with existing data | @@ -1244,7 +1244,7 @@ Learn more about how to [add database from template](/user-docs/add-database-fro ### Method 3: Duplicate an existing database -Duplicating a database creates an exact copy of its structure and data. +Duplicating a database creates an exact copy of its structure and data. This method is useful for setting up separate databases for different teams or departments, starting new projects based on existing ones, creating testing environments without affecting live data, or archiving databases at specific points in time. @@ -1325,7 +1325,7 @@ Now that you've created your database, explore these topics to maximize its pote Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. - - [Ask the Baserow community](https://community.baserow.io) + - [Ask the Baserow community](https://community.baserow.io) - [Contact support](https://baserow.io/contact) for questions about Baserow or help with your account. @@ -1340,7 +1340,7 @@ Remove databases you no longer need. Understand the 5-second undo window, the gr ## Overview -Deleting a database removes it from your workspace and makes it inaccessible to all collaborators. +Deleting a database removes it from your workspace and makes it inaccessible to all collaborators. Baserow provides two safety nets: a 5-second undo window immediately after deletion, and the grace period for trash recovery. After the grace period, deletion becomes permanent and irreversible. @@ -1386,9 +1386,9 @@ Learn more: [Undo and redo actions](/user-docs/data-recovery-and-deletion) ### Option 2: Restore from trash -If you miss the 5-second undo window, recover deleted databases from the trash. +If you miss the 5-second undo window, recover deleted databases from the trash. -The grace period starts the moment you delete the database. After the grace period for trash recovery, restoration becomes impossible. +The grace period starts the moment you delete the database. After the grace period for trash recovery, restoration becomes impossible. Learn more: [Restore data from trash](/user-docs/data-recovery-and-deletion) @@ -1438,7 +1438,7 @@ No. After the grace period expires, databases are permanently deleted and cannot Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. - - [Ask the Baserow community](https://community.baserow.io) + - [Ask the Baserow community](https://community.baserow.io) - [Contact support](/contact) for questions about Baserow or help with your account. [1]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/c6771efd-a839-493b-b24c-ff2fb269f8e8/Rename%20Baserow%20database.jpg",,baserow_user_docs,https://baserow.io/user-docs/delete-a-database @@ -1482,7 +1482,7 @@ Duplicating a view copies its configuration including filters, sorts, field visi 1. Click the **view dropdown** at the top of the table 2. Find the view you want to duplicate 3. Click the **three-dot menu (โ‹ฎ)** next to the view name - 4. Select **Duplicate view** from the options. + 4. Select **Duplicate view** from the options. 5. Rename and customize the duplicated view as needed Duplicating is useful for: @@ -1764,7 +1764,7 @@ Not directly. You can duplicate views within the same table, but configurations ## Related content ### View basics -- [Views overview](/user-docs/overview-of-baserow-views) - Understanding view concepts +- [Views overview](/user-docs/overview-of-baserow-views) - Understanding view concepts - [Create custom views](/user-docs/create-custom-views-of-your-data) - Step-by-step view creation - [Collaborative views](/user-docs/collaborative-views) - Shared team views - [Personal views](/user-docs/personal-views) - Private individual views @@ -2461,7 +2461,7 @@ Learn more: [Form submission notifications](/user-docs/notifications#notificatio ## Pre-fill form fields -Pre-fill forms with data using URL parameters, making it easier for respondents to complete forms with information you already know. +Pre-fill forms with data using URL parameters, making it easier for respondents to complete forms with information you already know. **Common use case:** Pre-fill and hide fields that shouldn't be changed, like referral sources or campaign tracking codes. @@ -3110,7 +3110,7 @@ Baserow enables team collaboration through workspaces, permissions, comments, an **Core collaboration features:** - **[Workspaces](/user-docs/intro-to-workspaces)** - Shared environments where teams organize databases and grant access - **[Workspace members](/user-docs/working-with-collaborators)** - Invite users and assign roles -- **[Permissions](/user-docs/permissions-overview)** - Control who can view, edit, or administer data. +- **[Permissions](/user-docs/permissions-overview)** - Control who can view, edit, or administer data. - **[Teams](/user-docs/create-and-manage-teams)** - Group workspace members for easier permission management - **[Row comments](/user-docs/row-commenting)** - Discuss specific records with @mentions - **[Collaborator field](/user-docs/collaborator-field)** - Assign tasks to specific workspace members @@ -3277,7 +3277,7 @@ This guide covers how to view workspace members, change permissions, search and ## Who can manage workspace members -Only workspace admins can manage workspace members. This includes viewing the full member list, changing roles, removing members, and managing pending invitations. +Only workspace admins can manage workspace members. This includes viewing the full member list, changing roles, removing members, and managing pending invitations. If you're not a workspace admin and need to manage members, ask an existing admin to upgrade your role. @@ -3287,7 +3287,7 @@ Learn more: [Permissions overview](/user-docs/permissions-overview) ## View workspace members -Workspace members with the right permission can see everyone who has access to your workspace, including their roles and contact information. Other workspace members without permission cannot view the member list, change roles, or remove members. +Workspace members with the right permission can see everyone who has access to your workspace, including their roles and contact information. Other workspace members without permission cannot view the member list, change roles, or remove members. **From workspace settings:** 1. Open the **workspace** you want to manage @@ -3312,7 +3312,7 @@ Workspace admins can update member roles anytime to adjust access levels as resp 3. Click the **role dropdown** next to their name 4. Select the new role 5. The role updates immediately - + **Permission changes take effect immediately.** The workspace member's access updates across all databases and tables in the workspace according to their new role. ![Changing member permissions](https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/29c1effc-2e9a-44c8-8b64-ae04a63b006b/Screenshot_2023-01-18_at_17.24.14.png) @@ -3333,7 +3333,7 @@ Find specific members quickly in large workspaces using search and sort function ### Sort the member list -Click column headers to sort members by different criteria. Sort indicators (โ–ด โ–พ) show the current sort column and direction. Click again to reverse the sort order. +Click column headers to sort members by different criteria. Sort indicators (โ–ด โ–พ) show the current sort column and direction. Click again to reverse the sort order. - **Name column:** Alphabetically (A-Z โ–ด) or reverse (Z-A โ–พ) - **Email column:** Alphabetically (A-Z โ–ด) or reverse (Z-A โ–พ) @@ -3343,7 +3343,7 @@ Click column headers to sort members by different criteria. Sort indicators (โ–ด ## Manage pending invitations -Pending invitations have dedicated management controls to view and manage workspace invitations that haven't been accepted yet. +Pending invitations have dedicated management controls to view and manage workspace invitations that haven't been accepted yet. On the **Invites** page, you can view all outstanding invitations, see invitation details, resend invitations that may have been lost, cancel invitations sent by mistake, or change roles before acceptance. @@ -3357,7 +3357,7 @@ Learn more: [Remove a user from workspace](/user-docs/remove-a-user-from-a-works ## Workspace-level audit logs -The audit log keeps track of every action performed in your Baserow workspace. The workspace-level audit log provides visibility to workspace admins about every action taken in a particular workspace. +The audit log keeps track of every action performed in your Baserow workspace. The workspace-level audit log provides visibility to workspace admins about every action taken in a particular workspace. Learn more: [Audit logs](/user-docs/admin-panel-audit-logs) @@ -3957,7 +3957,7 @@ Baserow provides multiple safety nets to prevent permanent data loss. Deleted it - **Trash** - 3-day retention for deleted workspaces, databases, tables, fields, and views - **Undo/Redo** - Instant reversal of recent actions like cell edits or row deletions - **Restore popup** - 7-second quick recovery notification after deletions - - **[Row change history][1]**: Track row updates + - **[Row change history][1]**: Track row updates - **Change history** - Audit log showing who changed what and when (Enterprise) @@ -4195,7 +4195,7 @@ Tables are where your data lives in Baserow. Baserow tables combine spreadsheet ## Overview -A Baserow table stores and organizes your data in rows (records) and columns (fields). While tables function like spreadsheets with sorting, filtering, and aggregation capabilities, they go further by displaying the same data in multiple ways; grid, gallery, form, calendar, or kanban. +A Baserow table stores and organizes your data in rows (records) and columns (fields). While tables function like spreadsheets with sorting, filtering, and aggregation capabilities, they go further by displaying the same data in multiple ways; grid, gallery, form, calendar, or kanban. Tables live inside databases, which live inside workspaces, giving you a clear hierarchy for organizing projects and data. @@ -4340,7 +4340,7 @@ Yes, [import CSV or Excel files](/user-docs/create-a-table-via-import) directly Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. - - [Ask the Baserow community](https://community.baserow.io) + - [Ask the Baserow community](https://community.baserow.io) - [Contact support](/contact) for questions about Baserow or help with your account. @@ -4460,7 +4460,7 @@ Manual exports work well for occasional needs, but frequent exports benefit from Still need help? If you're looking for something else, please feel free to make recommendations or ask us questionsโ€”we're ready to assist you. -- [Ask the Baserow community](https://community.baserow.io) +- [Ask the Baserow community](https://community.baserow.io) - [Contact support](/contact) for questions about Baserow or help with your account.",,baserow_user_docs,https://baserow.io/user-docs/export-tables 26,Configure table options,customize-a-table,Configure and customize tables in Baserow,"# Table configuration and customization @@ -4474,16 +4474,16 @@ Customize table behavior, appearance, and organization with renaming, reordering ## Overview -Table configuration controls how your tables behave, who can access them, and how they integrate with other systems. Unlike field-level settings that affect individual columns, table settings apply to the entire table and its data. +Table configuration controls how your tables behave, who can access them, and how they integrate with other systems. Unlike field-level settings that affect individual columns, table settings apply to the entire table and its data. You'll find these options in the three-dot menu (`โ‹ฎ`) next to each table name in your sidebar. ## Accessing table settings -All table configuration options are available through the table menu. +All table configuration options are available through the table menu. -Click the three-dot icon (`โ‹ฎ`) next to any table name in the sidebar to reveal options including rename, duplicate, delete, export, webhooks, and permissions management. +Click the three-dot icon (`โ‹ฎ`) next to any table name in the sidebar to reveal options including rename, duplicate, delete, export, webhooks, and permissions management. Some settings, like reordering, work directly through drag-and-drop in the sidebar without opening a menu. @@ -4498,7 +4498,7 @@ Give tables clear, descriptive names that indicate their purpose and content. Th To rename a table: 1. Click the `โ‹ฎ` icon next to the table name in the sidebar -2. Select ""Rename,"" and enter your new name. +2. Select ""Rename,"" and enter your new name. Table names can be changed anytime without affecting data, views, or relationships with other tables. @@ -4506,7 +4506,7 @@ Table names can be changed anytime without affecting data, views, or relationshi ### Reorder tables in sidebar -Arrange tables in the order that matches your workflow by dragging and dropping them in the sidebar. Position frequently used tables at the top for quick access, group related tables together for logical organization, and separate active projects from archived data. +Arrange tables in the order that matches your workflow by dragging and dropping them in the sidebar. Position frequently used tables at the top for quick access, group related tables together for logical organization, and separate active projects from archived data. Click and hold on a table name, then drag it to your desired position and release. @@ -4515,7 +4515,7 @@ Click and hold on a table name, then drag it to your desired position and releas ### Duplicate tables -Duplicating creates an exact copy of a table's structure and data, perfect for creating templates, testing changes without affecting the original, or setting up similar tables for different teams or time periods. +Duplicating creates an exact copy of a table's structure and data, perfect for creating templates, testing changes without affecting the original, or setting up similar tables for different teams or time periods. Access this option from the table menu (`โ‹ฎ`), and the duplicate appears immediately below the original. @@ -4525,7 +4525,7 @@ Learn more: [Duplicate a table](/user-docs/create-a-table#duplicate-a-table) ### Delete tables -Remove tables you no longer need to keep your database organized and reduce clutter. Deleted tables move to the trash with a recovery window before permanent deletion. +Remove tables you no longer need to keep your database organized and reduce clutter. Deleted tables move to the trash with a recovery window before permanent deletion. Access deletion through the table menu (`โ‹ฎ`), confirm your choice, and use the 5-second undo window if you change your mind immediately. @@ -4545,7 +4545,7 @@ Learn more: [Export tables](/user-docs/export-tables) ### Multiple cell paste -Speed up data entry by copying and pasting multiple cells at once from spreadsheets or other sources. +Speed up data entry by copying and pasting multiple cells at once from spreadsheets or other sources. Select cells in Excel or Google Sheets, copy them with `Ctrl/Cmd + C`, click into your target cell in Baserow, and paste with `Ctrl/Cmd + V`. Baserow intelligently maps pasted data to your table structure, filling cells in the same pattern as your copied selection. @@ -4622,7 +4622,7 @@ Use [table-level permissions](/user-docs/assign-roles-at-table-level) to control Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. - - [Ask the Baserow community](https://community.baserow.io) + - [Ask the Baserow community](https://community.baserow.io) - [Contact support](/contact) for questions about Baserow or help with your account. @@ -4639,7 +4639,7 @@ Remove tables you no longer need from your database. Understand the trash recove ## Overview -Deleting a table removes it and all its contents from your database, making it inaccessible to everyone with database access. Baserow provides a grace period where deleted tables can be recovered from trash, but after that window closes, deletion becomes permanent and irreversible. +Deleting a table removes it and all its contents from your database, making it inaccessible to everyone with database access. Baserow provides a grace period where deleted tables can be recovered from trash, but after that window closes, deletion becomes permanent and irreversible. This action affects not just the table itself but also any views, formulas in other tables that reference it, and linked relationships with other tables. @@ -4774,7 +4774,7 @@ Yes, you can delete individual rows or groups of rows without removing the table Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. -- [Ask the Baserow community](https://community.baserow.io) +- [Ask the Baserow community](https://community.baserow.io) - [Contact support](/contact) for questions about Baserow or help with your account.",,baserow_user_docs,https://baserow.io/user-docs/delete-a-table 28,Baserow webhooks,webhooks,Baserow webhooks guide for automation,"# Baserow webhooks: Real-time notifications for data changes @@ -4798,7 +4798,7 @@ Baserow supports multiple webhook events to match different integration needs: ### Row events - **Rows created:** Triggers when new rows are added -- **Rows updated:** Triggers when existing rows are modified +- **Rows updated:** Triggers when existing rows are modified - **Rows deleted:** Triggers when rows are removed ### View events @@ -4935,7 +4935,7 @@ Yes, webhooks work seamlessly with Zapier, Make, n8n, and other automation platf Based on the Baserow documentation structure, you might also find these topics helpful: - [Zapier integration](/user-docs/zapier) - Connect Baserow with 4000+ apps -- [Make integration](/user-docs/make) - Advanced automation workflows +- [Make integration](/user-docs/make) - Advanced automation workflows - [n8n integration](/user-docs/n8n) - Open-source workflow automation - [Database API documentation](/user-docs/database-api) - Direct API access - [Database tokens](/user-docs/personal-api-tokens) - Authentication for integrations @@ -5078,7 +5078,7 @@ Multiple sorts can be applied sequentially; sort by Department first, then by Pr **Empty values:** When sorting in ascending order, empty cells typically appear at the top of your table. -### How to hide fields +### How to hide fields Remove fields from view without deleting data, useful for creating focused views for specific tasks or audiences. @@ -5277,7 +5277,7 @@ While you cannot delete or move the primary field, you can customize it like oth - **[Duplicate the primary field][6]** - Copy primary field configuration to create a backup - **[Filter by the primary field][5]** - Show only rows with specific identifier patterns - **[Sort by the primary field][4]** - Arrange rows alphabetically or numerically by identifier - + ### **To access configuration:** @@ -5291,7 +5291,7 @@ Designate a different field as the primary field when your current primary doesn ### Method 1: Direct primary field change -Use this method when you want to immediately swap which field serves as primary. +Use this method when you want to immediately swap which field serves as primary. **To change the primary field:** @@ -5629,7 +5629,7 @@ Once enabled, you can format text using the toolbar or [Markdown shortcuts][5]. ### Markdown formatting reference -Baserow supports standard Markdown syntax in Long text fields with rich text enabled. +Baserow supports standard Markdown syntax in Long text fields with rich text enabled. **Keyboard shortcuts:** Use standard text editor shortcuts (Ctrl/Cmd+B for bold, Ctrl/Cmd+I for italic, etc.) for quick formatting. @@ -7310,7 +7310,7 @@ Reference related rows by primary field value or ID: Baserow uses standard HTTP status codes with detailed error messages. Implement proper error handling and retry logic in your application. -Common status codes: +Common status codes: | Error code | Name | Description | |------------|--------------------------|---------------------------------------------------------------------| | 200 | Ok | Request completed successfully. | @@ -7336,7 +7336,7 @@ Error response format Query parameters for listing rows **Filtering:** -- `filters`: JSON object with filter conditions. Rows can optionally be filtered using the same view filters that are available for the views. +- `filters`: JSON object with filter conditions. Rows can optionally be filtered using the same view filters that are available for the views. - `filter_type`: ""AND"" or ""OR"" for multiple filters. This works only if two or more filters are provided. - `search`: Full-text search across all fields. If provided, only rows with data that matches the search query are going to be returned. @@ -7398,10 +7398,10 @@ Verify your token is correct, has proper permissions for the table, and is inclu ## Related content - [Generate database tokens](/user-docs/personal-api-tokens) -- [Database and table IDs guide](/user-docs/database-and-table-id) +- [Database and table IDs guide](/user-docs/database-and-table-id) - [Baserow webhooks](/user-docs/webhooks) - [Zapier integration](/user-docs/zapier): No-code automation platform -- [Make integration](/user-docs/make): Visual workflow builder +- [Make integration](/user-docs/make): Visual workflow builder - [n8n integration](/user-docs/n8n): Open-source workflow automation --- @@ -7460,7 +7460,7 @@ Learn more about [creating custom views](/user-docs/create-custom-views-of-your- ### Switch between views -The current view tab in the table's upper left corner helps in navigating all of the table's views. You can switch between different view types in a table by clicking the view switcher in the upper left corner. +The current view tab in the table's upper left corner helps in navigating all of the table's views. You can switch between different view types in a table by clicking the view switcher in the upper left corner. 1. Click the View switcher dropdown at the top of the table to see all available views for the current table. 2. Select any view from the list in the upper section @@ -7476,7 +7476,7 @@ The view dropdown shows all collaborative views and your personal views. Other u If you created a lot of views in your table, it might be helpful to locate a view by name. Existing views can be found by searching for them using the views search bar. 1. Click the View switcher dropdown at the top of the table -2. Enter a search string in the โ€˜**Search views**โ€™ field to locate a view. You can enter a search term to see a list of all views that match. +2. Enter a search string in the โ€˜**Search views**โ€™ field to locate a view. You can enter a search term to see a list of all views that match. 3. Results filter in real-time as you type. 4. Select the view to navigate to @@ -7598,7 +7598,7 @@ Start with an empty table when building custom structures from scratch. This giv 2. Click **+ New table** at the bottom of the table list 3. Enter a descriptive name for your table (e.g., ""Customers,"" ""Tasks,"" ""Inventory"") 4. Select **Start with a new table** -5. Click **Add table**. You get a new table with default fields and sample rows to help you get started. +5. Click **Add table**. You get a new table with default fields and sample rows to help you get started. After creating your table, start by adding fields. Choose from over [25 field types](/user-docs/baserow-field-overview) such as text, number, date, or file. You can also configure field properties like validation rules and default values to match your needs. @@ -7608,7 +7608,7 @@ Finally, organize your view to make your data easier to understand. Use [sorting ### Method 2: Duplicate an existing table -Duplicating creates an exact copy of a table's structure and data. Duplicating tables is useful when you need multiple versions of the same structure for different purposes. +Duplicating creates an exact copy of a table's structure and data. Duplicating tables is useful when you need multiple versions of the same structure for different purposes. This is perfect for reusing proven setups or creating templates for recurring projects, without altering the original. Itโ€™s also practical for generating client-specific tables from a master template or archiving data by duplicating and clearing the original table. @@ -7621,17 +7621,17 @@ This is perfect for reusing proven setups or creating templates for recurring pr **What gets duplicated:** -โœ… All fields with their types and configurations -โœ… All rows with complete data -โœ… Views (Grid, Kanban, Calendar, etc.) -โœ… Filters, sorts, and groupings -โœ… Field formulas and dependencies -โœ… File attachments +โœ… All fields with their types and configurations +โœ… All rows with complete data +โœ… Views (Grid, Kanban, Calendar, etc.) +โœ… Filters, sorts, and groupings +โœ… Field formulas and dependencies +โœ… File attachments **What doesn't duplicate:** -โŒ Row comments and revision history -โŒ Webhooks and automations +โŒ Row comments and revision history +โŒ Webhooks and automations After duplicating a table, customize it to suit its new purpose. Start by renaming the table. Then, update any field values by clicking into the relevant cells to change data. If certain fields are unnecessary, [delete unused fields](/user-docs/field-customization). You can also [reorder fields](/user-docs/field-customization) by dragging and dropping them to arrange columns in the order you prefer. @@ -7645,7 +7645,7 @@ After duplicating a table, customize it to suit its new purpose. Start by renami **Supported file formats** - - **CSV files** โ€“ Import CSV for simple comma-separated data + - **CSV files** โ€“ Import CSV for simple comma-separated data - **JSON files** โ€“ Import JSON for structured data exports - **XML files** โ€“ Import XML for hierarchical data - **Paste data** โ€“ Copy and paste directly from spreadsheets @@ -7725,7 +7725,7 @@ Understand how Baserow databases organize your data using tables, fields, and ro ## What is a Baserow database? -A database is a structured collection of [tables](/user-docs/intro-to-tables) containing rows (records) and columns (fields). +A database is a structured collection of [tables](/user-docs/intro-to-tables) containing rows (records) and columns (fields). A Baserow database is a collection of related tables that store and organize your data. Unlike traditional spreadsheets, Baserow databases let you create relationships between tables, automate workflows, and build custom applications on top of your data. @@ -7733,7 +7733,7 @@ A Baserow database is a collection of related tables that store and organize you ### Database structure -Databases belong to workspaces. Each database lives inside a workspace and can contain multiple tables for different aspects of your projects, like customer information, inventory tracking, or project management. +Databases belong to workspaces. Each database lives inside a workspace and can contain multiple tables for different aspects of your projects, like customer information, inventory tracking, or project management. Before creating a database, you need [a workspace](/user-docs/setting-up-a-workspace). Workspaces are the top-level organizational unit where you manage team members, permissions, and billing. @@ -7851,7 +7851,7 @@ Export your database through the workspace settings menu. Choose between exporti ### Can I convert an Excel spreadsheet into a Baserow database? -Yes! Simply [create a new table](/user-docs/create-a-table-via-import) and import your Excel file. After import, you can refine field types and add Baserow-specific features like relationships and formulas. +Yes! Simply [create a new table](/user-docs/create-a-table-via-import) and import your Excel file. After import, you can refine field types and add Baserow-specific features like relationships and formulas. Learn more: [How to transform spreadsheets into databases](https://baserow.io/blog/how-to-transform-any-spreadsheet-into-a-database). ### How do Baserow databases handle large amounts of data? @@ -7886,7 +7886,7 @@ Now that you understand Baserow databases, explore these topics: Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. - - [Ask the Baserow community](https://community.baserow.io) + - [Ask the Baserow community](https://community.baserow.io) - [Contact support](/contact) for questions about Baserow or help with your account. @@ -7995,7 +7995,7 @@ Note that this process creates copies, not moves; original content remains unles ### How many workspaces can I create? -There's no limit on the number of workspaces you can create or join. +There's no limit on the number of workspaces you can create or join. ### Is there a difference between workspaces on Cloud vs Self-hosted? @@ -8086,9 +8086,9 @@ Still need help? If you're looking for something else, please feel free to make [24]: /user-docs/delete-a-workspace",,baserow_user_docs,https://baserow.io/user-docs/intro-to-workspaces 51,Subscriptions overview,subscriptions-overview,Baserow Subscriptions overview,"# Understanding Baserow subscriptions -Baserow offers free and paid plans for both cloud and self-hosted deployments. Cloud subscriptions charge per workspace collaborator automatically, while self-hosted subscriptions use manual seat allocation. +Baserow offers free and paid plans for both cloud and self-hosted deployments. Cloud subscriptions charge per workspace collaborator automatically, while self-hosted subscriptions use manual seat allocation. -## Overview +## Overview Baserow subscriptions unlock [paid features][1] across cloud and self-hosted environments, with each deployment type using different billing models. @@ -8112,7 +8112,7 @@ Both processes include pro rata billing calculations, meaning you only pay for t | **Control** | Instant setup, no maintenance | Complete data control and privacy with custom integrations and configurations | | **Usage** | Limit based on plans | Unlimited rows and storage on all paid plans | -> Upgrading your Baserow workspace or instance provides immediate access to paid features upon payment completion. Learn more about how to [upgrade to a Paid Plan][3]. +> Upgrading your Baserow workspace or instance provides immediate access to paid features upon payment completion. Learn more about how to [upgrade to a Paid Plan][3]. ## Understanding subscription status types @@ -8143,7 +8143,7 @@ Understanding which users count toward your subscription helps you manage costs ## Pro rata billing explained -Pro rata billing ensures fair pricing when you make subscription changes mid-cycle. All Baserow [subscription changes][5] trigger pro rata billing adjustments that account for the timing of your modifications. +Pro rata billing ensures fair pricing when you make subscription changes mid-cycle. All Baserow [subscription changes][5] trigger pro rata billing adjustments that account for the timing of your modifications. When you add users or upgrade plans, you receive immediate charges for the difference between your old and new costs, calculated only for the remaining days until your next regular payment. This approach means you never pay twice for the same time period. @@ -8153,7 +8153,7 @@ Cloud subscriptions handle pro rata billing automatically when workspace members ## Frequently asked questions -### How can I check my current plan? +### How can I check my current plan? For cloud plans, you can easily identify your workspace's subscription status directly from the Baserow dashboard interface, which displays plan information next to each workspace name. The dashboard view provides visibility into which workspaces have paid access and which remain on free plans. @@ -8173,7 +8173,7 @@ Pro rata billing calculates the exact value of service time remaining when you m Yes, self-hosted subscriptions support [instance ID][2] changes that allow license transfers between different server deployments. This flexibility supports infrastructure migrations and development-to-production transitions without requiring new license purchases. ### What's the difference between Premium and Advanced cloud plans? -Premium plans offer core enhanced features with automatic billing for all workspace collaborators. Advanced plans include role-based permissions and priority support with selective billing based on user roles. +Premium plans offer core enhanced features with automatic billing for all workspace collaborators. Advanced plans include role-based permissions and priority support with selective billing based on user roles. For complete pricing details and feature comparisons, visit the [Baserow pricing page](https://baserow.io/pricing). @@ -8212,9 +8212,9 @@ For detailed information about plan features and limitations, please refer to th ## What is a Baserow subscription? -Baserow subscriptions unlock [upgraded database features][2] like advanced views, increased record limits, and collaboration tools. Creating a new subscription upgrades your existing workspace or instance from free to paid access. Whether you use Baserow's cloud or run your own server, subscriptions provide the same core functionality with different storage and user management approaches. +Baserow subscriptions unlock [upgraded database features][2] like advanced views, increased record limits, and collaboration tools. Creating a new subscription upgrades your existing workspace or instance from free to paid access. Whether you use Baserow's cloud or run your own server, subscriptions provide the same core functionality with different storage and user management approaches. -To buy a Baserow subscription, you will need a [baserow.io](http://baserow.io) account, even if the subscription is intended for self-hosted Baserow instances. The process varies depending on whether you're managing cloud workspaces or self-hosted instances. +To buy a Baserow subscription, you will need a [baserow.io](http://baserow.io) account, even if the subscription is intended for self-hosted Baserow instances. The process varies depending on whether you're managing cloud workspaces or self-hosted instances. For more details about how Baserow subscriptions work, [view this documentation][3]. @@ -8236,7 +8236,7 @@ Sign in to https://baserow.io, then click on your workspace in the top left corn **Step 2: Select cloud version** -Within the subscriptions page, the list of workspaces within the SaaS (hosted cloud version) will be displayed on the left-hand side of the screen. +Within the subscriptions page, the list of workspaces within the SaaS (hosted cloud version) will be displayed on the left-hand side of the screen. ![Baserow subscription selection interface][6] @@ -8270,7 +8270,7 @@ Billing is based on [billable users][4]. Adding billable users increases costs i ### Can I mix free and paid users in cloud plans? -No, cloud subscription is per workspace and requires all active contributors to be on the same plan tier, so they cannot be mixed with Free users. However, in Premium and Advanced self-hosted instances, you can mix Free users with paid licenses as license is instance-based. +No, cloud subscription is per workspace and requires all active contributors to be on the same plan tier, so they cannot be mixed with Free users. However, in Premium and Advanced self-hosted instances, you can mix Free users with paid licenses as license is instance-based. ### What happens if I exceed storage limits on cloud plans? Premium cloud plans include 20GB storage, and Advanced plans include 100GB. [Contact support](https://baserow.io/contact) if you approach these limits to discuss upgrade options or data management strategies. @@ -8313,11 +8313,11 @@ Still need help? If you're looking for something else, please feel free to make Baserow paid licenses unlock [paid features][1] on self-hosted installations. This approach gives you complete control over which users access paid features while maintaining data sovereignty on your servers. -> This article covers how to purchase and install a Baserow self-hosted license. [Visit this page][2] if you want to purchase a cloud subscription. +> This guide covers how to purchase and install a Baserow self-hosted license. [Visit this page][2] if you want to purchase a cloud subscription. [Visit this page][3] to activate an Enterprise license. ## Overview -Self-hosted licenses work differently from cloud subscriptions. Instead of automatic feature activation, you receive a license key that must be manually registered with your specific Baserow instance. +Self-hosted licenses work differently from cloud subscriptions. Instead of automatic feature activation, you receive a license key that must be manually registered with your specific Baserow instance. The licensing system operates on a seat-based model where you assign paid access to specific users rather than entire workspaces. This flexibility allows mixing free and paid users within the same Baserow installation. @@ -8333,13 +8333,15 @@ Your instance ID connects your self-hosted installation to the license. Only Ins 2. Click on your workspace in the top left corner -> Admin tools -> Manage licenses. 3. Copy your unique instance ID. -![Instance ID location][3] +![Instance ID location][4] **Step 2: Access subscription portal** -A license can only be obtained on baserow.io. Sign in to https://baserow.io, then click on your workspace in the top left corner -> **[Subscriptions][4]**. If you have existing subscriptions, click on the **+ Add new** button at the top-right of the page. +A license can only be obtained on baserow.io. Sign in to https://baserow.io, then click on your workspace in the top left corner -> **[Subscriptions][5]**. If you have existing subscriptions, click on the **+ Add new** button at the top-right of the page. -> If you have already [purchased a license][4], it will be delivered to you by email, and you can get it from the overview in your account. +> If you have already [purchased a license][5], it will be delivered to you by email, and you can get it from the overview in your account. + +Learn more: [Manage existing subscription][6] **Step 3: Select the self-hosted option** @@ -8347,37 +8349,37 @@ Within the subscriptions page, the right side of the screen will hold the self-h **Step 4: Enter instance ID** -On the Subscriptions page, enter your instance ID in the field provided and click **Next**. We need your [instance ID][5] because the license will be connected to it. +On the Subscriptions page, enter your instance ID in the field provided and click **Next**. We need your [instance ID][7] because the license will be connected to it. -![get your Instance ID][6] +![get your Instance ID][8] **Step 5: Configure subscription** -Next, select the number of seats, payment period and payment plan. +Next, select the number of seats, payment period and payment plan. > When you upgrade to the Advanced plan, start by buying only the number of paid seats you need. Once your license is active, you can then invite free users to join your workspace. If you add everyone during the upgrade, the system wonโ€™t separate free users from paid users, and youโ€™ll be billed for all of them. -Subscriptions are priced per seat, and you can choose to be charged monthly or annually. You can choose the number of seats you want to purchase and [adjust it at any time](https://baserow.io/user-docs/change-a-paid-subscription). +Subscriptions are priced per seat, and you can choose to be charged monthly or annually. You can choose the number of seats you want to purchase and [adjust it at any time](https://baserow.io/user-docs/change-a-paid-subscription). Then click **Subscribe**. -![Subscription configuration interface][7] +![Subscription configuration interface][9] **Step 6: Complete payment** You will be required to enter your payment card information and authorise payment. The price will be prorated when the number of seat changes. In order to proceed with your payment, we may need you to authenticate with your bank. -> No free roles exist in the Premium plan, as there is no [role-based permission](https://baserow.io/user-docs/set-permission-level). Every user added to the Premium plan is a [billable user][8]. +> No free roles exist in the Premium plan, as there is no [role-based permission](https://baserow.io/user-docs/set-permission-level). Every user added to the Premium plan is a [billable user][10]. **Step 7: Download license key** Once your transaction has been completed. You will find your subscription on the overview page. -After you purchase a license, you will be able to [download a license key][7] that can be used to register your Baserow instance. +After you purchase a license, you will be able to [download a license key][9] that can be used to register your Baserow instance. Navigate to **Subscriptions** โ†’ **License subscriptions** โ†’ **More details**. Click **Reveal license key** to display your key -Copy and paste the license key in the field. +Copy and paste the license key in the field. **Step 8: Register license with your instance** @@ -8387,7 +8389,7 @@ Register it in your self-hosted instance to activate paid features for selected 2. Copy and paste your license key into the provided field 3. Click **Register license** -![License registration interface][9] +![License registration interface][11] ## Managing user assignments @@ -8395,17 +8397,19 @@ When upgrading to the Advanced plan, purchase only the paid seats first. After y After registering your license, assign paid seats to specific users. Select which registered users can access paid features. Assigned users gain paid access across all workspaces. Non-assigned users continue with free plan limitations. -Keep in mind that the Premium plan works differently. It doesnโ€™t support free roles or role-based permissions. Every person you add under Premium counts as a [billable user][8]. +Keep in mind that the Premium plan works differently. It doesnโ€™t support free roles or role-based permissions. Every person you add under Premium counts as a [billable user][10]. + +You can [modify user assignments][6] anytime through the admin panel, allowing flexible upgraded access management as your team changes. -You can [modify user assignments][10] anytime through the admin panel, allowing flexible upgraded access management as your team changes. +Learn more: [Manage existing subscription][6] ## After license installation Monitor your license status through the admin panel, including expiration dates and seat assignments. Plan license renewals before expiration to avoid service interruption. -Learn more about how to [manage an existing license][10]. +Learn more about how to [manage an existing license][12]. -![view your license ID][11] +![view your license ID][13] ## Frequently asked questions @@ -8425,7 +8429,7 @@ On the Premium plan, there are no free roles. Every user you add is automaticall ### Can I mix free and billable users in the same workspace? -Yes, billable and free users can collaborate in the same workspaces as license is instance-based. Billable users access paid features while free users work within standard limitations. Choose exactly which team members receive access to advanced views, exports, and collaboration tools. +Yes, billable and free users can collaborate in the same workspaces as the license is instance-based. Billable users access paid features while free users work within standard limitations. Choose exactly which team members receive access to advanced views, exports, and collaboration tools. Premium and Advanced licensing allow mixing free and billable users within the same instance through manual seat assignment. If you have 100 free users in total, you can buy a license for 10 seats and assign 10 users to it, meaning 10 users will have premium and 90 are free. This can be combined. @@ -8468,105 +8472,264 @@ Still need help? If you're looking for something else, please feel free to make [1]: https://baserow.io/user-docs/pricing-plans [2]: https://baserow.io/user-docs/buying-a-subscription - [3]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/1b766e14-d494-4f29-ae99-fa52fec94733/Your%20Baserow%20instance%20ID.jpg - [4]: https://baserow.io/subscriptions/new - [5]: /user-docs/get-a-licence-key#get-your-instance-id - [6]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/bd558d45-3840-4a51-bd34-5e19c1001bc1/Baserow%20subscription%20selection%20interface.jpg - [7]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/6bfe2e32-3b16-4dfd-901d-23d8b02d1c48/License%20configuration%20interface.jpg - [8]: https://baserow.io/user-docs/subscriptions-overview#user-billing-classifications - [9]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/7fc3aedc-e73d-494d-9da1-2aa456ec752c/Register%20License.jpg - [10]: https://baserow.io/user-docs/change-a-paid-subscription - [11]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/0faf781e-e048-4af8-b9c5-4209f86cabd4/view%20your%20license%20ID.jpg - [12]: https://baserow.io/user-docs/getting-and-changing-the-instance-id",,baserow_user_docs,https://baserow.io/user-docs/get-a-licence-key -54,Manage instance ID,getting-and-changing-the-instance-id,Manage instance ID in Baserow self-hosted instance,"# How to find and change self-hosted instance ID + [3]: https://baserow.io/user-docs/activate-enterprise-license + [4]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/1b766e14-d494-4f29-ae99-fa52fec94733/Your%20Baserow%20instance%20ID.jpg + [5]: https://baserow.io/subscriptions/new + [6]: https://baserow.io/user-docs/change-a-paid-subscription + [7]: /user-docs/get-a-licence-key#get-your-instance-id + [8]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/bd558d45-3840-4a51-bd34-5e19c1001bc1/Baserow%20subscription%20selection%20interface.jpg + [9]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/6bfe2e32-3b16-4dfd-901d-23d8b02d1c48/License%20configuration%20interface.jpg + [10]: https://baserow.io/user-docs/subscriptions-overview#user-billing-classifications + [11]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/7fc3aedc-e73d-494d-9da1-2aa456ec752c/Register%20License.jpg + [12]: https://baserow.io/user-docs/getting-and-changing-the-instance-id + [13]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/0faf781e-e048-4af8-b9c5-4209f86cabd4/view%20your%20license%20ID.jpg",,baserow_user_docs,https://baserow.io/user-docs/get-a-licence-key +54,Manage licenses,getting-and-changing-the-instance-id,Manage licenses in Baserow self-hosted instance,"# Manage licenses in self-hosted Baserow + +This guide covers how to view, register, assign, and manage licenses for your self-hosted Baserow instance through the admin panel. + +> **Admin access required:** Only Instance Admins can manage licenses. Regular users cannot view licensing information. + +## Overview -Baserow instance IDs uniquely identify your self-hosted installation for licensing. This enables centralized subscription management while keeping your data on your servers. +The **Manage Licenses** page in the admin panel is your control center for all licensing operations on your self-hosted Baserow instance. Here you can: -Instance IDs can be changed for active subscriptions to support server migrations. + - View your unique Instance ID + - Register new licenses + - Assign license seats to specific users + - Monitor license status, expiry, and usage + - Check for license updates + - Disconnect licenses when needed -## Quick overview +For step-by-step license installation, learn how to [purchase and install a self-hosted license][1] for non-enterprise plans. -Your instance ID acts as a unique identifier that links your self-hosted Baserow installation to paid subscriptions purchased through baserow.io. When you buy a Premium plan, Baserow associates your license with this specific instance ID, ensuring paid features activate only on your authorized server. +> See [Activate Enterprise license](/user-docs/activate-enterprise-license) for complete Enterprise registration process including troubleshooting. -This separates data hosting (your servers) from subscription management (Baserow's systems), giving you deployment control while maintaining proper licensing. +## Access Manage Licenses page -## How to find your instance ID +To manage an existing license or activate a new license: -> You need to have an active self-hosted Baserow deployment and Admin access to the Baserow instance. +1. Log in to your self-hosted Baserow as an Instance Admin +2. Click your **workspace** dropdown in the top left corner to reveal the account options +3. Select **Admin tools** +4. Click **Manage licenses** -1. **Access admin panel**: Log into your self-hosted Baserow as an Instance Admin. -2. **Navigate to licenses**: Click on your workspace in the top left corner -> Admin tools -> Manage licenses. -3. **Copy instance ID**: Find and copy your unique instance ID from the licenses page. +You'll see a list of registered licenses (if any), your Baserow Instance ID, **Register license** button, and **Get a license** button. -![Instance ID location](https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/1b766e14-d494-4f29-ae99-fa52fec94733/Your%20Baserow%20instance%20ID.jpg) +## Your Baserow Instance ID + +### What is an Instance ID? + +Your Instance ID uniquely identifies your self-hosted Baserow installation for licensing purposes. This ID links your self-hosted server to paid subscriptions purchased through baserow.io, ensures paid features activate only on your authorized server, and separates data hosting (your servers) from subscription management (Baserow's systems). + +### Find your Instance ID + +You will need your Instance ID when [purchasing a new self-hosted subscription][1], contacting support about licensing issues, or migrating to a new server (to transfer your license). + +**To copy your Instance ID:** +1. Navigate to **Admin tools** โ†’ **Manage licenses** +2. Find your Instance ID displayed on the page +3. Copy the ID to share with Baserow sales or support + +![Manage Licenses location](https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/1b766e14-d494-4f29-ae99-fa52fec94733/Your%20Baserow%20instance%20ID.jpg) + +## Assign license seats to users + +In Baserow's self-hosted subscriptions, a ""seat"" refers to a single user license that grants access to paid features. The way seats are assigned depends on your specific plan. + +### How seat assignment works + +For Premium and Advanced plans, an Instance Admin must manually assign each of these seats to a specific user. Only users who have been assigned a seat can access the paid features. Any user on your instance who is not assigned a seat will remain on the Free plan, with its corresponding feature set. + +For [Enterprise plans][2], the license is applied to the entire instance, and no individual seat assignment is required. All users on your Baserow instance automatically receive access to all Enterprise-level features. + +### Assign seats step-by-step + +1. Navigate to **Admin tools** โ†’ **Manage licenses** +2. Click on your **Premium** or **Advanced** license in the list +3. In the **Users** section at the top, click **Add a user** +4. Select users from the dropdown +5. Click **Add** -## How to change instance ID +The **Users** section shows the number of seats available, seats left (e.g., ""10 seats left""), and the assigned users list (name, email, and remove icon). -You can modify the instance ID for active subscriptions through the subscription management interface at baserow.io. This process maintains license compliance and billing continuity while supporting deployment flexibility. +### Remove user from license -The change process ensures your paid features transfer seamlessly to the new instance without service interruption or additional license costs. +**To unassign a user:** +1. Click on your license in the Manage Licenses list +2. Find the user in the **Seats assigned** section +3. Click the **trash icon** next to their name +4. User immediately loses premium/advanced features -Learn more about how to [update an existing subscription][1]. +**To remove all users:** +- Click the **Remove all users** button at the bottom of the Users section +- All users revert to Free plan features -## When to change your instance ID +> **Note:** Removing users doesn't cancel your subscription; it just frees up seats for reassignment. -Instance ID changes support several deployment scenarios: +## View license details -- **Server migrations**: Moving from development to production environments -- **Infrastructure upgrades**: Transitioning to new server hardware or cloud providers -- **Deployment consolidation**: Combining multiple instances under a single license -- **Disaster recovery**: Restoring service on replacement infrastructure +### Access license details -| Deployment scenario | Instance ID action | License impact | -|----------|-------------------|----------------| -| Server migration | Change to new instance | License transfers | -| Development/production split | Use separate IDs | Requires separate licenses | -| Backup/disaster recovery | Change to recovery instance | License transfers | -| Load balancing setup | Single ID across nodes | One license covers cluster | +Click on any registered license in your Manage Licenses list to view complete information: + +### License information displayed + +| Detail | Description | +|--------|-------------| +| **License ID** | Unique identifier for this license | +| **Plan** | Premium, Advanced, or Enterprise | +| **Valid from** | License activation date | +| **Valid through** | Expiration date (after expiry, premium features stop working) | +| **Last check** | When Baserow last verified license status | +| **Seats** | Number of user licenses included | +| **Licensed to** | Name and email of license purchaser | + +### Usage information (if applicable) + +Some licenses show usage limits: +- **Applications / databases** - Number allowed +- **Row usage** - Current row count vs. limit +- **Storage usage** - Current storage vs. limit + +## Check for license updates + +### Automatic license checks + +Baserow automatically checks for license updates every hour if your server has internet access. + +License renewals, plan upgrades, seat count increases, and other changes made by the Baserow sales team get updated automatically. + +### Manual license check + +You can use a manual check when you have just renewed your license and want immediate activation, upgraded your plan and are waiting for features, the expiry date should be extended, but it isn't showing, or when troubleshooting license issues. + +**To check immediately:** +1. Click on your license in the Manage Licenses list +2. Note the **Last check** timestamp +3. Click **Check now** button +4. Wait a few seconds for verification +5. Page refreshes with updated license information + +### Air-gapped servers (no internet access) + +If your server cannot reach the internet, automatic checks won't work. + +Inform Baserow sales that your server is air-gapped. The sales team sends new license keys for changes. You must manually register updated license keys + +Learn more about [updating licenses on air-gapped servers](/user-docs/activate-enterprise-license#update-license-on-air-gapped-server). + +## Disconnect a license + +Disconnecting a license removes the license from your instance, revokes premium/advanced features from all assigned users immediately, and frees the license to be registered on a different instance. + +However, disconnecting a license does not [cancel your subscription][3] or refund payment + +### How to disconnect + +1. Navigate to **Admin tools** โ†’ **Manage licenses** +2. Click on the license you want to disconnect +3. Scroll to the bottom of the license details page +4. Click **Disconnect license** button +5. Confirm disconnection + +> If you disconnect an active license, assigned users immediately lose access to premium features. This action is immediate and cannot be undone without re-registering the license. + +### After disconnecting + +**To use the license on another instance:** +1. Contact [Baserow support](https://baserow.io/contact) if you want to transfer the license to a different self-hosted instance +2. Provide both old and new Instance IDs +3. Support team assists with license transfer +4. Register the license on the new instance + +Alternatively, you can [update your instance ID](/user-docs/change-a-paid-subscription#update-a-subscription-or-license) through the subscription management interface on baserow.io. ## Frequently asked questions -### Can regular users access instance IDs? -No, only Instance Admins can view instance IDs through the admin panel. Regular users don't have access to licensing information or administrative functions. +### Can regular users see license information? -### How often can I change my instance ID? -Baserow allows instance ID changes for legitimate deployment needs like migrations or infrastructure updates. The system prevents abuse while supporting normal operational requirements. +No. Only Instance Admins can access the Manage Licenses page. Regular users cannot view licensing details, assigned seats, or Instance ID. -### What happens if I lose my instance ID? -Instance Admins can always retrieve the current instance ID from the admin panel. You can find your instance ID in your self-hosted instance by clicking on your workspace in the top left corner -> Admin tools -> Manage licenses. -If you lose admin access, contact Baserow support to verify your account and assist with instance identification. -Learn more about [installing a self-hosted license][2]. +### What happens when my license expires? -### Do I need a new subscription for a new server? -Not necessarily. If you're migrating or replacing an existing deployment, you can change the instance ID to transfer your existing license. New additional deployments require separate subscriptions. +After the ""Valid through"" date, assigned users lose access to premium/advanced features, data remains intact and accessible, and users revert to Free plan capabilities. You must [renew your subscription][1] to restore features. -## Troubleshooting instance ID issues +### Do I need to manually assign seats for Enterprise licenses? -### Cannot access the admin panel -Verify you have Instance Admin privileges. Contact your system administrator if you should have admin access but cannot see the Admin option in your interface. +No. Enterprise licenses grant premium features to all users automaticallyโ€”no seat assignment needed. Only Premium and Advanced self-hosted licenses require seat assignment. + +### Can I assign more seats than my license allows? + +No. The system prevents assigning more users than your seat count. To add more users, upgrade your license to include additional seats. + +### What's the difference between disconnecting and letting a license expire? + +- **Disconnect:** Immediate, manual action removing the license from your instance +- **Expire:** Automatic when ""Valid through"" date passes + +Both result in users losing premium features, but disconnecting is immediate and intentional. + +### How do I transfer my license to a new server? -### Instance ID not displaying -Ensure your Baserow installation is properly configured and running the latest version. + 1. Find your new server's Instance ID + 2. [Update your instance ID](/user-docs/change-a-paid-subscription#update-a-subscription-or-license) through baserow.io subscription management, or contact Baserow support to transfer the license + 3. Disconnect the license from the old instance + 4. Register the license on the new instance -### License not activating after ID change -Allow up to 15 minutes for license changes to propagate. If paid features remain unavailable, verify that the instance ID was updated correctly in your subscription settings. +## Troubleshooting + +### Cannot access Manage Licenses page + +This is because you don't have Instance Admin privileges. Contact your system administrator. The first user who signs up for your self-hosted instance is automatically an Instance Admin. + +### License not showing in list after registration + +This is because registration may have failed or not been saved properly. Refresh the page, try registering again, and check the license key for typos. Contact support if the issue persists. + +### Features not working after assigning seats + +This is because users need to log out and back in for features to activate. Assigned users should log out of Baserow and log back in. Premium/Advanced features should now be available. If not, verify the license is active and not expired. + +### ""Check now"" button doesn't update license + +This is because the server cannot reach the Baserow licensing servers, or no changes were made. Verify your server has internet access. Check firewall isn't blocking connections to baserow.io. Contact support if the license renewal isn't reflecting + +### What happens if I have more users than seats on a Premium plan? +Only the users you assign seats to will get Premium features. For example, if you have 15 users but a 12-seat license, the Instance Admin must choose which 12 users get a seat. The remaining 3 users will be on the Free plan. + +### Do I need to assign seats for the Enterprise plan? +No. The Enterprise license is instance-wide, meaning all users on your Baserow instance automatically get access to Enterprise features without any manual assignment. + +### Who can assign seats on a Premium or Advanced plan? +Instance Admins are responsible for assigning and managing user seats from the admin panel. ## Related content -- [Manage Baserow subscription and licenses](https://baserow.io/user-docs/change-a-paid-subscription) -- [Purchase Baserow subscription](https://baserow.io/user-docs/buying-a-subscription) -- [Self-hosted installation guide](https://baserow.io/docs/installation%2Fconfiguration) +**License activation and management:** +- [Activate Enterprise license](/user-docs/activate-enterprise-license) +- [Buy a subscription](/user-docs/buying-a-subscription) +- [Change a paid subscription](/user-docs/change-a-paid-subscription) + +**Plans and pricing:** +- [Baserow pricing plans](/user-docs/pricing-plans) +- [Enterprise license overview](/user-docs/enterprise-license-overview) +- [Subscriptions overview](/user-docs/subscriptions-overview) + +**Self-hosted setup:** +- [Self-hosted installation guide](https://baserow.io/docs/installation/install-with-docker) +- [Configuration guide](https://baserow.io/docs/installation/configuration) --- Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. - [Ask the Baserow community](https://community.baserow.io) for deployment advice -- [Contact support](/contact) for license and account assistance +- [Contact support](https://baserow.io/contact) for license and account assistance - [1]: https://baserow.io/user-docs/change-a-paid-subscription#update-a-subscription-or-license - [2]: https://baserow.io/user-docs/get-a-licence-key",,baserow_user_docs,https://baserow.io/user-docs/getting-and-changing-the-instance-id + [1]: https://baserow.io/user-docs/get-a-licence-key + [2]: https://baserow.io/user-docs/enterprise-license-overview + [3]: https://baserow.io/user-docs/change-a-paid-subscription",,baserow_user_docs,https://baserow.io/user-docs/getting-and-changing-the-instance-id 55,Manage subscription,change-a-paid-subscription,Manage subscription in Baserow,"# Manage an existing Baserow subscription Manage existing Baserow subscriptions by adding or removing users, changing plans, [updating payment methods][1], or [canceling subscriptions][2]. Modifying existing subscriptions allows you to adjust your Baserow investment as your team grows or your needs change. @@ -8582,7 +8745,7 @@ Learn more about [how subscriptions work in Baserow][6]. ## Update a subscription or license -Sign in to https://baserow.io, then click on your workspace in the top left corner -> Subscriptions. +Sign in to https://baserow.io, then click on your workspace in the top left corner -> Subscriptions. The subscription details page provides comprehensive information about the [subscription status][7], your current usage, including next payment date, and available modification options. @@ -8590,15 +8753,15 @@ The subscription details page provides comprehensive information about the [subs Click on **More details**. Within the subscription details view, you can access several management functions. -For workspace subscriptions, you can view the [billing plan][4], status, cost, paid users, billing period, features enabled, including how to change payment method, receipt downloads, and usage monitoring. +For workspace subscriptions, you can view the [billing plan][4], status, cost, paid users, billing period, features enabled, including how to change payment method, receipt downloads, and usage monitoring. -For self-hosted licences, you can view the [billing plan][4], [license ID][9], [instance ID][10], license key, status, seats, cost, paid users, billing period, features enabled, including how to change payment method, and receipt downloads. +For self-hosted licences, you can view the [billing plan][4], [license ID][9], [instance ID][10], license key, status, seats, cost, paid users, billing period, features enabled, including how to change payment method, and receipt downloads. This helps you understand both your current seat, row usage and storage consumption and upcoming billing obligations. ![Subscription management option][11] -To update a subscription, click **Change subscription** and select your desired options. +To update a subscription, click **Change subscription** and select your desired options. For workspace subscriptions, you can update the billing period, billing plan or [cancel the subscription][2]. @@ -8610,9 +8773,9 @@ The interface shows you the immediate billing impact of your changes before you ## Change self-hosted seat counts -Self-hosted seat management provides precise control over your licensing costs and user access. +Self-hosted seat management provides precise control over your licensing costs and user access. -To adjust seat counts for self-hosted subscriptions, you must access the Baserow.io cloud interface even though your actual database runs on your own servers. +To adjust seat counts for self-hosted subscriptions, you must access the Baserow.io cloud interface even though your actual database runs on your own servers. Navigate to your subscription details and click **More details** to access the modification interface. The self-hosted subscription management page allows you to adjust seat counts, change plans, update instance IDs, and modify payment periods all from a single interface. @@ -8802,7 +8965,7 @@ Baserow offers two authentication methods for API access: ## How to create a database token 1. **Access token settings** - - Click on your workspace in the top left corner + - Click on your workspace in the top left corner - Navigate to **Settings** - Select the **Database tokens** tab @@ -9121,7 +9284,7 @@ Pipedream lets you automate Baserow workflows without managing servers. When dat Before you begin, make sure you have: -- A [Pipedream account](https://pipedream.com) +- A [Pipedream account](https://pipedream.com) - A Baserow account with at least one database and table - A [Baserow API token](/user-docs/personal-api-tokens) from your account settings @@ -9129,7 +9292,7 @@ Before you begin, make sure you have: ### Step 1: Build a new workflow -In Pipedream, workflows must be [created in Projects][2]. Create a new project, and then create a new workflow. +In Pipedream, workflows must be [created in Projects][2]. Create a new project, and then create a new workflow. Configure GitHub Sync for projects to enable git-based version control to develop in branches, commit to or pull changes from GitHub, view diffs, and create PRs. @@ -9177,7 +9340,7 @@ Select any Baserow custom or pre-built action. ### Use any Baserow API in Node.js -Select **Use any Baserow API in Node.js** action to connect your account and customize a Baserow API request. +Select **Use any Baserow API in Node.js** action to connect your account and customize a Baserow API request. Pipedream Code steps drive the logic of your workflow and let you write any custom Node.js code. The workflow builder will accept text input to populate the steps. @@ -9246,20 +9409,20 @@ Still need help? If you're looking for something else, please don't hesitate to [14]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/492da8b5-7298-4aaa-ad84-a5d8ee0642d9/Screenshot_2022-10-20_at_06.33.33.png [15]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/9abbd422-7e4f-413e-a75f-6b07f9d1316d/Screenshot_2022-10-18_at_16.49.37.png [16]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/d6521859-d239-447e-ac82-d93c2b52f415/Screenshot_2022-10-18_at_17.06.48.png",,baserow_user_docs,https://baserow.io/user-docs/pipedream -92,SSO overview,single-sign-on-sso-overview,Baserow Single Sign-On (SSO) explained,"# Single Sign On overview +92,Single Sign On,single-sign-on-sso-overview,Baserow Single Sign-On (SSO) explained,"# Single Sign On overview Single Sign On (SSO) allows users to log in just one time with one set of credentials to get access to all corporate apps, websites, and data for which they have permission. Baserow integrates with any 3rd party SSO provider using Security Assertion Markup Language (SAML) to control who can log in and let them do so without having to sign-up to your Baserow separately. > Single Sign-On feature is a part of the Baserow Enterprise offering. Instance-wide features are only available on the self-hosted Enterprise plan. To learn more about the Baserow enterprise plan, [visit our pricing page][1]. -> +> Only Instance admins have access to the Baserow Admin panel. Instance Admins have staff access to the entire self-hosted instance. ![enter image description here][2] -Baserow Users can use Single Sign On (SSO) to maintain their user identities in a central location so they can access many services using the same user base. +Baserow Users can use Single Sign On (SSO) to maintain their user identities in a central location so they can access many services using the same user base. ## Prerequisites @@ -9334,7 +9497,7 @@ Still need help? If you're looking for something else, please feel free to make [11]: /user-docs/configure-openid-connect-for-oauth-2-sso [12]: /user-docs/enterprise-license-overview [13]: /user-docs/enable-single-sign-on-sso - [14]: /user-docs/email-and-password-authentication",,baserow_user_docs,https://baserow.io/user-docs/single-sign-on-sso-overview + [14]: /user-docs/email-and-password-authentication",roles and permissions,baserow_user_docs,https://baserow.io/user-docs/single-sign-on-sso-overview 93,Enable SSO,enable-single-sign-on-sso,Enable Single Sign On (SSO),"# Enable Single Sign On (SSO) in the admin panel Streamline your login process with Single Sign-On (SSO), which enables users to log in once using a single set of credentials. With SSO, you can conveniently access all corporate applications, websites, and authorized data. Make the most of your Baserow experience by simplifying authentication and securely accessing your resources. @@ -9343,16 +9506,16 @@ Learn how to integrate SSO to seamlessly authenticate across various application ## Overview -Instanceย Admins can set up Single sign-on (SSO) with Identity Providers (IdP) for their teams' logins to Baserow. +Instanceย Admins can set up Single sign-on (SSO) with Identity Providers (IdP) for their teams' logins to Baserow. > Single Sign-On feature is a part of the Baserow Enterprise offering. Instance-wide features are only available on the self-hosted Enterprise plan. To learn more about the Baserow enterprise plan, [visit our pricing page][1]. -> +> Only Instance admins on a self-hosted Baserow server with the Enterprise plan can access the SSO admin page. Instance Admins have staff access to the entire self-hosted instance. ## Add providers for SSO SAML -Baserow uses SAML (Security Assertion Markup Language) to simplify and secure the authentication process so users only need to log in once with a single set of authentication credentials. +Baserow uses SAML (Security Assertion Markup Language) to simplify and secure the authentication process so users only need to log in once with a single set of authentication credentials. 1. From your Baserow dashboard, go to Admin โ†’ Authentication in the navigation sidebar on the left. Under the authentication configuration section, click the โ€œAdd Providerโ€ button. @@ -9374,7 +9537,7 @@ Baserow uses SAML (Security Assertion Markup Language) to simplify and secure th ![enter image description here][6] - 6. Save the new provider. Click 'Create' to allow the SSO login configuration to occur. + 6. Save the new provider. Click 'Create' to allow the SSO login configuration to occur. After the provider has been correctly created, you should see it listed in the provider's list. @@ -9402,12 +9565,12 @@ Baserow supports a variety of OAuth 2 providers like Google, Facebook, GitLab, G To configure OpenID Connect, you will also need to retrieve your **Custom provider name** and **Base URL** from the provider. - 5. After retrieving your organization's third-party SSO details, you will need to enter the provider's **Client ID** and **Secret** that you receive from the IdP in the fields in Baserow. + 5. After retrieving your organization's third-party SSO details, you will need to enter the provider's **Client ID** and **Secret** that you receive from the IdP in the fields in Baserow. - Fill in the Providerโ€™s name. This name will be displayed to your Baserow users on the login screen. - Fill in the **Client ID** and **Secret** that you obtained from the provider. - To configure OpenID Connect, also fill in the Providerโ€™s Base **URL**. Also, you can optionally set a custom GitLab **URL** in case you are self-hosting GitLab. - 6. Save the new provider. Click 'Create' to allow the SSO login configuration to occur. + 6. Save the new provider. Click 'Create' to allow the SSO login configuration to occur. After the provider has been correctly created, you should see it listed in the provider's list. @@ -9415,11 +9578,11 @@ After the provider has been correctly created, you should see it listed in the p ## Edit or delete an identity provider -On your authentication page in the admin section, you can edit, delete or disable an authentication provider. +On your authentication page in the admin section, you can edit, delete or disable an authentication provider. Any IdP, including Email and Password authentication, can be disabled/enabled, but at least one provider needs to be enabled. To disable or enable an authentication provider, use the toggle beside the provider. -> If authentication with Email and Password is disabled, at least one authentication provider must always be enabled. It is not possible to delete or disable the last enabled provider. +> If authentication with Email and Password is disabled, at least one authentication provider must always be enabled. It is not possible to delete or disable the last enabled provider. To edit or delete an authentication provider, click the ellipsis icon beside the provider and select *Edit* or *Delete:* @@ -9461,9 +9624,9 @@ Still need help? If you're looking for something else, please feel free to make [17]: /user-docs/email-and-password-authentication",,baserow_user_docs,https://baserow.io/user-docs/enable-single-sign-on-sso 94,Configure SSO with Okta,configure-sso-with-okta,Configure SSO in Baserow with Okta,"# Configure Single Sign-on (SSO) with Okta -This guide is intended for [Admins](/user-docs/working-with-collaborators#set-the-permission-level-for-collaborators) setting up SSO SAML with Okta. +This guide is intended for [Admins](/user-docs/working-with-collaborators#set-the-permission-level-for-collaborators) setting up SSO SAML with Okta. -When you configure Single Sign-on (SSO) with Okta, your users will be able to create and sign into their Baserow accounts using Okta. +When you configure Single Sign-on (SSO) with Okta, your users will be able to create and sign into their Baserow accounts using Okta. If you are looking for information on setting up SSO with other providers: @@ -9476,7 +9639,7 @@ If you are looking for information on setting up SSO with other providers: - [Configure OpenID Connect for OAuth 2 SSO][1] > Single Sign-On feature is a part of the Baserow Enterprise offering. Instance-wide features are only available on the self-hosted Enterprise plan. To learn more about the Baserow enterprise plan, [visit our pricing page](https://baserow.io/pricing). -> +> Here's how to set up Okta to sign in to your Baserowย account. @@ -9534,7 +9697,7 @@ After you've accessed the information from the IdP Metadata, copy and paste the ## Connect Okta to your Baserow Account -Head back to Baserowย Adminย >ย Authentication > Provider. +Head back to Baserowย Adminย >ย Authentication > Provider. Configure OneLogin by inputting the domain and metadata information into the corresponding fields in your Baserow Admin Dashboard, following the [steps inย this guide](/user-docs/enable-single-sign-on-sso#add-providers-for-sso-saml). @@ -9560,15 +9723,15 @@ Set the environment variable `BASEROW_ALLOW_MULTIPLE_SSO_PROVIDERS_FOR_SAME_ACCO This option **increases security risk**, especially if you have multiple OAuth providers enabled. An attacker who gains access to a user's account on any external provider could potentially use that access to log in to the associated Baserow account. -> For optimal security, we recommend maintaining consistent authentication methods unless necessary. If enabling multiple login methods is essential, implement additional security measures to mitigate potential risks. +> For optimal security, we recommend maintaining consistent authentication methods unless necessary. If enabling multiple login methods is essential, implement additional security measures to mitigate potential risks. **Option 2: Maintain consistent authentication method** -Users can continue logging in with the authentication method they signed up with. This avoids changing Baserow's default behavior and maintains existing security measures. +Users can continue logging in with the authentication method they signed up with. This avoids changing Baserow's default behavior and maintains existing security measures. **Option 3: Delete user from [Admin panel](/user-docs/enterprise-admin-panel) and re-login via SSO** -You can delete the user from the Baserow [admin panel](/user-docs/enterprise-admin-panel). Upon logging in via SSO, Baserow will recreate the user, automatically setting SSO as their default authentication method. +You can delete the user from the Baserow [admin panel](/user-docs/enterprise-admin-panel). Upon logging in via SSO, Baserow will recreate the user, automatically setting SSO as their default authentication method. Deleting the user permanently removes all their associated data within Baserow. This option should only be considered if data loss is acceptable and after ensuring all data is backed up elsewhere. @@ -9604,7 +9767,7 @@ Still need help? If you're looking for something else, please feel free to make This guide is intended for [Admins](/user-docs/working-with-collaborators#set-the-permission-level-for-collaborators) setting up SSO SAML with OneLogin. OneLogin is a cloud-based identity and access management solution. -When you configure Single Sign-on (SSO) with OneLogin, your users will be able to create and sign into their Baserow accounts using OneLogin. +When you configure Single Sign-on (SSO) with OneLogin, your users will be able to create and sign into their Baserow accounts using OneLogin. If you are looking for information on setting up SSO with other providers: @@ -9617,13 +9780,13 @@ If you are looking for information on setting up SSO with other providers: - [Configure OpenID Connect for OAuth 2 SSO][5] > Single Sign-On feature is a part of the Baserow Enterprise offering. Instance-wide features are only available on the self-hosted Enterprise plan. To learn more about the Baserow enterprise plan, [visit our pricing page](https://baserow.io/pricing). -> +> Here's how to set up OneLogin to sign in to your Baserowย account. ## Set up SSO SAML with OneLogin -Log in to your [OneLogin](https://www.onelogin.com) account as an administrator. Clickย **Administration**ย on the toolbar to go to the Admin panel. +Log in to your [OneLogin](https://www.onelogin.com) account as an administrator. Clickย **Administration**ย on the toolbar to go to the Admin panel. To add apps to your company app catalog, go toย **Applications > Applications** from the admin page then click on `Add App`: @@ -9641,9 +9804,9 @@ Clickย **Save.** You'll find a new left-side navigation menu after saving. Click Next, log in toย Baserow. Go to theย Adminย >ย Authentication > Provider. Retrieve your ***Default Relay State URL*** and ***Single Sign On URL*** from your Baserow admin settings modal, following the [steps inย this guide](/user-docs/enable-single-sign-on-sso#add-providers-for-sso-saml). -In OneLogin configuration tab, paste your Baserow `Default Relay State URL` in the `RelayState` field. +In OneLogin configuration tab, paste your Baserow `Default Relay State URL` in the `RelayState` field. -Paste your `Single Sign On URL` in the next four fields as shown below. +Paste your `Single Sign On URL` in the next four fields as shown below. | Baserow value | Corresponding OneLogin Configuration field | | --- | --- | @@ -9684,7 +9847,7 @@ Assign the following field names and checkย **Include in SAML assertion. Clickย  | user.first_name | First Name | | user.last_name | Last Name | -Set the parameters that will be sent in the SAML response with values as shown below: +Set the parameters that will be sent in the SAML response with values as shown below: ![enter image description here][11] @@ -9698,7 +9861,7 @@ After you've accessed the information from the SAML Metadata, copy and paste the ## Connect OneLogin to your Baserow Account -Head back to Baserowย Adminย >ย Authentication > Provider. +Head back to Baserowย Adminย >ย Authentication > Provider. Configure OneLogin by inputting the domain and metadata information into the corresponding fields in your Baserow Admin Dashboard, following the [steps inย this guide](/user-docs/enable-single-sign-on-sso#add-providers-for-sso-saml). @@ -9736,15 +9899,15 @@ Set the environment variable `BASEROW_ALLOW_MULTIPLE_SSO_PROVIDERS_FOR_SAME_ACCO This option **increases security risk**, especially if you have multiple OAuth providers enabled. An attacker who gains access to a user's account on any external provider could potentially use that access to log in to the associated Baserow account. -> For optimal security, we recommend maintaining consistent authentication methods unless necessary. If enabling multiple login methods is essential, implement additional security measures to mitigate potential risks. +> For optimal security, we recommend maintaining consistent authentication methods unless necessary. If enabling multiple login methods is essential, implement additional security measures to mitigate potential risks. **Option 2: Maintain consistent authentication method** -Users can continue logging in with the authentication method they signed up with. This avoids changing Baserow's default behavior and maintains existing security measures. +Users can continue logging in with the authentication method they signed up with. This avoids changing Baserow's default behavior and maintains existing security measures. **Option 3: Delete user from [Admin panel](/user-docs/enterprise-admin-panel) and re-login via SSO** -You can delete the user from the Baserow [admin panel](/user-docs/enterprise-admin-panel). Upon logging in via SSO, Baserow will recreate the user, automatically setting SSO as their default authentication method. +You can delete the user from the Baserow [admin panel](/user-docs/enterprise-admin-panel). Upon logging in via SSO, Baserow will recreate the user, automatically setting SSO as their default authentication method. Deleting the user permanently removes all their associated data within Baserow. This option should only be considered if data loss is acceptable and after ensuring all data is backed up elsewhere. @@ -9784,9 +9947,9 @@ Still need help? If you're looking for something else, please feel free to make [15]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/141ffccd-2ce0-41b9-b5af-74a8fab538db/Screenshot_2022-11-07_at_12.18.17.png",,baserow_user_docs,https://baserow.io/user-docs/configure-sso-with-onelogin 96,Configure Google for SSO,configure-google-for-oauth-2-sso,Configure Google OAuth 2 single sign-on for Baserow,"# Set up Google OAuth 2 SSO in Baserow -This guide is intended for [Admins](/user-docs/working-with-collaborators#set-the-permission-level-for-collaborators) setting up OAuth 2 SSO with Google. +This guide is intended for [Admins](/user-docs/working-with-collaborators#set-the-permission-level-for-collaborators) setting up OAuth 2 SSO with Google. -When you configure Single Sign-on (SSO) with Google, your users will be able to create and sign into their Baserow accounts using Google. +When you configure Single Sign-on (SSO) with Google, your users will be able to create and sign into their Baserow accounts using Google. If you are looking for information on setting up SSO with other providers: @@ -9799,7 +9962,7 @@ If you are looking for information on setting up SSO with other providers: - [Configure OpenID Connect for OAuth 2 SSO][4] > Single Sign-On feature is a part of the Baserow Enterprise offering. Instance-wide features are only available on the self-hosted Enterprise plan. To learn more about the Baserow enterprise plan, [visit our pricing page](https://baserow.io/pricing). -> +> Here's how to set up OAuth 2 SSO with Google to sign in to your Baserowย account. @@ -9825,7 +9988,7 @@ Create a new credential for OAuth Client ID. A client ID is used to identify a s ![enter image description here][7] -Click the โ€˜Createโ€™ button. +Click the โ€˜Createโ€™ button. Once created, you will be able to obtain Client ID and Client secret: @@ -9835,7 +9998,7 @@ After you've accessed the information from the Credentials, copy and paste the i ## Connect Google to your Baserow Account -Head back to Baserowย Adminย >ย Authentication > Provider. +Head back to Baserowย Adminย >ย Authentication > Provider. Configure Google by inputting the Client ID and secret information into the corresponding fields in your Baserow Admin Dashboard, following the [steps inย this guide](/user-docs/enable-single-sign-on-sso#oauth-provider-configuration). @@ -9863,15 +10026,15 @@ Set the environment variable `BASEROW_ALLOW_MULTIPLE_SSO_PROVIDERS_FOR_SAME_ACCO This option **increases security risk**, especially if you have multiple OAuth providers enabled. An attacker who gains access to a user's account on any external provider could potentially use that access to log in to the associated Baserow account. -> For optimal security, we recommend maintaining consistent authentication methods unless necessary. If enabling multiple login methods is essential, implement additional security measures to mitigate potential risks. +> For optimal security, we recommend maintaining consistent authentication methods unless necessary. If enabling multiple login methods is essential, implement additional security measures to mitigate potential risks. **Option 2: Maintain consistent authentication method** -Users can continue logging in with the authentication method they signed up with. This avoids changing Baserow's default behavior and maintains existing security measures. +Users can continue logging in with the authentication method they signed up with. This avoids changing Baserow's default behavior and maintains existing security measures. **Option 3: Delete user from [Admin panel](/user-docs/enterprise-admin-panel) and re-login via SSO** -You can delete the user from the Baserow [admin panel](/user-docs/enterprise-admin-panel). Upon logging in via SSO, Baserow will recreate the user, automatically setting SSO as their default authentication method. +You can delete the user from the Baserow [admin panel](/user-docs/enterprise-admin-panel). Upon logging in via SSO, Baserow will recreate the user, automatically setting SSO as their default authentication method. Deleting the user permanently removes all their associated data within Baserow. This option should only be considered if data loss is acceptable and after ensuring all data is backed up elsewhere. @@ -9906,9 +10069,9 @@ Still need help? If you're looking for something else, please feel free to make [10]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/3a831490-1029-4c54-b8d1-3484761dfea3/Screenshot_2022-11-04_at_14.48.37.png",,baserow_user_docs,https://baserow.io/user-docs/configure-google-for-oauth-2-sso 97,Configure Facebook for SSO,configure-facebook-for-oauth-2-sso,Set up Facebook login with Baserow OAuth 2,"# Configure Facebook OAuth 2 SSO in Baserow -This guide is intended for [Admins](/user-docs/working-with-collaborators#set-the-permission-level-for-collaborators) setting up OAuth 2 SSO with Facebook. +This guide is intended for [Admins](/user-docs/working-with-collaborators#set-the-permission-level-for-collaborators) setting up OAuth 2 SSO with Facebook. -When you configure Single Sign-on (SSO) with Facebook, your users will be able to create and sign into their Baserow accounts using Facebook. +When you configure Single Sign-on (SSO) with Facebook, your users will be able to create and sign into their Baserow accounts using Facebook. If you are looking for information on setting up SSO with other providers: @@ -9921,7 +10084,7 @@ If you are looking for information on setting up SSO with other providers: - [Configure OpenID Connect for OAuth 2 SSO][3] > Single Sign-On feature is a part of the Baserow Enterprise offering. Instance-wide features are only available on the self-hosted Enterprise plan. To learn more about the Baserow enterprise plan, [visit our pricing page](https://baserow.io/pricing). -> +> Here's how to set up OAuth 2 SSO with Facebook to sign in to your Baserowย account. @@ -9945,7 +10108,7 @@ Next, log in toย Baserow. Go to theย Adminย >ย Authentication > Provider. Retrie To be able to load this URL, add all domains and sub-domains of your app to the App Domains field in your app settings. -From the sidebar, navigate to **app products > Facebook login > settings**ย and add your redirect URL underย **Valid OAuth Redirect URIs.** This is the Baserow Callback URL you will find in the Baserow Provider Settings where you create or edit the authentication provider. +From the sidebar, navigate to **app products > Facebook login > settings**ย and add your redirect URL underย **Valid OAuth Redirect URIs.** This is the Baserow Callback URL you will find in the Baserow Provider Settings where you create or edit the authentication provider. ![enter image description here][7] @@ -9955,13 +10118,13 @@ From the Facebook app dashboard, navigate to Settings โ†’ Basic. ![enter image description here][8] -In the app Settings > Basic, click on ""Add Platform"" then select ""Website"". Enter the Callback URL as the Site URL(s) in the field that appears. +In the app Settings > Basic, click on ""Add Platform"" then select ""Website"". Enter the Callback URL as the Site URL(s) in the field that appears. ![enter image description here][9] Then click on **Save changes**. -To integrate Baserow with Facebook, +To integrate Baserow with Facebook, - Obtain App ID, this will be the Baserow Client ID. - Obtain App secret, this will be the Baserow Secret. @@ -9974,7 +10137,7 @@ After you've accessed this information from the application, copy and paste the ## Connect Facebook to your Baserow Account -Head back to Baserowย Adminย >ย Authentication > Provider. +Head back to Baserowย Adminย >ย Authentication > Provider. Configure Facebook by inputting the **Client ID** and **Secret** information into the corresponding fields in your Baserow Admin Dashboard, following the [steps inย this guide](/user-docs/enable-single-sign-on-sso#oauth-provider-configuration). @@ -10002,15 +10165,15 @@ Set the environment variable `BASEROW_ALLOW_MULTIPLE_SSO_PROVIDERS_FOR_SAME_ACCO This option **increases security risk**, especially if you have multiple OAuth providers enabled. An attacker who gains access to a user's account on any external provider could potentially use that access to log in to the associated Baserow account. -> For optimal security, we recommend maintaining consistent authentication methods unless necessary. If enabling multiple login methods is essential, implement additional security measures to mitigate potential risks. +> For optimal security, we recommend maintaining consistent authentication methods unless necessary. If enabling multiple login methods is essential, implement additional security measures to mitigate potential risks. **Option 2: Maintain consistent authentication method** -Users can continue logging in with the authentication method they signed up with. This avoids changing Baserow's default behavior and maintains existing security measures. +Users can continue logging in with the authentication method they signed up with. This avoids changing Baserow's default behavior and maintains existing security measures. **Option 3: Delete user from [Admin panel](/user-docs/enterprise-admin-panel) and re-login via SSO** -You can delete the user from the Baserow [admin panel](/user-docs/enterprise-admin-panel). Upon logging in via SSO, Baserow will recreate the user, automatically setting SSO as their default authentication method. +You can delete the user from the Baserow [admin panel](/user-docs/enterprise-admin-panel). Upon logging in via SSO, Baserow will recreate the user, automatically setting SSO as their default authentication method. Deleting the user permanently removes all their associated data within Baserow. This option should only be considered if data loss is acceptable and after ensuring all data is backed up elsewhere. @@ -10048,9 +10211,9 @@ Still need help? If you're looking for something else, please feel free to make [12]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/5e95edb4-e3a9-4ed1-afd4-c41baaf9e882/Screenshot_2022-11-07_at_14.30.15.png",,baserow_user_docs,https://baserow.io/user-docs/configure-facebook-for-oauth-2-sso 98,Configure GitHub for SSO,configure-github-for-oauth-2-sso,Baserow GitHub OAuth 2 SSO setup guide,"# Set up GitHub for OAuth 2 SSO -This guide is intended for [Admins](/user-docs/working-with-collaborators#set-the-permission-level-for-collaborators) setting up OAuth 2 SSO with GitHub. +This guide is intended for [Admins](/user-docs/working-with-collaborators#set-the-permission-level-for-collaborators) setting up OAuth 2 SSO with GitHub. -When you configure Single Sign-on (SSO) with GitHub, your users will be able to create and sign into their Baserow accounts using GitHub. +When you configure Single Sign-on (SSO) with GitHub, your users will be able to create and sign into their Baserow accounts using GitHub. If you are looking for information on setting up SSO with other providers: @@ -10063,7 +10226,7 @@ If you are looking for information on setting up SSO with other providers: - [Configure OpenID Connect for OAuth 2 SSO][2] > Single Sign-On feature is a part of the Baserow Enterprise offering. Instance-wide features are only available on the self-hosted Enterprise plan. To learn more about the Baserow enterprise plan, [visit our pricing page](/pricing). -> +> Here's how to set up OAuth 2 SSO with GitHub to sign in to your Baserowย account. @@ -10102,15 +10265,15 @@ After you've accessed this information from the application, copy and paste the ## Connect GitHub to your Baserow Account -Head back to Baserowย Adminย >ย Authentication > Provider. +Head back to Baserowย Adminย >ย Authentication > Provider. To set up GitHub integration, simply enter your *Client ID* and *Secret* information into the designated fields in your Baserow Admin Dashboard. [Follow the steps outlined in our guide][13]. ![enter image description here][7] -You should be able to log in to Baserow with GitHub after completing these steps. Simply visit your Baserow server's login page, and you'll find the option to log in with GitHub. +You should be able to log in to Baserow with GitHub after completing these steps. Simply visit your Baserow server's login page, and you'll find the option to log in with GitHub. -When your users try to access Baserow, they'll be seamlessly redirected to GitHub's sign-in flow. After securely logging in with their GitHub credentials, they'll be redirected back to the Baserow app. +When your users try to access Baserow, they'll be seamlessly redirected to GitHub's sign-in flow. After securely logging in with their GitHub credentials, they'll be redirected back to the Baserow app. ![enter image description here][8] @@ -10132,15 +10295,15 @@ Set the environment variable `BASEROW_ALLOW_MULTIPLE_SSO_PROVIDERS_FOR_SAME_ACCO This option **increases security risk**, especially if you have multiple OAuth providers enabled. An attacker who gains access to a user's account on any external provider could potentially use that access to log in to the associated Baserow account. -> For optimal security, we recommend maintaining consistent authentication methods unless necessary. If enabling multiple login methods is essential, implement additional security measures to mitigate potential risks. +> For optimal security, we recommend maintaining consistent authentication methods unless necessary. If enabling multiple login methods is essential, implement additional security measures to mitigate potential risks. **Option 2: Maintain consistent authentication method** -Users can continue logging in with the authentication method they signed up with. This avoids changing Baserow's default behavior and maintains existing security measures. +Users can continue logging in with the authentication method they signed up with. This avoids changing Baserow's default behavior and maintains existing security measures. **Option 3: Delete user from [Admin panel](/user-docs/enterprise-admin-panel) and re-login via SSO** -You can delete the user from the Baserow [admin panel](/user-docs/enterprise-admin-panel). Upon logging in via SSO, Baserow will recreate the user, automatically setting SSO as their default authentication method. +You can delete the user from the Baserow [admin panel](/user-docs/enterprise-admin-panel). Upon logging in via SSO, Baserow will recreate the user, automatically setting SSO as their default authentication method. Deleting the user permanently removes all their associated data within Baserow. This option should only be considered if data loss is acceptable and after ensuring all data is backed up elsewhere. @@ -10179,9 +10342,9 @@ Still need help? If you're looking for something else, please feel free to make [13]: /user-docs/enable-single-sign-on-sso#oauth-provider-configuration",,baserow_user_docs,https://baserow.io/user-docs/configure-github-for-oauth-2-sso 99,Configure GitLab for SSO,configure-gitlab-for-oauth-2-sso,Baserow GitLab OAuth 2 SSO setup guide,"# Set up GitLab OAuth 2 SSO in Baserow -This guide is intended for [Admins](/user-docs/working-with-collaborators#set-the-permission-level-for-collaborators) setting up OAuth 2 SSO with GitLab. +This guide is intended for [Admins](/user-docs/working-with-collaborators#set-the-permission-level-for-collaborators) setting up OAuth 2 SSO with GitLab. -When you configure Single Sign-on (SSO) with GitLab, your users will be able to create and sign into their Baserow accounts using GitLab. +When you configure Single Sign-on (SSO) with GitLab, your users will be able to create and sign into their Baserow accounts using GitLab. If you are looking for information on setting up SSO with other providers: @@ -10194,7 +10357,7 @@ If you are looking for information on setting up SSO with other providers: - [Configure OpenID Connect for OAuth 2 SSO][1] > Single Sign-On feature is a part of the Baserow Enterprise offering. Instance-wide features are only available on the self-hosted Enterprise plan. To learn more about the Baserow enterprise plan, [visit our pricing page](/pricing). -> +> Here's how to set up OAuth 2 SSO with GitLab to sign in to your Baserowย account. @@ -10230,7 +10393,7 @@ After you've accessed this information from the application, copy and paste the ## Connect GitLab to your Baserow Account -Head back to Baserowย Adminย >ย Authentication > Provider. +Head back to Baserowย Adminย >ย Authentication > Provider. Configure GitLab by inputting the Client ID and secret information into the corresponding fields in your Baserow Admin Dashboard, following the [steps inย this guide](/user-docs/enable-single-sign-on-sso#oauth-provider-configuration). @@ -10258,15 +10421,15 @@ Set the environment variable `BASEROW_ALLOW_MULTIPLE_SSO_PROVIDERS_FOR_SAME_ACCO This option **increases security risk**, especially if you have multiple OAuth providers enabled. An attacker who gains access to a user's account on any external provider could potentially use that access to log in to the associated Baserow account. -> For optimal security, we recommend maintaining consistent authentication methods unless necessary. If enabling multiple login methods is essential, implement additional security measures to mitigate potential risks. +> For optimal security, we recommend maintaining consistent authentication methods unless necessary. If enabling multiple login methods is essential, implement additional security measures to mitigate potential risks. **Option 2: Maintain consistent authentication method** -Users can continue logging in with the authentication method they signed up with. This avoids changing Baserow's default behavior and maintains existing security measures. +Users can continue logging in with the authentication method they signed up with. This avoids changing Baserow's default behavior and maintains existing security measures. **Option 3: Delete user from [Admin panel](/user-docs/enterprise-admin-panel) and re-login via SSO** -You can delete the user from the Baserow [admin panel](/user-docs/enterprise-admin-panel). Upon logging in via SSO, Baserow will recreate the user, automatically setting SSO as their default authentication method. +You can delete the user from the Baserow [admin panel](/user-docs/enterprise-admin-panel). Upon logging in via SSO, Baserow will recreate the user, automatically setting SSO as their default authentication method. Deleting the user permanently removes all their associated data within Baserow. This option should only be considered if data loss is acceptable and after ensuring all data is backed up elsewhere. @@ -10301,7 +10464,7 @@ Still need help? If you're looking for something else, please feel free to make [10]: /user-docs/email-and-password-authentication",,baserow_user_docs,https://baserow.io/user-docs/configure-gitlab-for-oauth-2-sso 100,Configure OpenID Connect,configure-openid-connect-for-oauth-2-sso,Baserow single sign-on with OpenID Connect,"# Configure OpenID Connect for Baserow SSO -This guide is intended for [Admins](/user-docs/working-with-collaborators#set-the-permission-level-for-collaborators) setting up OAuth 2 SSO with OpenID Connect. +This guide is intended for [Admins](/user-docs/working-with-collaborators#set-the-permission-level-for-collaborators) setting up OAuth 2 SSO with OpenID Connect. OpenID Connect (OIDC) is an open authentication protocol on top of the OAuth 2.0 framework. OIDC is a consumer-focused standard that enables users to access third-party websites with just one sign-on (SSO). @@ -10317,19 +10480,19 @@ If you are looking for information on setting up SSO with other providers: - [Configure GitHub for OAuth 2 SSO](/user-docs/configure-github-for-oauth-2-sso) - [Configure GitLab for OAuth 2 SSO](/user-docs/configure-gitlab-for-oauth-2-sso) -When you configure Single Sign-on (SSO) with OpenID Connect, your users can create and sign into their Baserow accounts using OpenID Providers (OPs) such as an email service or social network to verify their identities. +When you configure Single Sign-on (SSO) with OpenID Connect, your users can create and sign into their Baserow accounts using OpenID Providers (OPs) such as an email service or social network to verify their identities. -Based on the authentication carried out by an authorization server, you canย receive basic profile information about the end user and validate the end user's identity. +Based on the authentication carried out by an authorization server, you canย receive basic profile information about the end user and validate the end user's identity. Here's how to set up OAuth 2 SSO with OpenID Connect to sign in to your Baserowย account. ## Set up OAuth 2 SSO with OpenID Connect -Sign in or create an account with a provider of your choice. +Sign in or create an account with a provider of your choice. You must register your application with the IdP in order to let users log in using an OIDC Identity Provider. To do this, you must refer to the documentation provided by your IdP as it differs for each OIDC Identity Provider. -Your OIDC Identity Provider will create a unique ID for the registered API during this procedure, typically referred to as a Client ID and Secret. +Your OIDC Identity Provider will create a unique ID for the registered API during this procedure, typically referred to as a Client ID and Secret. Once created, you will use the credentials to configure a new OpenID Connect provider in Baserow: @@ -10368,15 +10531,15 @@ Set the environment variable `BASEROW_ALLOW_MULTIPLE_SSO_PROVIDERS_FOR_SAME_ACCO This option **increases security risk**, especially if you have multiple OAuth providers enabled. An attacker who gains access to a user's account on any external provider could potentially use that access to log in to the associated Baserow account. -> For optimal security, we recommend maintaining consistent authentication methods unless necessary. If enabling multiple login methods is essential, implement additional security measures to mitigate potential risks. +> For optimal security, we recommend maintaining consistent authentication methods unless necessary. If enabling multiple login methods is essential, implement additional security measures to mitigate potential risks. **Option 2: Maintain consistent authentication method** -Users can continue logging in with the authentication method they signed up with. This avoids changing Baserow's default behavior and maintains existing security measures. +Users can continue logging in with the authentication method they signed up with. This avoids changing Baserow's default behavior and maintains existing security measures. **Option 3: Delete user from [Admin panel](/user-docs/enterprise-admin-panel) and re-login via SSO** -You can delete the user from the Baserow [admin panel](/user-docs/enterprise-admin-panel). Upon logging in via SSO, Baserow will recreate the user, automatically setting SSO as their default authentication method. +You can delete the user from the Baserow [admin panel](/user-docs/enterprise-admin-panel). Upon logging in via SSO, Baserow will recreate the user, automatically setting SSO as their default authentication method. Deleting the user permanently removes all their associated data within Baserow. This option should only be considered if data loss is acceptable and after ensuring all data is backed up elsewhere. @@ -10405,7 +10568,7 @@ Still need help? If you're looking for something else, please feel free to make [3]: /user-docs/enterprise-license-overview [4]: /user-docs/enable-single-sign-on-sso [5]: /user-docs/email-and-password-authentication",,baserow_user_docs,https://baserow.io/user-docs/configure-openid-connect-for-oauth-2-sso -101,Role hierarchy,role-based-access-control-rbac,Baserow role hierarchy explained for access control,"# Understanding role hierarchy for access control +101,Role hierarchy,role-based-access-control-rbac,Baserow role hierarchy for access control,"# Understanding role hierarchy for access control Understanding role hierarchy is essential for designing secure, scalable permission structures that balance ease of management with precise access control. @@ -10419,49 +10582,54 @@ Baserow's role hierarchy creates a flexible permission system where access is de Rather than a flat permission model, Baserow uses levels of role assignment: [workspace][1], [database][2], and [table][3], allowing administrators to set broad defaults while making targeted exceptions. When a member has multiple roles from different sources, the hierarchy system automatically determines which permission applies. +**Example:** Sarah has **Editor** role at workspace level, **Viewer** role on Finance database, and **Admin** role on Budget table. Sarah can edit everywhere except the Finance Database (view only), but has admin access specifically to the Budget Table. + +## Understanding the permission hierarchy + +Baserow's permissions are applied in a ""top-down"" hierarchy, where more specific settings always override broader ones. This allows you to set general rules at the highest level and then create specific exceptions where needed. + +A more specific permission (like at the Table level) will always take precedence over a more general permission (like at the Workspace level). -## Permission levels from broad to specific +The hierarchy flows in this order: ``` -Workspace Level (Default baseline for all content) +No access (no roles assigned) + โ†“ +Workspace-level team role (least specific) + โ†“ +Workspace-level individual role (Default baseline for all content) โ†“ overridden by -Database Level (Department or project-level exceptions) +Database-level team role + โ†“ +Database-level individual role (Department or project-level exceptions) โ†“ overridden by -Table Level (Granular, specific restrictions) +Table-level team role + โ†“ +Table-level individual role (Granular, specific restrictions) ``` -**Principle:** More specific assignments always override broader ones. - -This structure lets you set generous defaults while protecting sensitive data at the appropriate specificity level. - -**Example:** Sarah has **Editor** role at workspace level, **Viewer** role on Finance Database, and **Admin** role on Budget Table. Sarah can edit everywhere except the Finance Database (view only), but has admin access specifically to the Budget Table. +This structure is designed to be flexible. You can set generous, team-wide defaults at the Workspace level while securely locking down specific, sensitive data at the Table level. +### Role assignment and inheritance principles +- **Workspace role = default** โ€“ Applies everywhere unless overridden +- **Individual > Team** โ€“ Member-specific roles take precedence over team roles +- **Specific > General** โ€“ Table overrides beat database, database beats workspace +- **Highest permission wins** โ€“ When multiple sources exist, the highest prevails -## Individual vs. team role precedence +Learn more about [role capabilities](/user-docs/set-permission-level). -> **Individual member roles ALWAYS override team roles at the same level.** +### Hierarchical team access -### Precedence order (highest to lowest priority) +Higher-level teams can access content owned by lower-level teams, but not vice versa. -1. **Table-level individual role** (most specific + individual) -2. **Table-level team role** -3. **Database-level individual role** -4. **Database-level team role** -5. **Workspace-level individual role** -6. **Workspace-level team role** (least specific) -7. **No access** (no roles assigned) +Workspace-level individual role is the default baseline. Permissions set here apply to all databases and tables within the workspace unless overridden. -### Precedence examples +Settings at the database-level individual role level override the Workspace permissions for all tables within that specific database. -| Individual Roles | Team Roles | Effective Permission | Why | -|------------------|------------|---------------------|-----| -| Workspace: Editor | Workspace: Admin via Team A | **Editor** | Individual workspace > team workspace | -| Database A: Viewer | Database A: Editor via Team A | **Viewer** | Individual database > team database | -| None | Workspace: Editor via Team A + Database A: Admin via Team B | **Admin on Database A**, Editor elsewhere | Highest team role wins, more specific beats general | -| Workspace: No Role | Workspace: Editor via Team A | **Editor** | Team provides access when individual has No Role | -| Table X: Admin, Workspace: Viewer | Workspace: Admin via Team A | **Admin on Table X**, Viewer elsewhere | Most specific individual role (table) wins | +Settings at the table-level individual role level override both Database and Workspace permissions, giving you granular control over a single table. +Learn how to [implement team hierarchies](/user-docs/assign-roles-to-teams-at-workspace-level). ## Role hierarchy principles @@ -10469,13 +10637,15 @@ This structure lets you set generous defaults while protecting sensitive data at The most specific role assignment takes precedence, regardless of permission level. This allows you to lock down sensitive tables even for workspace admins. -**Example:** A workspace member has **Admin** at workspace level, and **Viewer** on specific table. Viewer role applies to that table (table is more specific than workspace) +**Example:** A workspace member has **Admin** role at workspace level, and **Viewer** role on specific table. The viewer role applies to that table (table is more specific than workspace) ### Principle 2: Individual overrides team -A member's individual role assignment always beats roles inherited from team membership. This enables targeted restrictions for specific members within a team. +> Individual member roles ALWAYS override team roles at the same level. + +A member's individual role assignment always takes precedence over roles inherited from team membership. This enables targeted restrictions for specific members within a team. -**Example:** A workspace member has **Viewer** individually on Database A, and the member's team has **Admin** on Database A. The workspace member gets Viewer role (individual assignment wins) +**Example:** A workspace member has a **Viewer** role individually on Database A, and the member's team has an **Admin** role on Database A. The workspace member gets the Viewer role (individual assignment wins) ### Principle 3: Highest permission across teams @@ -10485,7 +10655,7 @@ When a member belongs to multiple teams with different roles at the same level, ### Principle 4: ""No Role"" requires explicit access -""No Role"" at the workspace level means zero default access; members need team membership or explicit database/table grants to access anything. This creates the ""least privilege"" security model, where all access is explicit. +""No Role"" at the workspace level means zero default access; members need team membership or explicit database/table grants to access anything. This creates the least privilege security model, where all access is explicit. **Example:** A workspace member has **No Role** at workspace level, and has **Editor** on Database A via team. Editor access to Database A only, no access to other databases @@ -10497,52 +10667,31 @@ When a member belongs to multiple teams with different roles at the same level, When a member tries to access a table, Baserow checks permissions in this order: ``` -1. Does member have table-level individual role? +1. Does the member have a table-level individual role? YES โ†’ Use that role โœ“ NO โ†’ Continue to step 2 -2. Does member have table-level role via any team? - YES โ†’ Use highest team role โœ“ +2. Does the member have a table-level role via any team? + YES โ†’ Use the highest team role โœ“ NO โ†’ Continue to step 3 -3. Does member have database-level individual role? +3. Does the member have a database-level individual role? YES โ†’ Use that role โœ“ NO โ†’ Continue to step 4 -4. Does member have database-level role via any team? - YES โ†’ Use highest team role โœ“ +4. Does the member have a database-level role via any team? + YES โ†’ Use the highest team role โœ“ NO โ†’ Continue to step 5 -5. Does member have workspace-level individual role? +5. Does the member have a workspace-level individual role? YES โ†’ Use that role โœ“ NO โ†’ Continue to step 6 -6. Does member have workspace-level role via any team? - YES โ†’ Use highest team role โœ“ +6. Does the member have a workspace-level role via any team? + YES โ†’ Use the highest team role โœ“ NO โ†’ No access โœ— ``` -## Team hierarchies - -### Hierarchical team access - -Higher-level teams can access content owned by lower-level teams, but not vice versa. - -**Hierarchy structure:** -``` -Executive Team (Level 1) - โ””โ”€โ”€ Can access everything below - Department Leads (Level 2) - โ””โ”€โ”€ Can access everything below - Project Teams (Level 3) - โ””โ”€โ”€ Can access everything below - Contributors (Level 4) -``` - -Level 1 can view/edit Level 2, 3, and 4 content. Level 3 can view/edit Level 4 content. Level 4 cannot access Level 3, 2, or 1 content. - -Learn how to [implement team hierarchies](/user-docs/assign-roles-to-teams-at-workspace-level). - ## Frequently asked questions ### What happens when I change a workspace-level role? @@ -10645,7 +10794,7 @@ To establish a connection with the Baserow data source, you can either click on ### Step 1: Add Baserow as a data source -1. **Open the data sources panel**: In ToolJet's app builder, click the **Data sources** tab in the left sidebar. +1. **Open the data sources panel**: In ToolJet's app builder, click the **Data sources** tab in the left sidebar. 2. **Select Baserow**: Search for ""Baserow"" in the data source modal. Click on Baserow to select it @@ -11036,7 +11185,7 @@ Baserow Cloud is the fastest way to start using Baserow. Sign up at [baserow.io] - **Performance**: Load balancing and optimization - **Uptime**: 99.9% availability with monitoring -Learn more about [Baserow Cloud pricing and plans][2]. +Learn more about [Baserow Cloud pricing and plans][2]. ### When to choose Cloud @@ -11061,7 +11210,7 @@ Self-hosted Baserow gives you complete control over where and how Baserow runs. - **Customization**: Modify and extend Baserow if needed - **Air-gapped deployment**: Run completely offline if required -Learn more about [Baserow Self-hosted pricing and plans][2]. +Learn more about [Baserow Self-hosted pricing and plans][2]. ### When to choose Self-hosted @@ -11266,14 +11415,14 @@ Role-based permissions and administrative features remain unavailable. These req ## Advanced plan -The Advanced plan provides enterprise-grade security and management features for larger organizations requiring granular access control. +The Advanced plan offers enterprise-grade security and management features for larger organizations that require granular access control. **Everything from Premium, plus:** - Enhanced limits: 250,000 rows, 100GB storage (cloud) - - [Role-based permissions][15] for granular access control + - [Role-based permissions][15] for granular access control - [Field-level permissions][16] - - Direct priority support for faster issue resolution + - Direct priority support for faster issue resolution - [Audit logging][17] for compliance and security monitoring - [Applications][18] - File upload element, SSO user authentication - White label application branding @@ -11282,13 +11431,13 @@ The Advanced plan provides enterprise-grade security and management features for The primary differentiator between Advanced and Premium is role-based permissions, allowing granular control over who can view, edit, or manage databases and workspaces within your organization. -## Enterprise plan - Custom pricing +## Enterprise plan Enterprise plans offer maximum flexibility and control for large organizations with specific requirements. **Available exclusively for self-hosted deployments** with custom pricing based on your organization's needs. -Enterprise includes everything from Advanced plus +Enterprise includes everything from Advanced plus - Managed Baserow instance - Implementation services - Payment by invoice @@ -11338,7 +11487,7 @@ Visit the [Baserow pricing page](https://baserow.io/pricing) for current rates a ## Related content - [How to buy a subscription](/user-docs/buying-a-subscription) -- [Subscription overview and billing](/user-docs/subscriptions-overview) +- [Subscription overview and billing](/user-docs/subscriptions-overview) - [Role-based permissions guide](/user-docs/permissions-overview) - [Enterprise license overview](/user-docs/enterprise-license-overview) - [Self-hosted installation guide](/user-docs/set-up-baserow) @@ -11442,7 +11591,7 @@ The deletion confirmation pop-up shows exactly which workspaces will be deleted ### Workspaces with other admins -**You'll be removed from these workspaces:** Workspaces continue operating normally. Other members retain full access. Your contributions remain (comments, data changes). +**You'll be removed from these workspaces:** Workspaces continue operating normally. Other members retain full access. Your contributions remain (comments, data changes). Shared workspaces are not affected by your account deletion as long as other admins exist. @@ -11551,34 +11700,34 @@ Email and password authentication can be enabled or disabled from the Authentica Before enabling/disabling email and password authentication via the admin panel, you must first enable an SSO identity provider. Learn more about [configuring SSO in the Admin Panel][2]. > At least one auth provider has to be always enabled. If authentication with email/password is disabled, SAML or OAuth 2 provider needs to be configured. It is not possible to delete or disable the last enabled provider. -> +> -To disable Email and password authentication, +To disable Email and password authentication, -1. Navigate to the Admin Panel. -2. Click on the Authentication page in the navigation sidebar on the left. You should see a list of IdPs configured. -3. Toggle the switch under ""Email and password authenticationโ€ to enable or disable. +1. Navigate to the Admin Panel. +2. Click on the Authentication page in the navigation sidebar on the left. You should see a list of IdPs configured. +3. Toggle the switch under ""Email and password authenticationโ€ to enable or disable. ![enter image description here][3] -Note that when password authentication is disabled, the login and sign up forms are hidden. If disabled, only an instance admin is allowed to log in with their email and password. +Note that when password authentication is disabled, the login and sign up forms are hidden. If disabled, only an instance admin is allowed to log in with their email and password. ## Bypass login page redirect -> Note that this action is restricted to instance admins. An Instance Admin is the account that installs and sets up Baserow and has staff privileges. -> +> Note that this action is restricted to instance admins. An Instance Admin is the account that installs and sets up Baserow and has staff privileges. +> Both SAML and OAuth2 providers work based on redirection to another site. If password authentication is disabled and only one redirect-based auth provider is enabled (SAML or OAuth 2), the login page will redirect users automatically. By default, the user will see the login page only for a brief moment before it redirects. -However, the instance admin (super admin) can always log in via email and password even when the Email and password authentication is disabled and the automatic redirect is in action. +However, the instance admin (super admin) can always log in via email and password even when the Email and password authentication is disabled and the automatic redirect is in action. -If the login form is hidden, the instance admin can bypass this automatic redirect behavior on the login page by adding the `?noredirect` parameter to the login URL. +If the login form is hidden, the instance admin can bypass this automatic redirect behavior on the login page by adding the `?noredirect` parameter to the login URL. The instance admin can use this `?noredirect` URL parameter to actually display the login page and log in via email and password. The full URL in the SaaS hosted version would look like:ย `https://baserow.io/login?noredirect` -This is helpful so that instance admins know how to log in to Baserow if their SAML or OAuth provider is misconfigured and email/password auth is disabled. If the password authentication is enabled, the login page will never redirect and all users can log in with their details. +This is helpful so that instance admins know how to log in to Baserow if their SAML or OAuth provider is misconfigured and email/password auth is disabled. If the password authentication is enabled, the login page will never redirect and all users can log in with their details. ## Related content @@ -11615,7 +11764,7 @@ Whether you're managing a blog, tracking sales, or organizing events, templates ## Overview -Templates provide the fastest way to create functional databases in Baserow. Instead of building structure from scratch, templates offer pre-configured tables, fields, views, and sample data designed for specific use cases. +Templates provide the fastest way to create functional databases in Baserow. Instead of building structure from scratch, templates offer pre-configured tables, fields, views, and sample data designed for specific use cases. Using templates offers a fast and efficient way to get started. They save time by providing pre-built tables, sample data, and ready-to-use structures. Templates also demonstrate best practices, showing effective table structures, field types, relationships, and view options. Everything is fully customizable, allowing you to adjust tables, fields, and data to match your needs while keeping professional conventions and optimized configurations in place. @@ -11655,11 +11804,11 @@ Once the installation is complete, your new database opens with all tables fully ### Immediate next steps -Start by exploring the database structure: click through each table to understand its purpose, review field types (hover over field names for details), examine the different views, and study the sample data to see the intended use case. +Start by exploring the database structure: click through each table to understand its purpose, review field types (hover over field names for details), examine the different views, and study the sample data to see the intended use case. -Next, customize the database to fit your workflow by renaming tables and fields, adding new fields, removing unnecessary ones, and adjusting field properties such as options and validations. +Next, customize the database to fit your workflow by renaming tables and fields, adding new fields, removing unnecessary ones, and adjusting field properties such as options and validations. -After customizing, replace the sample data by deleting or archiving rows, [importing your existing data](/user-docs/import-data-into-an-existing-table) via CSV, manually entering new rows, or setting up [forms](/user-docs/guide-to-creating-forms-in-baserow) for data collection. +After customizing, replace the sample data by deleting or archiving rows, [importing your existing data](/user-docs/import-data-into-an-existing-table) via CSV, manually entering new rows, or setting up [forms](/user-docs/guide-to-creating-forms-in-baserow) for data collection. Finally, configure permissions by [adding collaborators](/user-docs/working-with-collaborators) to your workspace, assign [role-based permissions](/user-docs/permissions-overview) for team members, and create [personal views](/user-docs/personal-views) for individual users. @@ -11667,13 +11816,13 @@ Finally, configure permissions by [adding collaborators](/user-docs/working-with ### Customize the template -Templates provide a starting point, but you can tailor them to fit your workflow. +Templates provide a starting point, but you can tailor them to fit your workflow. -You can add new tables by clicking ""+ Add table"" in your database, naming the table, and creating [Link to table](/user-docs/link-to-table-field) fields to connect it with existing tables. Field types can be modified to better match your data by editing the field type and adjusting properties as needed. +You can add new tables by clicking ""+ Add table"" in your database, naming the table, and creating [Link to table](/user-docs/link-to-table-field) fields to connect it with existing tables. Field types can be modified to better match your data by editing the field type and adjusting properties as needed. -Additional views can be created beyond the defaults provided by the template (Grid, Gallery, [Kanban](/user-docs/guide-to-kanban-view), [Calendar](/user-docs/guide-to-calendar-view), or [Timeline](/user-docs/guide-to-timeline-view)), configure filters, sorts, and groupings, and save the view as [personal or collaborative](/user-docs/collaborative-views). +Additional views can be created beyond the defaults provided by the template (Grid, Gallery, [Kanban](/user-docs/guide-to-kanban-view), [Calendar](/user-docs/guide-to-calendar-view), or [Timeline](/user-docs/guide-to-timeline-view)), configure filters, sorts, and groupings, and save the view as [personal or collaborative](/user-docs/collaborative-views). -Formula fields included in templates can also be adjusted by editing the field, updating the formula with the [formula reference](/user-docs/understanding-formulas), and testing with sample data before applying. +Formula fields included in templates can also be adjusted by editing the field, updating the formula with the [formula reference](/user-docs/understanding-formulas), and testing with sample data before applying. ## Template vs. scratch vs. import @@ -11700,7 +11849,7 @@ Sample data is included to demonstrate how the template works. You can keep it f ### Can I use the same template multiple times? -Absolutely. Install a template as many times as needed; for different projects, departments, or clients. Each installation creates an independent database that you can customize separately. +Absolutely. Install a template as many times as needed; for different projects, departments, or clients. Each installation creates an independent database that you can customize separately. ### How do I find templates for my specific industry? @@ -11715,7 +11864,7 @@ Currently, there's no built-in template sharing feature, but you can: ### Do templates work on all Baserow plans? -Yes, all templates are available on every Baserow plan, including the free tier. Some templates may use features specific to paid plans, but core template functionality works universally. +Yes, all templates are available on every Baserow plan, including the free tier. Some templates may use features specific to paid plans, but core template functionality works universally. ## Related content @@ -11745,7 +11894,7 @@ Now that you've installed a template, explore these topics: Still need help? If you're looking for something else, please feel free to make recommendations or ask us questionsโ€”we're ready to assist you. - - [Ask the Baserow community](https://community.baserow.io) + - [Ask the Baserow community](https://community.baserow.io) - [Contact support](/contact) for questions about Baserow or help with your account. @@ -11758,7 +11907,7 @@ Migrate your Airtable bases to Baserow in minutes with automatic field type conv ## Overview -Switching from Airtable to Baserow doesn't mean starting from scratch. Baserow's import feature automatically converts your Airtable bases into Baserow databases, preserving your tables, data, views, and most field configurations. +Switching from Airtable to Baserow doesn't mean starting from scratch. Baserow's import feature automatically converts your Airtable bases into Baserow databases, preserving your tables, data, views, and most field configurations. The process takes just minutes and handles field type conversions automatically, so you can focus on customizing your new database rather than rebuilding it. @@ -11790,12 +11939,12 @@ Once complete, your new database opens automatically with all imported data read ![Import Airtable base to Baserow](https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/341f6ab4-3927-45d6-a687-50106ec3f434/Airtable%20import.png) -### Session authentication +### Session authentication -If the import responds with ""The Airtable base requires authentication."" then it could be that the organizational settings in Airtable prevent accessing the Airtable base without authenticating first. To do this, the session and signature must be manually extracted. +If the import responds with ""The Airtable base requires authentication."" then it could be that the organizational settings in Airtable prevent accessing the Airtable base without authenticating first. To do this, the session and signature must be manually extracted. - 1. Visit the URL of the publicly shared base in your browser and sign in, if needed. - 2. Click on the application menu by clicking in the top right corner -> **More tools** -> **Developer tools**. + 1. Visit the URL of the publicly shared base in your browser and sign in, if needed. + 2. Click on the application menu by clicking in the top right corner -> **More tools** -> **Developer tools**. 3. Open the **Application** (in Firefox ""Storage"") tab and click on `https://airtable.com`. 4. Then, find the `__Host-airtable-session` and `__Host-airtable-session.sig` cookie values, and paste them in the inputs. @@ -11803,22 +11952,22 @@ If the import responds with ""The Airtable base requires authentication."" then ### Automatically transferred -โœ… **All tables** โ€“ Complete table structure with all records -โœ… **Field types** โ€“ Converted to Baserow equivalents -โœ… **Table relationships** โ€“ Link to another record becomes Link to table -โœ… **Attachments and files** โ€“ All uploaded files preserved -โœ… **Views** โ€“ Grid views with filters, sorts, and grouping -โœ… **Field properties** โ€“ Formatting, options, and configurations +โœ… **All tables** โ€“ Complete table structure with all records +โœ… **Field types** โ€“ Converted to Baserow equivalents +โœ… **Table relationships** โ€“ Link to another record becomes Link to table +โœ… **Attachments and files** โ€“ All uploaded files preserved +โœ… **Views** โ€“ Grid views with filters, sorts, and grouping +โœ… **Field properties** โ€“ Formatting, options, and configurations โœ… **Row data** โ€“ All records with their complete information ### Requires reconfiguration -โŒ **Automations** โ€“ Rebuild using [Baserow automations](/user-docs/workflow-automation) -โŒ **Custom interfaces** โ€“ Recreate with [Application Builder](/user-docs/application-builder-overview) -โŒ **Integrations** โ€“ Reconnect using [Baserow API](/user-docs/database-api) -โŒ **Row comments** โ€“ Not imported; start fresh in Baserow -โŒ **Revision history** โ€“ Historical changes not preserved -โŒ **Field descriptions** โ€“ Add manually after import +โŒ **Automations** โ€“ Rebuild using [Baserow automations](/user-docs/workflow-automation) +โŒ **Custom interfaces** โ€“ Recreate with [Application Builder](/user-docs/application-builder-overview) +โŒ **Integrations** โ€“ Reconnect using [Baserow API](/user-docs/database-api) +โŒ **Row comments** โ€“ Not imported; start fresh in Baserow +โŒ **Revision history** โ€“ Historical changes not preserved +โŒ **Field descriptions** โ€“ Add manually after import โŒ **Access controls** โ€“ Reconfigure [permissions](/user-docs/permissions-overview) ## Field type conversions @@ -11881,9 +12030,9 @@ Set up [Kanban](/user-docs/guide-to-kanban-view), [Calendar](/user-docs/guide-to ## Alternatives to importing -If the import function does not fit your needs, there are several alternative approaches. One option is to start fresh using templates. You can browse [Baserow templates](/user-docs/add-database-from-template) tailored to similar use cases, customize them instead of importing from Airtable, and take advantage of designs optimized for Baserow. +If the import function does not fit your needs, there are several alternative approaches. One option is to start fresh using templates. You can browse [Baserow templates](/user-docs/add-database-from-template) tailored to similar use cases, customize them instead of importing from Airtable, and take advantage of designs optimized for Baserow. -Another approach is manual recreation. This involves [creating a database from scratch](/user-docs/create-a-database) while optionally importing only the data via CSV. This method allows you to rebuild the structure while redesigning and optimizing your workflow. +Another approach is manual recreation. This involves [creating a database from scratch](/user-docs/create-a-database) while optionally importing only the data via CSV. This method allows you to rebuild the structure while redesigning and optimizing your workflow. A hybrid approach combines both strategies. You can import an existing base for structure and data, then use a template to add new features, giving you the flexibility to leverage the strengths of both methods. @@ -11957,7 +12106,7 @@ Now that you've imported from Airtable, explore these resources: Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. - - [Ask the Baserow community](https://community.baserow.io) + - [Ask the Baserow community](https://community.baserow.io) - [Contact support](/contact) for questions about Baserow or help with your account.",,baserow_user_docs,https://baserow.io/user-docs/import-airtable-to-baserow 111,Import data into a table,import-data-into-an-existing-table,Import data into an existing Baserow table,"# Import data into an existing table @@ -12115,45 +12264,45 @@ If import shows ""pending"" or ""running"" for extended periods, it could be bec Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. -- [Ask the Baserow community](https://community.baserow.io) +- [Ask the Baserow community](https://community.baserow.io) - [Contact support](/contact) for questions about Baserow or help with your account. [1]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/b23ea9f0-9a3b-43c3-874f-86ad3641d3b1/Merge%20or%20upsert%20rows%20during%20additional%20import.jpg",,baserow_user_docs,https://baserow.io/user-docs/import-data-into-an-existing-table 112,Permissions overview,permissions-overview,Baserow Permissions overview,"# Permissions overview -Permissions determine what members can do within workspaces, databases, and tables. As a workspace admin, you assign roles when inviting members or creating teams, then adjust access as your needs evolve. +Baserow's permission system allows you to control who can view, edit, or manage your data, from simple workspace membership to granular role-based access control. This guide covers how to understand Baserow's permission system, compare free vs. paid role-based access control, and learn which approach fits your security needs. ## Overview -Baserow's permission system lets you control who can view, edit, or manage your dataโ€”from simple workspace membership on Free plans to granular role-based access control on Advanced and Enterprise plans. +Permissions determine what members can do within workspaces, databases, tables, and fields. As a workspace admin, you assign roles when [inviting users to a workspace][1] or [creating teams][2], then adjust access as your needs evolve. -The right permission strategy depends on your plan, team size, and security requirements. This guide helps you understand your options and choose the best approach. +The right permission strategy depends on your plan, team size, and security requirements. This guide helps you understand your options and select the best approach. ## Permission system comparison -### Free and Premium plans: Basic roles +### Basic roles -Free and Premium plans offer two workspace-level roles: +Free and Premium plans offer two workspace-level roles, without granular, table-level restrictions: -| Role | Capabilities | Best For | +| Role | Capabilities | Best for | |------|-------------|----------| -| **Admin** | Manage workspace: members, settings, billing, all databases | Team leads, workspace owners | -| **Member** | Create and manage databases, tables, views; full data access | All team members | +| **Admin** | Can fully configure and edit: workspaces, applications, members, settings, billing, databases | Team leads, workspace owners | +| **Member** | Can fully create, edit, and delete and manage databases, tables, views; full data access | All team members | -Workspace creator becomes Admin automatically. Workspace admins invite workspace members with full access to workspace content. Workspace members can create, edit, and delete databases, tables, and data. No granular control, and workspace members have broad permissions +When you create a workspace, you are automatically assigned the Admin role. As an Admin, you can invite others to join as workspace members. A workspace member has broad permissions, giving them full access to all data within that workspace. This is best for small teams (2-10 people), high-trust environments, projects where everyone needs similar access, and teams on limited budgets. -### Advanced and Enterprise plans: Role-based access control +### Role-based access control -Advanced and Enterprise plans add roles with granular permissions: +Advanced and Enterprise plans add roles with granular permissions. To get granular control, such as restricting access to specific databases or tables, you will need the full Role-Based Access Control (RBAC) features. [View pricing options](https://baserow.io/pricing). -| Role | Access Level | Typical Users | +| Role | Access level | Typical users | |------|-------------|---------------| -| **Admin** | Full control over workspace, members, and all content | Department heads, workspace managers | +| **Admin** | Full control over workspace, members, and all data | Department heads, workspace managers | | **Builder** | Create/modify databases, tables, fields, views | Application developers, power users | | **Editor** | Add, edit, delete data; cannot modify structure | Data entry team, content managers | | **Commenter** | View data and add comments; no editing | Reviewers, stakeholders, clients | @@ -12170,67 +12319,51 @@ Learn more about [role capabilities](/user-docs/set-permission-level) and [role ### Permission structure -Advanced and Enterprise plans let you assign roles at levels of specificity. Assign roles at workspace, database, or table levels. +With role-based permissions, you can assign roles at levels of specificity. Assign roles at workspace, database, and table levels. ``` Workspace Level (default baseline) โ†“ can be overridden at Database Level (project/department access) - โ†“ can be overridden at + โ†“ can be overridden at Table Level (granular control) ``` +> More specific roles override broader ones (table > database > workspace). Learn more about [how role hierarchy works](/user-docs/role-based-access-control-rbac). -**Example scenario:** - -Marketing Team has **Editor** role at workspace level โ†’ can edit everywhere, has **Viewer** on Finance Database โ†’ can only view finance data, and Sarah (in Marketing) has **Admin** on Campaign Table โ†’ Sarah can admin that specific table - -More specific roles override broader ones (table > database > workspace). Learn more about [how role hierarchy works](/user-docs/role-based-access-control-rbac). - -### Individual vs. team permissions - -Individual member roles override team roles. Create teams with default roles, then customize exceptions. - -You can assign roles to **Individual members** for Direct role assignment or **Teams** for Groups of members with shared roles. When both exist, Individual assignments always override team roles. +**Example scenario:** The Marketing team has an **Editor** role at the workspace level โ†’ **Viewer** role on the Finance database โ†’ Sarah (in Marketing) has **Admin** role on the Budgets table in the Finance database. -This flexibility lets you set team defaults while making member-specific exceptions. Learn how to [create and manage teams](/user-docs/create-and-manage-teams). +### How individual and team permissions interact +In Baserow, you can assign roles to manage permissions in two ways: +1. **To a team:** This assigns a default set of permissions to a group of members. Learn how to [create and manage teams](/user-docs/create-and-manage-teams). +2. **To an individual member:** This assigns permissions directly to a specific user. +When a workspace member belongs to a team but also has a different role assigned to them individually, the individual role always takes precedence. -## Plan upgrade and downgrade considerations - -### What happens when your Advanced/Enterprise plan expires? - -> โš ๏ธ **Important:** If your Advanced plan or Enterprise license expires, role-based permissions deactivate **immediately**. All users automatically become Members (Builder equivalent) with full workspace access. - -**Before expiration,** document your permission structure, identify sensitive databases that will become accessible, and plan transition to Free/Premium plan structure or renew license. - -**After expiration**, all granular roles reset to Member, teams remain but lose role assignments, and you must manually restructure workspace access on the Free/Premium plan - -Learn more about [Baserow subscriptions](/user-docs/subscriptions-overview). - +> An individual member's assigned role will always override any role they inherit from a team. +This system provides flexibility. For example, you can set a general, view-only role for a Marketing team, but then grant a specific Marketing Manager in that team an Editor role. The manager will have full editor permissions, overriding the team's view-only setting. ## Getting started with permissions -For new workspaces - - 1. **Determine your plan needs**: Small trusted team? โ†’ Free/Premium (Admin + Member roles). Need granular control? โ†’ Advanced/Enterprise (full RBAC) - 2. **Design your permission structure**: Who needs what level of access? Which data is sensitive and needs restrictions? Will you use teams or individual assignments? - 3. **Implement your design**: [Invite workspace members](/user-docs/working-with-collaborators), -[Create teams](/user-docs/create-and-manage-teams), and [Assign roles](/user-docs/assign-roles-to-members-at-workspace-level) at appropriate levels - -Learn how to [implement these strategies](/user-docs/assign-roles-to-members-at-workspace-level#advanced-role-configuration-strategies). +Setting up permissions for a new workspace involves a few key planning steps. Following this process ensures your data is secure and collaborators have the correct level of access from day one. -## Frequently asked questions +### How to set up permissions in a new workspace -### Do I need Advanced or Enterprise plans for role-based permissions? +1. **Assess your plan's capabilities**: First, identify which roles are available on your [plan][3]. +2. **Design your permission structure**: Before inviting anyone, map out your data access strategy. Ask these questions: + * Who needs what level of access (e.g., read-only, editor, admin)? + * Which databases or tables contain sensitive data that needs to be restricted? + * Will you manage access by [creating teams](/user-docs/create-and-manage-teams) or by assigning roles to individual users? -Yes. Free and Premium plans only offer Admin and Member roles. Advanced and Enterprise plans provide Builder, Editor, Commenter, Viewer, and No Role options with hierarchy. +3. **Implement your design**: With your plan in place, you can now configure your workspace. + * Start by [inviting members to your workspace](/user-docs/working-with-collaborators). + * [Assign the appropriate roles](/user-docs/assign-roles-to-members-at-workspace-level) to individuals or teams at the workspace, database, or table level. -### Can I try role-based permissions before upgrading? +Learn more about [advanced role configuration strategies](/user-docs/assign-roles-to-members-at-workspace-level#advanced-role-configuration-strategies) to implement your design. -Advanced plans include a free trial period. Test role-based permissions with your team before committing. [View pricing options](https://baserow.io/pricing). +## Frequently asked questions ### What's the difference between ""No Role"" and ""No Access""? @@ -12241,19 +12374,25 @@ Learn more about [using ""No Role"" strategically](/user-docs/assign-roles-to-me ### Can Free plan users control who sees specific tables? -No. Free and Premium plans don't support granular permissions. All Members have full access to all workspace content. Upgrade to Advanced/Enterprise for table-level control. +No. Free and Premium plans don't support granular permissions. All users with Member roles have full access to all workspace content. Upgrade to Advanced/Enterprise for table-level control. ### How do I restrict client access to only their project data? -Use Advanced or Enterprise plans: Create a team for each client, assign the team a Viewer or Commenter role, and Grant access only to their specific database or tables - -Learn more about [client access strategies](/user-docs/assign-roles-to-members-at-workspace-level#customize-permissions-for-specific-needs). +Use Advanced or Enterprise plans: Create a team for each client, assign the team a Viewer or Commenter role, and Grant access only to their specific database or tables. Learn more about [client access strategies](/user-docs/assign-roles-to-members-at-workspace-level#customize-permissions-for-specific-needs). ### Are permissions the same on self-hosted and cloud versions? -Free/Premium roles work the same. Role-based access control requires a **Cloud** Advanced plan subscription or **Self-hosted:** Enterprise license. +Free/Premium roles work the same. Role-based access control requires a **Cloud** Advanced plan subscription or **Self-hosted:** Enterprise license. [Learn about self-hosted licensing](/user-docs/enterprise-license-overview). + +### What happens when your plan expires? -[Learn about self-hosted licensing](/user-docs/enterprise-license-overview). +If your Advanced plan or Enterprise license expires, role-based permissions deactivate immediately. All users automatically become Members (Builder equivalent) with full workspace access, teams lose role assignments, and you must manually restructure workspace access on the Free/Premium plan. Learn more about [Baserow subscriptions](/user-docs/subscriptions-overview). + +### What's the difference between Free/Premium and Advanced plan permissions? +The Free and Premium plans offer workspace-level roles (`Admin`, `Member`, etc.), which are suitable for small, trusted teams. The Advanced and Enterprise plans add Role-Based Access Control (RBAC), allowing you to set granular permissions for specific databases and tables. + +### Should I use teams or assign roles individually? +Use **teams** when you need to grant the same level of access to a group of users (e.g., a ""Sales"" team that needs editor access to the ""CRM"" database). Assign roles **individually** for users with unique access needs or for high-level roles like Workspace Admin. ## Related content @@ -12295,7 +12434,12 @@ Free/Premium roles work the same. Role-based access control requires a **Cloud** Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. - [Ask the Baserow community](https://community.baserow.io) -- [Contact support](/contact) for questions about Baserow or help with your account",,baserow_user_docs,https://baserow.io/user-docs/permissions-overview +- [Contact support](/contact) for questions about Baserow or help with your account + + + [1]: https://baserow.io/user-docs/working-with-collaborators + [2]: https://baserow.io/user-docs/create-and-manage-teams + [3]: https://baserow.io/user-docs/pricing-plans",roles and permissions,baserow_user_docs,https://baserow.io/user-docs/permissions-overview 113,Member workspace roles,assign-roles-to-members-at-workspace-level,Assign workspace roles to members in Baserow,"# Assign roles to members at workspace level Workspace-level roles set the default permissions each member has across all databases and tables within a workspace; creating a baseline that can be refined with database and table-level exceptions. @@ -12311,33 +12455,19 @@ When you assign a role to a member at the workspace level, that role automatical Individual member roles always take precedence over [team roles][3]. If a member belongs to teams with different roles, their individual workspace-level assignment determines their actual permissions, not their team memberships. -## How workspace-level member roles work - -Prerequisites: Before assigning roles, you must first [invite members to your workspace][4]. This article focuses on role assignment, not invitation workflows. +Learn more: [Role hierarchy][4] -### Role assignment and inheritance - -``` -Member's Workspace Role (default baseline) - โ†“ -Database-level overrides (optional refinements) - โ†“ -Table-level overrides (most specific) +## Member vs. team role precedence -Individual member roles ALWAYS override team roles -``` +When a member has both individual and team-based roles, individual workspace-level assignments always take precedence over team roles. -**Key principles:** -- **Workspace role = default** โ€“ Applies everywhere unless overridden -- **Individual > Team** โ€“ Member-specific roles take precedence over team roles -- **Specific > General** โ€“ Table overrides beat database, database beats workspace -- **Highest permission wins** โ€“ When multiple sources exist, highest prevails +For complete precedence rules including database and table levels, see [Understanding role hierarchy](/user-docs/role-based-access-control-rbac). -Learn more about [role capabilities](/user-docs/set-permission-level). +## Assign or modify member roles -![Inviting a member to workspace][5] +> Prerequisites: Before assigning roles, you must first [invite members to the workspace][5]. This article focuses on role assignment, not invitation workflows. -## Assign or modify member roles +![Inviting a member to workspace][6] ### Assign roles during invitation @@ -12349,10 +12479,10 @@ Learn more about [inviting workspace members](/user-docs/working-with-collaborat To see the roles assigned to a specific member: - 1. Open your workspace from the dashboard - 2. Select **Members** in the sidebar + 1. Open your workspace + 2. Select **Members** in the sidebar or access from the homepage 3. The Members page displays all workspace members and their current default and highest roles - + This helps troubleshoot access issues and audit permission structures. ### Change an existing member's role @@ -12381,7 +12511,7 @@ Assign generous workspace-level roles, then restrict specific areas. This is rec **Implementation:** 1. Assign a broad role at the workspace level to all regular members 2. Create **database-level overrides** for sensitive data (e.g., HR, Finance) -3. Set **Viewer** or **Commenter** on restricted databases +3. Assign **Viewer** role or **Commenter** role on restricted databases 4. Grant **Admin** access to specific members who need it **Example configuration:** @@ -12411,11 +12541,11 @@ All members: No Role at workspace level โ””โ”€โ”€ Leadership: Admin on all databases via individual grants ``` -> **Best practice:** The ""No Role"" strategy provides maximum control but requires more setup. Document your permission structure to maintain consistency. +> **Best practice:** The ""No Role"" strategy provides maximum control but requires more setup. ### Strategy 3: Role-based segregation -Align workspace roles with job functions or departments. This is recommended when there is a clear organizational hierarchy, functional teams with distinct responsibilities, and the need to mirror real-world organizational structure in permissions. +Align workspace roles with job functions or departments. This is recommended when there is a clear organizational hierarchy, functional teams with distinct responsibilities, and a need to mirror real-world organizational structure in permissions. **Implementation:** 1. Map job roles to Baserow roles (e.g., Analysts โ†’ Viewer, Contributors โ†’ Editor) @@ -12433,28 +12563,11 @@ External Partners: No Role + team-based access ``` -## Member vs. team role precedence - -When a member has both individual and team-based roles, individual workspace-level assignments always take precedence over team roles. - -**Key principle:** Your workspace-level individual role overrides all team-based workspace roles. - -**Quick examples:** -- Individual **Editor** + Team **Admin** โ†’ You get **Editor** -- Individual **No Role** + Team **Editor** โ†’ You get **Editor** (team provides access) -- Individual **Viewer** + Multiple teams with higher roles โ†’ You get **Viewer** - -For complete precedence rules including database and table levels, see [Understanding role hierarchy](/user-docs/role-based-access-control-rbac). - - - - - ## Frequently asked questions ### Do workspace-level roles apply to new databases automatically? -Yes. When someone creates a new database in the workspace, all members automatically have their workspace-level role on that database unless you set specific overrides. +Yes. When someone creates a new database in the workspace, all members are automatically assigned their workspace-level role on that database unless you set specific overrides. ### Can I assign different roles to the same member on different databases? @@ -12509,11 +12622,12 @@ Still need help? If you're looking for something else, please feel free to make [1]: https://baserow.io/user-docs/assign-roles-at-database-level [2]: https://baserow.io/user-docs/assign-roles-at-table-level [3]: https://baserow.io/user-docs/assign-roles-to-teams-at-workspace-level - [4]: https://baserow.io/user-docs/working-with-collaborators - [5]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/86a76bff-c8e3-4c72-95a2-ed5609fecf5d/Inviting%20a%20member%20to%20workspace.jpg",,baserow_user_docs,https://baserow.io/user-docs/assign-roles-to-members-at-workspace-level + [4]: https://baserow.io/user-docs/role-based-access-control-rbac + [5]: https://baserow.io/user-docs/working-with-collaborators + [6]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/86a76bff-c8e3-4c72-95a2-ed5609fecf5d/Inviting%20a%20member%20to%20workspace.jpg",,baserow_user_docs,https://baserow.io/user-docs/assign-roles-to-members-at-workspace-level 114,Team workspace roles,assign-roles-to-teams-at-workspace-level,Baserow: Assign Roles to Teams (Workspace),"# Assign roles to teams at workspace level -Assigning roles to teams at the workspace level lets admins control permissions for entire groups in one action, with automatic inheritance throughout databases and tables. +Assigning roles to teams at the workspace level lets workspace admins control permissions for entire groups in one action, with automatic inheritance throughout databases and tables. This guide covers how to assign and modify roles for teams at the workspace level, understand role hierarchy and inheritance, and implement advanced permission strategies for bulk access control. @@ -12521,53 +12635,33 @@ This guide covers how to assign and modify roles for teams at the workspace leve ## Overview -When you assign a default role to a team at the workspace level, every team member automatically receives that role across the entire workspace and all its contents; unless you set specific exceptions at the database or table level. This bulk permission management is more efficient than assigning roles individually, especially for organizations with structured departments or project groups. - -> Team roles work alongside [individual member roles][1]. When conflicts occur, individual permissions always take precedence over team permissions. This allows you to set broad team defaults while making targeted exceptions for specific members. - -## How workspace-level team roles work +When you assign a default role to a team at the workspace level, every team member automatically receives that role across the entire workspace and all its contents, unless you set specific exceptions at the [database][1] or [table][2] level. This bulk permission management is more efficient than assigning roles individually, especially for organizations with structured departments or project groups. -### Role assignment hierarchy +> Team roles work alongside [individual member roles][3]. When conflicts occur, individual permissions always take precedence over team permissions. This allows you to set broad team defaults while making targeted exceptions for specific members. -Workspace-level team roles follow a clear inheritance pattern: +Learn more: [Role assignment hierarchy][4] -``` -Workspace Team Role (default) - โ†“ -Database-level exceptions (optional) - โ†“ -Table-level exceptions (optional) - โ†“ -Individual member overrides (highest priority) -``` - -**Example scenario:** - -- Marketing Team has **Editor** default role at workspace level, can view and edit all workspace content. -- Specific override: Restrict them to the **Commenter** role on the Finance Database -- Individual override: Sarah in the Marketing Team has the **Admin** role on the Budget Table in the Finance Database - -**Result:** Marketing Team maintain Editor access everywhere else except Finance Database (comment only), but Sarah can admin the Budget Table +## When to use workspace-level team roles -### When to use workspace-level team roles - -| Use Case | Why It Works | +| Use Case | Why it works | |----------|--------------| | **Department-wide access** | Give entire departments consistent permissions across all workspace content | | **Client teams** | Assign external client teams Viewer or Commenter access to specific project data | | **Project groups** | Create temporary teams for projects with unified access needs | | **Role-based groups** | Organize by function (Editors, Reviewers, Analysts) rather than organizational structure | -When you remove a member from a team, they immediately lose all team-based permissions but retain any individual permissions assigned directly to them. Learn more about [managing team membership](/user-docs/create-and-manage-teams). +When you remove a member from a team, they immediately lose all team-based permissions but retain any individual permissions assigned directly to them. + +Learn more about [managing team membership](/user-docs/create-and-manage-teams). ## Assign or modify team roles -**Prerequisites:** Before assigning roles to teams, you must first [create a team](/user-docs/create-and-manage-teams) and [invite members to your workspace](/user-docs/assign-roles-to-members-at-workspace-level). +> **Prerequisites:** Before assigning roles to teams, you must first [invite users to your workspace](/user-docs/working-with-collaborators) and [create a team](/user-docs/create-and-manage-teams). ### View current team roles 1. Open your workspace from the dashboard -2. Select **Members** in the sidebar to open the Members page +2. Select **Members** in the sidebar or workspace menu options 3. Click the **Teams** tab to view all workspace teams The Teams tab displays each team's current default role at the workspace level. @@ -12578,32 +12672,32 @@ The Teams tab displays each team's current default role at the workspace level. 2. Click the **default role dropdown** next to the team name 3. Select the new role from the list: -![Change team role dropdown in baserow][2] +![Change team role dropdown in baserow][5] The role change applies immediately to all team members across the workspace, unless they have individual permission overrides. ## Advanced permission strategies -Teams can be organized hierarchically by [assigning roles to teams at workspace level](/user-docs/assign-roles-to-teams-at-workspace-level). +Teams can be organized hierarchically by assigning roles to teams at the workspace level. ### Strategy 1: ""No Role"" baseline with targeted access -For maximum control over permissions, use this recommended approach: +Individual permissions always take precedence over team permissions. For maximum control over permissions, use this recommended approach: -1. **Assign individual members ""No Role""** at workspace level ([learn how](/user-docs/assign-roles-to-members-at-workspace-level)) -2. **[Create teams][3]** and add members to appropriate teams +1. **[Assign individual members](/user-docs/assign-roles-to-members-at-workspace-level) ""No Role""** at workspace level +2. **[Create teams][6]** and add members to appropriate teams 3. **Assign team roles** at database and table levels only (not workspace level) -**Why this works:** Members have no default access. They only get permissions through their team memberships at specific database/table levels. This prevents accidental access and creates a ""least privilege"" security model. +The workspace members have no default access. They only get permissions through their team memberships at specific database/table levels. This prevents accidental access and creates a ""least privilege"" security model. -Individual permissions always take precedence over team permissions. Learn more about [role hierarchy](/user-docs/role-based-access-control-rbac). +Learn more about [role hierarchy](/user-docs/role-based-access-control-rbac). **Example implementation:** ``` All individual members: No Role at workspace level - โ”œโ”€โ”€ Finance Team: No role at workspace โ†’ Admin on Finance Database - โ”œโ”€โ”€ Marketing Team: No role at workspace โ†’ Editor on Campaigns Database - โ””โ”€โ”€ External Reviewers: No role at workspace โ†’ Viewer on Reports Database + โ”œโ”€โ”€ Finance Team: No role at workspace โ†’ Admin on Finance database + โ”œโ”€โ”€ Marketing Team: No role at workspace โ†’ Editor on Campaigns database + โ””โ”€โ”€ External Reviewers: No role at workspace โ†’ Viewer on Reports database ``` ### Strategy 2: Team hierarchies @@ -12632,9 +12726,9 @@ Set generous workspace-level team roles, then restrict access where needed: Yes. When you create new databases or tables, team members automatically have their workspace-level team role on the new content, unless you set specific exceptions. -### Can I see all permissions a team member has? +### Can I see the permission a team member has? -Yes. On the Members page, click on an individual member to view their complete permission set, including both individual and team-based permissions across all databases and tables. +Yes. On the Members page, users with the [right access][7] can view the default role and highest role an individual member has across all databases and tables. ### What happens if I change a team's role after setting database exceptions? @@ -12672,9 +12766,13 @@ Still need help? If you're looking for something else, please feel free to make - [Contact support](/contact) for questions about Baserow or help with your account - [1]: https://baserow.io/user-docs/assign-roles-to-members-at-workspace-level - [2]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/ddca27e1-6b7c-4fb2-a14e-3df8c902a623/Change%20team%20role%20dropdown.jpg - [3]: https://baserow.io/user-docs/create-and-manage-teams",,baserow_user_docs,https://baserow.io/user-docs/assign-roles-to-teams-at-workspace-level + [1]: https://baserow.io/user-docs/assign-roles-at-database-level + [2]: https://baserow.io/user-docs/assign-roles-at-table-level + [3]: https://baserow.io/user-docs/assign-roles-to-members-at-workspace-level + [4]: https://baserow.io/user-docs/role-based-access-control-rbac + [5]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/ddca27e1-6b7c-4fb2-a14e-3df8c902a623/Change%20team%20role%20dropdown.jpg + [6]: https://baserow.io/user-docs/create-and-manage-teams + [7]: https://baserow.io/user-docs/set-permission-level",,baserow_user_docs,https://baserow.io/user-docs/assign-roles-to-teams-at-workspace-level 115,Database permissions,assign-roles-at-database-level,Assign roles at database level in Baserow,"# Database level permissions @@ -12693,56 +12791,32 @@ When you assign a role at the database level, it applies to all tables within th > **Prerequisites:** Members must first be [invited to the workspace](/user-docs/working-with-collaborators) before you can assign database-level roles. You cannot invite members directly to a database. - - ## When to use database-level roles -### Common use cases - -| Scenario | Implementation | Why Database Level Works | -|----------|----------------|-------------------------| -| **Department isolation** | Sales database: Sales Team (Editor), Finance database: Finance Team (Editor) | Each team can edit their department's data but not others' | -| **Client projects** | Client A database: Client A Team (Viewer), Client B database: Client B Team (Viewer) | Clients see only their project data, not other clients' | -| **Sensitive data protection** | HR database: HR Team (Admin), all others (Viewer or No Access) | Restrict payroll/personnel data while keeping the rest open | -| **Development stages** | Production database: Developers (Viewer), Staging database: Developers (Editor) | Prevent accidental edits to production while allowing staging work | -| **External collaborators** | Contractor A: Editor on Project Alpha database only | Grant project-specific access without workspace-wide permissions | - -### Database vs. workspace vs. table roles - - **Use [workspace-level roles][1] when** members need consistent access across all databases, you have a small, trusted team, or most databases have similar sensitivity levels - **Use database-level roles when** different groups need access to different databases, departments, or projects have distinct data boundaries, or some databases are more sensitive than others - **Use [table-level roles][2] when** need granular control within a database, individual tables require special restrictions, or specific sensitive tables (e.g., salary table in HR database) -Learn more about [role hierarchy](/user-docs/role-based-access-control-rbac). - ## How database roles work ### Override behavior -Database-level roles **override [workspace-level roles][1]** but are **overridden by [table-level roles][2]**: - -``` -Workspace Role (baseline) - โ†“ overridden by -Database Role (applies to this database + all its tables) - โ†“ overridden by -Table Role (most specific) -``` +Database-level roles **override [workspace-level roles][1]** but are **overridden by [table-level roles][2]**. -**Example:** Sarah has **Editor** role at workspace level, has **Viewer** role on Finance Database, has **Admin** role on Budget Table (in Finance Database). Sarah can edit everywhere except the Finance Database (view only), but has admin access specifically to the Budget Table +Learn more about [role hierarchy](/user-docs/role-based-access-control-rbac). ### Inherited vs. explicit access > The database members list shows only **explicit assignments**, not inherited access. Always check both [workspace][1] and database role assignments when troubleshooting access -This means a workspace Admin can access all databases, but won't appear in individual database member lists unless you explicitly assign a database-level role. The database member list shows only **exceptions to workspace defaults** +A workspace Admin can access all databases, but won't appear in individual database member lists unless you explicitly assign a database-level role. The database member list shows only exceptions to workspace defaults. This matters because you might think a database has no members, but [workspace-wide roles][1] still grant access. To truly restrict a database, assign ""No Access"" to workspace members at the database level. ## Assign roles at the database level -### Grant database access to members or teams +To grant database access to members or teams: 1. Navigate to the database you want to manage 2. Click the **three-dot menu (โ‹ฎ)** next to the database name in the sidebar or home page @@ -12767,11 +12841,11 @@ The role applies immediately to all tables in the database. ### View current database members -The Manage Members modal displays all members and teams with **explicit database-level role assignments**. +The Manage Members modal displays all members and teams with explicit database-level role assignments. -> โš ๏ธ **Important:** This list only shows explicit database assignments. Members with workspace-level access may still access this database, but it won't appear here unless they have a database-specific role assignment. -> +> This list only shows explicit database assignments. Members with workspace-level access may still access this database, but it won't appear here unless they have a database-specific role assignment. +> **To see all effective access:** 1. Check [workspace-level roles][1] (Members page) @@ -12805,20 +12879,20 @@ The workspace member loses database-level override and falls back to their assig ### Strategy 1: Department databases with isolation -Each department manages its own database, and others can view it. Departments control their data, and sensitive databases (HR, Finance) are fully isolated. +This strategy involves creating a separate, dedicated database for each department to establish clear data boundaries and manage access at a high level. -**Implementation:** -1. Create separate databases: HR, Finance, Sales, Marketing -2. Workspace level: Set all members to **Viewer** -3. Database level: - - HR Database: HR Team โ†’ **Admin**, others โ†’ **No Access** - - Finance Database: Finance Team โ†’ **Admin**, others โ†’ **No Access** - - Sales Database: Sales Team โ†’ **Editor** - - Marketing Database: Marketing Team โ†’ **Editor** +This approach is best for organizations that need to strictly separate sensitive information (like financial records or employee data) from more public, company-wide data. + +You can configure this model in two common ways: + +* **For sensitive databases (e.g., HR, Finance):** Set the database-level permissions so that only members of the HR or Finance teams are invited. All other workspace members will have 'No Access' by default, fully isolating the sensitive data. +* **For general-access databases (e.g., Marketing, Public Directory):** You can invite specific teams as 'Editors' while setting the default access for other workspace members to 'Viewer'. This allows for company-wide transparency without risking accidental edits from other departments. ### Strategy 2: Client project databases -Each client sees only their project database. Perfect client isolation; each client accesses only their data. +This strategy is ideal for agencies, freelancers, or service providers who need to grant external clients read-only access to their specific project data. It ensures perfect isolation, as each client can only access the database they have been explicitly invited. + +This approach is best for securely sharing project progress, deliverables, or reports with external stakeholders without letting them see other clients' information or internal company data. **Implementation:** 1. Create a database per client: ""Client A Project"", ""Client B Project"" @@ -12828,9 +12902,13 @@ Each client sees only their project database. Perfect client isolation; each cli - Client B Project DB: Client B Team โ†’ **Viewer** or **Commenter** - Internal team: **Editor** on all client databases +This setup creates secure, isolated silos where clients can view their own project data, and your internal team retains full editorial control across all projects. + ### Strategy 3: Production vs. staging environments -Protect the production database while allowing development work. Developers can freely work in staging, but can't accidentally edit production. +This strategy involves duplicating your main database to create a distinct ""staging"" or ""development"" environment. This allows your team to test new integrations, experiment with field types, or build new application features without any risk of breaking your live, customer-facing ""production"" data. + +This approach is best for development teams, citizen developers, or admins who need a safe sandbox to build and test workflows before deploying them to the main database. **Implementation:** 1. Create two databases: ""Production"" and ""Staging"" @@ -12841,7 +12919,9 @@ Protect the production database while allowing development work. Developers can ### Strategy 4: Graduated access model -Leadership sees everything; teams see department data. Hierarchical access matching org structure. +This strategy mirrors a typical company's organizational chart, providing hierarchical access. A ""Leadership"" or ""Admin"" team is given a ""bird's-eye view"" with access to all data, while individual teams (like Marketing or Sales) are granted full access only to their specific departmental databases. + +This approach is best for organizations that need to centralize high-level oversight for an executive team while keeping daily operations and data management siloed within their respective departments. **Implementation:** 1. Multiple department databases @@ -12854,7 +12934,7 @@ Leadership sees everything; teams see department data. Hierarchical access match ### ""Why can this member access the database when they're not in the list?"" -This is because they have [workspace-level access][1] that isn't overridden at the database level. Check their workspace roles. To restrict, assign ""No Access"" at the database level. +This is because they may have [workspace-level access][1] that isn't overridden at the database level. Check their workspace roles. To restrict, assign ""No Access"" at the database level. ### ""I removed someone, but they can still access tables"" @@ -12864,12 +12944,6 @@ This is because they may have [table-level role assignments][2] that override da Database Admins can only manage database access, not workspace membership. Only workspace Admins can invite members to the workspace. Have a workspace Admin invite a member first, then a database Admin can assign database access. -### ""Member has Admin on database but can't see it"" - -This is because a workspace member might not have been [invited to the workspace][6], or the database is in a different workspace. [Verify that the user is a workspace member][7] and the database is in the correct workspace. - - - ## Frequently asked questions ### Do database roles apply to new tables automatically? @@ -12948,19 +13022,6 @@ Use table-level permissions when workspace and database roles are too broad for > **Prerequisites:** Members must first be [invited to the workspace](/user-docs/working-with-collaborators) before you can assign table-level roles. You cannot invite members directly to a table. -### Common use cases - -| Scenario | Implementation | Why Table Level Works | -|----------|----------------|----------------------| -| **Sensitive salary data** | HR Database (Editor for HR), Salary Table (Admin for CFO only) | Restrict payroll data even within the HR department | -| **Client confidential info** | Project Database (Editor for team), Client Contracts Table (Admin for legal only) | Protect legally sensitive documents from project team | -| **Personal identifiable info (PII)** | Customer Database (Editor), Customer SSN Table (No Access for most) | GDPR/HIPAA compliance for specific fields | -| **Executive-only data** | Company Database (Viewer for all), Board Minutes Table (Admin for executives) | Share some company data broadly, restrict strategic info | -| **Audit/compliance tables** | Finance Database (Editor for finance), Audit Log Table (Viewer for auditors, No Access for others) | Prevent tampering with compliance records | -| **Production configuration** | Settings Database (Viewer for all), API Keys Table (Admin for DevOps only) | Prevent accidental exposure of secrets | - -### Table vs. database vs. workspace roles - **Use workspace-level roles when:** - Members need consistent access across everything - Simple, trust-based environment @@ -12972,11 +13033,11 @@ Use table-level permissions when workspace and database roles are too broad for - Mid-level granularity is sufficient **Use table-level roles when:** -- โœ… Specific tables contain sensitive data within otherwise open databases -- โœ… Compliance requires field-level restrictions -- โœ… Need to restrict access from higher-level admins -- โœ… Individual tables require unique protection -- โœ… Maximum security precision needed +- Specific tables contain sensitive data within otherwise open databases +- Compliance requires field-level restrictions +- Need to restrict access from higher-level admins +- Individual tables require unique protection +- Maximum security precision needed Learn more about [role hierarchy](/user-docs/role-based-access-control-rbac). @@ -12984,29 +13045,17 @@ Learn more about [role hierarchy](/user-docs/role-based-access-control-rbac). ## How table roles work -Table-level roles have high priority in Baserow's permission hierarchy. - -``` -Workspace Role (baseline) - โ†“ overridden by -Database Role (department/project level) - โ†“ overridden by -Table Role (override everything) -``` - -**Example:** Marketing Team has **Editor** role at workspace level, and has **Viewer** role on Budget Database. Sarah (Marketing) has **Admin** role on the Campaign Budget Table. Marketing can edit everywhere except the Budget Database (view only), but Sarah specifically has admin on the Campaign Budget Table - -> Table-level ""No Access"" can block even workspace Admins. This is to protect ultra-sensitive data. +Table-level roles have high priority in Baserow's permission hierarchy. Table-level ""No Access"" role can block even workspace Admins from accessing table data. This is to protect ultra-sensitive data. **Example:** A workspace Admin can access everything by default. Salary Table has ""No Access"" for the workspace admin at the table level. The workspace admin cannot access the Salary Table despite being a workspace Admin. ### Inherited vs. explicit access -> The table members list shows only **explicit table-level assignments**, not inherited access. Always check the workspace and database roles when troubleshooting table access. +> The table members list shows only explicit table-level assignments, not inherited access. Always check the workspace and database roles when troubleshooting table access. -This means a workspace Editor can edit all tables, but won't appear in individual table member lists unless you assign a table-specific role. The table member list shows only **exceptions to database/workspace defaults** +This means a workspace Editor can edit all tables, but won't appear in individual table member lists unless you assign a table-specific role. The table member list shows only exceptions to database/workspace defaults. This matters because you might think a table has limited access, but workspace/database roles still grant access. -This matters because you might think a table has limited access, but workspace/database roles still grant access. To truly restrict, assign ""No Access"" at the table level to override inherited permissions. +To truly restrict, assign ""No Access"" at the table level to override inherited permissions and lock down sensitive tables from members who have Editor or Admin access at the workspace/database level. ## How to assign table roles @@ -13015,7 +13064,7 @@ This matters because you might think a table has limited access, but workspace/d To assign roles at the table level, 1. Navigate to the table you want to manage -2. Click the **three-dot menu (โ‹ฎ)** next to the table name in the sidebar or home page +2. Click the **three-dot menu (โ‹ฎ)** next to the table name in the sidebar 3. Select **Manage members** from the dropdown ![Manage members option](https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/aba38933-be70-4f6c-bc80-5fa6608072c8/Untitled.png) @@ -13030,15 +13079,13 @@ To assign roles at the table level, The role applies immediately to this specific table only. -> **Pro tip:** Use ""No Access"" at the table level to lock down sensitive tables from members who have Editor or Admin access at the workspace/database level. - ## View and modify table access ### View current table members -The Manage Members modal displays all members and teams with **explicit table-level role assignments**. +The Manage Members modal displays all members and teams with explicit table-level role assignments. -> โš ๏ธ **Important:** This list shows only explicit table assignments. Members with workspace or database-level access may still access this table, but it won't appear here unless they have a table-specific role. +> This list shows only explicit table assignments. Members with workspace or database-level access may still access this table, but it won't appear here unless they have a table-specific role. **To see all effective table access:** 1. Check workspace-level roles (Members page) @@ -13072,7 +13119,7 @@ The workspace member loses the table-level override and falls back to the databa ### Strategy 1: Sensitive tables in open databases -Most tables are accessible, but some tables are locked down. If an HR Database contains salary information, HR can manage most data, but salary and reviews have special restrictions. +Most tables are accessible, but some tables are locked down. If a database contains salary information, workspace members with access can manage most data, but certain data have special restrictions. **Implementation:** 1. Database level: HR Team โ†’ **Editor** on HR Database @@ -13083,7 +13130,7 @@ Most tables are accessible, but some tables are locked down. If an HR Database c ### Strategy 2: Compliance-required restrictions -Meet GDPR/HIPAA requirements for PII. A customer database containing personally identifiable information needs strict PII protection while maintaining operational access. +A customer database containing personally identifiable information needs strict PII protection to meet GDPR/HIPAA requirements while maintaining operational access. **Implementation:** 1. Workspace level: Customer Success Team โ†’ **Editor** @@ -13095,7 +13142,7 @@ Meet GDPR/HIPAA requirements for PII. A customer database containing personally ### Strategy 3: Prevent admin access to ultra-sensitive data -Even workspace admins can't access certain tables. Board of Directors confidential information receives ultimate protection; even admins can't access these tables. +Confidential information receives ultimate protection; even workspace admins can't access these tables. **Implementation:** 1. Workspace level: Most users โ†’ various roles, including some Admins @@ -13106,7 +13153,7 @@ Even workspace admins can't access certain tables. Board of Directors confidenti ### Strategy 4: Audit trail protection -Prevent tampering with compliance logs. A financial audit requires a compliance-ready audit trail that can only be modified by auditors. +A financial audit requires a compliance-ready audit trail that can only be modified by auditors. **Implementation:** 1. Database level: Finance Database โ†’ Finance Team โ†’ **Editor** @@ -13202,80 +13249,160 @@ Still need help? If you're looking for something else, please feel free to make - [Ask the Baserow community](https://community.baserow.io) - [Contact support](/contact) for questions about Baserow or help with your account",,baserow_user_docs,https://baserow.io/user-docs/assign-roles-at-table-level -117,Enterprise overview,enterprise-license-overview,Baserow Enterprise license details,"# Baserow Enterprise license overview +117,Enterprise license,enterprise-license-overview,Baserow Enterprise license details,"# Enterprise license overview -Baserow Enterprise plan is designed to support large teams in industries to build databases, collaborate on projects, create applications and workflows, and digitise processes. +Enterprise is exclusively available for self-hosted Baserow installations (version 1.14.0+), not for cloud workspaces on Baserow.io. -Baserowโ€™s Enterprise version is only available for self-hosted Baserow servers on Baserow version 1.14.0 or greater. It is not available for workspaces on Baserow.io itself. +This guide covers Baserow's Enterprise plan for self-hosted deployments, explains what makes it different from the Advanced plan, and explores the managed services and custom support available to large organizations. -## Enterprise features +## Overview -Baserow Enterprise provides access to key features and capabilities: +Baserow Enterprise is a self-hosted plan designed for large organizations requiring managed infrastructure, custom implementations, and dedicated support; offering all [Advanced features][1] plus white-glove service and flexible licensing. -- **[Role-Based Access Control][1]**: Baserow Advanced and Enterprise plans come with advanced user management to collaborate effectively. Baserow role-based access control (RBAC) helps teams manage complex access protocols, such as vetting who to grant data and resources access to and what they can do with the information. -- **[Administration Panel][2]:** The administration panel enables Instance admins to create access rules and keep an overview of every user license in the company. -- **[Single Sign-On (SSO)][3]:** Baserow Enterprise allows customers to use any multi-tenant SaaS applications to log in using the SSO credentials provided by any identity solution they choose. Users can enjoy unlimited capacity and the ability to choose how they secure their Baserow applications. -- **Direct Priority Support:** Baserow offers functional support to Enterprise customers with operational and deployment support depending on need. Users can gain access to priority support to deploy Baserow across businesses quickly and seamlessly. This works in the form of a live chat that they can open by clicking on a button. -- **Access to all premium features**: Users on the Enterprise plan have access to [premium features][4]. +Enterprise is ideal for organizations that need complete control over their Baserow infrastructure while benefiting from Baserow's expertise in deployment, maintenance, and optimization. -## Upgrade to the Baserow Enterprise plan +Unlike cloud plans with per-user pricing tiers, Enterprise offers custom pricing based on your organization's specific requirements, deployment size, and support needs. -Upgrading to the Enterprise plan is a manual process handled by the Baserow sales team. Pleaseย [contact a sales representative](https://baserow.io/contact-sales)ย to get started with the Enterprise plan. +## How Enterprise licensing works -All users are always upgraded with an enterprise license. An Enterprise licence cannot be combined with any other license. This means that having some users on open source, some on the premium plan, and some on the enterprise plan is not possible. +Enterprise includes all Advanced plan features. Scope depends on your organization's needs. Request a proposal for an accurate comparison. +| Feature | Advanced (Self-Hosted) | Enterprise (Self-Hosted) | +|---------|------------------------|--------------------------| +| **Infrastructure** | You manage installation | Baserow manages for you | +| **Implementation** | Self-service setup | Dedicated implementation support | +| **Pricing** | Per-user licensing | Custom negotiated pricing | +| **Payment** | Credit card | Payment by invoice | +| **Customization** | Standard features | Custom feature development | +| **Branding** | Logo removal available | Full tool co-branding | +| **SLA** | Standard | Custom SLA agreements | ---- +Learn more about [Advanced plan features](/user-docs/pricing-plans). - +## Enterprise licensing model -Still need help? If you're looking for something else, please feel free to make recommendations or ask us questionsโ€”weโ€™re ready to assist you. +> Enterprise licenses are instance-wide. You cannot mix Enterprise with Free, Premium, or Advanced licenses on the same instance. All users must be covered under the Enterprise agreement. -ย ย ย [Ask the Baserow community](https://community.baserow.io) +This means no partial Enterprise deployments, all workspace members consume Enterprise licenses, and cannot have some users on the free plan within the Enterprise instance. -ย ย ย [Contact support](https://baserow.io/contact) for questions about Baserow or help with your account. +This ensures consistent security, compliance, and support across your organization. - [1]: /user-docs/permissions-overview - [2]: /user-docs/enterprise-admin-panel - [3]: /user-docs/single-sign-on-sso-overview - [4]: /user-docs/subscriptions-overview#baserow-premium-features",,baserow_user_docs,https://baserow.io/user-docs/enterprise-license-overview -118,Admin panel - Users,admin-panel-users,Baserow admin panel: Manage users,"# Admin panel - Users +## When to choose Enterprise plan -The Users page of the Admin Panel lets Instance admins manage and view information about Baserow users from the organization. +Enterprise is right for you if: -##Overview +โœ… **Large user base** (100+ users or growing rapidly) +โœ… **Need managed infrastructure** (limited IT resources for maintenance) +โœ… **Require invoice payment** (credit card not an option) +โœ… **Complex compliance needs** (HIPAA, FedRAMP, SOC 2, custom requirements) +โœ… **Want dedicated support** (named account team, fast response times) +โœ… **Need custom features** (proprietary integrations, unique workflows) +โœ… **Multi-instance deployment** (development, staging, production environments) +โœ… **Mission-critical application** (uptime SLAs, disaster recovery guarantees) -> Instance-wide Admin panel is an Enterprise-level feature. [Refer to this support article](/user-docs/enterprise-license-overview) to learn more about our Enterprise plan and the additional features it provides. -> +Compare all [Baserow pricing plans](/pricing). -Only Instance admins have access to the Baserow admin panel. +## Getting started with Enterprise -The Users page allows Instance admins to view: +[Schedule a call with Baserow sales](https://baserow.io/contact-sales) to discuss your organization's size and growth projections, use case and technical requirements, compliance and security needs, integration requirements, timeline and budget -- A list of all of the users in their organization. -- The name and email address (username) of each user. -- The workspaces the user is a member of. -- The last login date for a particular user. -- When the user joined. -- Identify the user as Active or Deactivated. +Baserow team works with you to map current data management workflows, identify migration needs from existing systems, define security and compliance requirements, scope custom feature needs, and plan deployment architecture. -The ""Last login"" field shows when the user last logged in. Every time a user logs in, the ""Last login"" value on the User page in the admin panel is updated. +Learn more about [activating Enterprise licenses](/user-docs/activate-enterprise-license). -## Individual user actions +## Disconnect Enterprise license -Instance Admins can access user actions by clicking the ellipses (three-dot) icon to the right of the page. By clicking this button, a list of options for modifying that user's account will appear in a new window. +If you disconnect a license while it's active, the related users wonโ€™t have access to the plan anymore. It will effectively remove the license. [Contact our support team][2] if you want to use the license in another self-hosted instance. -Instance admins can take the following actions: + 1. Click the workspace dropdown to view account options + 2. Navigate to **Admin tools** โ†’ **Manage licenses** + 3. Click the **Disconnect license** button on your license detail page -- Edit the name and email of a user. -- Make the user staff: Making a user staff gives them admin access to the entire instance. This action makes the user a super admin in the Baserow instance. - - > Instance Admins have server-wide access to all users and all workspaces. They have the ability to revoke another Instance Admin's own staff permissions. The user that installs and sets up Baserow is automatically an Instance Admin and has staff privileges. - > -- Change the user account password. -- Impersonate a user. An Instance admin is unable to impersonate their own account. -- Deactivate or activate the userโ€™s affiliation with your organizationโ€™s Enterprise license. When a user is marked as inactive they are prevented from signing in or signing up again using the email address. -- Delete a user. +## Frequently asked questions + +### What happens if my Enterprise license expires? + +Your instance continues working, but Enterprise-exclusive features (managed services, dedicated support) end. Advanced-tier features (RBAC, SSO) remain functional temporarily while you renew. Contact your account manager before expiration to avoid disruption. + +### Can I start with Advanced and upgrade to Enterprise later? + +Yes. Many customers start with Advanced self-hosted and upgrade to Enterprise as their needs grow. Migration path is straightforward. Discuss with your account manager. + +### Is Enterprise available on Baserow.io cloud? + +No. Enterprise is exclusively for self-hosted deployments. Cloud customers can use the Advanced plan, which includes all product features (RBAC, SSO, audit logs) but not managed services. + +### Can Enterprise include custom feature development? + +Yes. Baserow can develop custom features, integrations, or workflows specific to your requirements. These are scoped and quoted separately as professional services. + +## Related content + +**Understand plans:** +- [Baserow pricing plans](/user-docs/pricing-plans) +- [Subscriptions overview](/user-docs/subscriptions-overview) + +**Enterprise features:** +- [Enterprise admin panel](/user-docs/enterprise-admin-panel) +- [Audit logs](/user-docs/admin-panel-audit-logs) +- [Single Sign-On overview](/user-docs/single-sign-on-sso-overview) +- [Role-based permissions](/user-docs/permissions-overview) + +**Setup and activation:** +- [Activate Enterprise license](/user-docs/activate-enterprise-license) +- [Set up self-hosted Baserow](/user-docs/set-up-baserow) +- [Admin panel overview](/user-docs/enterprise-admin-panel) + +**Get started:** +- [Contact sales for Enterprise](https://baserow.io/contact-sales) + +--- + +Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. + +- [Ask the Baserow community](https://community.baserow.io) +- [Contact sales](https://baserow.io/contact-sales) for Enterprise inquiries + + + [1]: https://baserow.io/user-docs/pricing-plans + [2]: https://baserow.io/contact",,baserow_user_docs,https://baserow.io/user-docs/enterprise-license-overview +118,Admin - All users,admin-panel-users,Baserow admin panel: Manage users,"# Admin panel - Manage all users in the instance + +The Users page of the Admin Panel lets Instance admins manage and view information about Baserow users from the organization. + +##Overview + +> Instance-wide Admin panel is an Enterprise-level feature. [Refer to this support article](/user-docs/enterprise-license-overview) to learn more about our Enterprise plan and the additional features it provides. +> + +Only Instance admins have access to the Baserow admin panel. + +The Users page allows Instance admins to view: + +- A list of all of the users in their organization. +- The name and email address (username) of each user. +- The workspaces the user is a member of. +- The last login date for a particular user. +- When the user joined. +- Identify the user as Active or Deactivated. + +The ""Last login"" field shows when the user last logged in. Every time a user logs in, the ""Last login"" value on the User page in the admin panel is updated. + +## Individual user actions + +Instance Admins can access user actions by clicking the ellipses (three-dot) icon to the right of the page. By clicking this button, a list of options for modifying that user's account will appear in a new window. + +Instance admins can take the following actions: + +- Edit the name and email of a user. +- Make the user staff: Making a user staff gives them admin access to the entire instance. This action makes the user a super admin in the Baserow instance. + + > Instance Admins have server-wide access to all users and all workspaces. They have the ability to revoke another Instance Admin's own staff permissions. The user that installs and sets up Baserow is automatically an Instance Admin and has staff privileges. + > +- Change the user account password. +- Impersonate a user. An Instance admin is unable to impersonate their own account. +- Deactivate or activate the userโ€™s affiliation with your organizationโ€™s Enterprise license. When a user is marked as inactive they are prevented from signing in or signing up again using the email address. +- Delete a user. ![enter image description here][1] @@ -13285,13 +13412,13 @@ Instance Admins have admin access to the entire self-hosted instance. To make a Log in to your Baserow server as an Instance admin: - 1. In the navigation sidebar on the left side of the page, click on the **Admin** tab. + 1. In the navigation sidebar on the left side of the page, click on the **Admin** tab. 2. Click on the **Users** tab. 3. Click on the ellipses (three-dot) icon to the right of the user you want to make the super admin. 4. In the auth_user table, click the **Edit** button. 5. Set the field called `is_staff` as true โ˜‘๏ธŽ for a user. -To remove a user as an Instance admin, set the field as false โ˜. +To remove a user as an Instance admin, set the field as false โ˜. ![Baserow INSTANCE ADMIN][2] @@ -13319,7 +13446,7 @@ By clicking on any of the column names in the Members page's header, you can sor A user account can be deleted from the User page in the Admin Panel. -Instance Admins can permanently delete a user by clicking the ellipses (three-dot) icon to the right of the page. By clicking this button, options for that user will appear. +Instance Admins can permanently delete a user by clicking the ellipses (three-dot) icon to the right of the page. By clicking this button, options for that user will appear. After clicking the โ€œPermanently deleteโ€ button, a pop-over will display asking you to confirm that you would like to delete the user. @@ -13341,9 +13468,9 @@ After deleting a user, it's possible for a new user to sign up using the same em ### What is the difference between deleting a user and revoking workspace access? -It's important to understand the differences between [removing users from a workspace][6], table, or database and permanently deleting a user account from a self-hosted instance. +It's important to understand the differences between [removing users from a workspace][6], table, or database and permanently deleting a user account from a self-hosted instance. -In the SaaS hosted and self-hosted versions, admins can remove a member from a workspace, table, or database. Removing a user from a workspace, table, or database means their access to that specific application is revoked, but their account remains unaffected. +In the SaaS hosted and self-hosted versions, admins can remove a member from a workspace, table, or database. Removing a user from a workspace, table, or database means their access to that specific application is revoked, but their account remains unaffected. In the self-hosted version, Instance Admins have the ability to permanently delete a user from the entire self-hosted instance. This means that when a user is deleted from the User page in the Admin panel, their account is permanently removed and cannot be recovered. @@ -13376,14 +13503,14 @@ Still need help? If you're looking for something else, please feel free to make [8]: /user-docs/admin-panel-audit-logs [9]: /user-docs/admin-panel-settings [10]: /user-docs/activate-enterprise-license",,baserow_user_docs,https://baserow.io/user-docs/admin-panel-users -119,Admin panel - Workspaces,admin-panel-workspaces,Manage Baserow workspaces in the admin panel,"# Baserow admin panel: Workspaces +119,Admin - All workspaces,admin-panel-workspaces,Manage Baserow workspaces in the admin panel,"# Baserow admin panel: Workspaces Instance admins can manage and view data about the workspaces connected to their organization on the Workspaces tab of the Admin Panel. [Learn more about creating a workspace in this support article.](/user-docs/setting-up-a-workspace) > Instance-wide Admin panel is an Enterprise-level feature. [Refer to this support article](/user-docs/enterprise-license-overview) to learn more about our Enterprise plan and the additional features it provides. > -Only Instance administrators have access to the Baserow Admin panel. Instance Admins have admin access to the entire self-hosted instance. +Only Instance administrators have access to the Baserow Admin panel. Instance Admins have admin access to the entire self-hosted instance. The information and options on the Workspaces home page allow Instance admins to: @@ -13410,7 +13537,7 @@ To sort, click the header column that you would like to sort by: ## Delete a workspace -Instance Admins can permanently delete a workspace by clicking the ellipses (three-dot) icon to the right of the page. By clicking this button, an option for deleting that workspace will appear. +Instance Admins can permanently delete a workspace by clicking the ellipses (three-dot) icon to the right of the page. By clicking this button, an option for deleting that workspace will appear. After clicking the โ€œPermanently deleteโ€ button, a pop-over will display asking you to confirm that you would like to delete the workspace. @@ -13491,7 +13618,7 @@ Audit log availability and scope vary by plan and deployment type: ## Workspace-level audit logs -**Choose workspace-level when:** You're a workspace admin monitoring your team, you only need visibility into one workspace, or you're on the Cloud Advanced plan. +**Choose workspace-level when:** You're a workspace admin monitoring your team, you only need visibility into one workspace, or you're on the Cloud Advanced plan. 1. Open the workspace you want to audit 2. Click **Audit log** in the workspace sidebar @@ -13560,7 +13687,7 @@ Download audit logs as CSV files for long-term storage, compliance reporting, or Exported CSV files include these columns: - **User Email** - Who performed the action - **User ID** - Numeric user identifier -- **Workspace Name** - Affected workspace (Instance-level audit logs) +- **Workspace Name** - Affected workspace (Instance-level audit logs) - **Workspace ID** - Numeric workspace identifier (Instance-level audit logs) - **Action Type** - Type of operation performed - **Description** - Detailed action description @@ -13687,14 +13814,14 @@ Still need help? If you're looking for something else, please feel free to make [1]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/52a27909-ccd0-42ac-8590-dfd403664a84/Admin%20settings%20-%20audit%20log.jpg [2]: https://baserow.io/docs/installation%2Fconfiguration#backend-misc-configuration",,baserow_user_docs,https://baserow.io/user-docs/admin-panel-audit-logs -121,Admin panel - Settings,admin-panel-settings,Baserow admin panel settings for instance control,"# Baserow instance settings in the admin panel +121,Admin settings,admin-panel-settings,Baserow admin panel settings for instance control,"# Baserow instance settings in the admin panel -Instance Admins can control two fundamental aspects of their organization's Baserow account on the Settings page of the Admin Panel: account restrictions and user deletion. +Instance Admins can control two fundamental aspects of their organization's Baserow account on the Settings page of the Admin Panel: account restrictions and user deletion. > Instance-wide Admin panel is an Enterprise-level feature. [Refer to this support article](/user-docs/enterprise-license-overview) to learn more about our Enterprise plan and the additional features it provides. > -Instance Admins have admin access to the entire self-hosted instance. The controls in this section help to manageย your organization's security protocols. Note that the first user to create an account in a new self-hosted instance will be the admin user for that instance. +Instance Admins have admin access to the entire self-hosted instance. The controls in this section help to manageย your organization's security protocols. Note that the first user to create an account in a new self-hosted instance will be the admin user for that instance. ## Overview @@ -13716,7 +13843,7 @@ By default, any user visiting your Baserow domain can sign up for a new account. After [setting up a self-hosted Baserow instance](/docs/index#installation), It may be important to restrict premium access or allow non-members to view the data for a licensed workspace. You can disable the ability to sign up for a new account on the self-hosted instance URL. -To disable sign-up on self-hosted Baserow instance: Admin โ†’ Settings โ†’ Allow creating new accounts โ†’ Toggle off. +To disable sign-up on self-hosted Baserow instance: Admin โ†’ Settings โ†’ Allow creating new accounts โ†’ Toggle off. ### Allow signups via workspace invitations @@ -13725,7 +13852,7 @@ If you toggle off the **Allow creating new accounts** option, the โ€œAllow signu Toggling this option on means that only directly invited users can create an account, so only members with workspace admin roles can invite users. For instructions on how to invite users to a workspace, [see this support article](/user-docs/manage-workspace-permissions). > Note that even if the creation of new accounts is disabled, this option permits directly invited users to still create an account. -> +> ![enter image description here][2] @@ -13734,7 +13861,7 @@ Toggling this option on means that only directly invited users can create an acc By default, users can reset their passwords. The last option in the Account restrictions section allows Instance admins to restrict users from requesting a password reset link. > Please keep in mind that if you disable this option, you risk locking yourself out of the system and losing access to your account if you forget your password. -> +> ![enter image description here][3] @@ -13772,14 +13899,14 @@ Once configured, the chosen verification level will apply to all new user regist ## User deletion grace delay -When you delete an account in Baserow, that account will remain on Baserow for a retention period before it's permanently deleted. +When you delete an account in Baserow, that account will remain on Baserow for a retention period before it's permanently deleted. -The default grace delay period is 30 days. Instance Admins can adjust this period in the User deletion section. +The default grace delay period is 30 days. Instance Admins can adjust this period in the User deletion section. Grace delay is the number of days without a login after which an account scheduled for deletion is permanently deleted. > Note that the default grace delay period only applies when an [account is scheduled for deletion from the userโ€™s account settings](/user-docs/delete-your-baserow-account). It does not apply when the [user is permanently deleted from the User page of the Admin panel](/user-docs/admin-panel-users#permanently-delete-a-user). -> +> ![enter image description here][8] @@ -13788,16 +13915,16 @@ Grace delay is the number of days without a login after which an account schedul This enables a nightly job that automatically tracks workspace usage. The job calculates the total number of rows and files used within each workspace. This data is then displayed on the premium workspace admin page, providing insights into workspace activity. If enabled, usage data is displayed on the premium workspace admin page. - + If not enabled, no workspace usage data is collected or displayed on the admin page. ## Co-branding for enterprises -Baserow provides a co-branding option for Enterprise plan users. This feature allows you to upload your logo and tailor Baserow's appearance to align with your company's brand. +Baserow provides a co-branding option for Enterprise plan users. This feature allows you to upload your logo and tailor Baserow's appearance to align with your company's brand. ### What gets branded? -Your logo will be displayed prominently across various locations, for example: +Your logo will be displayed prominently across various locations, for example: - Email header: Emails sent from Baserow will feature your logo at the top, reinforcing your brand identity in every communication. - Sidebar: Your logo will be displayed in the bottom left corner of the Baserow sidebar, providing continuous brand visibility. @@ -13814,6 +13941,12 @@ To upload a custom logo: 2. Access branding options: On the Admin Settings page, scroll down to the ""Branding"" section. 3. Upload your logo: Locate the Logo category within the branding section. Here, you can upload your desired company logo to replace the Baserow logo with your custom alternative. +## Baserow health checks + +These checks show the current status of your Baserow installation. + +You can [add a target email tester][11], and click a button to throw an error as a tester. + --- @@ -13823,6 +13956,7 @@ Still need help? If you're looking for something else, please feel free to make - [Ask the Baserow community](https://community.baserow.io) - [Contact support](/contact) for questions about Baserow or help with your account. + [1]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/e27b5db3-a72a-4383-831a-95d504c16e05/Screenshot_2023-01-06_at_09.19.22.png [2]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/04da95b5-d442-4a60-ba5e-8e14bd0b36af/Screenshot_2023-01-06_at_09.28.34.png [3]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/2127c0f1-1a7b-4f2d-9497-0e19768f8487/Screenshot_2023-01-06_at_09.38.31.png @@ -13832,17 +13966,18 @@ Still need help? If you're looking for something else, please feel free to make [7]: /user-docs/enterprise-admin-panel [8]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/7afc9b19-28d7-46b5-883c-6ad211fcc956/Screenshot_2023-01-06_at_10.29.58.png [9]: /user-docs/public-sharing - [10]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/9cebfa8b-046f-4ea0-b784-9b2f433e3bf9/Co-branding%20for%20enterprises.png",,baserow_user_docs,https://baserow.io/user-docs/admin-panel-settings -122,Enterprise admin panel,enterprise-admin-panel,Baserow Enterprise admin panel overview,"# Baserow Enterprise admin panel + [10]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/9cebfa8b-046f-4ea0-b784-9b2f433e3bf9/Co-branding%20for%20enterprises.png + [11]: https://baserow.io/docs/installation%2Fconfiguration#email-configuration",,baserow_user_docs,https://baserow.io/user-docs/admin-panel-settings +122,Admin dashboard,enterprise-admin-panel,Baserow Enterprise admin panel overview,"# Baserow Enterprise admin panel -The Admin Panel is a centralised interface for Instance admins to manage the Enterprise account for their organization. +The Admin Panel is a centralised interface for Instance admins to manage the Enterprise account for their organization. Instance admins can actively maintain authentication and manage user and workspace access using a variety of tools in the Admin Panel. Only Instance administrators have access to the Baserow Admin panel. An Instance Admin is the account that installs and sets up Baserow and has staff privileges. This support article will help Instance admins understand and manage Baserow's use in their organisation. > This is an Enterprise-only feature. If you are interested in learning more about our Enterprise plan and the additional features that it offers, thenย [visit this page][1]. -> +> ## Overview of the Admin Panel @@ -13866,11 +14001,11 @@ Login to your Baserow server as an Instance admin. In the navigation sidebar on To manage and view information about usage and access from the Admin Panel, click 'Admin' in the sidebar to view pages with important data. Learn how to use the information and options on these pages. - **Dashboard**: This information is useful when you need to delve into data and uncover valuable insights. - + The Admin panel's Dashboard page displays data about workspaces, applications, users, user activity, and more. Instance Admins can view everything from information about the total number of users, workspaces and applications associated with the organizationโ€™s Enterprise plan, to more specifics about new and active users. - + ![enter image description here][3] - + - **[Users][4]**: The Users page of the Admin Panel lets Instance admins manage and view information about Baserow users from the organization. - **[Workspaces][5]**: Instance admins can manage and view data about the workspaces connected to their organization on the Workspaces tab of the Admin Panel. - **[Authentication][6]**: Baserow Single Sign On (SSO) allows Instance admins to have control over user authentication. To learn more about configuring your organizationโ€™s SSO settings, please [refer to this support article](https://baserow.io/user-docs/single-sign-on-sso-overview). @@ -13898,130 +14033,168 @@ Still need help? If you're looking for something else, please feel free to make [7]: /user-docs/admin-panel-audit-logs [8]: /user-docs/admin-panel-settings [9]: /user-docs/get-a-licence-key",,baserow_user_docs,https://baserow.io/user-docs/enterprise-admin-panel -123,Activate Enterprise license,activate-enterprise-license,Activate Enterprise license in Baserow self-hosted,"# Activate Enterprise license in self-hosted plan +123,Install Enterprise license,activate-enterprise-license,Activate Enterprise license in Baserow self-hosted,"# Activate Enterprise license in self-hosted Baserow + +Activating your license is the key to unlocking enterprise capabilities. Activating your Baserow Enterprise license connects your self-hosted instance to your premium, secure, and scalable features. + +This guide covers step-by-step instructions to install and activate your Enterprise license key on a self-hosted Baserow server. + +> This article covers how to activate an Enterprise license. [Visit this page][1] if you want to purchase a cloud subscription. [Visit this page][2] to purchase and install a Baserow self-hosted license. + +## Prerequisites + +To activate your Enterprise license, you'll need +- Self-hosted Baserow server (version 1.14.0 or later) +- Instance admin access (The first user who signs up is automatically an Instance Admin) +- Enterprise license key (obtained from Baserow sales) + +> Enterprise licenses are only available for self-hosted servers, and cannot be applied to workspaces on the Baserow.io cloud version. Learn more about [Enterprise plans](/user-docs/enterprise-license-overview). -This section will walk you through activating the [Enterprise version](/user-docs/enterprise-license-overview) on your self-hosted Baserow server for Baserow versions 1.14.0 and greater. +## How to activate your license -## Steps to Activate Enterprise +Follow these steps to get your Enterprise license and prepare your instance. -### 1. Contact Sales +### 1. Contact sales to get license -Upgrading to the Enterprise plan is a manual process handled by the Baserow sales team. Please firstย [contact a sales representative](/contact-sales)ย to get started with the Enterprise plan. +Enterprise licenses are provided directly by the Baserow sales team. If you have not already, your first step is to purchase a license. -### 2. Setup or Upgrade a Baserow Server +[Contact Baserow sales](https://baserow.io/contact-sales) to discuss your needs and purchase an Enterprise license. -Baserowโ€™s Enterprise version is only available for self-hosted Baserow servers **on Baserow version 1.14.0 or greater**. It is not available for workspaces on [Baserow.io](http://Baserow.io) itself. +### 2. Set up or upgrade your Baserow server -- See our [installation documentation](/docs/installation%2Finstall-with-docker) for options for setting up a self-hosted Baserow server if you donโ€™t already have one. -- If you already have a Baserow server ensure it is already upgraded and running on **Baserow version 1.14.0 or greater**. You can verify you are on 1.14.0 by expanding the Admin section in the sidebar of Baserow and verifying you can see a greyed-out or active โ€œAudit Logโ€ button. +This license is only for self-hosted Baserow servers running on **version 1.14.0 or later**. + +#### For a new server setup + +If you are setting up a new server, follow the official [installation documentation](https://baserow.io/docs/index#installation) to ensure your instance is installed correctly. + +#### For an existing server upgrade + +If you have an existing Baserow instance, you must ensure it is updated to version 1.14.0 or later. + +* **How to verify:** You can confirm you are on the correct version by logging in as an instance admin and navigating to the Admin settings page. If you see an ""Audit log"" button (even if it is greyed out), your server is on a compatible version. +* **How to upgrade:** Follow the [upgrade guide](https://baserow.io/docs/installation/install-with-docker#upgrading-from-a-previous-version) to update your instance. ### 3. Find your Instance ID -For the Baserow server that you want to activate enterprise on, you will need to provide your sales representative with the server's Instance ID. To find your Instance ID: +Your [Instance ID][3] uniquely identifies your self-hosted server and is required to generate your license. -1. Log in to your Baserow server as an Instance Admin. Instance Admins have staff access to the entire self-hosted instance. The first user who signed up is automatically an Instance Admin. -2. Expand the Admin section at the top of the left sidebar. -3. Open the Licenses page in the Admin section. -4. Copy your Baserow servers Instance ID. +**To locate your Instance ID:** -![enter image description here][1] + 1. Log in to your Baserow server as an Instance Admin. + 2. Expand the workspace options -> **Admin tools** tab in the left sidebar + 3. Click **Manage licenses** in the Admin settings page + 4. Copy your **Instance ID** + 5. Send this Instance ID to your Baserow sales representative -### 4. Install your Enterprise license key +![Instance ID location](https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/1b766e14-d494-4f29-ae99-fa52fec94733/Your%20Baserow%20instance%20ID.jpg) -Next, you should send the server's instance ID to your sales representative, who will then send you back an Enterprise License key. Once you have your Enterprise License key, you can install it into your server by: +### 4. Register your Enterprise license key -1. Go to the Licenses admin page where you got your Instance ID above. -2. If you have any old expired licenses, click on each one and select **Disconnect License** and remove them permanently. +Once you receive your Enterprise license key from sales: - If you had previously activated your enterprise license in 1.12.X or earlier it will be showing up as expired after upgrading to 1.14.0. You must also disconnect and re-register this license. -3. On the Licenses admin page click **Register License** and enter your new Enterprise license key. -4. Your Enterprise license will immediately become active for every single user of your Baserow server. There is no need to assign individual seats to users as the Enterprise license is global. +1. Navigate to **Admin tools** โ†’ **Manage licenses** page +2. **Remove any old licenses:** Click on expired or old licenses and remove them permanently -![enter image description here][2] + > If you had a license on version 1.12.X or earlier, it will show as expired after upgrading to 1.14.0+. You must disconnect and re-register it. -## Updating an Existing License +3. Click **Register license** +4. Enter your Enterprise license key +5. Click the **Register license** button in the modal -If you have already registered a Baserow Enterprise or Premium license in your self-hosted server, Baserow will automatically attempt to fetch any changes to your license every hour if it can access the internet. +![License registration](https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/7fc3aedc-e73d-494d-9da1-2aa456ec752c/Register%20License.jpg) -> If an enterprise license was activated in Baserow versions 1.12.X or older it will show as expired after upgrading to 1.14.0. You should disconnect the license and re-install it after upgrading to fix this issue. +Enterprise features activate immediately for all users on your server. No need to assign individual seats; the license is instance-wide. -Changes to licenses are made by the Baserow sales team. For example, these changes could be: +## Update an existing license -- An upgrade of the type of your existing license from Premium to Enterprise, or -- An updated expiry date. +### Automatic license updates -You can also manually trigger this update by clicking the **Check Now** button on your Licenses detail page. +Baserow automatically checks for license updates every hour if your server has internet access. -![enter image description here][3] +License updates from the sales team (plan upgrades, expiry extensions) are applied automatically. -### Update a license on a server without internet +**To manually check for updates:** +1. Navigate to **Admin tools** โ†’ **Manage licenses** +2. Click **Check Now** on your license detail page -This section will cover how to update a license on a server that canโ€™t reach the internet. +On this page, you can choose the users who can use the plan, add a user, or remove all users. -If your Baserow server is on an air-gapped network or behind a firewall that prevents it from requesting updated license details every hour, then automatic changes made by the Baserow sales team to your license will not be picked up. +![Check for license updates](https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/688840c3-36d6-4e98-83a3-ec909cdb204b/Untitled%202.png) -To get updates you should: +### Update license on air-gapped server -1. Inform the Baserow sales team that your Baserow server cannot access the internet and so you need to get manual license updates. -2. When the Baserow sales team, as discussed with you, makes any changes to your license they will send you a new license key. -3. You should take this new license key and register it in your Baserow server following the steps in the **[Install your Enterprise license key][4]** section above. -4. Once your new updated license has been entered, click on your old License on the Licenses Admin page and click the โ€œDisconnect Licenseโ€ to remove the old version. - - > After disconnecting an old enterprise license you might see your feature badge in the top left of Baserow change to become `Premium`. This is a known bug in 1.14.0 and simply refreshing the page will re-enable your enterprise features for your user. - > +If your server cannot access the internet (air-gapped network or firewall): -## Troubleshooting +1. Inform Baserow sales that your server is air-gapped and requires manual license updates +2. When sales make license changes, they'll send you a new license key +3. Register the new license key following [step 4 above](#4-install-your-enterprise-license-key) +4. Disconnect the old license: + - Click on the old license on the Licenses page + - Select **Disconnect License** + +> After disconnecting an old license, the badge may briefly show ""Premium"" instead of ""Enterprise."" Refresh the page to restore Enterprise features. + +## Frequently asked questions ### How can I tell if Enterprise is active? -Look for the `Enterprise` badge in the top left corner of Baserow. If the badge is present, then your Enterprise plan is active. +Look for the **Enterprise** badge in the account settings. If present, your Enterprise license is active. -![enter image description here][5] +### How do I check my Baserow version? -### How do I check if I am using the right version of Baserow? +Open the **Admin tools** menu in the sidebar -> Admin settings to view the version number of the instance. You should upgrade to 1.14.0 or later. See [upgrade guide](https://baserow.io/docs/installation/install-with-docker#upgrading-from-a-previous-version). -Open the Admin menu in the sidebar and check to see if you can see the **Audit Log** button. If it is present (even if greyed out) you are on 1.14.0 or greater and can activate the enterprise license. If you cannot see the **Audit Log** admin page then you first must upgrade your Baserow version to 1.14.0 or greater to use Enterprise. +### Do I need to allocate seats to individual users? -Refer to our documentation for a guide on how to [upgrade from a previous version](/docs/installation%2Finstall-with-docker#upgrading-from-a-previous-version). +No. Enterprise licenses are instance-wide. All current and future users automatically receive Enterprise features without seat allocation. -![enter image description here][6] +### Enterprise features not working after registration? -### How can I allocate usersโ€™ seats? +**Check your Baserow version:** +- Must be version 1.14.0 or later +- See [upgrade guide](https://baserow.io/docs/installation/install-with-docker#upgrading-from-a-previous-version) -The enterprise license grants every current and future user on your instance the enterprise features. You do not need to allocate seats to individual users on the Enterprise license as they will automatically get the features. +**Try logging out and back in:** +- Sometimes features require a fresh session -### I donโ€™t have the enterprise features after registering the license +**Verify license is active:** +- Check for the Enterprise badge +- Confirm license shows as active in **Admin tools** โ†’ **Manage licenses** -Make sure you are using Baserow 1.14.0, older versions will not work with the enterprise version. Refer to our documentation for a guide on how to [upgrade from a previous version](/docs/installation%2Finstall-with-docker#upgrading-from-a-previous-version). +### License shows as expired after upgrading to 1.14.0? -Otherwise, try logging out of Baserow and back in again. +This happens if your license was activated on version 1.12.X or earlier. -### I upgraded to 1.14.0 and my enterprise license now shows as expired +**Solution:** +1. Navigate to **Admin tools** โ†’ **Manage licenses** +2. Click on the expired license +3. Select **Disconnect License** +4. Register the license again (use the same key) -If an enterprise license was activated in Baserow version 1.12.X or prior, it will show as expired after upgrading to 1.14.0. To resolve this issue, disconnect and reinstall the licence after upgrading to 1.14.0. +## Related content +- [Enterprise license overview](/user-docs/enterprise-license-overview) +- [Enterprise admin panel](/user-docs/enterprise-admin-panel) +- [Baserow pricing plans](/user-docs/pricing-plans) +- [Self-hosted installation guide](https://baserow.io/docs/installation/install-with-docker) --- - - -Still need help? If you're looking for something else, please feel free to make recommendations or ask us questionsโ€”weโ€™re ready to assist you. +Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. -ย ย ย [Ask the Baserow community](https://community.baserow.io) +- [Ask the Baserow community](https://community.baserow.io) +- [Contact support](https://baserow.io/contact) for questions about Baserow or help with your account -ย ย ย [Contact support](https://baserow.io/contact) for questions about Baserow or help with your account. - [1]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/efd0ac6e-04ef-4235-b85b-bdf3a89f5aba/Untitled.png - [2]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/a06a7ac8-5a32-47f9-9d31-af855948b3fa/Untitled%201.png - [3]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/688840c3-36d6-4e98-83a3-ec909cdb204b/Untitled%202.png - [4]: #4-install-your-enterprise-license-key - [5]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/85c603bf-aa65-4a83-9272-fee8cc33169a/Untitled%203.png - [6]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/25b614b6-9caa-4a74-806d-53efe203b8d6/Untitled%204.png",,baserow_user_docs,https://baserow.io/user-docs/activate-enterprise-license + [1]: https://baserow.io/user-docs/buying-a-subscription + [2]: https://baserow.io/user-docs/get-a-licence-key + [3]: https://baserow.io/user-docs/getting-and-changing-the-instance-id",,baserow_user_docs,https://baserow.io/user-docs/activate-enterprise-license 124,Configure SSO with Azure AD,configure-sso-with-azure-ad,Baserow: Configure single sign-on with Azure AD,"# Configure Single Sign-on (SSO) with Azure AD -This guide is intended for [Admins](/user-docs/working-with-collaborators#set-the-permission-level-for-collaborators) setting up SSO SAML with Azure AD. +This guide is intended for [Admins](/user-docs/working-with-collaborators#set-the-permission-level-for-collaborators) setting up SSO SAML with Azure AD. -When you configure Single Sign-on (SSO) with Azure AD, your users will be able to create and sign into their Baserow accounts using Azure AD. +When you configure Single Sign-on (SSO) with Azure AD, your users will be able to create and sign into their Baserow accounts using Azure AD. If you are looking for information on setting up SSO with other providers: @@ -14034,13 +14207,13 @@ If you are looking for information on setting up SSO with other providers: - [Configure OpenID Connect for OAuth 2 SSO](/user-docs/configure-openid-connect-for-oauth-2-sso) > Instance-wide admin panel, SSO, Payment by invoice, Signup rules, and Audit logs are features only available for Baserow paid plans. [Get in touch with us here](/contact-sales) if you're interested in learning more about paid pricing. -> +> Here's how to set up Azure AD to sign in to your Baserowย account. ## Prerequisites -To set up SSO SAML with Azure AD in Baserow, you need: +To set up SSO SAML with Azure AD in Baserow, you need: - A Baserow user account. If you don't already have one, you canย create an account. - Instance admin access to the entire Baserow self-hosted instance. @@ -14051,14 +14224,14 @@ To set up SSO SAML with Azure AD in Baserow, you need: 1. To add an enterprise application to your Azure AD tenant, sign in to theย [Azure Active Directory Admin Center](https://aad.portal.azure.com/). 2. In the Azure portal, select **Azure Active Directory > Enterprise applications** and select **New application**. Then click **+** **Create your own application**. 3. Enter the display name for your new application, select **Integrate any other application you don't find in the gallery**, and then select **Create** to add the application. - + ![Create an Azure application and set up SAML SSO][1] - + 4. In the left menu of the appโ€™s **Overview** page, select Single sign-on. 5. Select **SAML** as the single sign-on method. - + ![Select **SAML** as the single sign-on method.][2] - + 6. The **Set Up Single Sign-On with SAML** page will then open. ## Get your Baserow SSO URLs @@ -14082,64 +14255,64 @@ To set up SSO SAML with Azure AD in Baserow, you need: 3. Sign on URL 4. Go back to Baserow and the previously opened **Add a new SSO SAML provider** modal and now copy the **Default Relay State URL.** 5. Go back to Azure and paste the **Default Relay State URL** from Baserow into the Relay State field in Azure. -6. Leave the Logout URL empty as Baserow does not yet support single sign out. +6. Leave the Logout URL empty as Baserow does not yet support single sign out. 7. Finally, click **Save** in Azure, your end result should look something like the following screenshot: - - ![Configure SAML URLs in Azure][4] + + ![Configure SAML URLs in Azure][4] ## Setup Azure Attributes & Claims 1. Go to the second section in Azure titled Attributes & Claims, then click the **Edit** button 2. On the new Attributes & Claims page click **Add New Claim**. 1. Type โ€˜user.emailโ€™ in the Name field - 2. In the Source attribute dropdown, select **user.mail** + 2. In the Source attribute dropdown, select **user.mail** 3. Click **Save** - + ![Setup Azure Attributes & Claims][5] - + 3. Click Add New Claim again 1. Type โ€˜user.first_nameโ€™ in the Name field 2. Select **user.givenname** from the Source attribute dropdown. 3. Click **Save** - + ![Add New Claim again][6] - + 4. The end result of your Attributes & Claims page in Azure should now look something like this: - + ![Attributes & Claims page in Azure][7] - + 5. Click the **X close** button in the top right of the Attributes & Claims page in Azure to get back to the **Set Up Single Sign-On with SAML** page. ## Fix and install Azure SAML metadata in Baserow 1. Next in the third section titled SAML Certificates next to Federation Metadata XML click **Download**. - + ![Fix and install Azure SAML metadata in Baserow ][8] - + 2. Open the download XML file in a text editor. 1. By default, Microsoft includes both SAML 2.0 and Web Services Federation configuration in this XML file. Baserow only supports SAML 2.0 and so you will now need to delete the redundant Web Services Federation configuration from this file, if you do not Baserow will not accept the metadata. 2. To fix this open up the downloaded XML metadata file in a text editor. - 3. Edit the file by deleting the text starting from and including `` in the metadata file. + 3. Edit the file by deleting the text starting from and including `` in the metadata file. 1. For example, given the following example metadata file - + ```xml ... ``` - + 2. The end result should look like the below, without any RoleDescriptor sections. - + ```xml ``` - - 3. If you are having trouble with this step please ask for help by asking your Baserow sales rep. + + 3. If you are having trouble with this step please ask for help by asking your Baserow sales rep. 4. Copy the resulting metadata which has had the RoleDescriptor sections removed. 3. Go back to Baserow and the previously opened **Add a new SSO SAML provider** modal. Paste the contents of the edited file you just copied into the **metadata** box and click **Save**. - + ![Go back to Baserow and the previously opened][9] - -4. Go back to Azure and in the left sidebar click **User and workspaces**. + +4. Go back to Azure and in the left sidebar click **User and workspaces**. 5. Click **Add user/workspace** and on the **Add Assignment** page that opens select all users and workspaces you wish to be able to login to your Baserow server, then click **Assign**. ## Testing SSO In Baserow @@ -14166,15 +14339,15 @@ Set the environment variable `BASEROW_ALLOW_MULTIPLE_SSO_PROVIDERS_FOR_SAME_ACCO This option **increases security risk**, especially if you have multiple OAuth providers enabled. An attacker who gains access to a user's account on any external provider could potentially use that access to log in to the associated Baserow account. -> For optimal security, we recommend maintaining consistent authentication methods unless necessary. If enabling multiple login methods is essential, implement additional security measures to mitigate potential risks. +> For optimal security, we recommend maintaining consistent authentication methods unless necessary. If enabling multiple login methods is essential, implement additional security measures to mitigate potential risks. **Option 2: Maintain consistent authentication method** -Users can continue logging in with the authentication method they signed up with. This avoids changing Baserow's default behavior and maintains existing security measures. +Users can continue logging in with the authentication method they signed up with. This avoids changing Baserow's default behavior and maintains existing security measures. **Option 3: Delete user from [Admin panel](/user-docs/enterprise-admin-panel) and re-login via SSO** -You can delete the user from the Baserow [admin panel](/user-docs/enterprise-admin-panel). Upon logging in via SSO, Baserow will recreate the user, automatically setting SSO as their default authentication method. +You can delete the user from the Baserow [admin panel](/user-docs/enterprise-admin-panel). Upon logging in via SSO, Baserow will recreate the user, automatically setting SSO as their default authentication method. Deleting the user permanently removes all their associated data within Baserow. This option should only be considered if data loss is acceptable and after ensuring all data is backed up elsewhere. @@ -15293,7 +15466,7 @@ A Formula field is a column type that contains formulas. A function is a specifi Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. - [Ask the Baserow community](https://community.baserow.io) -- [Contact support](/contact) for questions about Baserow or help with your account",,baserow_user_docs,https://baserow.io/user-docs/formula-field-overview +- [Contact support](/contact) for questions about Baserow or help with your account",field,baserow_user_docs,https://baserow.io/user-docs/formula-field-overview 132,Field overview,baserow-field-overview,Baserow field overview,"# Fields in Baserow tables Fields in Baserow are the building blocks of structured data; transforming simple spreadsheet columns into intelligent data types that validate input, create relationships, calculate values, and power your entire database architecture. @@ -15358,7 +15531,7 @@ Connect data across tables: |------------|---------|-------------| | [Link-to-table][15] | Create relationships | Link orders to customers, tasks to projects | | [Lookup][16] | Display linked table data | Show the customer name in order records by looking up the linked customer. | -| [Count][17] | Count linked rows | Count how many tasks are assigned to each project | +| [Count][17] | Count linked rows | Count how many tasks are assigned to each project | | [Rollup][18] | Aggregate data from linked rows | Calculate total revenue from all orders linked to a customer, average rating | ### Automatic and computed fields @@ -15501,7 +15674,7 @@ Still need help? If you're looking for something else, please feel free to make [35]: /user-docs/adding-a-field [36]: /user-docs/adding-a-field [37]: /user-docs/working-with-timezones - [38]: /user-docs/footer-aggregation",,baserow_user_docs,https://baserow.io/user-docs/baserow-field-overview + [38]: /user-docs/footer-aggregation",field,baserow_user_docs,https://baserow.io/user-docs/baserow-field-overview 133,Create fields,adding-a-field,Create a Baserow field for your table,"# How to create fields in Baserow Creating fields in Baserow is the foundation of database design; defining your data structure determines what information you can capture, how you organize records, and what insights you can extract from your tables. @@ -15514,7 +15687,7 @@ For a comprehensive overview of all available field types and their capabilities Fields define the structure of your database by specifying what types of information each column can store. Creating fields is your first step in transforming a blank table into a functional database that captures customer information, tracks projects, manages inventory, or powers any business process. -Well-designed fields with clear names and descriptions improve team collaboration, reduce data entry errors, and make your database intuitive for new users. +Well-designed fields with clear names and descriptions improve team collaboration, reduce data entry errors, and make your database intuitive for new users. ![Fields option in Baserow][2] @@ -15689,7 +15862,7 @@ Rows are individual records in your Baserow tables, each containing data across A row represents a single record or entry in your table. Rows are the fundamental building blocks where your information lives, and understanding how to work with them is essential for effective data management in Baserow. -Rows hold your actual data records, while fields (columns) define what type of information each record contains. Each row spans horizontally across your table, with cells at the intersection of rows and fields containing the actual data values. +Rows hold your actual data records, while fields (columns) define what type of information each record contains. Each row spans horizontally across your table, with cells at the intersection of rows and fields containing the actual data values. ![Row structure in a Baserow table](https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/Screenshot_2022-06-14_at_20.23.05.png) @@ -15764,7 +15937,7 @@ Add [comments to rows](/user-docs/row-commenting) to discuss specific records wi ### Date dependency -Dependencies work across rows within the same table, helping maintain logical schedules without manual date adjustments. Configure relationships between rows where dates automatically adjust based on dependencies. +Dependencies work across rows within the same table, helping maintain logical schedules without manual date adjustments. Configure relationships between rows where dates automatically adjust based on dependencies. When you reschedule a parent row, all dependent child rows shift their dates proportionally, maintaining the original time relationships. This is useful for project management where task delays cascade through dependent activities. @@ -15792,7 +15965,7 @@ Learn more: [Date dependency][4] ### What's the maximum number of rows I can have in a table? -Baserow has row limits depending on your [subscription plan][2]. Limits depend on your plan's storage capacity and performance requirements for your specific use case. Tables can handle millions of rows efficiently thanks to lazy loading, which loads data progressively as you scroll rather than loading everything at once. +Baserow has row limits depending on your [subscription plan][2]. Limits depend on your plan's storage capacity and performance requirements for your specific use case. Tables can handle millions of rows efficiently thanks to lazy loading, which loads data progressively as you scroll rather than loading everything at once. ### Why can't I select more than 200 rows at once? @@ -15837,7 +16010,7 @@ Use the `row_id()` [formula function](/user-docs/understanding-formulas) to get Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. -- [Ask the Baserow community](https://community.baserow.io) +- [Ask the Baserow community](https://community.baserow.io) - [Contact support](/contact) for questions about Baserow or help with your account. @@ -15846,7 +16019,7 @@ Still need help? If you're looking for something else, please feel free to make [3]: https://baserow.io/user-docs/autonumber-field ![Date dependency image][5] [4]: https://baserow.io/user-docs/date-and-time-fields - [5]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/3653c029-8fb7-4ab1-aace-8824cb43385b/date_dependency.png",,baserow_user_docs,https://baserow.io/user-docs/overview-of-rows + [5]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/3653c029-8fb7-4ab1-aace-8824cb43385b/date_dependency.png",row,baserow_user_docs,https://baserow.io/user-docs/overview-of-rows 135,Make,make,Integrate Baserow with Make,"# Configure Baserow in Make (formerly Integromat) Connect Baserow to Make to automate workflows across 1000+ apps without code. Create database tokens for secure authentication, then use Make modules to watch, create, update, delete, and list rows through visual automation scenarios. @@ -16192,7 +16365,7 @@ todate_tz('20210101', 'YYYYMMDD', 'Europe/Amsterdam') todate_tz(field('Event Date'), 'YYYY-MM-DD', 'Asia/Tokyo') // Conditional timezone based on region field -if(field('Region')='Europe', +if(field('Region')='Europe', todate_tz(field('Date'), 'YYYY-MM-DD', 'Europe/London'), todate_tz(field('Date'), 'YYYY-MM-DD', 'America/New_York')) ``` @@ -16672,12 +16845,12 @@ Importing lets you create fully populated tables from existing data files or spr ## Supported import formats -| Format | Best for | File extension | +| Format | Best for | File extension | |--------|----------|----------------| -| **Paste data** | Quick transfers from spreadsheets | N/A | -| **CSV** | Simple tabular data from any spreadsheet app | .csv | -| **JSON** | Structured data exports from APIs or apps | .json | -| **XML** | Hierarchical data from technical systems | .xml | +| **Paste data** | Quick transfers from spreadsheets | N/A | +| **CSV** | Simple tabular data from any spreadsheet app | .csv | +| **JSON** | Structured data exports from APIs or apps | .json | +| **XML** | Hierarchical data from technical systems | .xml | > All import methods are limited to 5,000 rows per table. For larger datasets, split your file and import in batches, or contact support for enterprise solutions. @@ -16906,7 +17079,7 @@ Now that you've imported your data, explore these features: Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. - - [Ask the Baserow community](https://community.baserow.io) + - [Ask the Baserow community](https://community.baserow.io) - [Contact support](/contact) for questions about Baserow or help with your account. @@ -17230,9 +17403,9 @@ Still need help? If you're looking for something else, please feel free to make [25]: /user-docs/baserow-field-overview [48]: /user-docs/lookup-field [50]: /user-docs/count-field",,baserow_user_docs,https://baserow.io/user-docs/rollup-field -142,Permission roles,set-permission-level,Baserow: understand role levels,"# Baserow role levels and permissions +142,Role capabilities,set-permission-level,Baserow: understand role levels,"# Baserow role levels and permissions -Roles determine specific capabilities: who can invite members, create databases, edit data, or simply view content. You assign these roles at three levels (workspace, database, table), with more specific assignments overriding broader ones. +Baserow offers permission roles that control what members can do with workspaces, databases, and tables, from full administrative control to read-only access. This guide covers the actions each role can perform at the workspace, database, and table levels. @@ -17240,130 +17413,104 @@ This guide covers the actions each role can perform at the workspace, database, ## Overview -Baserow offers permission roles that control what members can do with workspaces, databases, and tables; from full administrative control to read-only access. +Roles determine specific capabilities: who can invite members, create databases, edit data, or simply view content. You assign these roles at the workspace, database, and table levels, with more specific assignments overriding broader ones. -When you [invite members to a workspace](/user-docs/manage-workspace-permissions), you select their initial role. Workspace admins can modify these roles at any time to adjust permissions as the team's needs evolve. +> The workspace creator automatically becomes a workspace Admin. Workspaces can have multiple Admins. Learn about [roles available in Baserow](/user-docs/permissions-overview). -> The workspace creator automatically becomes a workspace Admin. Workspaces can have multiple Admins. +When you [invite members to a workspace](/user-docs/manage-workspace-permissions), you select their initial role. Workspace admins can modify these roles at any time to adjust permissions as the team's needs evolve. -For how roles interact when assigned at multiple levels, see [Understanding role hierarchy](/user-docs/role-based-access-control-rbac). +## Role comparison at a glance -## The roles explained +Baserow's role-based permissions let you precisely control user access, ensuring data security and proper team collaboration. Each role inherits the permissions of the one below it, creating a clear hierarchy of access. -| Role | Summary | Typical Users | -|------|---------|---------------| -| **Admin** | Full control: manage members, settings, and all content | Workspace owners, department heads | -| **Builder** | Create databases and applications; cannot manage members | Application developers, power users | -| **Editor** | Create and edit data; cannot modify structure | Data managers, content editors | -| **Commenter** | Add comments; cannot edit data | Reviewers, stakeholders | -| **Viewer** | Read-only access | External observers, reporting users | -| **No Role** | No access; requires explicit grants | (Special case for security) | +This table provides a quick comparison of the [default role-based permission levels][1] available in Baserow. -Admins at any level can remove access from each other. For example, a Database Admin can create a private database by setting ""No Access"" for workspace Admins. Table Admin can restrict a table from database Admins. This enables granular control over sensitive data. +| Role | Access Level | Key Responsibilities & Permissions | +| :--- | :--- | :--- | +| **Admin** | Full Control | Has all **Builder** permissions + manages workspace members, roles, and billing. | +| **Builder** | Structure & App Building | Has all **Editor** permissions + creates/deletes databases, tables, fields, views, and applications. | +| **Editor** | Data Management | Has all **Commenter** permissions + creates, edits, and deletes rows and updates cell values. | +| **Commenter** | Feedback & Collaboration | Has all **Viewer** permissions + adds comments to rows. | +| **Viewer** | Read-Only | Can view data in assigned workspaces, databases, or tables. Cannot make any changes. | -Learn about [assigning these roles](/user-docs/assign-roles-to-members-at-workspace-level). +Admins at any level can remove access from each other. For example, a [database Admin][2] can create a private database by setting ""No Access"" for workspace Admins. A [table Admin][3] can restrict a table from database Admins. This enables granular control over sensitive data. +For how roles interact when assigned at multiple levels, see [Understanding role hierarchy](/user-docs/role-based-access-control-rbac). ## Workspace-level role capabilities -When a member has a role at the workspace level, these permissions apply to everything in the workspace unless overridden at the database or table level. +When a member is assigned a role at the workspace level, these permissions apply to every database, application, automation, dashboard and table in the workspace unless overridden at the [database][2] or [table level][3]. | | Admin | Builder | Editor | Commenter | Viewer | | --- | --- | --- | --- | --- | --- | -| **Member management** | | | | | | | Invite members to workspace | โœ“ | | | | | | Manage member roles | โœ“ | | | | | | Remove member access | โœ“ | | | | | -| **Content management** | | | | | | +| Delete workspace | โœ“ | | | | | +| Rename workspace | โœ“ | | | | | +| Access workspace settings and audit log | โœ“ | | | | | +| Add new Baserow builders and tables | โœ“ | โœ“ | | | | | View workspace trash | โœ“ | โœ“ | | | | -| Access all databases and tables | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | +| Access all Baserow builders | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | -> Only workspace Admins can manage workspace membership. Database or table Admins cannot invite members to the workspace; only manage access at their assigned level. +> Only workspace Admins can manage workspace-wide membership. Database or table Admins cannot invite members to a workspace; they can only manage access of existing workspace members at their assigned level. Learn how to [assign workspace-level roles](/user-docs/assign-roles-to-members-at-workspace-level). ## Database-level role capabilities -Database-level roles apply to all tables within that specific database unless overridden at the table level. +Database-level roles apply to all tables within that specific database unless overridden at the [table level][3]. | | Admin | Builder | Editor | Commenter | Viewer | | --- | --- | --- | --- | --- | --- | -| **Access management** | | | | | | -| Grant database access to members | โœ“ | | | | | | Manage member roles on database | โœ“ | | | | | | Remove database access | โœ“ | | | | | -| **Database operations** | | | | | | +| Create snapshots | โœ“ | | | | | +| Rename, duplicate, delete database | โœ“ | โœ“ | | | | | View database trash | โœ“ | โœ“ | | | | +| Create new tables in database | โœ“ | โœ“ | | | | | Access all tables in database | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | -> Database Admins can make a database private by removing access for other members (even workspace Admins), unless those members have explicit table-level access. +> Database Admins can make a database private by removing access for other members (even workspace Admins), unless those members have explicit access at the [table level][3]. Learn how to [assign database-level roles](/user-docs/assign-roles-at-database-level). ## Table-level role capabilities -Table-level roles apply to a specific table only; the most granular permission level. +Table-level roles apply to a specific table only. | | Admin | Builder | Editor | Commenter | Viewer | | --- | --- | --- | --- | --- | --- | -| **Access management** | | | | | | | Manage member roles on table | โœ“ | | | | | | Remove table access | โœ“ | | | | | -| **Table structure** | | | | | | +| Rename, duplicate, delete table | โœ“ | โœ“ | | | | | Create, rename, delete fields | โœ“ | โœ“ | | | | | Reorder fields | โœ“ | โœ“ | | | | -| Update field metadata | โœ“ | โœ“ | | | | -| **Views and sharing** | | | | | | -| Create, edit, delete views | โœ“ | โœ“ | | | | +| Edit the table structure (Update field metadata, filters) | โœ“ | โœ“ | | | | +| Create, edit, delete collaborative views | โœ“ | โœ“ | | | | | Create webhooks | โœ“ | โœ“ | | | | | Generate public share links | โœ“ | โœ“ | | | | -| **Data operations** | | | | | | | Create, update, delete rows | โœ“ | โœ“ | โœ“ | | | | Update cell values | โœ“ | โœ“ | โœ“ | | | | Add comments to rows | โœ“ | โœ“ | โœ“ | โœ“ | | -| View table data | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | +| View and export table data | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | > Table Admins can restrict access from higher-level Admins by setting ""No Access"" role at the table level; useful for sensitive data like salary tables. Learn how to [assign table-level roles](/user-docs/assign-roles-at-table-level). +## Understanding the ""No Role"" setting -## Role comparison at a glance - -### Permission hierarchy by role - -**Admin** (Full control) -- โœ“ Everything Builder can do, plus: -- โœ“ Manage members and roles -- โœ“ Remove access from other users - -**Builder** (Structure & applications) -- โœ“ Everything Editor can do, plus: -- โœ“ Create/modify fields, views, webhooks -- โœ“ Build applications - -**Editor** (Data management) -- โœ“ Everything Commenter can do, plus: -- โœ“ Create, update, delete rows -- โœ“ Edit cell values +Assigning ""No Role"" to a workspace member means they have zero default access. This is useful for implementing a strict, zero-trust security model. -**Commenter** (Feedback only) -- โœ“ Everything Viewer can do, plus: -- โœ“ Add comments to rows +A member with ""No Role"" can only see or interact with content if they are: +* [Added to a team][4] that has been granted specific roles on a database or table. +* Given explicit, individual roles on a specific database or table. -**Viewer** (Read-only) -- โœ“ View all data in assigned areas -- โœ“ No modification abilities +This allows you to grant access on a granular, need-to-know basis without granting broad workspace-wide permissions. -**No Role** - -""No Role"" means zero default access. Members with ""No Role"" can only access content through: -- Team membership with assigned roles -- Explicit database-level grants -- Explicit table-level grants - -This is useful for zero-trust security models. Learn more about [using ""No Role"" strategically](/user-docs/assign-roles-to-members-at-workspace-level#advanced-role-configuration-strategies). +Learn more about [using ""No Role"" strategically](/user-docs/assign-roles-to-members-at-workspace-level#advanced-role-configuration-strategies). ## Frequently asked questions @@ -17414,7 +17561,13 @@ Yes. Commenters have the same viewing permissions as Viewers; they just have the Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. - [Ask the Baserow community](https://community.baserow.io) -- [Contact support](/contact) for questions about Baserow or help with your account",,baserow_user_docs,https://baserow.io/user-docs/set-permission-level +- [Contact support](/contact) for questions about Baserow or help with your account + + + [1]: https://baserow.io/user-docs/permissions-overview + [2]: https://baserow.io/user-docs/assign-roles-at-database-level + [3]: https://baserow.io/user-docs/assign-roles-at-table-level + [4]: https://baserow.io/user-docs/create-and-manage-teams",,baserow_user_docs,https://baserow.io/user-docs/set-permission-level 143,Comments and mentions,row-commenting,Row comments and mentions in Baserow,"# Row comments and mentions Row comments transform your Baserow tables into collaborative workspaces, letting teams discuss data, ask questions, and provide context without leaving the database or switching to external messaging tools. @@ -18086,7 +18239,7 @@ Creation time depends on the database size. Small databases (under 100 rows) sna ### Can I schedule automatic snapshots? -Not currently through the Baserow UI. For automated snapshots, use the [Baserow API](/user-docs/database-api) with external automation tools or cron jobs. +Not currently through the Baserow UI. For automated snapshots, use the [Baserow API](/user-docs/database-api) with external automation tools or cron jobs. ### Can I restore snapshots to different databases or workspaces? @@ -18134,7 +18287,7 @@ Still need help? If you're looking for something else, please feel free to make - [Contact support](/contact) for questions about Baserow or help with your account - [1]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/d07d5498-356c-483e-b74e-981db2224de9/Snapshot.jpg",,baserow_user_docs,https://baserow.io/user-docs/snapshots + [1]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/d07d5498-356c-483e-b74e-981db2224de9/Snapshot.jpg",database,baserow_user_docs,https://baserow.io/user-docs/snapshots 147,Notifications,notifications,Baserow real-time notifications overview,"# Notifications Notifications keep you informed about workspace activity, mentions, form submissions, and system issues without constantly checking for updates. @@ -18380,7 +18533,7 @@ Apply summaries to any field in Grid View through the footer row. > Lookup fields do not support summaries. For lookup data analysis, create a rollup field with aggregation instead. -**Universal options:** None, Empty, Filled, Percent empty, Percent filled, Unique, and Distribution summary options. +**Universal options:** None, Empty, Filled, Percent empty, Percent filled, Unique, and Distribution summary options. ### Summary options for text and selection fields @@ -18649,15 +18802,15 @@ Yes, use the ""Export files"" option, which creates a zip archive containing onl - [Filters in Baserow](/user-docs/filters-in-baserow) - Prepare targeted exports ### View types -- [Grid view guide](/user-docs/guide-to-grid-view) -- [Collaborative views](/user-docs/collaborative-views) -- [Personal views](/user-docs/personal-views) +- [Grid view guide](/user-docs/guide-to-grid-view) +- [Collaborative views](/user-docs/collaborative-views) +- [Personal views](/user-docs/personal-views) --- Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. -- [Ask the Baserow community](https://community.baserow.io) +- [Ask the Baserow community](https://community.baserow.io) - [Contact support](/contact) for questions about Baserow or help with your account",,baserow_user_docs,https://baserow.io/user-docs/export-a-view 150,Advanced row filter,advanced-filtering,Baserow advanced filtering by field values,"# Advanced filtering in Baserow @@ -18973,7 +19126,7 @@ Access to historical data varies based on your Baserow subscription plan: You can change this to a higher (or lower) number if you wish to change the retention period. By default, there is a limit of 365 days of revisions for self-hosters, and you have the flexibility to change this limit to any other number. -[Self-hosted installations][5] can adjust retention periods in the admin settings to meet specific compliance or storage requirements. +[Self-hosted installations][5] can adjust retention periods in the admin settings to meet specific compliance or storage requirements. > **Storage note:** Longer retention periods increase database storage requirements. Self-hosted administrators should monitor storage capacity when extending retention beyond default periods. @@ -19071,15 +19224,15 @@ For complex multi-condition filtering strategies, see our [advanced filtering gu Different field types support different filter operators. Here are the most common operators: -| Operator category | Operators | Works with | +| Operator category | Operators | Works with | |-------------------|-----------|------------| -| **Text matching** | Is, Is not, Contains, Doesn't contain, Contains word, Doesn't contain word, Length is lower than, Is empty, Is not empty | Text fields | -| **Numeric comparison** | Higher than, Higher than or equal, Lower than, Lower than or equal, Is even and whole | Number fields | +| **Text matching** | Is, Is not, Contains, Doesn't contain, Contains word, Doesn't contain word, Length is lower than, Is empty, Is not empty | Text fields | +| **Numeric comparison** | Higher than, Higher than or equal, Lower than, Lower than or equal, Is even and whole | Number fields | | **Date filtering** | Is, Is not, Is before, Is on or before, Is after, Is on or after, Is within, Day of month is, Contains, Doesn't contain, Is empty, Is not empty | Date fields | -| **Relationship** | Has, Doesn't have, Contains, Doesn't contain, Is empty, Is not empty | Link to table fields | -| **Boolean** | Is, Is empty, Is not empty | Checkbox fields | -| **Length** | Length is lower than, Length is higher than | Text fields | -| **Select** | Contains, Doesn't contain, Contains word, Doesn't contain word, Is, Is not, Is any of, Is none of, Is empty, Is not empty, Has any of, Doesn't have any of | Single and Multiple select fields | +| **Relationship** | Has, Doesn't have, Contains, Doesn't contain, Is empty, Is not empty | Link to table fields | +| **Boolean** | Is, Is empty, Is not empty | Checkbox fields | +| **Length** | Length is lower than, Length is higher than | Text fields | +| **Select** | Contains, Doesn't contain, Contains word, Doesn't contain word, Is, Is not, Is any of, Is none of, Is empty, Is not empty, Has any of, Doesn't have any of | Single and Multiple select fields | ## How to add a filter @@ -19669,7 +19822,7 @@ If you need a clean, sequential list again (1, 2, 3...), you have two options: ## Frequently asked questions ### What's the difference between an Autonumber and a UUID field? -They both create unique IDs, but serve different purposes. Autonumber is a simple, *human-readable*, incrementing number (1, 2, 3...). It is unique *within that table*. +They both create unique IDs, but serve different purposes. Autonumber is a simple, *human-readable*, incrementing number (1, 2, 3...). It is unique *within that table*. [UUID field][6] is a 36-character, complex string (e.g., `a1b2c3d4-...`). It is *globally unique*, meaning it won't conflict with records in any other database. Use Autonumber for simple internal references. **Use UUID** when you need a universally unique ID, especially for use with external systems or APIs. @@ -19961,7 +20114,7 @@ When a [new row is created][2], its 'Last modified' value will be the same as it By default, this field will track changes made to *any* editable field in the row. -You can choose to restrict the field so that it only displays the most recent time a particular field was modified. +You can choose to restrict the field so that it only displays the most recent time a particular field was modified. ## Track the last modified time on computed fields @@ -20034,7 +20187,7 @@ Learn more: [Configure field types](https://baserow.io/user-docs/field-customiza ## What is a Password field? -The Password field is a highly specialized, secure field for storing passwords. +The Password field is a highly specialized, secure field for storing passwords. This field is *not* for storing your team's website passwords like a password manager, because it is **write-only**. Its main purpose is to create user tables to power the [login element][3] in the [Baserow Application Builder][4]. @@ -20050,9 +20203,9 @@ It has two key security features: 3. Name the field (e.g., ""User Password""). 4. Click **Create**. -This will create a new, write-only field in your table. +This will create a new, write-only field in your table. -## Allow API endpoint authentication +## Allow API endpoint authentication This option exposes an endpoint where the row ID and password can be checked to see if they're correct. This allows using Baserow as an authentication backend. @@ -20122,7 +20275,7 @@ Elements are the core components of pages that shape how your applications look ### [Data sources][4] -The data sources allow your pages to connect to data in a Baserow table. You can pick a table and view to connect. You can also set filters for those views. +The data sources allow your pages to connect to data in a Baserow table. You can pick a table and view to connect. You can also set filters for those views. ### [Events and actions][5] @@ -20174,19 +20327,19 @@ In these workspaces, you can invite others to collaborate with you. To create an ## Create a blank application -To create a new application, navigate to the workspace where you want to create the application. +To create a new application, navigate to the workspace where you want to create the application. 1. On your dashboard, clickย the **Create new** button. 2. After clicking the **Create new** button, a popup will appear, where you can either select the [Database](/user-docs/intro-to-databases), [Application](/user-docs/application-builder-overview), or [From template](/user-docs/add-database-from-template) option. Select the **Application** option. - + ![Adding a new application][1] - + 3. In the pop-up that opens next, give the application a descriptive name. You can subsequently change the application name as needed. - + The application name is for your reference and will not appear anywhere after publishing the application. - + ![Assign a name for your new application][2] - + 4. Click **Add application** to finalize the setup. Then, you'll be immediately taken to your new Baserow application and can start working on it. You can see default [pages][3] and [elements][4] when you navigate to your newly created application. @@ -20195,7 +20348,7 @@ You can see default [pages][3] and [elements][4] when you navigate to your newly ## Duplicate an application -To duplicate an existing application, hover over the application and click the three dots `โ‹ฎ` icon next to it. Then, choose the **Duplicate** option from the dropdown menu. +To duplicate an existing application, hover over the application and click the three dots `โ‹ฎ` icon next to it. Then, choose the **Duplicate** option from the dropdown menu. You can monitor the progress of the duplication in the left sidebar. @@ -20203,13 +20356,13 @@ Explore further [details about application configurations][6] to maximize your u ## Add an application from template -The easiest way to get started if you are new to Baserow Application Builder is to copy a [template](/templates/). To start with a template, you need to choose a workspace into which the template will be installed. +The easiest way to get started if you are new to Baserow Application Builder is to copy a [template](/templates/). To start with a template, you need to choose a workspace into which the template will be installed. You can add a template in two ways: 1. From the template page, or 2. From your dashboard. - + > Learn more about [how to add a template to a workspace][7]. Application Builder templates are paired with Database templates: @@ -20267,7 +20420,7 @@ To rename an application: Duplicating enables you to create copies of applications within your workspace. It's useful for creating backups, testing new configurations, or maintaining multiple versions of your data. -If you need to make a copy of an existing application in its current state, hover over the application and click on the three-dotย `โ‹ฎ`ย icon next to the application. +If you need to make a copy of an existing application in its current state, hover over the application and click on the three-dotย `โ‹ฎ`ย icon next to the application. Select theย **Duplicate**ย option from the popup. You can view the application and application duplication progress in the left sidebar. @@ -20277,11 +20430,11 @@ After duplicating the application, a copy will be created, and you can start edi ## Snapshots -Snapshots are a full copy of your application at the moment when they were created. It allows you to save your current state whenever needed to be able to go back and resume from that state at any time in the future. +Snapshots are a full copy of your application at the moment when they were created. It allows you to save your current state whenever needed to be able to go back and resume from that state at any time in the future. To create a snapshot, select the Snapshot option from the popup, and choose **Snapshots**. [Learn more about snapshots](/user-docs/snapshots). -After you take a snapshot, you can click on one of the previous snapshot versions and restore it. A duplication of that data will be created when restoring. +After you take a snapshot, you can click on one of the previous snapshot versions and restore it. A duplication of that data will be created when restoring. Snapshots are automatically deleted after one year. @@ -20323,7 +20476,7 @@ Make sure you've set up everything right by checking the [necessary configuratio ## Preview an application -Preview mode enables you to test your application's functionality and appearance before making it public. +Preview mode enables you to test your application's functionality and appearance before making it public. Use the preview to make sure your app looks and works like you want it to. @@ -20343,9 +20496,9 @@ To make your application visible to anyone on the web, follow these steps: 1. Click on the **Publish** button located within your top navigation bar. 2. You should see your domain and publication status info in the menu that opens. - + > You need to have at least one domain to publish your application. Your application can have multiple domains, each running a different version of the application. Learn more about how to configure your domain link. - > + > 3. Click on the **Publish** button located within the pop-up window. 4. This action will deploy your changes to the live environment. 5. Once the changes are published, copy the link that you can share with anyone to access your application online. @@ -20370,7 +20523,7 @@ Let's dive into how to set up your Baserow app. This way, you can make it work j ## Overview -Before you start [creating your application](/user-docs/create-an-application), take a moment to set up some basic settings. +Before you start [creating your application](/user-docs/create-an-application), take a moment to set up some basic settings. Here's how to access the application settings: @@ -20411,17 +20564,17 @@ If you want to keep things separate, you can create another user with the right You can create new integrations by adding a [data source][5], [event][6], or [user authentication][7]. - **[Data source][5]**: Adding a data source means you can work with structured data more flexibly. It lets you use and change data stored in Baserow right in your application. This makes your application more flexible and useful because you can tap into Baserow's strong database features. - + Learn more about [configuring a data source][5]. - -- **Events**: Events allow users to perform specific actions within your application with just a click. These events can range from simple tasks like submitting forms or triggering notifications to complex operations such as initiating workflows or executing API calls. - + +- **Events**: Events allow users to perform specific actions within your application with just a click. These events can range from simple tasks like submitting forms or triggering notifications to complex operations such as initiating workflows or executing API calls. + Learn more about [events in an application][6]. - + - **[User sources][7]**: User authentication boosts security and personalization in your application. When you set up user sources, you're ensuring that users can safely log in and access their accounts. It also means they get content tailored just for them, adding a personalized touch to their experience. - + Learn more about [configuring a user source][7]. - + ## User sources To enable users to log in securely, you need to add a user source for authentication. This allows users to access the data stored in the database through your application. @@ -20436,7 +20589,7 @@ In the **Theme** section, you can customize the appearance of [elements][8] by a ![Set theme at the application level][10] -### Set theme at the application level +### Set theme at the application level Baserow allows you to configure the overall styling of your application through theme settings. These settings control various visual aspects, including: @@ -20462,11 +20615,11 @@ This section will display all the available theme settings. You can modify optio ### Customize individual elements -Baserow also allows for [styling specific elements][12] within your page. +Baserow also allows for [styling specific elements][12] within your page. - Select the [element][13] you want to customize. - - Select the **General** tab in the right-hand panel. - - Click the settings icon to open a modal window with element-specific styling options. The available options will depend on the element you selected. + - Select the **General** tab in the right-hand panel. + - Click the settings icon to open a modal window with element-specific styling options. The available options will depend on the element you selected. - Make your desired adjustments within the modal window. [Learn more about the element styling options][12]. @@ -20508,9 +20661,9 @@ Still need help? If you're looking for something else, please feel free to make [14]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/752f37fa-c658-4f04-933b-0a879c4bfe09/application%20hex%20code.png",,baserow_user_docs,https://baserow.io/user-docs/application-settings 167,Add a domain,add-a-domain-to-an-application,Add a domain to an application in Baserow,"# Add a domain to an application -To make an application accessible online, you have to link it to a domain. +To make an application accessible online, you have to link it to a domain. -In this section, we'll cover how to publish an application to a custom domain or Baserow subdomain. +In this section, we'll cover how to publish an application to a custom domain or Baserow subdomain. ## Overview @@ -20529,12 +20682,12 @@ You can also have multiple domains, each running a different version of an appli ## Add a Baserow subdomain -To publish an application on the Baserow subdomain, +To publish an application on the Baserow subdomain, 1. In the Baserow application, go to [Settings](/user-docs/application-settings) โ†’ Domains page. 2. Click on theย **Add domain**ย button. 3. Select the Baserow subdomain from the dropdown options. -4. Add a valid domain in the *Domain name* field in the format: `yourdomain`. +4. Add a valid domain in the *Domain name* field in the format: `yourdomain`. 5. Click on theย **Create**ย button. The DNS settings of the domain will be configured and checked automatically. You donโ€™t need to make any additional changes. @@ -20545,14 +20698,14 @@ In Baserow, you can use your custom domain to run your applications. This means ## Add a custom domain -Adding a custom domain is a simple yet effective way to establish your brand and make your application more professional. +Adding a custom domain is a simple yet effective way to establish your brand and make your application more professional. In the Baserow application, 1. Go to [Settings](/user-docs/application-settings) โ†’ Domains page. - + ![Associate a domain with a Baserow application][3] - + 2. Click on theย **Add domain**ย button. 3. Select a custom domain from the dropdown options. 4. Add a custom domain in the *Domain name* field in the format: `yourdomain.com`. It will also add the full domain `www.yourdomain.com` by default. @@ -20560,7 +20713,7 @@ In the Baserow application, ### Update the DNS for a custom domain -Every DNS host has its way of updating DNS settings. +Every DNS host has its way of updating DNS settings. To update your custom domain's DNS, go to your domain registrar's or DNS host's dashboard where you manage your domain. Locate the DNS settings section for your domain and make the changes. @@ -20569,11 +20722,11 @@ Create a **CNAME** or **ALIAS** record from your domain: - Set the **host** field as your custom domain name. - Set the **value** field as the base URL you want to point to. -This process varies slightly depending on your DNS host, but these general steps should help you get started. If you still run into any issues with your domain verification, reach out to your DNS provider to make sure the records are set correctly. +This process varies slightly depending on your DNS host, but these general steps should help you get started. If you still run into any issues with your domain verification, reach out to your DNS provider to make sure the records are set correctly. ![Update the DNS for a custom domain][4] -To verify that the DNS settings are correct and that your domain is correctly pointing to Baserow, publish your application to the custom domain. +To verify that the DNS settings are correct and that your domain is correctly pointing to Baserow, publish your application to the custom domain. ![Create a new ALIAS from your domain toย baserow][5] @@ -20610,18 +20763,18 @@ The login element allows users to access an application with secure credentials. ## Add a user source -Adding a user source allows the application to recognize and authenticate users effectively. +Adding a user source allows the application to recognize and authenticate users effectively. 1. Go to the Settings โ†’ Users page. 2. Click on **Add user source**. 3. Choose the type of user source you want to add. -4. Select an integration from the dropdown menu or click **Add new integration** directly. +4. Select an integration from the dropdown menu or click **Add new integration** directly. Learn more about [integrations and how to configure them](/user-docs/application-settings#integrations). 5. Click **Create**. - + ![Add new user source in Baserow][2] - -After you create a user source, the user settings will become available. + +After you create a user source, the user settings will become available. ## Configure user source @@ -20630,33 +20783,33 @@ To edit the user source for authentication, follow these steps: 1. Navigate to Application settings โ†’ Users. 2. Locate the user source that you want to edit. 3. Click the option to edit or modify the existing user source. - + ![Edit or modify the existing user source][3] - + 4. Review the integration details, including the integration with your database. 5. Specify the [database][4] and [table][5] from your [workspace][6] that you want to use for user authentication. The items in the list can be sorted and filtered according to the sorting and filtering configuration of the default view. 6. Select the appropriate fields in the table that match the user information. Typically, the email field is used for identification purposes. - + ![Baserow authentication method is set to ""Email/Password""][7] - - 7. You can enable multiple authentication methods simultaneously: + + 7. You can enable multiple authentication methods simultaneously: 8. Email/Password: Will allow users to authenticate using their email and password and select the password field from your users table as - the source in the dropdown. + the source in the dropdown. > The [password field type](/user-docs/password-field) is a write-only field. It lets you set a password for each row. This password is stored as a hash and is *never* shown. > - + 9. SAML SSO - In the ""Edit provider: SAML SSO"" dialog: Enter your SAML Domain - (for example okta.com). + (for example okta.com). - Paste your Identity Provider metadata in - the Metadata field. + the Metadata field. - The Default Relay State URL will become available after adding domains under the domains tab in your app settings. - Note the Single Sign-On URL (to be shared with - your identity provider). + your identity provider). - Click on ""SAML Response Attributes"" to expand attribute mapping options - Configure the following fields to match your identity provider's attribute names: @@ -20706,7 +20859,7 @@ Let's look at the basics of handling pages in the Baserow application builder. After you've created an application, you can find its pages listed on the left sidebar. You can create new pages and manage all existing ones right from the sidebar in Baserow. -A page in an application has its unique set of settings that can be configured for each page separately, including [Name, Path, and Path parameters][1]. +A page in an application has its unique set of settings that can be configured for each page separately, including [Name, Path, and Path parameters][1]. Each page has a three-dot icon `โ‹ฎ` on it, which opens a menu with the options to [rename][2], [duplicate][3], and [delete][4] the page. @@ -20732,13 +20885,13 @@ In this section, we will walk you through the process of adding a page to an app 3. Selectย **Start with a new page**. 4. Clickย **Add page**. -When you create a new page, it's like starting with a blank canvas. You have access to various elements you can add to this blank page. These elements help you organize and present information effectively. +When you create a new page, it's like starting with a blank canvas. You have access to various elements you can add to this blank page. These elements help you organize and present information effectively. ![Start with a new page][7] ### Duplicate a page -Duplicating a page is a quick and easy way to make a copy of an existing page. This can be helpful if you need to make changes to the data without affecting the original page. +Duplicating a page is a quick and easy way to make a copy of an existing page. This can be helpful if you need to make changes to the data without affecting the original page. To duplicate a page in Baserow, follow these steps: @@ -20750,7 +20903,7 @@ Baserow will create a copy of the page and place it immediately below the origin ### Customize a duplicated page -After duplicating a page in Baserow, youโ€™ll likely want to customize the duplicated page to fit your needs. +After duplicating a page in Baserow, youโ€™ll likely want to customize the duplicated page to fit your needs. Here are some ways you can customize duplicated pages: @@ -20789,7 +20942,7 @@ To view a page as an authenticated user, follow these steps: ## Delete a page -To delete a page from an application, use the **Delete** option within the application's management interface. +To delete a page from an application, use the **Delete** option within the application's management interface. This action removes the selected page from the application without any additional steps or warning prompts. @@ -20820,7 +20973,7 @@ Still need help? If you're looking for something else, please feel free to make [11]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/4726ef47-d1b8-442d-9623-17a1c46f3e35/Untitled%202.png [12]: /user-docs/user-sources [13]: /user-docs/data-sources",,baserow_user_docs,https://baserow.io/user-docs/pages-in-the-application-builder -170,Data sources,data-sources,Data sources in Baserow Application Builder,"# Data sources in an application +170,Data sources,data-sources,Data sources in Baserow Application Builder,"# Data sources in an application In Application Builder, data sources are key for showing data to users or getting info from them. They help get data and show it on the page. @@ -20845,22 +20998,22 @@ Navigate to the top navigation bar on the left-hand side of the page, where you' To add a new data source, click on Data Source in the top navigation bar. A popup will appear, displaying a list of all currently connected data sources, along with an option to add a new one. 1. Click **Add new data source**. -2. Select a service type. +2. Select a service type. - Get single rowย - Finds a single row in a given table. - List multiple rowsย - Finds a page of rows in a given table. - + ![Add new data source in Baserow ][3] - + 3. Select an integration from the dropdown menu or click **Add new integration** directly. Learn more about integrations and how to configure them. 4. As soon as you select a service type and integration, the element settings will become available. 5. Select a [Database](/user-docs/intro-to-databases), [Table](/user-docs/intro-to-tables), and [View](/user-docs/overview-of-baserow-views) from the [workspace](/user-docs/intro-to-workspaces). The items in the list can be sorted and filtered according to the sorting and filtering configuration of that particular view. 6. When you select the *Get single row* service type, you need to enter or map a [row ID](/user-docs/overview-of-rows#what-is-a-row-identifier) to retrieve a single row in a given table by its ID. Leave this value empty to return the first row in the table. - + > To dynamically input a [row ID](/user-docs/overview-of-rows#what-is-a-row-identifier) and retrieve a single row in a given table by its ID, add a [page parameter][2] to the page or add a [user source][4]. - > - + > + ![Retrieve a single row in a given table by its ID][5] - + ## Filter data source @@ -20887,7 +21040,7 @@ Understanding how filters interact between the Database and the Application Buil **Selecting a table without a specific view:** -When selecting a table from the database without specifying a particular view in the data source filter configuration, any filters associated with views in the table wonโ€™t affect the results in the Application Builder. This means you can independently filter the rows displayed in the Application Builder, regardless of any view filters from the database. +When selecting a table from the database without specifying a particular view in the data source filter configuration, any filters associated with views in the table wonโ€™t affect the results in the Application Builder. This means you can independently filter the rows displayed in the Application Builder, regardless of any view filters from the database. This is useful when the views in the database table already have specific filters that you prefer not to use in the Application Builder. @@ -20908,7 +21061,7 @@ To add a formula to filter data, use the ""Sum"" symbol next to the field value: ## Sort data source > This option is available for the *List multiple rows* service type. -> +> Sorting data sources in Baserow puts data in order based on specific criteria, like their names or numbers. @@ -20951,7 +21104,7 @@ Click **Refresh fields from data source** located within the General panel on th ## Search data source -To search the data source, specify a search term. You have the flexibility to choose the term for the search, giving you control over the query's focus. +To search the data source, specify a search term. You have the flexibility to choose the term for the search, giving you control over the query's focus. If no specific term is provided, the search will encompass all list items, offering a comprehensive view of the available data. @@ -20967,7 +21120,7 @@ To create a shared data source, go to the โ€˜Data Sourcesโ€™ tab. There, you can ## Delete data source -Deleting a data source permanently removes its associated information from the application. +Deleting a data source permanently removes its associated information from the application. To remove a data source from an application: @@ -21004,13 +21157,13 @@ Learn more about how to [create a new page and manage existing pages](/user-docs ## Overview -In the Page section, you have the Page name, Path, and Path parameters fields, where you can edit the name and path you had assigned to the page on creation. +In the Page section, you have the Page name, Path, and Path parameters fields, where you can edit the name and path you had assigned to the page on creation. ![Baserow Page settings][2] ## Page name -Edit the name and path assigned to your page for clarity and organization. +Edit the name and path assigned to your page for clarity and organization. Learn more about [renaming pages in this support article](/user-docs/pages-in-the-application-builder#rename-a-page). @@ -21018,13 +21171,13 @@ Learn more about [renaming pages in this support article](/user-docs/pages-in-th The path of the page can be found in Page Settings โ†’ Page. -To define the path of a page, use the `/path` format. This represents the location of the page within the application's structure. +To define the path of a page, use the `/path` format. This represents the location of the page within the application's structure. For instance, if you have a page named ""About"" that is located directly under the root directory of your application, its path would be `/about`. To link to your homepage, simply use `/` as a reference. -The page `/path` is useful for organizing content hierarchically, such as categorizing products in an e-commerce site `/electronics/phones/smartphones`. It helps users and search engines navigate the website efficiently. +The page `/path` is useful for organizing content hierarchically, such as categorizing products in an e-commerce site `/electronics/phones/smartphones`. It helps users and search engines navigate the website efficiently. ![Page path][3] @@ -21040,7 +21193,7 @@ For example, if you have an endpoint like `/users/:userId`. Here, `:userId` acts ## Page visibility -The page visibility feature lets you control which user groups can see specific pages in your applications. This provides more detailed control over page-level permissions, complementing the existing [element-level visibility settings][8]. +The page visibility feature lets you control which user groups can see specific pages in your applications. This provides more detailed control over page-level permissions, complementing the existing [element-level visibility settings][8]. To set page visibility, navigate to **Page settings** in the top menu and select the **Visibility** tab. Here you can specify who can view this page: @@ -21099,46 +21252,57 @@ Then, there are dynamic elements, which work in combination with a [data source] Here's a list of the elements available: -| Element | Description | +| Base element | Description | | --- | --- | | [Heading][5] | A title displayed at the top of a page or section. | | [Text][9] | A single line of text. | -| [Link][10] | A hyperlink to another page or URL. | -| [Image][11] | An element to display an image. | -| [Text input][12] | A field where users can input text. | -| [Columns][6] | A container to organize content into multiple columns. | +| [Image][10] | An element to display an image. | +| [IFrame][11] | An inline frame to embed another document within the current page. | +| [Link][12] | A hyperlink to another page or URL. | | [Button][13] | A clickable button that performs an action when clicked. | +| [Rating][14] | | +| [Menu][15] | | +| [Login][16] | A user login form | + +| Layout element | Description | +| --- | --- | | [Table][8] | An element to display data in rows and columns. | -| [Form][7] | A container for gathering and submitting user input. | -| [Choice][14] | A menu for users to select one option from a list of options. | -| [Checkbox][15] | A small box for users to select an option. | -| [IFrame][16] | An inline frame to embed another document within the current page. | -| [Login][17] | A user login form | +| Container | | +| [Columns][6] | A container to organize content into multiple columns. | +| [Multi-page header and footer][17] | Create a reusable container that can be used across multiple pages. | | [Repeat][18] | Display lists or collections of data | -| [Record selector][19] | Allows users to link and select related rows from other tables | -| [Date time picker][20] | Input dates and times in your application | -| [Multi-page header and footer][21] | Create a reusable container that can be used across multiple pages. | + +| Form element | Description | +| --- | --- | +| [Data input][19] | A field where users can input text. | +| [Form][7] | A container for gathering and submitting user input. | +| [Choice][20] | A menu for users to select one option from a list of options. | +| [Checkbox][21] | A small box for users to select an option. | +| [Record selector][22] | Allows users to link and select related rows from other tables | +| [Date time picker][23] | Input dates and times in your application | +| [Rating input][14] | | +| [File input][24] | | ## Element properties -Page formatting is designed to be flexible, so you can move elements around on the [page](/user-docs/pages-in-the-application-builder) easily. +Page formatting is designed to be flexible, so you can move elements around on the [page](/user-docs/pages-in-the-application-builder) easily. Every element has unique properties and ways to format it based on what it's for. To set up an element just right, click on it. You'll see a list of its properties on the right side of your screen. -![Element properties][22] +![Element properties][25] Each element provides adaptable and user-friendly customization to tailor your page layout precisely to your needs. Hover over any element to reveal a range of options: -- [Duplicate an element][23] -- [Select the parent element][24] -- [Move an element][25] -- [Delete an element][26] +- [Duplicate an element][26] +- [Select the parent element][27] +- [Move an element][28] +- [Delete an element][29] -![Element properties][27] +![Element properties][30] ## Set the element data source @@ -21146,11 +21310,11 @@ Setting a [data source](/user-docs/data-sources) tells an element where to get t When you pick a data source for an element, you're showing it where to look for its information. -To choose a data source for an element, click on it and check the sidebar on the right. Click on the field and select data from a list of already set up sources. +To choose a data source for an element, click on it and check the sidebar on the right. Click on the field and select data from a list of already set up sources. [Learn more about adding a data source](/user-docs/data-sources). -![Set the element data source][28] +![Set the element data source][31] If you need to change the data source for an element later on, simply click on the field again and select a different source from the list provided. @@ -21160,7 +21324,7 @@ Selecting the parent element refers to identifying and targeting the container o > You can navigate and build with Baserow's Application Builder using only your keyboard. [Use keyboard shortcuts for quick actions][1]. -![Select parent element][29] +![Select parent element][32] You can also click on **Elements** in the top bar to target elements based on their relationship to another element. @@ -21172,17 +21336,17 @@ To move the element up or down on the [page](/user-docs/pages-in-the-application Clicking the up arrow moves the element higher, while the down arrow shifts it lower on the page. -![Move element][30] +![Move element][33] ## User actions -External users can filter, sort, and search within [published applications][31], creating a more interactive and user-friendly experience. +External users can filter, sort, and search within [published applications][34], creating a more interactive and user-friendly experience. For applicable elements, you can specify which fields to make filterable, sortable, and searchable for your external users. To add filtering, ordering, and searching capabilities, click on the element and navigate to the right sidebar. There, youโ€™ll see checkboxes to enable Filter, Sort, and Search for specific fields. -![image: filter_order_and_search_for_published_applications][32] +![image: filter_order_and_search_for_published_applications][35] --- @@ -21201,29 +21365,32 @@ Still need help? If you're looking for something else, please feel free to make [7]: /user-docs/application-builder-form-element [8]: /user-docs/application-builder-table-element [9]: /user-docs/application-builder-text-element - [10]: /user-docs/application-builder-link-element - [11]: /user-docs/application-builder-image-element - [12]: /user-docs/application-builder-text-input-element + [10]: /user-docs/application-builder-image-element + [11]: /user-docs/application-builder-iframe-element + [12]: /user-docs/application-builder-link-element [13]: /user-docs/application-builder-button-element - [14]: /user-docs/application-builder-dropdown-element - [15]: /user-docs/application-builder-checkbox-element - [16]: /user-docs/application-builder-iframe-element - [17]: /user-docs/application-builder-login-element + [14]: https://baserow.io/user-docs/application-builder-rating-element + [15]: https://baserow.io/user-docs/menu-element + [16]: /user-docs/application-builder-login-element + [17]: /user-docs/application-builder-multi-page-container [18]: /user-docs/application-builder-repeat-element - [19]: /user-docs/application-builder-record-selector-element - [20]: /user-docs/application-builder-date-time-picker-element - [21]: /user-docs/application-builder-multi-page-container - [22]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/98835a08-3c77-4d3e-b9a0-d2d431602c4b/Untitled.png - [23]: /user-docs/add-and-remove-elements#duplicate-element - [24]: #select-parent-element - [25]: #move-element - [26]: /user-docs/add-and-remove-elements#remove-element-from-a-page - [27]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/da63d98d-c8ef-4999-b8b3-21549dfa4dd1/Untitled%201.png - [28]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/57bb6236-faed-4158-828c-0ad4461fee9b/Untitled%202.png - [29]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/53a3c91d-bd66-4b8a-8205-bd22a7378d74/Untitled%203.png - [30]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/1aea659a-bd32-43b7-91db-b2da5f4f9e2b/Untitled%204.png - [31]: /user-docs/preview-and-publish-application - [32]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/3344732f-7eca-4ec1-b38e-e0d00a89952a/filter_order_and_search_for_published_applications.webp",,baserow_user_docs,https://baserow.io/user-docs/elements-overview + [19]: /user-docs/application-builder-text-input-element + [20]: /user-docs/application-builder-dropdown-element + [21]: /user-docs/application-builder-checkbox-element + [22]: /user-docs/application-builder-record-selector-element + [23]: /user-docs/application-builder-date-time-picker-element + [24]: https://baserow.io/user-docs/application-builder-file-input-element + [25]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/98835a08-3c77-4d3e-b9a0-d2d431602c4b/Untitled.png + [26]: /user-docs/add-and-remove-elements#duplicate-element + [27]: #select-parent-element + [28]: #move-element + [29]: /user-docs/add-and-remove-elements#remove-element-from-a-page + [30]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/da63d98d-c8ef-4999-b8b3-21549dfa4dd1/Untitled%201.png + [31]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/57bb6236-faed-4158-828c-0ad4461fee9b/Untitled%202.png + [32]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/53a3c91d-bd66-4b8a-8205-bd22a7378d74/Untitled%203.png + [33]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/1aea659a-bd32-43b7-91db-b2da5f4f9e2b/Untitled%204.png + [34]: /user-docs/preview-and-publish-application + [35]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/3344732f-7eca-4ec1-b38e-e0d00a89952a/filter_order_and_search_for_published_applications.webp",application builder,baserow_user_docs,https://baserow.io/user-docs/elements-overview 173,Add and remove elements,add-and-remove-elements,Add and remove elements in Baserow application builder,"# Add and remove elements in Application Builder Adding elements involves introducing new components such as text, images, buttons, or forms onto a page. Removing elements covers deleting existing content from the page. @@ -21236,7 +21403,7 @@ Learn more about the [elements available in the application builder][1]. In application design, integrating various elements onto a single page enhances user experience and navigation efficiency. By combining forms, buttons, text fields, images, and interactive features, you create cohesive interfaces. -It's important to maintain clarity and organization to prevent clutter and confusion for users. +It's important to maintain clarity and organization to prevent clutter and confusion for users. ## Add an element to a page @@ -21246,20 +21413,20 @@ To add an element to a page, follow these steps: 1. Open the page and click **Elements**. 2. Click **Element +** located in the lower left portion of the popup. Alternatively, click on the plus icon `+` on the page to add an element. - + ![Add elements to a page][2] - + 3. A menu of available element options will appear. Select from the available options or use the search box to find a specific element by name. - + ![List of application builder elements][3] - + 4. Once you've chosen the element you want to add, click on it. After selecting the element, you can place it anywhere on the layout of the page. Don't worry too much about perfect positioning at this stage; you can always adjust it later as needed. ## Duplicate element -Duplicating an element creates an identical copy of it, usually positioned right below the original. +Duplicating an element creates an identical copy of it, usually positioned right below the original. This provides multiple instances of the same element without the need to recreate it from scratch. @@ -21280,7 +21447,7 @@ To remove the element from the page, follow these steps: 1. Locate the trash icon associated with the element you wish to delete. 2. Click on the trash icon to initiate the deletion process. -3. Confirm the deletion if prompted. +3. Confirm the deletion if prompted. We advise that you proceed with this action only if you are certain you no longer need the element. @@ -21317,7 +21484,7 @@ Alternatively, you can choose to inherit the default styles defined in your [the ![Style element][1] -## Set theme +## Set theme Baserow allows for the customization of specific elements on your page. To do this, select the element you want to customize, go to the **General** tab in the right-hand panel, and click the settings icon to open a modal window with styling options. The available options will vary depending on the element selected. Make the desired adjustments within the modal window. @@ -21329,14 +21496,14 @@ To add a top and bottom border to an element and customize the border width and 1. **Select the element**: Identify the element to which you want to add the borders. 2. **Access the style editor**: Navigate to the style editor of the selected element. -3. **Specify border width and color**: There are options to set borders for different sides (top, bottom, left, right) separately. Set the width and color of the borders. -4. **Preview and adjust**: After setting the border properties, preview your changes to ensure they look as expected. +3. **Specify border width and color**: There are options to set borders for different sides (top, bottom, left, right) separately. Set the width and color of the borders. +4. **Preview and adjust**: After setting the border properties, preview your changes to ensure they look as expected. By following these steps, you can easily add custom borders with the desired width and color to elements within a page. ## Element padding -Padding offers control over the spacing between the content and the border of an element. +Padding offers control over the spacing between the content and the border of an element. Padding creates a buffer zone around the content, giving you control over the layout and visual hierarchy of the page. @@ -21348,7 +21515,7 @@ Padding creates a buffer zone around the content, giving you control over the la Background colors enhance the visual design and user experience of a page. Setting a background color for an element fills the entire area of that element. -Adding a background color gives a spotlight to certain elements on a page. +Adding a background color gives a spotlight to certain elements on a page. ![Background color][3] @@ -21388,7 +21555,7 @@ Here, we'll look at how to make buttons interactive in an application. By connec Events are triggers within your application that respond to user interactions, like [clicking a button][2], [logging in][3], or [submitting a form][4]. They bridge the gap between user input and actions on the application's data. -You can create an action on click or after login. +You can create an action on click or after login. Here's an overview of the actions: @@ -21467,7 +21634,7 @@ After the event occurs, the application automatically updates the designated row ![Update row event in Baserow Application Builder][7] -## Element event: Send an email with SMTP +## Element event: Send an email with SMTP You can send custom emails using the **Send email** action inside your workflow. All you need is access to an SMTP server like Gmail, Outlook, or your company mail. @@ -21475,8 +21642,8 @@ You can send custom emails using the **Send email** action inside your workflow. ### Step 1: Add a โ€œSend emailโ€ action -1. Navigate to the **Events** tab. -2. Select an event trigger, such as **On click**. +1. Navigate to the **Events** tab. +2. Select an event trigger, such as **On click**. 3. Click the **+Add action** button and choose **Send Email** from the list. ### Step 2: Configure your SMTP integration within the action @@ -21543,7 +21710,7 @@ Still need help? If you're looking for something else, please feel free to make A heading element defines the titles of sections within a [page](/user-docs/pages-in-the-application-builder). Heading elements help organize content and improve readability by providing structure to pages. -In this section, weโ€™ll set up a heading element, the configuration options, and how it generally works. +In this section, weโ€™ll set up a heading element, the configuration options, and how it generally works. ## Overview @@ -21567,17 +21734,17 @@ Now, you can configure the heading's properties to make it function and look the Baserow has several heading levels that can be customized according to your requirements. -The heading levels, ranging from `

` to `

` , indicate different levels of importance and hierarchy. +The heading levels, ranging from `

` to `

` , indicate different levels of importance and hierarchy. -The `

` tag represents the highest level of importance, typically used for the main title of the page, while `

` represents the lowest level of importance. +The `

` tag represents the highest level of importance, typically used for the main title of the page, while `

` represents the lowest level of importance. ![Heading level][3] ## Heading text -The heading element has a text field to enter the heading text and that can be changed by clicking on it. +The heading element has a text field to enter the heading text and that can be changed by clicking on it. -You can enter static text here. However, if you've connected to a [data source](/user-docs/data-sources), all the fields from the [data source](/user-docs/data-sources) will also become available. Select a field from the data source to fetch data dynamically. +You can enter static text here. However, if you've connected to a [data source](/user-docs/data-sources), all the fields from the [data source](/user-docs/data-sources) will also become available. Select a field from the data source to fetch data dynamically. ![Heading text][4] @@ -21597,9 +21764,9 @@ By adjusting the horizontal alignment property, you can create a more balanced a ## Heading font color -You can easily modify the font color of headings in the Application Builder. +You can easily modify the font color of headings in the Application Builder. -Navigate to the page where you can edit the heading you want to modify and select the heading element within the editor. Change the font color of a heading element using the Font property within a General tab. +Navigate to the page where you can edit the heading you want to modify and select the heading element within the editor. Change the font color of a heading element using the Font property within a General tab. Click on the color picker or input field next to the font color option. @@ -21656,7 +21823,7 @@ Once you've placed the text element on the editor, you can customize it to make ## Text element horizontal alignment -You can horizontally align a text element using the horizontal alignment property. This will align the element on the page. +You can horizontally align a text element using the horizontal alignment property. This will align the element on the page. This property offers several options to achieve the desired layout: @@ -21670,11 +21837,11 @@ This property offers several options to achieve the desired layout: You can choose between the Plain text or Markdown format. -Plain text is basic and universal, while Markdown offers more advanced formatting options. +Plain text is basic and universal, while Markdown offers more advanced formatting options. -Markdown offers more advanced options for formatting text, like headings, bold, italics, and bulleted lists. +Markdown offers more advanced options for formatting text, like headings, bold, italics, and bulleted lists. -You can useย [Markdown](https://www.markdownguide.org/basic-syntax/)ย syntax in the text element, allowing you to format text with titles, paragraphs, links, images, etc. Once you're familiar with Markdown syntax, you can add structure to the text. +You can useย [Markdown](https://www.markdownguide.org/basic-syntax/)ย syntax in the text element, allowing you to format text with titles, paragraphs, links, images, etc. Once you're familiar with Markdown syntax, you can add structure to the text. ![Text format markdown][5] @@ -21716,7 +21883,7 @@ Now, you'll customize the link's behavior and appearance by configuring its prop ## Linking to pages -The Application Builder allows you to create links that, when clicked, take users to a designated page within your application. +The Application Builder allows you to create links that, when clicked, take users to a designated page within your application. You can control whether the linked page opens in the same browser tab (replacing the current content) or in a new tab altogether. Choosing the right option depends on your application's structure and user flow. Here's a quick guideline: @@ -21733,7 +21900,7 @@ This feature lets you link to a different page in the application. When you navi Navigating to a path is about moving to a specific location within the application, which is identified by its path in the application's structure. -You need to first add a parameter via `:parameter` . [Path parameters](/user-docs/application-builder-page-settings#path-parameters) can be used to load data, depending on the provided parameter dynamically. +You need to first add a parameter via `:parameter` . [Path parameters](/user-docs/application-builder-page-settings#path-parameters) can be used to load data, depending on the provided parameter dynamically. The content will be generated automatically on that page depending on which specific detail the user has navigated to the detail page from. @@ -21750,9 +21917,9 @@ To link to an external website, input the URL into the link field using the foll You can link to an internal page and set it to open a separate page within your Baserow application. For example, when the user clicks on a button, you want to display the row details. 1. **Map row ID:** Ensure the row ID field in the [data source](/user-docs/data-sources) configuration is properly mapped. This will be used to identify the specific row when displaying details. - + > Determine the [data source](/user-docs/data-sources) that contains the information you want to show. This should be the same [data source](/user-docs/data-sources) that provides the details on the current page, or it could be a different one. - > + > 2. **Create a link:** - Navigate to the element settings for the button or link you want to use to access the details page. - Open theย **General**ย tab. @@ -21761,9 +21928,9 @@ You can link to an internal page and set it to open a separate page within your ![Link row to a details page][4] -Thatโ€™s it. Now when the user clicks on a particular button, they will be taken to the page with the specific details. +Thatโ€™s it. Now when the user clicks on a particular button, they will be taken to the page with the specific details. -Thatโ€™s it. Now when the user clicks on a particular button, they will be taken to the page with the specific details. +Thatโ€™s it. Now when the user clicks on a particular button, they will be taken to the page with the specific details. ## Link variant @@ -21780,7 +21947,7 @@ When it comes to the appearance of buttons, you have two options: ""auto"" and " ## Link horizontal alignment -You can horizontally align a link element using the horizontal alignment property. This will align the link on the page. +You can horizontally align a link element using the horizontal alignment property. This will align the link on the page. - **Center:**ย Aligns the link text in the middle of its container horizontally. - **Left:**ย Aligns the link text to the left edge of its container. @@ -21788,9 +21955,9 @@ You can horizontally align a link element using the horizontal alignment propert ## Link button color -The color of a button refers to the visual appearance of the button itself. You can easily modify the link color in the Application Builder. +The color of a button refers to the visual appearance of the button itself. You can easily modify the link color in the Application Builder. -Navigate to the page where you can edit the button you want to modify and select the link element within the editor. Change the color using the Button color property in a General tab. +Navigate to the page where you can edit the button you want to modify and select the link element within the editor. Change the color using the Button color property in a General tab. Click on the color picker or input field next to the color option. @@ -21840,7 +22007,7 @@ Learn more about how to [add and remove an element from a page](/user-docs/add-a ![Add and configure table elements][3] -Now that you've added the image, it's time to customize its appearance and functionality. This is where image properties come in, including those related to [style](/user-docs/element-style). +Now that you've added the image, it's time to customize its appearance and functionality. This is where image properties come in, including those related to [style](/user-docs/element-style). ## Image file @@ -21866,7 +22033,7 @@ The Application Builder allows you to bind the URL to [data sources](/user-docs/ ## Image alt text -Image alt text, which is short for ""alternative text,"" is important for accessibility and search engine optimization (SEO). +Image alt text, which is short for ""alternative text,"" is important for accessibility and search engine optimization (SEO). An image alt text provides a textual description of the image for users who may not be able to see it. The alt text is displayed if the image fails to load properly in a web browser and read aloud by screen readers for the visually impaired, ensuring everyone can understand the imageโ€™s purpose. @@ -21874,7 +22041,7 @@ The Application Builder allows you to bind the text to [data sources](/user-docs ## Image element horizontal alignment -Horizontal alignment refers to placing an image to the left, center, or right side of its parent element, which can be the entire page or a specific section. +Horizontal alignment refers to placing an image to the left, center, or right side of its parent element, which can be the entire page or a specific section. - **Left:**ย The image will be positioned flush against the left edge of its container. - **Center:**ย The image will be horizontally centered within its container. @@ -21888,9 +22055,9 @@ This helps you manage how images are displayed on the page. By setting the image There are two options to control image size: -- **Max width (percentage):** This determines the image's maximum width relative to its container. This ensures images don't overflow their container horizontally. +- **Max width (percentage):** This determines the image's maximum width relative to its container. This ensures images don't overflow their container horizontally. The percentage value must be between 0 and 100, to reflect the desired portion of the container's width the image should occupy. Percentages provide flexible layouts that adapt to different screen sizes. -- **Max height (pixels):** This defines the image's maximum height in pixels. This prevents large images from disrupting the layout. +- **Max height (pixels):** This defines the image's maximum height in pixels. This prevents large images from disrupting the layout. The value must be between 5 and 3000 pixels to constrain the image's vertical dimension. Pixels provide a fixed value for specific height requirements. ## Image constraint @@ -21910,7 +22077,7 @@ For image element, here are the constraints: [4]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/354c98bb-cdac-4796-9134-aaf1e73859df/Untitled%202.png",,baserow_user_docs,https://baserow.io/user-docs/application-builder-image-element 180,Text input element,application-builder-text-input-element,Text input element in Baserow App Builder,"# Application Builder - Text input element -The text input element allows users to enter text data in your application. +The text input element allows users to enter text data in your application. This section will guide you through setting up a text input element and explain each configuration option in detail. @@ -21920,7 +22087,7 @@ This section will guide you through setting up a text input element and explain The text input element allows users to enter textual information. This is important for collecting various data types, including names, email addresses, URLs, and phone numbers. Text inputs are commonly used together with the [form element][2] to create user input forms. -For the text input element, you can configure the element properties, and [customize its appearance](/user-docs/element-style) from the element settings. +For the text input element, you can configure the element properties, and [customize its appearance](/user-docs/element-style) from the element settings. ## Add and configure text input elements @@ -21932,7 +22099,7 @@ Learn more about how to [add and remove an element from a page](/user-docs/add-a ![Add and configure table elements][3] -Now, you'll configure the text input's properties to make it function and look the way you want. +Now, you'll configure the text input's properties to make it function and look the way you want. ## Text input properties @@ -21973,7 +22140,7 @@ Let's go over how to set up column containers. This will help your interface mat ## Overview -A column container serves as a foundational element in organizing your application. It allows you to arrange content for an intuitive user experience. With column containers, you gain the flexibility to structure and customize your layout. +A column container serves as a foundational element in organizing your application. It allows you to arrange content for an intuitive user experience. With column containers, you gain the flexibility to structure and customize your layout. For the column element, you can configure the element properties and [style](/user-docs/element-style) from the element settings. @@ -21987,11 +22154,11 @@ Learn more about how to [add and remove an element from a page](/user-docs/add-a ![Add and configure table elements][1] -After defining the column layout for your application, you can customize its appearance and behavior by configuring the container's properties. +After defining the column layout for your application, you can customize its appearance and behavior by configuring the container's properties. ## Column layout -The layout option varies from 1-6 columns and allows you to determine the desired arrangement of elements within your interface. +The layout option varies from 1-6 columns and allows you to determine the desired arrangement of elements within your interface. By specifying a number between 1 and 6, you define the structure and presentation of the page. This impacts how data is organized and displayed, influencing usability and visual appeal. @@ -21999,7 +22166,7 @@ By specifying a number between 1 and 6, you define the structure and presentatio ## Space between columns -The space between columns is adjustable, ensuring optimal spacing and visual clarity within your interface. +The space between columns is adjustable, ensuring optimal spacing and visual clarity within your interface. This field's value must be less than or equal to 2000. @@ -22048,7 +22215,7 @@ Now, you'll configure the button's properties to make it function and look the w ## Button horizontal alignment -There are several ways to achieve horizontal alignment for your button element within the Application Builder. +There are several ways to achieve horizontal alignment for your button element within the Application Builder. The horizontal alignment property controls how a button element is positioned within its container on the page. This helps you create a visually appealing and user-friendly page. @@ -22071,13 +22238,13 @@ When it comes to the appearance of buttons, you have two options: ""auto"" and " ## Button color -Before publishing the application button, consider styling the buttons. +Before publishing the application button, consider styling the buttons. -You can easily modify the color in the Application Builder. +You can easily modify the color in the Application Builder. Learn more about [element style](/user-docs/element-style). -Navigate to the page where you can edit the heading you want to modify and select the heading element within the editor. Change the color of a heading element using the property within a General tab. +Navigate to the page where you can edit the heading you want to modify and select the heading element within the editor. Change the color of a heading element using the property within a General tab. Click on the color picker or input field next to the color option. @@ -22121,9 +22288,9 @@ In this section, we'll guide you through the process of setting up a table eleme For the table element, you can configure the element properties and [style](/user-docs/element-style) from the element settings. -To get started, you need to connect a pre-configured [data source](/user-docs/data-sources) to fetch data from data sources and display it on the table. +To get started, you need to connect a pre-configured [data source](/user-docs/data-sources) to fetch data from data sources and display it on the table. -As soon as you add a table element to the page, the element settings will become available and you can start setting it up. +As soon as you add a table element to the page, the element settings will become available and you can start setting it up. ![Baserow Application Builder table element][1] @@ -22142,14 +22309,14 @@ Now, you'll configure the table's properties to make it function and look the wa ## Table data source > To list rows in the table, set the [data source](/user-docs/data-sources) service type as *List rows*. Learn more about data sources and how to configure them. -> +> -After adding a table element to the page from **Elements**, you need to select the [data source](/user-docs/data-sources) which you want to import your data from. This is done from the **General** tab of the element settings. +After adding a table element to the page from **Elements**, you need to select the [data source](/user-docs/data-sources) which you want to import your data from. This is done from the **General** tab of the element settings. ![Data source][3] -As soon as you select a **Data source**, you'll see the Fields configuration appear below. +As soon as you select a **Data source**, you'll see the Fields configuration appear below. ## Table items per page @@ -22161,13 +22328,13 @@ If there are more items to display than the defined number, a **Show More** butt This is where you configure how the data will be mapped to a table to specify how exactly you want to display your data. -You can configure some additional parameters for the table element and map the element fields to the data source to specify what data needs to be displayed and how. +You can configure some additional parameters for the table element and map the element fields to the data source to specify what data needs to be displayed and how. For each field, you can add a Name, Type, Value, and Link text. You can also configure the position of the fields. ### Add a new field -You can add new fields using the **Add field** button. After adding the field, you need to specify its Name, Type, Value, and Link text. +You can add new fields using the **Add field** button. After adding the field, you need to specify its Name, Type, Value, and Link text. Fields can have the following settings: @@ -22199,7 +22366,7 @@ If the Text type is selected, you can also set the value of the field. You can enter a specific value for the selected field so that the rows display that value. -You can enter static text here. However, if you've connected to a [data source](/user-docs/data-sources), all the fields from the data source will also become available for your choice. +You can enter static text here. However, if you've connected to a [data source](/user-docs/data-sources), all the fields from the data source will also become available for your choice. ![Enter value][5] @@ -22207,7 +22374,7 @@ You can enter static text here. However, if you've connected to a [data source]( If the Link type is selected, you can also set the link text of the field. -Similar to the text value, you can enter static text here. However, if you've connected to a [data source,](/user-docs/data-sources) all the fields from the data source will also become available for your choice. +Similar to the text value, you can enter static text here. However, if you've connected to a [data source,](/user-docs/data-sources) all the fields from the data source will also become available for your choice. ![Enter Link text][6] @@ -22222,7 +22389,7 @@ If the Link type is selected, you can also link to an internal page or custom UR If the Link type is selected, you can link to an internal page through a button and set it to open a separate page within the Baserow application to view the details of a row. > In the detail page, you should link to the same data source that the table to which you want to connect the details is linked to. -> +> For example, letโ€™s say you have a list of projects in a table. When the user clicks on the link associated with a specific project, you want to display this projectโ€™s details. @@ -22230,11 +22397,11 @@ You need to first add a parameter via `:parameter` . Path parameters can be used ![Link row to a details page][8] -To link to a dynamic page, go to the element settings and open the General tab. From the **Navigate to** dropdown menu, set the detail page to which the table items are supposed to be linked. +To link to a dynamic page, go to the element settings and open the General tab. From the **Navigate to** dropdown menu, set the detail page to which the table items are supposed to be linked. ![ink to a dynamic page][9] -Thatโ€™s it. Now when the user clicks on a particular link associated with a row, they will be taken to the page with the details of the row. +Thatโ€™s it. Now when the user clicks on a particular link associated with a row, they will be taken to the page with the details of the row. The content for each row will be generated automatically on that page depending on which row the user has navigated to the detail page from. @@ -22246,13 +22413,13 @@ You can also do the same for a Button element. ## Button color -You can easily modify the color in the Application Builder. +You can easily modify the color in the Application Builder. -The color of a button refers to the visual appearance of the button itself. +The color of a button refers to the visual appearance of the button itself. You can configure the color of the **Show more** button to show more items in the list. -Navigate to the page where you can edit the heading you want to modify and select the heading element within the editor. Change the color of a heading element using the property within a General tab. +Navigate to the page where you can edit the heading you want to modify and select the heading element within the editor. Change the color of a heading element using the property within a General tab. Click on the color picker or input field next to the color option. @@ -22325,9 +22492,9 @@ In this section, we'll guide you through the process of setting up a form elemen For the form element, you can configure the element properties, [style](/user-docs/element-style), and [events](/user-docs/element-events) from the element settings. -The form layout is customizable and you can have any number of fields, specifying the type of each field. +The form layout is customizable and you can have any number of fields, specifying the type of each field. -For example, if you have a job board, each job detail page can contain a form through which visitors can apply for that job. +For example, if you have a job board, each job detail page can contain a form through which visitors can apply for that job. The Application Builder allows you to bind the text to [data sources](/user-docs/data-sources). This enables the text to update dynamically based on user input or application logic. @@ -22357,15 +22524,15 @@ Now, let's see what element types are available: In the General tab, you customize the submit button and button color. -You can enter static text as the *Submit button* value. However, if you've connected to a [data source](/user-docs/data-sources), all the fields from the data source will also become available for your choice. +You can enter static text as the *Submit button* value. However, if you've connected to a [data source](/user-docs/data-sources), all the fields from the data source will also become available for your choice. ![Submit button][3] ## Form button color -You can easily modify the color in the Application Builder. +You can easily modify the color in the Application Builder. -Navigate to the page where you can edit the heading you want to modify and select the heading element within the editor. Change the color of a heading element using the property within a General tab. +Navigate to the page where you can edit the heading you want to modify and select the heading element within the editor. Change the color of a heading element using the property within a General tab. Click on the color picker or input field next to the color option. @@ -22441,7 +22608,7 @@ The choice element has the following settings: - **Default value:**ย This pre-selects an option from the list. If no default value is chosen, the first option is usually selected by default. - **Placeholder:**ย This provides a hint to the user about what they should select when the choice is empty. - **Required:**ย When enabled, users must choose an option from the list before continuing. This ensures they provide a necessary selection. - - **Allow multiple values**: This option determines whether the element allows users to select multiple choices. + - **Allow multiple values**: This option determines whether the element allows users to select multiple choices. - **Display**: This option controls how the element is displayed. You can choose between two options: - **Dropdown**: This option presents a dropdown menu where users can select one or more options. - **Checkboxes**: This option displays a list of checkboxes, allowing users to select multiple options by clicking on individual checkboxes. @@ -22449,7 +22616,7 @@ The choice element has the following settings: - **Value:**ย An internal identifier associated with the option. This value is typically used to store the user's selection in your application. - **Name:**ย The text displayed to the user when presenting the options in the menu. Choose clear and concise names that accurately reflect the corresponding value. -You can populate the options with data retrieved from data sources. +You can populate the options with data retrieved from data sources. [1]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/99a6fa85-1562-485a-a9d5-1b8833a9501e/Choice%20element%20for%20Application%20Builder%20.png @@ -22488,7 +22655,7 @@ Now, you'll configure the checkbox's properties to make it function and look the ## Configure checkbox element -When setting it up, you'll have some configuration options, like deciding what each choice represents or customizing its appearance. It's like tailoring the checkbox to fit your specific needs. +When setting it up, you'll have some configuration options, like deciding what each choice represents or customizing its appearance. It's like tailoring the checkbox to fit your specific needs. The checkbox element has the following common settings: @@ -22501,7 +22668,7 @@ The checkbox element has the following common settings: [2]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/4281431d-3a77-448c-b627-1a7426a088b6/Untitled%201.png",,baserow_user_docs,https://baserow.io/user-docs/application-builder-checkbox-element 187,iFrame element,application-builder-iframe-element,iFrame element in Baserow Application Builder,"# Application Builder - iFrame element -The iFrame element allows you to insert custom snippets of code anywhere on your page. +The iFrame element allows you to insert custom snippets of code anywhere on your page. In this section, we will guide you through setting up an IFrame element and explain each configuration option in detail. @@ -22531,7 +22698,7 @@ That's it. Now the IFrame will appear. Using IFrames can be handy for integrating content from other sources into your application seamlessly. -You can set the source as a URL or an Embed. +You can set the source as a URL or an Embed. - **URL:** Input the link to the external resource to be embedded. Ensure that you have control over, or trust the URL entered. - **Embed:** Input the raw HTML content to be embedded. @@ -22542,9 +22709,9 @@ For example, if you wanted to embed a map or form on a page, you could use an IF ## IFrame content -You can enter static text here. However, if you've connected to a [data source](/user-docs/data-sources), all the fields from the data source will also become available. +You can enter static text here. However, if you've connected to a [data source](/user-docs/data-sources), all the fields from the data source will also become available. -First, you need to get your embed code. +First, you need to get your embed code. To pass dynamic data, create a corresponding field in the pre-configured [data source](/user-docs/data-sources). You can create a [text field](/user-docs/single-line-text-field) in the table and add the embed code or create a [URL field](/user-docs/url-field) with the external link. @@ -22568,7 +22735,7 @@ Here's an example of setting the iframe height to 500px: [3]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/cf1bd718-7203-480a-8f1c-f82c007b9dd4/Untitled%202.png",,baserow_user_docs,https://baserow.io/user-docs/application-builder-iframe-element 188,Login element,application-builder-login-element,Login element in Baserow Application Builder,"# Application Builder - Login element -The login element allows users to access your application with secure credentials. +The login element allows users to access your application with secure credentials. Let's look at how to set up login functionality in your application using the login element. This element lets you build and handle user accounts right inside the Application Builder. @@ -22592,7 +22759,7 @@ Now, you'll customize the login's behavior and appearance by configuring its pro To configure the login element, you'll first need to choose the [source of your user data](/user-docs/user-sources). This determines where the application will verify user credentials during the login process.ย  -The user source is essentially how your application identifies and verifies users. It establishes the foundation for secure login functionality. +The user source is essentially how your application identifies and verifies users. It establishes the foundation for secure login functionality. Adding a user source allows the application to recognize and authenticate users effectively. By adding a user source, you define how users will authenticate themselves within the application. This typically involves configuring settings related to username and password verification. @@ -22618,7 +22785,7 @@ Learn more about the [password field type](/user-docs/password-field). ## What happens after login? -Once a user successfully logs in with a valid username and password, you can set the visibility of each element in your application according to a user's authentication status. +Once a user successfully logs in with a valid username and password, you can set the visibility of each element in your application according to a user's authentication status. ![What happens after login in Baserow?][4] @@ -22628,7 +22795,7 @@ Clicking the logout button will end the user's session and return them to the lo ![Baserow logout button will end the user's session ][7] -## Troubleshooting +## Troubleshooting **When a user successfully logs in, the next action after login is not initiated** @@ -22693,14 +22860,14 @@ You can set a different visibility level for each element in your application. T ![Visibility roles for Application Builder ][6] -Visibility roles provide a granular level of control over user access. By defining roles within your application and assigning them to users, you can determine which elements each user can see. +Visibility roles provide a granular level of control over user access. By defining roles within your application and assigning them to users, you can determine which elements each user can see. -Before using visibility roles, you'll need to establish the different user roles within your application. +Before using visibility roles, you'll need to establish the different user roles within your application. 1. [Create a field in the table][7] to store the assigned role for each user based on their permissions. 2. In the Application Builder, navigate to your [User Source][3] settings. There, you'll define a role field. This field will be used to map user data in your [User Source][3] to the roles you established. or use the default role to assign appropriate roles to each user. 3. Navigate to the element's Visibility tab within the editor. This allows you to define visibility based on user roles: - + - **All roles**: This option makes the element visible to all users, regardless of their role. - **Allow roles**: Choose this option to define which specific user roles can see the element. Only users assigned to the selected roles will have access. - **Disallow roles**: This option hides the element from users assigned to the selected roles. All other users will still see the element. @@ -22777,22 +22944,22 @@ Row selection enables bulk editing, deletion, copying data across rows, or apply ### Individual cell selection - - Click any cell to select it for editing or as a paste target. + - Click any cell to select it for editing or as a paste target. - Click and drag across multiple cells to select ranges, extending your selection horizontally across fields or vertically down rows. Selected cells appear highlighted, showing exactly where your pasted data will land. ### Row selection - - Click row numbers on the left side to select entire rows, which highlights all cells in that row across all visible fields. - - Hold Shift and click another row number to select everything between your first and last selection. + - Click row numbers on the left side to select entire rows, which highlights all cells in that row across all visible fields. + - Hold Shift and click another row number to select everything between your first and last selection. - Hold Ctrl (Windows) or Cmd (Mac) and click individual row numbers to select multiple non-adjacent rows. > **Selection limit:** Baserow allows selecting up to 200 rows at once due to lazy loading, which loads data progressively as you scroll rather than loading entire tables. This limitation enables smooth performance with tables containing millions of rows. ### Multi-cell selection for pasting -Click and drag to select rectangular areas of cells when you want to paste data into specific field ranges. +Click and drag to select rectangular areas of cells when you want to paste data into specific field ranges. Your selection rectangle must match the dimensions of your copied data for proper alignment. If you're pasting 3 columns by 5 rows, select a 3ร—5 cell area as your target. @@ -22821,22 +22988,22 @@ Move or duplicate data between rows in the same table or across different tables ## Field type considerations -Understanding how different field types handle pasted data helps prevent unexpected results and ensures clean imports. Verify field types before pasting. Check that your source data format matches the destination field types. +Understanding how different field types handle pasted data helps prevent unexpected results and ensures clean imports. Verify field types before pasting. Check that your source data format matches the destination field types. ### Compatible field types -- Text pasted into text fields works universally; single-line text and long text fields accept any pasted content. -- Numbers must be numeric characters to paste successfully into number fields; text strings are rejected. -- Dates require proper date formatting (ISO format like 2024-03-15, works best). +- Text pasted into text fields works universally; single-line text and long text fields accept any pasted content. +- Numbers must be numeric characters to paste successfully into number fields; text strings are rejected. +- Dates require proper date formatting (ISO format like 2024-03-15, works best). - Boolean fields accept variations of true/false, yes/no, or 1/0. ### Special field handling -Single select and multiple select fields accept pasted values that match existing options exactly. If you paste ""Pending"" into a status field with options ""Pending,"" ""Approved,"" and ""Rejected,"" it works perfectly. However, pasting ""pending"" (lowercase) creates a mismatch unless you have that exact option. +Single select and multiple select fields accept pasted values that match existing options exactly. If you paste ""Pending"" into a status field with options ""Pending,"" ""Approved,"" and ""Rejected,"" it works perfectly. However, pasting ""pending"" (lowercase) creates a mismatch unless you have that exact option. ### Paste failures -When pasted data doesn't match field type expectations, those cells remain empty rather than showing error messages. If you paste ""abc"" into a number field, the cell stays blank. +When pasted data doesn't match field type expectations, those cells remain empty rather than showing error messages. If you paste ""abc"" into a number field, the cell stays blank. Review your paste results immediately to catch these mismatches and correct them before continuing work. @@ -22890,14 +23057,14 @@ Yes, but paste operations work differently in filtered views. New rows created t Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. -- [Ask the Baserow community](https://community.baserow.io) +- [Ask the Baserow community](https://community.baserow.io) - [Contact support](/contact) for questions about Baserow or help with your account. [1]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/e83fb1b4-6547-437d-8652-d723fd83b35b/Paste%20a%20single%20value%20into%20all%20selected%20cells.jpg",,baserow_user_docs,https://baserow.io/user-docs/paste-data-into-baserow-table 191,AI prompt field,ai-field,AI prompt field in Baserow table,"# AI prompt field in Baserow -The AI prompt field lets you generate text, summaries, classifications, and insights directly in your Baserow tables using dynamic prompts that reference other fields. It supports [multiple AI providers][1] and can process documents (PDF, DOCX, TXT, MD) for automated analysis. +The AI prompt field lets you generate text, summaries, classifications, and insights directly in your Baserow tables using dynamic prompts that reference other fields. It supports [multiple AI providers][1] and can process documents (PDF, DOCX, TXT, MD) for automated analysis. > The AI prompt field is available on Premium plans and higher. [Upgrade your subscription](https://baserow.io/pricing) to access this feature. @@ -22935,7 +23102,7 @@ Ensure AI is configured in your workspace: ### Configure AI settings -| Setting | Purpose | +| Setting | Purpose | |---------|---------| | **AI type & model** | Choose provider (Baserow, OpenAI, Anthropic, etc.) and specific model. GPT-3.5 for speed, GPT-4 for quality | | **Temperature** | Control creativity (0-2). 0-0.3 for factual, 0.7-1.0 for creative | @@ -23083,7 +23250,7 @@ Currently, AI prompt fields require manual generation per row. For batch process A repeat element allows you to show a list within a [page](/user-docs/pages-in-the-application-builder) by repeating the elements for each result in the data source. It allows you to repeat a set layout for each item in a container, making it easier to manage large amounts of similar data. -In this section, weโ€™ll set up a repeat element, the configuration options, and how it generally works. +In this section, weโ€™ll set up a repeat element, the configuration options, and how it generally works. @@ -23119,9 +23286,9 @@ Now, you can configure the element's properties to make it function and look the ## Repeat data source > To list rows in the repeat list, set the [data source](/user-docs/data-sources) service type as *List multiple rows*. Learn more about data sources and how to configure them. -> +> -After adding a repeat element to the page from **Elements**, you need to select the [data source](/user-docs/data-sources) which you want to import your data from. This is done from the **General** tab of the element settings. +After adding a repeat element to the page from **Elements**, you need to select the [data source](/user-docs/data-sources) which you want to import your data from. This is done from the **General** tab of the element settings. ![Repeat element screenshot][6] @@ -23136,7 +23303,7 @@ If there are more items to display than the defined number, a **Show more** butt This setting controls how repeated elements are arranged on the screen. You can choose between two orientations: * **Vertical:** Elements will be stacked on top of each other. -* **Horizontal:** Elements will be displayed in rows from left to right. +* **Horizontal:** Elements will be displayed in rows from left to right. When choosing horizontal orientation, you can further define the number of elements displayed per row for different device types. This allows you to customize the layout for optimal viewing on various screen sizes. @@ -23177,7 +23344,7 @@ Still need help? If you're looking for something else, please feel free to make [9]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/40f9ce8a-e81b-4740-a3b0-b7bbc635a37d/filter_order_and_search_for_published_applications.webp",,baserow_user_docs,https://baserow.io/user-docs/application-builder-repeat-element 193,AI formula generator,generate-formulas-with-baserow-ai,Generate formulas with AI in Baserow,"# Generate formulas with Baserow AI -Baserow's AI formula generator converts plain English descriptions into working formulas instantly. Describe what you want to calculate, and AI creates the formula syntax for you. +Baserow's AI formula generator converts plain English descriptions into working formulas instantly. Describe what you want to calculate, and AI creates the formula syntax for you. > AI formula generation is available on Premium plans and higher. [Upgrade your subscription](https://baserow.io/pricing) to access this feature. @@ -23232,16 +23399,16 @@ Select the AI type, model and temperature. [Configure generative AI](/user-docs/ **Prompt best practices:** -โœ… **Be specific:** ""Calculate discount price: 10% off if quantity > 50, 20% off if > 100"" +โœ… **Be specific:** ""Calculate discount price: 10% off if quantity > 50, 20% off if > 100"" โŒ **Too vague:** ""Give me a discount"" -โœ… **Reference field names:** ""Use the Due Date and Priority fields"" +โœ… **Reference field names:** ""Use the Due Date and Priority fields"" โŒ **Generic terms:** ""Use the date column"" -โœ… **Specify output format:** ""Show result as percentage with 2 decimals"" +โœ… **Specify output format:** ""Show result as percentage with 2 decimals"" โŒ **Unclear format:** ""Show as percent"" -โœ… **Include edge cases:** ""If Price is blank, show 0"" +โœ… **Include edge cases:** ""If Price is blank, show 0"" โŒ **Ignore edge cases:** Doesn't mention blank values **Example prompts:** @@ -23279,7 +23446,7 @@ Select the AI type, model and temperature. [Configure generative AI](/user-docs/ - Explicitly mention edge cases (""if field is empty, show 0"") - Reference exact field names in quotes - Break complex requests into simpler parts -- Try a different AI model +- Try a different AI model ### Generated formula shows an error @@ -23287,7 +23454,7 @@ Select the AI type, model and temperature. [Configure generative AI](/user-docs/ **Solutions:** - Check that all referenced fields exist in your table -- Verify field names match exactly +- Verify field names match exactly - Try regenerating with a clearer prompt - Review [formula field reference](/user-docs/understanding-formulas) for syntax rules - Contact support if the error persists @@ -23371,7 +23538,7 @@ AI can generate complex formulas, but Baserow has a formula length limit. Extrem [2]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/d4d75565-b60f-48ca-81d2-197ea7c91fde/generate%20formulas%20with%20AI.png [3]: https://baserow.io/blog/use-ai-generate-formulas-baserow [4]: https://baserow.io/blog/apply-discounts-dynamically-with-baserow-formulas",,baserow_user_docs,https://baserow.io/user-docs/generate-formulas-with-baserow-ai -194,OttoKit,suretriggers-integration,Integrate Baserow with OttoKit (formerly SureTriggers),"# Configure Baserow in OttoKit (formerly SureTriggers) +194,OttoKit,suretriggers-integration,Integrate Baserow with OttoKit (formerly SureTriggers),"# Configure Baserow in OttoKit (formerly SureTriggers) OttoKit offers the ability to create custom workflows that perform actions in response to specific triggers. You can seamlessly sync data from Baserow to over 600 apps using various triggers. @@ -23405,26 +23572,26 @@ With this integration, you can: - Row Updated - Runs when a row is updated. - Row Deleted - Runs when a row is deleted. -> Alternatively, use the [Webhook][3] app to trigger when the webhook receives data. +> Alternatively, use the [Webhook][3] app to trigger when the webhook receives data. **Actions** - Create Row - Creates a new row - Update Row - Updates an existing row - Delete Row - Deletes an existing row - - List Rows - Finds a page of rows in a given table - - Fetch Row - Finds a single row in a given table + - List Rows - Finds a page of rows in a given table + - Fetch Row - Finds a single row in a given table - Custom API Request - Make a custom API request to the Baserow API ## Configure Baserow trigger in OttoKit -Create a workflow in OttoKit. A trigger is an event that starts your workflow to streamline your processes and enhance productivity. +Create a workflow in OttoKit. A trigger is an event that starts your workflow to streamline your processes and enhance productivity. ### Select Baserow as the trigger app Browse the available apps and choose Baserow as the trigger app. A trigger app initiates a workflow based on specific events happening within the app. In this case, Baserow will be the starting point for your automated processes. -Choose the specific event in Baserow that will initiate your workflow. Actions within Baserow, such as adding a new row, updating or deleting an existing row, will prompt a response in another application. +Choose the specific event in Baserow that will initiate your workflow. Actions within Baserow, such as adding a new row, updating or deleting an existing row, will prompt a response in another application. > For more information on creating a webhook in Baserow, see theย [support documentation](/user-docs/webhooks). @@ -23432,7 +23599,7 @@ Choose the specific event in Baserow that will initiate your workflow. Actions w ### Configure the trigger -To configure the trigger, add the webhook URL to Baserow to send notifications to other applications. +To configure the trigger, add the webhook URL to Baserow to send notifications to other applications. Select **POST** from the **Method** dropdown menu in Baserow. @@ -23447,7 +23614,7 @@ Test the webhook functionality by clicking the **Trigger test webhook** button i ### Save and test the workflow After selecting the trigger, OttoKit will guide you through defining the actions that follow the trigger event. These actions can involve sending data to another application, calculating, or creating notifications. - + Once you've configured the trigger and subsequent actions, save your workflow and run a test to ensure everything functions as expected. Baserow should initiate the workflow based on the chosen trigger event. ![test Baserow webhook in OttoKit][5] @@ -23487,7 +23654,7 @@ Yes, when you add the webhook URL to Baserow settings, you can specify which eve ### How fast do triggers fire? -OttoKit checks for new triggers every 1-15 minutes depending on your plan. +OttoKit checks for new triggers every 1-15 minutes depending on your plan. ## Troubleshooting common issues @@ -23783,9 +23950,9 @@ Data synchronization ensures your external data is consistent and up-to-date acr By automating the process of updating data, you can eliminate the need for manual updates in different systems. This guarantees that everyone within your organization has access to the latest information, reducing errors and increasing efficiency. -> Some sync sources (Baserow, Jira, GitHub, GitLab, Hubspot) are available with a [paid plan][3]. To access them, please upgrade your account by subscribing. +> Some sync sources (Baserow, Jira, GitHub, GitLab, Hubspot) are available with a [paid plan][3]. To access them, please upgrade your account by subscribing. -This section will guide you through the process of setting up and managing data sync in Baserow. +This section will guide you through the process of setting up and managing data sync in Baserow. For other ways to create a Baserow table, please see these articles: @@ -23796,7 +23963,7 @@ For other ways to create a Baserow table, please see these articles: ## Overview of data sync -Data sync creates live-updating tables that automatically pull information from external sources. Unlike manual imports, synced tables refresh automatically, ensuring everyone works with the latest data without manual updates. +Data sync creates live-updating tables that automatically pull information from external sources. Unlike manual imports, synced tables refresh automatically, ensuring everyone works with the latest data without manual updates. Data sync eliminates manual data entry and ensures single-source-of-truth consistency across platforms. @@ -23815,7 +23982,7 @@ Setting up any sync source follows the same basic pattern, with source-specific 2. Select your [sync source][1] from the available integration options 3. Enter connection details specific to your source (see source sections below) 4. Name your synced table descriptively to identify the data source -5. Select fields to sync. You don't need all fields; choose only what's relevant. +5. Select fields to sync. You don't need all fields; choose only what's relevant. > [Field types](/user-docs/baserow-field-overview) cannot be changed on synced fields. 6. Toggle on **Auto add new properties** to automatically add and synchronize newly available properties from the data source into the Baserow table. Note that for this to work, all properties must be synced. 7. Click **Create and sync table** to establish the connection @@ -23824,9 +23991,9 @@ Setting up any sync source follows the same basic pattern, with source-specific Your table is created immediately and begins syncing. Data appears as read-only with sync indicators (arrows) beside field names. -## Data sync sources +## Data sync sources -Data sync in Baserow can integrate with multiple sources: +Data sync in Baserow can integrate with multiple sources: | Source | Best for | Update frequency | Two-way sync | |--------|----------|------------------|--------------| @@ -23842,11 +24009,11 @@ Data sync in Baserow can integrate with multiple sources: ### Sync iCal feed -iCal feed sync is designed to bring calendar data into Baserow. The iCal calendar sync synchronizes automatically with the entries in the URL's calendar file. +iCal feed sync is designed to bring calendar data into Baserow. The iCal calendar sync synchronizes automatically with the entries in the URL's calendar file. It supports the ICS (Internet Calendar and Scheduling) file type. Simply provide the iCal URL from your calendar service. -This is useful for syncing shared calendars, project timelines, or event schedules across different platforms into a single database. +This is useful for syncing shared calendars, project timelines, or event schedules across different platforms into a single database. ### Sync PostgreSQL table @@ -23941,18 +24108,18 @@ Once a sync is established, you can easily manage and update it as needed. The [ With these integrations, you can synchronize data in external platforms directly into Baserow, simplifying workflows, improving collaboration, and making data management more efficient. -You have the flexibility to choose only the fields relevant to your workflow, which helps to keep your workspace clean and focused. +You have the flexibility to choose only the fields relevant to your workflow, which helps to keep your workspace clean and focused. > The sync table feature only supports field types like single text, number, date, and boolean. Calculated fields like Link to table, Lookup, Rollup and Formula cannot be synced. This is because the value of those fields might depend on other tables that have a different set of permissions. ### Trigger manual sync -While sync can be scheduled, you can manually refresh data anytime. This will refresh the data, pulling the latest information from the main source. +While sync can be scheduled, you can manually refresh data anytime. This will refresh the data, pulling the latest information from the main source. -To pull the latest data from your connected source into Baserow, +To pull the latest data from your connected source into Baserow, 1. Go to the synced table in Baserow and click on the three-dot menu to open the table options. - 2. Click **Sync table**. + 2. Click **Sync table**. During this process, a lock is placed on the updated rows, which may temporarily slow down API requests or table modifications. @@ -23974,7 +24141,7 @@ Configure automatic sync schedules through the ellipsis menu of any synced table ### Add new fields -Synced fields are read-only, but you can [add new editable fields](/user-docs/adding-a-field) to synced tables for tracking additional information not provided by the source. These custom fields don't interfere with synced data and update independently. +Synced fields are read-only, but you can [add new editable fields](/user-docs/adding-a-field) to synced tables for tracking additional information not provided by the source. These custom fields don't interfere with synced data and update independently. Synced fields display an arrow indicator to distinguish them from [custom editable fields][7]. @@ -24044,7 +24211,7 @@ Still need help? If you're looking for something else, please feel free to make The Record Selector simplifies linking and selecting rows from related tables. This is useful when selecting any of the thousands of rows from a related table to populate a link row field. -In this section, we'll provide detailed instructions and best practices for using the Record Selector element in the Application Builder. +In this section, we'll provide detailed instructions and best practices for using the Record Selector element in the Application Builder. ![Baserow Record selector element][1] @@ -24075,7 +24242,7 @@ Once the element is added, configure its properties in the settings panel. You c The following settings are available: - **Select records from**: Choose the [data sources](/user-docs/data-sources) you want to pull records from. Example: Job roles or Departments. - - **Items per page**: Define how many rows are displayed in the selector view. Example: 20. This number must be greater than or equal to 5 but less than or equal to 100. + - **Items per page**: Define how many rows are displayed in the selector view. Example: 20. This number must be greater than or equal to 5 but less than or equal to 100. - **Option name suffix**: Add a suffix to distinguish rows when displayed in the dropdown. Example: combining multiple data fields like ""Company - [Value]"". - **Label**: Enter a clear label for the field. Example: ""Select one or more roles"". - **Placeholder**: Add placeholder text to guide users on what to do. Example: ""Make a selection"". @@ -24086,7 +24253,7 @@ The following settings are available: ## User actions -For each element, you can specify which fields to make searchable for external users to give end-users more control to search within the [published application][3]. +For each element, you can specify which fields to make searchable for external users to give end-users more control to search within the [published application][3]. To add searching capabilities, click on the element and navigate to the right sidebar. There, youโ€™ll see checkboxes to enable Search for specific fields. @@ -24138,8 +24305,8 @@ Follow these steps to export complete workspaces or selected content. 4. Choose what to export. The export dialog displays all exportable content organized by type. Use **Select all** to include everything in the workspace at once. Use **Deselect all** to clear selections. Use individual toggles to fine-tune exactly what to export. 5. Configure export options. โ˜‘ Check **Export structure only** to exports table structures, fields, views, and configurations WITHOUT data rows. โ˜ **Uncheck** to export complete data, including all rows and content. 6. Generate and download the export. Click the **Export data** button - -Baserow generates a ZIP file (may take a few moments for large workspaces). The file downloads to your default download folder. + +Baserow generates a ZIP file (may take a few moments for large workspaces). The file downloads to your default download folder. After exporting, you can import the ZIP file into any Baserow instance. [Complete guide to importing workspaces โ†’][3] @@ -24291,13 +24458,13 @@ Still need help? If you're looking for something else, please feel free to make [7]: /user-docs/import-data-into-an-existing-table",,baserow_user_docs,https://baserow.io/user-docs/export-workspaces 262,Import a workspace,import-workspaces,Import a workspace in Baserow account,"# Import a workspace into Baserow -Import complete workspaces from ZIP files to migrate between Baserow instances, restore backups, or duplicate workspace configurations. +Import complete workspaces from ZIP files to migrate between Baserow instances, restore backups, or duplicate workspace configurations. The import process preserves databases, applications, dashboards, and structure while requiring post-import configuration for members and automations. ## Overview -Workspace imports give you the flexibility to transfer your Baserow work between instances, restore from backups, or replicate configurations across teams. +Workspace imports give you the flexibility to transfer your Baserow work between instances, restore from backups, or replicate configurations across teams. Whether you're migrating from development to production, moving between Baserow Cloud and Self-hosted, or sharing workspace templates with colleagues, the import process ensures your databases, applications, and dashboards transfer completely and accurately. @@ -24329,7 +24496,7 @@ Ensure your workspace import starts with proper preparation: Import as a new workspace to create a separate workspace, or merge with an existing workspace to add content to the current workspace. You can also choose to import the structure only or include all row data. - 1. Log in to your target Baserow instance and go to the **Home** page. + 1. Log in to your target Baserow instance and go to the **Home** page. 2. Locate the workspace where you want to import data. Click the arrow next to the workspace name and select **Import data**. 3. Upload your workspace export file by clicking the upload area or dragging the ZIP file into the interface. Baserow will validate the file to ensure itโ€™s a compatible workspace export. 4. Select applications to import. @@ -24490,7 +24657,7 @@ Still need help? If you're looking for something else, please feel free to make [1]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/132f134d-6ec5-477f-b703-b26b01060dbf/date_time_picker.webp",,baserow_user_docs,https://baserow.io/user-docs/application-builder-date-time-picker-element -294,Multi-page container,application-builder-multi-page-container,Multi-page container in Baserow Application Builder,"# Application Builder - Multi-page header and footer elements +294,Multi-page container,application-builder-multi-page-container,Multi-page container in Baserow Application Builder,"# Application Builder - Multi-page header and footer elements Multi-page header and footer elements allow you to create reusable containers that can be applied across multiple pages of your application. @@ -24500,62 +24667,62 @@ This streamlines your workflow by allowing you to define a consistent structure ## Overview -The header and footer elements are perfect for common page elements like navigation bars, branding, or footer information. +The header and footer elements are perfect for common page elements like navigation bars, branding, or footer information. With the reusable design, you can apply the same header or footer to multiple pages, update it once, and changes reflect across all linked pages. -You can configure styling and layout using the element settings. For further details, refer to the [element style customization guide][2]. +You can configure styling and layout using the element settings. For further details, refer to the [element style customization guide][2]. ## Add a multi-page container -To add the multi-page header or multi-page footer to a [page][3]: +To add the multi-page header or multi-page footer to a [page][3]: -1. Open the elements panel from the page editor interface. -2. Scroll through the list or search for: - - **Multi-page header** to add a reusable header: Add navigation menus, logos, or search bars to all pages. - - **Multi-page footer** to add a reusable footer: Include contact information, links to privacy policies, or copyright text. -3. Select to add the desired element to the page. +1. Open the elements panel from the page editor interface. +2. Scroll through the list or search for: + - **Multi-page header** to add a reusable header: Add navigation menus, logos, or search bars to all pages. + - **Multi-page footer** to add a reusable footer: Include contact information, links to privacy policies, or copyright text. +3. Select to add the desired element to the page. ## Configure the multi-page element -The header will automatically position itself at the top of the page. The footer will automatically position itself at the bottom of the page. +The header will automatically position itself at the top of the page. The footer will automatically position itself at the bottom of the page. -Once youโ€™ve added the header or footer, you can customize how and where it appears. +Once youโ€™ve added the header or footer, you can customize how and where it appears. ### Display settings -You have three options to configure visibility where headers or footers appear across your pages: +You have three options to configure visibility where headers or footers appear across your pages: -1. **On all pages** +1. **On all pages** -The element appears on every page within your application. +The element appears on every page within your application. -2. **Only on selected pages** +2. **Only on selected pages** -You can choose specific pages where the element should appear. A list of all pages will be displayed for easy selection. For example, apply a footer only to specific content pages like About or Contact. +You can choose specific pages where the element should appear. A list of all pages will be displayed for easy selection. For example, apply a footer only to specific content pages like About or Contact. -3. **Exclude selected pages** +3. **Exclude selected pages** -The element will appear on all pages except those you select. For example, exclude the header from a login page or a specialized landing page. +The element will appear on all pages except those you select. For example, exclude the header from a login page or a specialized landing page. ### Steps to configure display settings -1. Click on the **Multi-page header** or **Multi-page footer** element in the editor. -2. Open the **General settings** panel. -3. Under the **Display** section, choose one of the [following display settings][4]: +1. Click on the **Multi-page header** or **Multi-page footer** element in the editor. +2. Open the **General settings** panel. +3. Under the **Display** section, choose one of the [following display settings][4]: - On all pages - Only on selected pages - Exclude selected pages -4. For selective options, use the displayed list to check/uncheck pages as needed. +4. For selective options, use the displayed list to check/uncheck pages as needed. -For more design control, combine multi-page headers/footers with elements like [columns][5] or [buttons][6] for dynamic layouts. +For more design control, combine multi-page headers/footers with elements like [columns][5] or [buttons][6] for dynamic layouts. You can [edit or update][7] the multi-page elements at any time; changes are reflected across all pages where they are applied. ## Related content - -- [Customizing element style][2] -- [Managing page layouts and elements][7] + +- [Customizing element style][2] +- [Managing page layouts and elements][7] --- @@ -24794,11 +24961,11 @@ Still need help? If youโ€™re looking for something else, please feel free to mak The Menu element is a powerful navigation component in the Application Builder that helps users move through different parts of your application smoothly. It creates an organized structure that makes navigation intuitive and efficient. -You can configure the Menu element's properties, style, and functionality through the element settings. +You can configure the Menu element's properties, style, and functionality through the element settings. ## Add and configure Menu elements -Adding a Menu element to your application is straightforward through the elements panel. +Adding a Menu element to your application is straightforward through the elements panel. 1. Open the **Elements** panel from the top bar 2. Select the **Menu** element @@ -24851,7 +25018,7 @@ The Rating element is perfect for showing existing ratings from your data source **Style**: Select the visual representation of your ratings: - Stars - Hearts - - Thumbs up + - Thumbs up - Flags - Smiles
@@ -25156,92 +25323,34 @@ While powerful, AI interpretations depend on model quality and prompt clarity. A Field-level permissions work alongside Baserow's role hierarchy (workspace โ†’ database โ†’ table) as an additional security layer. Members who can access a table may still be restricted from editing certain fields based on their role level. -This guide covers how to control who can edit specific fields within tables, protect sensitive columns like salary or SSN, and implement the most granular permission control available in Baserow. +This guide covers how to control who can edit specific fields within tables, protect sensitive columns, and implement the most granular permission control available in Baserow. > **Paid feature:** Role-based permissions are available on Baserow Advanced and Enterprise plans. [View pricing details](https://baserow.io/pricing). ## Overview -Field-level permissions let you restrict editing of individual columns within a tableโ€”protecting sensitive fields like salary, SSN, or performance ratings while allowing broader table access for other data. +Field-level permissions enable you to restrict the editing of individual columns within a table, protecting sensitive fields while allowing broader access to the table for other data. -Unlike table-level permissions that control access to entire tables, field-level permissions provide column-by-column control. This is Baserow's most granular permission layer, operating within table-level access to fine-tune who can modify specific data fields. +Unlike [table-level permissions][1] that control access to entire tables, field-level permissions provide column-by-column control to fine-tune who can modify specific data fields. ![Field-level permissions interface](https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/c328f77e-494b-4d92-8aa6-730d62b6a7eb/Field%20permissions.png) - - -## When to use field-level permissions - -### Field-level vs. other permission levels - -| Permission Level | Granularity | Use When | -|-----------------|-------------|----------| -| **Workspace roles** | All content | Setting org-wide defaults | -| **Database roles** | All tables in database | Creating department boundaries | -| **Table roles** | All fields in table | Protecting entire tables | -| **Field permissions** | Individual columns | **Protecting specific columns within accessible tables** | - -### Common use cases - -| Scenario | Implementation | Why Field-Level Works | -|----------|----------------|----------------------| -| **Salary data** | Employee table accessible, Salary field Admin-only | HR needs other employee data, only executives see salary | -| **Social Security Numbers** | Customer table editable, SSN field Admin-only | Sales team edits customer info, can't modify SSN | -| **Performance ratings** | Review table accessible, Rating field Builder+ | Reviewers enter data, only managers edit final ratings | -| **Audit timestamps** | Any table, Created/Modified fields Read-only | Everyone sees when changes happened, no one can alter timestamps | -| **Calculated fields** | Financial table, Formula fields Read-only | Team views calculations, formulas protected from accidental changes | -| **Configuration settings** | Settings table, API Keys field Admin-only | Developers see other settings, can't edit production keys | - -### Field-level vs. hiding fields - -| Feature | Purpose | Visibility | Editing | -|---------|---------|------------|---------| -| **Field-level permissions** | Control who can EDIT | Everyone can see | Restricted by role | -| **Hide fields (view settings)** | Control who can SEE | Hidden from view | N/A if hidden | - -You can use field-level permissions when everyone should see the data, but only specific roles should edit it, and you need an audit trail of who can modify the data. - -Hide fields when the data shouldn't be visible at all, to simplify the interface for certain users, and to create role-specific views. - -You can **combine both**: hide the field in certain views and restrict editing via field permissions. - - ## How field-level permissions work -### Permission hierarchy within tables - -Field permissions operate as a **fourth layer** on top of table access: - -``` -1. Workspace Role (baseline) - โ†“ -2. Database Role (dept/project override) - โ†“ -3. Table Role (table access) - โ†“ -4. Field Permissions (column editing restrictions) -``` - -> Field permissions only matter if the member can access the table. - -**Example:** Marketing Team has **Editor** role on Customers Table. Customer SSN field set to **Admin-only** editing. Marketing can edit customer data, but cannot edit the SSN field (view only) - ### Permission levels -| Level | Who Can Edit | Common Use Cases | -|-------|-------------|------------------| -| **Admins only** | Workspace/database/table admins | Ultra-sensitive data: salary, SSN, legal documents | -| **Builders and higher** | Builders + Admins | Structural data: formulas, configurations, system settings | -| **Editors and higher** | Editors + Builders + Admins | Standard collaborative data (default) | -| **Nobody (Read-only)** | No one can edit | Calculated fields, audit timestamps, imported historical data | - -![Field permission levels](https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/093a077f-274a-4754-bd0f-3eb5a6049417/field_level_permissions.png) +| Level | Who can edit | +|-------|-------------| +| **Admins only** | Workspace/database/table admins | +| **Builders and higher** | Builders + Admins | +| **Editors and higher** | Editors + Builders + Admins | +| **Nobody (Read-only)** | No one can edit | ### Interaction with table roles -Field permissions **refine** table-level access, they don't replace it: +Field-level permissions are a way to refine the access a user already has at the table level; they do not replace table permissions. Field permissions can only restrict editing further; they can't grant editing to roles that can't edit the table. -| Table Role | Field Permission | Effective Access | +| Table role | Field permission | Effective access | |------------|------------------|------------------| | **Editor** | Editors and higher | โœ“ Can edit field | | **Editor** | Builders and higher | โœ— Can view, cannot edit | @@ -25250,11 +25359,7 @@ Field permissions **refine** table-level access, they don't replace it: | **Commenter** | Editors and higher | โœ— Can view, cannot edit (Commenter can't edit data) | | **Admin** | Admins only | โœ“ Can edit field | -> Field permissions can only restrict editing further; they can't grant editing to roles that can't edit the table. - - - -## Set field-level permissions +## Set field-level permissions 1. Navigate to your table to access field permission settings 2. Locate the field you want to protect @@ -25267,18 +25372,82 @@ Field permissions **refine** table-level access, they don't replace it: > Users see a lock icon or visual indicator on fields they cannot edit, making permissions transparent. +![Field permission levels](https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/093a077f-274a-4754-bd0f-3eb5a6049417/field_level_permissions.png) -## Advanced field permission strategies -### Strategy 1: Progressive data refinement workflow +## Field permissions in forms -Data moves through approval stages with increasing restrictions. Content publishing workflow, Clear workflow with each stage protected appropriately. +When using Baserow forms, field-level permissions affect which fields can be set during form submission: -**Implementation:** -1. Draft field: **Editors and higher** (team creates content) -2. Review Notes field: **Builders and higher** (managers review) -3. Approved field: **Admins only** (executives approve) -4. Published Date field: **Read-only** (system-generated, no edits) +- Fields with **Editors and higher**: โœ“ Can be included in forms +- Fields with **Builders and higher**: โœ— Cannot be set via form submission +- Fields with **Admins only**: โœ— Cannot be set via form submission +- Fields with **Read-only**: โœ— Cannot be set via form submission + +**To configure form submission restrictions:** +1. Set field permission level in table settings +2. The field automatically becomes unavailable in the form designer for restricted permissions +3. Form submitters can only fill fields they have permission to edit + +Learn more about [creating forms](/user-docs/guide-to-creating-forms-in-baserow). + + +## Field permissions and API access + +### API respects field permissions + +Field-level permissions apply to both web interface and API requests. API reads always return field data (if table access exists), API writes respect field permission levels. Attempting to edit a restricted field via API returns a permission error. + +**Example API response:** +```json +{ + ""error"": ""ERROR_FIELD_NOT_EDITABLE"", + ""detail"": ""User does not have permission to edit this field"" +} +``` + +> Test API integrations with different role accounts to ensure field permissions work as expected. + +Learn more about [Baserow API](/user-docs/database-api). + +## When to use field-level permissions + +### Field-level vs. other permission levels + +| Permission level | Granularity | Use when | +|-----------------|-------------|----------| +| **Workspace roles** | All content | Setting org-wide defaults | +| **Database roles** | All tables in database | Creating department boundaries | +| **Table roles** | All fields in table | Protecting entire tables | +| **Field permissions** | Individual columns | Protecting specific columns within accessible tables | + + +### Field-level vs. hiding fields + +You can use field-level permissions when everyone should see the data, but only specific roles should edit it, and you need an audit trail of who can modify the data. + +Hide fields when the data shouldn't be visible at all, to simplify the interface for certain users, and to create role-specific views. + +| Feature | Purpose | Visibility | Editing | +|---------|---------|------------|---------| +| **Field-level permissions** | Control who can EDIT | Everyone can see | Restricted by role | +| **Hide fields (view settings)** | Control who can SEE | Hidden from view | N/A if hidden | + +You can combine both: hide the field in certain views and restrict editing via field permissions. + + + +## Advanced field permission strategies + +### Strategy 1: Progressive data refinement workflow + +Data moves through approval stages with increasing restrictions. Content publishing workflow, Clear workflow with each stage protected appropriately. + +**Implementation:** +1. Draft field: **Editors and higher** (team creates content) +2. Review Notes field: **Builders and higher** (managers review) +3. Approved field: **Admins only** (executives approve) +4. Published Date field: **Read-only** (system-generated, no edits) ### Strategy 2: Sensitive columns in shared tables @@ -25326,43 +25495,6 @@ GDPR/HIPAA compliance for personal data. Customer relationship management, Compl - Medical Notes field: **Admins only** (healthcare team only) - Consent Date field: **Read-only** (legal requirement) -## Field permissions in forms - -When using Baserow forms, field-level permissions affect which fields can be set during form submission: - -- Fields with **Editors and higher**: โœ“ Can be included in forms -- Fields with **Builders and higher**: โœ— Cannot be set via form submission -- Fields with **Admins only**: โœ— Cannot be set via form submission -- Fields with **Read-only**: โœ— Cannot be set via form submission - -**Use case:** Public form for lead generation where form submitters can fill basic info, but internal ratings/scores can only be added by staff after review. - -**To configure form submission restrictions:** -1. Set field permission level in table settings -2. The field automatically becomes unavailable in the form designer for restricted permissions -3. Form submitters can only fill fields they have permission to edit - -Learn more about [creating forms](/user-docs/guide-to-creating-forms-in-baserow). - - -## Field permissions and API access - -### API respects field permissions - -Field-level permissions apply to **both web interface and API requests**. API reads always return field data (if table access exists), API writes respect field permission levels. Attempting to edit a restricted field via API returns a permission error. - -**Example API response:** -```json -{ - ""error"": ""ERROR_FIELD_NOT_EDITABLE"", - ""detail"": ""User does not have permission to edit this field"" -} -``` - -> **Best practice:** Test API integrations with different role accounts to ensure field permissions work as expected. - -Learn more about [Baserow API](/user-docs/database-api). - ## Troubleshooting field permissions ### ""Users can't edit expected fields"" @@ -25375,9 +25507,9 @@ Check field permission setting (Field Options โ†’ Permissions), verify user's ro This is because browser cache or session issue. Refresh the page (hard refresh: Cmd/Ctrl + Shift + R), clear browser cache, log out and log back in, and try a different browser to isolate the issue -### ""Admin can't edit field despite Admin role"" +### ""Workspace admin can't edit field despite Admin role"" -This is because the field is set to ""Read-only"" (Nobody). ""Read-only"" fields cannot be manually edited by anyone, including admins. This is intentional for calculated fields, formulas, and system-generated data. Change the field permission to ""Admins only"" if manual editing should be allowed for admins. +This is because the field is set to ""Read-only"" (Nobody). ""Read-only"" fields cannot be manually edited by anyone, including admins. Change the field permission to ""Admins only"" if manual editing should be allowed for admins. ### ""Permissions working in web but not in API"" @@ -25441,7 +25573,10 @@ No. Form submissions respect field-level permissions. Restricted fields cannot b Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. - [Ask the Baserow community](https://community.baserow.io) -- [Contact support](/contact) for questions about Baserow or help with your account",,baserow_user_docs,https://baserow.io/user-docs/field-level-permissions +- [Contact support](/contact) for questions about Baserow or help with your account + + + [1]: https://baserow.io/user-docs/assign-roles-at-table-level",,baserow_user_docs,https://baserow.io/user-docs/field-level-permissions 392,Field indexes,field-indexes,Field indexes in Baserow,"# Field indexes in Baserow Field indexes in Baserow transform slow queries into lightning-fast operations; reducing filter and search times by up to 80% on large tables by creating optimized data structures that accelerate lookups without changing your table structure. @@ -25507,7 +25642,7 @@ Here's what can be indexed: ## Using field indexes -Indexes work best alongside other optimizations: efficient [filters][6], [views][view-custom] focused on specific data subsets, and [API queries][100] structured to leverage indexed fields. +Indexes work best alongside other optimizations: efficient [filters][6], [views][view-custom] focused on specific data subsets, and [API queries][100] structured to leverage indexed fields. ### When to use field indexes @@ -25689,7 +25824,7 @@ Not all field types support constraints. Here's what can be constrained: ## What happens when constraints are violated -Baserow prevents operations that would violate constraints and provides clear error messages explaining the issue. +Baserow prevents operations that would violate constraints and provides clear error messages explaining the issue. ### Manual entry in Grid View @@ -25774,7 +25909,7 @@ No, constraints are either enabled or disabled; there's no temporary suspension. ### How do unique constraints handle case sensitivity? -Unique constraints are case-sensitive for text fields. ""example@email.com"" and ""Example@Email.com"" are not considered duplicates. +Unique constraints are case-sensitive for text fields. ""example@email.com"" and ""Example@Email.com"" are not considered duplicates. ### What's the difference between unique constraints and filters? @@ -25844,7 +25979,7 @@ Baserow self-hosted offers three license types: Premium, Advanced, and Enterpris ## Overview -Self-hosted Baserow licenses determine how paid features are distributed to users in your instance. You can change between plans as your needs evolve. +Self-hosted Baserow licenses determine how paid features are distributed to users in your instance. You can change between plans as your needs evolve. Self-hosted licenses also support [instance ID changes][3], allowing you to transfer licenses between different servers, migrate to new infrastructure without losing licensing, and maintain licensing continuity during deployment changes. @@ -25852,7 +25987,7 @@ Self-hosted licenses also support [instance ID changes][3], allowing you to tran ## License type comparison -The admin [subscribes per seat][1] and manually assigns users to seats. Mixing free and billable users within the same instance makes it possible to have multiple licenses in one instance and pay only for users who need upgraded features. The key difference lies in seat assignment. +The admin [subscribes per seat][1] and manually assigns users to seats. Mixing free and billable users within the same instance makes it possible to have multiple licenses in one instance and pay only for users who need upgraded features. The key difference lies in seat assignment. Understanding these differences helps you choose the right approach for your organization's size, budget, and administrative preferences. @@ -25860,13 +25995,13 @@ Understanding these differences helps you choose the right approach for your org Premium self-hosted licenses provide precise control over which users access paid features through manual seat assignment. Add additional Premium licenses as your organization grows. -> Premium plan doesnโ€™t support free roles or role-based permissions. You set the initial seat count when you [purchase a subscription][2], which defines your licensed user capacity. +> Premium plan doesnโ€™t support free roles or role-based permissions. You set the initial seat count when you [purchase a subscription][2], which defines your licensed user capacity. ### Advanced self-hosted licenses Advanced self-hosted licenses grant paid access to users on your instance, simplifying administration while providing [comprehensive features][4]. -> When you upgrade to the Advanced plan, start by buying only the number of paid seats you need. Once your license is active, you can then invite free users to join your workspace. +> When you upgrade to the Advanced plan, start by buying only the number of paid seats you need. Once your license is active, you can then invite free users to join your workspace. ### Enterprise licenses @@ -25880,7 +26015,7 @@ Enterprise licensing requires direct consultation with Baserow's sales team to e ### Can I mix different license types on the same instance? -No, you cannot combine different license types. Each instance must use a single license approach: Premium, Advanced, or Enterprise. +No, you cannot combine different license types. Each instance must use a single license approach: Premium, Advanced, or Enterprise. ### How do license transfers work between instances? @@ -25888,7 +26023,7 @@ You can [change the instance ID][3] associated with your subscription, allowing ### Can I have some users on free and others on self-hosted? -Yes, billable and free users can collaborate in the same workspaces as license is instance-based. Billable users access paid features while free users work within standard limitations. +Yes, billable and free users can collaborate in the same workspaces as license is instance-based. Billable users access paid features while free users work within standard limitations. ### Do I need to restart my instance after license installation? @@ -25899,7 +26034,7 @@ Ready to upgrade your self-hosted Baserow instance? Visit the [Baserow pricing p ## Related content - [Baserow pricing plans overview](/user-docs/pricing-plans) -- [Install self-hosted license](https://baserow.io/user-docs/get-a-licence-key) +- [Install self-hosted license](https://baserow.io/user-docs/get-a-licence-key) - [Enterprise license activation](/user-docs/activate-enterprise-license) - [Enterprise admin panel guide](/user-docs/enterprise-admin-panel) - [Getting and changing instance ID](/user-docs/getting-and-changing-the-instance-id) @@ -25916,7 +26051,7 @@ Still need help? If you're looking for something else, please feel free to make [2]: https://baserow.io/user-docs/buying-a-subscription [3]: https://baserow.io/user-docs/getting-and-changing-the-instance-id [4]: https://baserow.io/user-docs/pricing-plans - [5]: https://baserow.io/user-docs/get-a-licence-key",,baserow_user_docs,https://baserow.io/user-docs/self-hosted-licenses + [5]: https://baserow.io/user-docs/get-a-licence-key",billing,baserow_user_docs,https://baserow.io/user-docs/self-hosted-licenses 426,Cancel subscription,cancel-subscriptions,Cancel Baserow subscription,"# How to cancel your Baserow subscription In this section, we'll cover how to cancel your Baserow subscription. When you cancel, [paid features][1] continue working until your next scheduled payment date, but no refunds are provided for unused time. @@ -25965,7 +26100,7 @@ Your subscription status will update to show ""Canceling"" with the effective en ## After cancellation: transitioning to free features -Once your subscription expires, Baserow automatically transitions your account to the free plan. Your data remains intact, but you'll encounter feature limitations based on the free plan's restrictions. +Once your subscription expires, Baserow automatically transitions your account to the free plan. Your data remains intact, but you'll encounter feature limitations based on the free plan's restrictions. Consider downgrading to a lower-tier paid plan instead of canceling entirely. This approach maintains some paid features at a reduced cost, potentially providing a middle ground between full upgraded access and free plan limitations. @@ -26116,11 +26251,11 @@ If you're looking for something else or need further assistance with your Basero [9]: https://baserow.io/user-docs/getting-and-changing-the-instance-id",,baserow_user_docs,https://baserow.io/user-docs/update-payment-methods 458,Generative AI,configure-generative-ai,Configure AI models in Baserow,"# Configure generative AI in Baserow -Baserow integrates with multiple AI providers (OpenAI, Anthropic, Ollama, OpenRouter, Mistral) to power the [AI field][1] and generative features. +Baserow integrates with multiple AI providers (OpenAI, Anthropic, Ollama, OpenRouter, Mistral) to power the [AI field][1] and generative features. ## What you need to know -Baserow's generative AI configuration lets you connect your preferred AI models directly to your workspace. +Baserow's generative AI configuration lets you connect your preferred AI models directly to your workspace. Baserow Self-Hosted users can configure at workspace-level for team-specific models, or instance-level for organization-wide settings. @@ -26157,7 +26292,7 @@ For self-hosted Baserow, configure API keys globally using [environment variable Provide: - [OpenAI API key][6] for authentication. Without an API key, users cannot select OpenAI models. -- OpenAI organization name (optional) +- OpenAI organization name (optional) - Comma-separated list of [OpenAI models][7] to enable (e.g., `gpt-3.5-turbo, gpt-4-turbo-preview`). Note that this only works if an OpenAI API key is set. If this variable is not provided, the user wonโ€™t be able to choose a model. ### Anthropic setup @@ -26192,7 +26327,7 @@ Provide: ### What AI models are available on Baserow Cloud? -Baserow integrates with multiple AI providers (OpenAI, Anthropic, Ollama, OpenRouter, Mistral) to power the [AI field][1] and generative features. +Baserow integrates with multiple AI providers (OpenAI, Anthropic, Ollama, OpenRouter, Mistral) to power the [AI field][1] and generative features. ### Can I use multiple AI providers simultaneously? @@ -26244,7 +26379,7 @@ Yes. Workspace-level API keys and model selections take precedence over instance [16]: /user-docs/ai-field [17]: /user-docs/generate-formulas-with-baserow-ai [18]: https://community.baserow.io/ - [19]: /contact",,baserow_user_docs,https://baserow.io/user-docs/configure-generative-ai + [19]: /contact",workspace,baserow_user_docs,https://baserow.io/user-docs/configure-generative-ai 491,Write effective prompts,ai-prompt-guide,Writing effective AI prompts in Baserow,"# Write effective AI prompts in Baserow Great AI results start with clear prompts. Whether generating formulas, creating content in AI fields, or analyzing documents, specific instructions produce better outputs. This guide teaches you to write prompts that get accurate, useful results from Baserow's AI features. @@ -26282,7 +26417,7 @@ Return only one word. ### Classification ``` -Classify {Input Field} as [Option1], [Option2], or [Option3]. +Classify {Input Field} as [Option1], [Option2], or [Option3]. Return only one of these options. ``` @@ -26299,7 +26434,7 @@ This pattern is effective for condensing meeting notes, customer feedback, or lo ### Extraction ``` -Extract from {Input Field}: Item 1, Item 2, Item 3. +Extract from {Input Field}: Item 1, Item 2, Item 3. If any field is missing, return ""Not found"" ``` @@ -26308,7 +26443,7 @@ This pattern helps pull specific data from invoices, resumes, and forms. ### Generation ``` -Write a [content type] for [audience]. +Write a [content type] for [audience]. Input: {Field Name} Tone: [style] Length: [constraint] @@ -26367,23 +26502,23 @@ This pattern is ideal for creating product descriptions, email responses, and so ## Common mistakes ### Too vague -โŒ ""Analyze this data"" +โŒ ""Analyze this data"" โœ… ""Identify the top 3 sales trends from {Sales Data} in Q4 2024"" ### Missing context -โŒ ""Classify this: {Text}"" +โŒ ""Classify this: {Text}"" โœ… ""Classify this support ticket as Bug, Feature, or Question: {Ticket Description}"" ### No error handling -โŒ ""Extract invoice total from {PDF}"" +โŒ ""Extract invoice total from {PDF}"" โœ… ""Extract invoice total from {Invoice PDF}. If missing, return 'Unable to process'"" ### Overly complex -โŒ ""Analyze sentiment, extract topics, classify category, and generate response"" +โŒ ""Analyze sentiment, extract topics, classify category, and generate response"" โœ… Create separate AI fields for each task ### Generic field references -โŒ ""Calculate 10% of the total column"" +โŒ ""Calculate 10% of the total column"" โœ… ""Calculate 10% of {Order Total}"" ## Formula generation examples @@ -26393,8 +26528,8 @@ This pattern is ideal for creating product descriptions, email responses, and so **Prompt:** ``` -If {Due Date} is in the past, show 'Overdue'. -If it's within 7 days, show 'Due Soon'. +If {Due Date} is in the past, show 'Overdue'. +If it's within 7 days, show 'Due Soon'. Otherwise, show 'On Track'. ``` @@ -26403,8 +26538,8 @@ Otherwise, show 'On Track'. **Prompt:** ``` -If {Quantity} is over 100, reduce {Price} by 20%. -If {Quantity} is over 50, reduce by 10%. +If {Quantity} is over 100, reduce {Price} by 20%. +If {Quantity} is over 50, reduce by 10%. Otherwise, use full {Price}. ``` @@ -26429,25 +26564,25 @@ Calculate the number of days between today and {Event Date}. **Prompt:** ``` -Calculate the percentage difference between {Budget} and {Actual Spend}. +Calculate the percentage difference between {Budget} and {Actual Spend}. Round to 2 decimals. ``` ## Troubleshooting -**Why are my outputs inconsistent?** +**Why are my outputs inconsistent?** Lower the temperature to 0.1โ€“0.3 and add explicit constraints to improve consistency. -**Why does the AI ignore parts of my prompt?** +**Why does the AI ignore parts of my prompt?** Simplify the prompt and place the most important instructions first. -**Why is the AI making up information?** +**Why is the AI making up information?** Add: ""Only use information from `Field Name`. If not available, return 'Not found'."" -**Why is the output in the wrong format?** +**Why is the output in the wrong format?** Provide a clear example: ""Format as: Label: Value"" -**Why does it work for some rows but fail for others?** +**Why does it work for some rows but fail for others?** Handle empty fields explicitly: ""If `Field` is blank, return 'N/A'."" ## Related documentation @@ -26466,77 +26601,1264 @@ Handle empty fields explicitly: ""If `Field` is blank, return 'N/A'."" [1]: https://baserow.io/blog/write-effective-ai-prompts [2]: https://baserow.io/blog/transform-data-into-insights-with-baserow-ai",,baserow_user_docs,https://baserow.io/user-docs/ai-prompt-guide -590,Date dependency,date-dependency,Baserow's Date Dependency,"# Date dependency +524,Automation overview,workflow-automation,Workflow automation in Baserow,"# Workflow automation overview -Baserow's Date Dependency makes project planning simple by automatically shifting related tasks when your schedule changes. +Baserow Workflow Automation lets you build custom, no-code workflows that automatically perform tasks when specific events occur in your database. Connect triggers and actions to automate data entry, send notifications, and integrate external services, all without writing a single line of code. -This guide covers how to use Baserow's Date Dependencies feature to link rows and automatically manage project schedules. You'll learn how to set up dependencies and how they keep your timelines consistent. +## What is workflow automation in Baserow? -> This feature is available on a paid plan. To enable it, [upgrade your account by subscribing][1]. +Baserow Workflow Automation makes it easy to save time and streamline your database management by connecting triggers and actions into seamless, repeatable processes. -## Overview +With workflow automation, you can automatically perform tasks based on specific events in your database. Whether you need to send notifications when a new row is created, update records when certain conditions are met, or integrate with external services, workflows handle these tasks automatically. -Date Dependencies let you link rows in a table so that their dates update automatically based on relationships you set. When you adjust a ""parent"" row's date, all dependent ""child"" rows shift proportionally, preserving the original time intervals. +![Image showing Baserow workflow automation][1] -This feature is ideal for project schedules, Gantt charts, or any workflow where a delay in one task needs to automatically push back the start dates of all subsequent activities. You can create a dependency by linking two date fields (like a `Start Date` and `End Date`) and defining how they relate to each other. +### How workflows are structured -![Date dependency in Baserow][2] +Baserow's automation system uses a simple three-level hierarchy: -## How to set up date dependencies +| Level | Description | Example | +|-------|-------------|---------| +| **Automation** | Top-level container tied to a specific workspace | ""Customer Onboarding Automation"" | +| **Workflow** | A sequence of nodes that defines one automated process | ""Send welcome email when customer signs up"" | +| **Node** | Individual steps (triggers or actions) within a workflow | ""When row is created"" โ†’ ""Send email"" | -You can configure dependencies from your table or view settings. This setup applies to the entire table. +All nodes within a workflow execute sequentially when the workflow is triggered. - 1. Navigate to the [view][3] or [table menu][4] you want to manage. - 2. Click the three-dot icon (`โ‹ฎ`) next to any table or view to open the menu. - 3. Select **""Configure date dependencies""** from the dropdown menu. - 4. A configuration modal will open. From here: - * **[""Select 'Duration' field...""]** This field must use the โ€œd hโ€ [duration format][5]. - * **[""Select the 'Start [Date' field][6]...""]** - * **[""Select the 'End [Date' field][6]...""]** - * **[""Define the relationship...""]** Use a [Link-to-table field][7] to connect a row to its predecessors. -5. Click **Save** +## Key concepts - -Once configured, any change you make to a date in one linked row will automatically adjust the dates in its dependent rows to maintain the correct schedule. +### Triggers and actions +Every workflow starts with a trigger and continues with one or more actions. -## Frequently Asked Questions (FAQs) +| Node type | Function | Position in workflow | Can be deleted? | +|-----------|----------|---------------------|----------------| +| **Trigger** | The starting event that initiates the workflow | Always first | No, only replaced | +| **Action** | A task that reads/modifies records, interacts with tables, or controls workflow flow | Follows the trigger | Yes | -### Does this only work with Timeline Views? +**Example workflow:** When a new customer row is created (Trigger) โ†’ Send a welcome email (Action) โ†’ Add them to a mailing list (Action). -No, Date Dependencies are set at the table level and will apply to all views. However, they are most visually apparent and useful when used with the **[Timeline View](/user-docs/guide-to-timeline-view)**, as you can see the schedule shifts in real-time. +### Workflow states: Test vs. published -### Can I link dates across different tables? +Workflows operate in two distinct execution modes: -Date Dependencies currently only apply to rows within the same table. +| State | Purpose | Execution behavior | +|-------|---------|-------------------| +| **Test run** | Verify configuration, logic, and output before going live | Executes once per manual test initiation | +| **Published** | Production mode for live automation | Executes indefinitely whenever the trigger event occurs | -### Can I use fields like ""Created on"" or ""Last modified""? +You can test each action or trigger event to confirm the configuration is correct. Data from the test can be used in later steps. -Dependencies generally require editable date fields (like `Date` or `Last Modified`). You cannot typically use a computed field like `Created on` as the one that gets *changed* by a dependency. +You can also click **Start test run** to test the entire workflow. + +> Test runs must be manually initiated each time. The workflow will not automatically re-run until you click ""Test event"" or ""Start test run"" again. + +### Workflow history + +The History tab logs all workflow executions, both successful and failed. Use this log to monitor workflow performance, debug issues when automations fail, track when workflows executed and what data they processed + +## How to build and manage workflows + +### Creating an automation + +1. Navigate to the workspace where you want the automation +2. Click the **+ Add new** button in the sidebar +3. Select **Automation** from the dropdown menu +4. (Optional) Click the ellipsis beside the automation name and select **Rename** to give it a descriptive name or **Duplicate** to create a copy of an automation. + +> Learn more about [how snapshots work in Baserow][2]. + +### Building your workflow + +After creating an automation, build your workflow by adding and connecting nodes: + +1. The **Trigger** node is automatically placed at the start. You can replace the default trigger node. +2. Click the **+** icon after the Trigger to open the node selector +3. Choose an **Action** or **Router** node to add to your workflow +4. Drag and drop nodes to reorder them (a dotted border shows valid drop locations) +5. Click any node to configure it in the right-hand sidebar + +> Rename nodes by clicking them and editing the label field to make your workflow more readable. + +### Testing individual nodes + +Test nodes individually before running the entire workflow: + +1. Ensure all preceding nodes have been tested and configured +2. Select the node you want to test +3. Click **Test event** in the right-hand configuration sidebar +4. The node will populate with sample data from the test run, which subsequent nodes can reference + +### Publishing and managing workflows + +- **To publish:** Click the **Publish** button in the header. The workflow will run automatically whenever triggered. +- **To pause:** Click the toggle switch (marked ""Published"") in the header to temporarily stop execution. +- **To resume:** Click the toggle switch again to reactivate the workflow. + +### Working with router nodes + +Router nodes create conditional branches in your workflow based on Boolean (true/false) conditions. + +> You cannot delete or replace a Router node until all downstream nodes in its branches have been removed first. This prevents orphaned nodes from existing in your workflow. + +![image Baserow router automation][3] + +## Frequently asked questions + +### What's the difference between an automation and a workflow? + +An automation is the top-level container that can hold multiple workflows. A workflow is a specific sequence of triggers and actions that performs one automated task. Think of an automation as a folder and workflows as the individual processes inside it. + +### How many actions can I add to a single workflow? + +You can add multiple actions to a single workflow. All actions execute sequentially after the trigger fires, in the order they appear in your workflow. + +### Can I reuse the same trigger type across multiple workflows? + +Yes. Each workflow can have its own trigger, even if multiple workflows use the same trigger type (like ""When row is created""). Each workflow operates independently. + +### What happens if a workflow fails during execution? + +Failed executions are logged in the History tab with error details. The workflow stops at the point of failure and doesn't continue to subsequent actions. You can review the error message and fix the configuration. + +### Do test runs affect my live database data? + +Yes. Test runs execute real actions on your database. If a test action creates, updates, or deletes records, those changes will be applied to your live data. ## Related content - * [Timeline View](/user-docs/guide-to-timeline-view) - * [Date and time fields](/user-docs/date-and-time-fields) - * [Views overview](/user-docs/overview-of-baserow-views) - * [Configure table options](/user-docs/customize-a-table) + - [Webhooks](/user-docs/webhooks) - Trigger workflows from external services + - [Database API documentation](/user-docs/database-api) - Connect workflows to external APIs + - [Workflow Triggers: How to start an automation](/user-docs/automation-triggers) + - [Workflow Actions: Reading and modifying data](/user-docs/automation-actions) + - [Automation Settings](/user-docs/automation-settings) + - [Manage workflow automation](/user-docs/workflow-management) ---- +------------- +Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. -Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; weโ€™re ready to assist you. +- [Ask the Baserow community](https://community.baserow.io) +- [Contact support](/contact) for questions about Baserow or help with your account. - - [Ask the Baserow community](https://community.baserow.io) - - [Contact support](/contact) for questions about Baserow or help with your account. + [1]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/cc7a3dde-3ad3-4ae8-9776-bd1cebf1d9c1/Baserow%20workflow%20automation.jpg + [2]: https://baserow.io/user-docs/snapshots + [3]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/14d8595d-2484-458a-b77b-dc25018110b1/Baserow%20router%20automation.jpg",,baserow_user_docs,https://baserow.io/user-docs/workflow-automation +525,Workflow triggers,automation-triggers,Baserow workflow triggers,"# Workflow triggers: How to start an automation - [1]: https://baserow.io/pricing - [2]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/be957e7c-0a80-4956-993c-80c2836cd6f9/date_dependency.png - [3]: https://baserow.io/user-docs/view-customization - [4]: https://baserow.io/user-docs/customize-a-table - [5]: https://baserow.io/user-docs/duration-field - [6]: https://baserow.io/user-docs/date-and-time-fields - [7]: https://baserow.io/user-docs/link-to-table-field",,baserow_user_docs,https://baserow.io/user-docs/date-dependency +Triggers are the starting point of every Baserow workflow. They define when your automation runs, whether on a schedule, when data changes in your tables, or when external services send requests. Configure your trigger first, then build actions that respond to it. + +## What are workflow triggers? + +Triggers define **when** and **why** your automated workflow should start, ensuring your tasks run exactly when they're needed. + +Every Baserow workflow begins with a trigger, which is the event that initiates your entire automation sequence. Without a trigger, your workflow has no way to know when to execute. Triggers can be time-based (run every hour), data-driven (when a row is created), or external (when an API request is received). + +![image Baserow workflow automation][1] + +### How triggers work + +Once configured and tested, triggers generate a **data payload** containing information about the triggering event. This payload can include: +- The row that was created, updated, or deleted +- Data sent in an HTTP request +- Timestamp information from periodic triggers + +All subsequent action nodes in your workflow can access and use this trigger data to perform their tasks. + +| Characteristic | Description | +|----------------|-------------| +| **Always first** | Triggers must be the first node in every workflow | +| **Cannot be deleted** | You can only replace a trigger with a different trigger type | +| **Generates data** | Creates a payload that subsequent actions can reference | +| **Must be tested** | Requires testing to populate sample data for workflow building | + +## Available trigger types + +Baserow provides categories of triggers to match different automation needs. + + - Periodic trigger (time-based) + - Table-change triggers (data-driven) + - Receive an HTTP request (webhook) + +![image of Baserow trigger automation][2] + +### Periodic trigger (time-based) + +The periodic trigger executes your workflow on a fixed schedule without requiring any external input. Schedule workflows to run automatically at regular intervals, like generating daily reports or cleaning up old data. + +**Configuration:** + +| Setting | Description | Example | +|---------|-------------|---------| +| **Label** | Descriptive name for your trigger | ""Daily Sales Report"" | +| **Interval** | How often the workflow runs | Every hour, daily at 9 AM, weekly on Monday, Monthly | + +The periodic trigger can be scheduled to run at every specified minute. In Baserow Cloud, the minimum you can set is every 15 minutes. Users on the self-hosted version can set it as low as every minute. + +This trigger is useful to send weekly summary emails to your team, archive completed tasks every night, check for expired records hourly, or generate monthly reports automatically. + +### Table-change triggers (data-driven) + +These triggers monitor your Baserow tables and fire immediately when specified changes occur. React to changes in your database in real-time, like notifying users when data is added, updated, or removed. + + +| Trigger type | Starts when | Example use case | +|--------------|-----------|------------------| +| **Rows are created** | New rows are added to a table | Welcome new customers, assign tasks to team members | +| **Rows are updated** | Existing rows are modified | Notify stakeholders of status changes, log edit history | +| **Rows are deleted** | Rows are permanently removed | Archive deleted data elsewhere, send deletion confirmations | + +**Configuration (applies to all table-change triggers):** + +1. **Label:** Give your trigger a descriptive name +2. **Integration:** Select the integration that connects to your workspace. Authorizing your account gives everyone who has edit permissions to the application full access to the data you have access to. +3. **Database:** Choose the database containing your table +4. **Table:** Select the specific table to monitor + +**Batch behavior** + +When rows are created or updated through the API, the trigger behavior depends on how the rows are sent: + +Single request creating multiple rows: +If one API request creates several rows (for example, 10 rows in a single batch), the workflow trigger fires once, passing an array of all affected rows. + +Multiple requests creating individual rows: +If you send separate requests for each row (for example, 10 individual requests), the workflow trigger fires once per request, resulting in 10 separate workflow executions. + +### Receive an HTTP request (webhook) + +This trigger creates a unique webhook URL that external services can call to start your workflow. When Baserow receives a request at this URL, the workflow executes with the request data as its payload. + +Connect external applications and services to your Baserow workflows, enabling integrations with tools like Zapier, Make, or custom applications. + +**Configuration:** + +| Setting | Description | Recommendation | +|---------|-------------|----------------| +| **Label** | Descriptive name for your webhook | ""Stripe Payment Webhook"" | +| **Webhook URL** | Auto-generated URL to receive requests | Copy this URL to your external service | +| **Allowed HTTP methods** | Which request types trigger the workflow | Select ""Exclude GET"" for security | + +**Why exclude GET requests?** + +GET requests are used by web browsers and crawlers for simple page visits. Excluding GET prevents your workflow from accidentally triggering when someone visits the URL in a browser or when search engines crawl it. Use POST, PUT, or other methods for intentional triggers. + +**Common use cases:** + - Process payments from Stripe or PayPal + - Receive form submissions from your website + - Sync data from external CRM systems + - Trigger workflows from Zapier or Make automations + +## How to test your trigger + +Testing generates sample data that you'll use to configure your workflow's actions. Always test your trigger before adding actions. + +### Testing time-based triggers + +1. Configure your periodic trigger settings +2. Click **Test event** in the trigger configuration sidebar +3. The trigger will execute once immediately +4. Review the generated timestamp data in the trigger node + +### Testing table-change triggers + +1. Configure your table-change trigger +2. Manually perform the action in your table (create, update, or delete a row) +3. Click **Test event** in the trigger configuration sidebar +4. Baserow will capture the most recent matching event +5. Review the row data now available in the trigger node + +> If no data appears, verify you performed the triggering action (like creating a row) in the correct table. + +### Testing webhook triggers + +1. Configure your webhook trigger +2. Copy the generated webhook URL +3. Send a test HTTP request to the URL using: + - A tool like Postman or cURL + - Your external service's test feature + - A simple form submission +4. Click **Test event** in Baserow +5. The trigger will capture the request data you sent + +**Example test request (using cURL):** +```bash +curl -X POST [YOUR_WEBHOOK_URL] \ + -H ""Content-Type: application/json"" \ + -d '{""customer_name"": ""John Doe"", ""amount"": 99.99}' +``` + +## Frequently asked questions + +### Can I have multiple triggers in one workflow? + +No. Each workflow can have only one trigger. If you need to respond to multiple different events, create separate workflows, one for each trigger type. However, you can use conditional logic (Router nodes) after a single trigger to handle different scenarios. + +### What happens if a trigger fires while the workflow is already running? + +Each trigger event creates a new workflow execution. If your workflow is still processing and a new trigger fires, Baserow will start a second concurrent execution. Both will run independently with their own data payloads. + +### Can I manually trigger a workflow without waiting for the event? + +Yes, use the **Start test run** button to manually execute the workflow once with your test data. This is useful for debugging and development. However, manual test runs don't replace actual trigger events in production. + +### How do I see when my trigger last fired? + +Check the **History** tab in your automation. It logs every trigger event with timestamps, showing when workflows executed and whether they succeeded or failed. + +### Can I temporarily disable a trigger without deleting the workflow? + +Yes, use the toggle switch to pause your published workflow. This stops the trigger from firing while keeping your configuration intact. Toggle it back on to resume automation. + +### What's the difference between testing and publishing a workflow? + +Testing executes the workflow once with sample data for development purposes. Publishing activates the workflow indefinitely; it will continue responding to trigger events until you pause or unpublish it. + +### Can external webhooks include authentication? + +The webhook URL itself doesn't require authentication by default. For security, you can: + - Exclude GET requests to prevent accidental triggers + - Validate request data within your workflow actions + - Use query parameters or headers that your external service provides + - Keep the webhook URL private (don't share it publicly) + + +> All API requests must use JSON. Other formats, such as XML, are not accepted. + +## Troubleshooting common issues + +### Trigger test shows no data + +**Cause:** The triggering event hasn't occurred yet. + +**Solution:** For table-change triggers, manually create/update/delete a row in the specified table, then test again. For webhooks, send a test request to the URL first. + +### Workflow doesn't fire after publishing + +**Cause:** The workflow is paused, or the trigger event isn't occurring. + +**Solution:** Check the toggle switch shows ""Live"" (not paused). Verify the trigger event is actually happening in your database or that external services are sending requests. + +### Webhook returns an error + +**Cause:** The external service is using an excluded HTTP method or sending invalid data. + +**Solution:** Verify the HTTP method is allowed (check your ""Allowed HTTP methods"" setting). Review the History tab for specific error messages. + +## Related content + + - [Workflow automation overview](/user-docs/workflow-automation) - Learn the basics of Baserow workflows + - [Webhooks](/user-docs/webhooks) - Detailed webhook configuration guide + - [Manage workflow automation](/user-docs/workflow-management) + - [Database API documentation](/user-docs/database-api) - Connect external services to Baserow + - [Workflow automation](/user-docs/workflow-automation) + - [Workflow Actions: Reading and modifying data](/user-docs/automation-actions) + - [Automation Settings](/user-docs/automation-settings) + +--- + +Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. + + - [Ask the Baserow community](https://community.baserow.io) + - [Contact support](/contact) for questions about Baserow or help with your account + + + [1]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/3a11987e-6c82-47d8-9670-19cc14397edb/Baserow%20workflow%20automation.jpg + [2]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/d23180d4-fcc1-437f-a744-01d385059d62/Baserow%20trigger%20automation.jpg",,baserow_user_docs,https://baserow.io/user-docs/automation-triggers +526,Workflow actions,automation-actions,Baserow Workflow actions,"# Workflow actions: Reading and modifying data + +Baserow workflow actions turn static data into dynamic processes by automating updates, notifications, and external syncs instantly. + +This guide covers the available action types, how to configure them, and how to control workflow logic using routers and iterators. + +## Overview + +Actions are the core working units of your automation, taking the data payload from the [trigger][1] and using it to perform tasks across your database or external platforms. + +After a trigger initiates your workflow, actions execute sequentially to accomplish your automation goals. Whether you need to add customer data to your database, send welcome emails, update order statuses, or sync information with external services, actions handle these tasks automatically. + +| **Action type** | **Function** | **Examples** | +| --- | --- | --- | +| **Data actions** | CRUD operations on Baserow tables | Create row, Update row, Delete row, Get/List rows, Summarize field | +| **Logic actions** | Control flow and loops | Router (If/Then), Iterator (Loops) | +| **Integrations** | External communication | HTTP Request, Send Email, AI Prompt, Send a Slack message | + +![Baserow workflow automation image][2] + +## How actions use trigger data + +Once a [trigger][1] starts the workflow, actions execute sequentially to manipulate data or communicate with other services. + +Every action can access data from previous nodes in the workflow: +- **[Trigger][1] payloads:** Row data from created/updated/deleted records +- **Previous action results:** Data retrieved by ""Get single row"" or ""List multiple rows"" +- **HTTP responses:** Data returned from external API calls +- **Dynamic values:** You can use formulas to transform data between steps (e.g., formatting a date before sending it in an email). + +This data flow allows you to build automations where each action builds upon the results of previous steps. The trigger node must be tested first to confirm the configuration is correct. + +| Concept | Description | Example | +|---------|-------------|---------| +| **Sequential execution** | Actions run in order from top to bottom | Create row โ†’ Send email โ†’ Update status | +| **Data mapping** | Data from the trigger/previous action data can be used in later steps to action fields. Every action can access data from the trigger and any previous action in the chain. | Use trigger's ""customer_email"" field in ""Send email"" action | +| **Sample data** | Test data generated for workflow building | Test creates a row, then uses that row's ID in the update action | +| **Dependencies** | Actions require previous nodes to be tested first | Can't configure ""Update row"" until ""Create row"" is tested | + +## Baserow data actions + +These actions interact directly with your Baserow tables, providing complete control over your data. + +All Baserow data actions require these basic settings: +- **Label:** Descriptive name for the action +- **Integration:** Connection to your Baserow database +- **Database:** Which database contains the table +- **Table:** The specific table to interact with + +### Create a row + +This action automatically adds a new row to a specified table when certain events occur. You can define the values that should be included in the new row based on your workflow needs. + +**Configuration:** + +1. Select your integration, database, and table +2. **Map fields:** For each field in your table: + - Enter static values (like ""New"" for a status field) + - Use trigger data (like the customer name from a form submission) + - Combine multiple values (like first name + last name) +3. Test the action to generate a sample row + +Common use cases include adding new customers from website form submissions, creating tasks when a projectโ€™s status changes, logging activity when external events occur, or duplicating existing rows with modifications. + +### Update a row + +This action allows you to modify existing records in your table based on changing conditions or new information. It updates specific field values in a row without altering any other fields. + +**Configuration:** + +1. Select your integration, database, and table +2. **Row ID:** The `row_id` value must be an integer or convertible to an integer. Specify which row to update using: + - Use the row ID from your trigger (for row update triggers) + - Reference a row ID from a previous ""Get single row"" action + - Use a specific row ID number +3. **Map fields:** Define which fields to update and their new values +4. Test the action to verify the update + +Common use cases include updating an order status when payment is received, marking tasks as complete when all subtasks are finished, incrementing counters when events occur, and syncing changes from external systems. + +> Only mapped fields are updated. All other fields retain their current values. + +### Delete a row + +This action removes records from your table that are no longer needed or meet specific deletion criteria. + +**Configuration:** + +1. Select your integration, database, and table +2. **Row ID:** The row_id value must be an integer or convertible to an integer. Specify which row to delete using: + - Trigger data (for row deleted triggers to log deletions) + - A previous action's row ID + - A specific row ID number +3. Test the action (use test data, not production data) + +Common use cases include automatically removing expired records, cleaning up temporary data after processing, deleting spam or invalid submissions, and archiving data by copying it elsewhere before deletion. + +> When rows are deleted, theyโ€™re moved to the workspace trash and can be restored within a limited time. After this period, the rows are permanently removed. Learn more about [deleting and recovering data in Baserow][3]. + +### Get single row + +This action retrieves the details of a specific record so that its data can be used in subsequent workflow steps. It fetches all information for one row, allowing you to reference it in later actions. + +**Configuration:** + +1. Select your integration, database, and table +2. **View:** (Optional) Apply a view's filters and sorting +3. **Row ID:** (Optional) The `row_id` value must be an integer or convertible to an integer. Specify a specific row + - Leave empty to get the first matching row after refinements +4. **Refinements:** Apply additional [filters][4]: + - Filter by field values + - Search for specific text + - Sort results + +**How row selection works:** +- If you specify a Row ID โ†’ Returns that exact row (if it exists) +- If Row ID is empty โ†’ Returns the first row matching your refinements +- If no refinements โ†’ Returns the first row in the table/view + +Common use cases include looking up customer details before sending personalized emails, checking current inventory levels before creating orders, retrieving configuration settings for the workflow, and finding related records that need to be updated. + +### List multiple rows + +This action retrieves multiple records from your table, allowing you to process, analyze, or display them in batch operations. It fetches data for several rows based on specified criteria and returns them as a collection that can be iterated through in your workflow. + +> To process each row from this list individually, pass the results to an **Iterator** node. + +**Configuration:** + +1. Select your integration, database, and table +2. **View:** (Optional) Apply a view's filters and sorting +3. **Refinements:** Configure criteria: + - Add [filters][4] to narrow results + - Apply sorting to control order + - Use search to find specific text +4. **Default result count:** How many rows to fetch + - Set to a specific number (e.g., 10, 50, 100) + - Set to 0 for on-demand loading (better performance) + +> Setting default result count to 0 and using pagination can improve page load times. + +Common use cases include finding all overdue tasks to send reminder emails, getting recent orders for daily summary reports, listing active customers for batch updates, and retrieving filtered data for synchronization with external systems. + +### Summarize field + +This action calculates aggregate statistics across multiple rows without retrieving each individual record. It performs mathematical operations on a specified field and returns a single calculated value. + +**Configuration:** + +1. Select your integration, database, and table +2. **Field:** Choose which field to summarize +3. **Aggregation type:** Select the calculation. Learn more about [data summaries][5] +4. **Refinements:** Apply [filters][4] to calculate only on specific rows + +Common use cases include calculating total revenue for the current month, counting how many tasks are still open, finding the average rating across all reviews, and identifying the highest priority value currently in the queue. + +## Workflow control actions + +### Router (conditional branching) + +The Router action enables conditional branching within your workflow, allowing you to execute different actions based on data values. It functions like ""if-this-then-that"" logic, splitting your workflow into multiple paths so that each set of actions runs only when its conditions are met. + +**How the Router node works:** + +1. **Define branches:** Add multiple conditional paths (e.g., ""High Priority,"" ""Medium Priority,"" ""Low Priority"") +2. **Set conditions:** Switch from using regular input to using advanced input, to use [Baserow formula conditions][6]. With the advanced input, you can use operators to compare values directly within the router configuration. +3. **Execution order:** Branches are checked left to right +4. **First match wins:** The workflow follows the first branch where the condition is true +5. **Default fallback:** If no conditions are met, the ""Default branch"" executes + +**Configuration:** + +- **Branch conditions:** Must use formulas or comparisons that return true/false +- **Branch labels:** Give each path a descriptive name +- **Default branch:** Optionally label this fallback path + +> You cannot delete a Router node until all actions in its branches have been removed first. + +Common use cases include routing high-value orders to a manager for approval, sending different email templates based on customer type, applying different validation rules depending on the data source, and escalating tasks according to their age or priority. + +![Baserow router node image][7] + +### Iterator (iterate on items) + +The Iterator node provides advanced workflow control by letting you process multiple items in a list, one by one. It acts as a loop, running a set of nested actions for each item in a data source you provide. + +This action is useful for batch operations. Its most common use case is processing the results from a **List multiple rows** action. For example, if you use ""List multiple rows"" to find 10 customers, you can use an Iterator to loop through that list and send 10 separate, personalized emails. + +**Configuration:** + +1. Select the Iterator node to open its settings. +2. Configure the required fields in the sidebar: + +| Setting | Description | +| --- | --- | +| **Label** | A descriptive name for your iterator (e.g., ""Loop over each task""). | +| **Source** | The list or array of items you want to iterate over. This is typically mapped from the result of a ""List multiple rows"" action. | + +> Advanced formula mode: Switch to **advanced input** to use Baserow formula functions and operators to define the source list dynamically. + +After configuring the **Source**, add new action nodes by dragging them *inside* the Iterator node in the workflow builder. + +These nested actions will run once for *each item* in the source list. Inside a nested action (like ""Update a row""), you can access the data for the *current item* from the Iterator's output in the data mapping panel. This allows you to use the `row_id` or other fields from the specific item being processed in that loop. + +The workflow will only proceed to the nodes *after* the Iterator once all items in the list have been processed. + +## External integration actions + +### Send a Slack message + +This action sends a message directly to a Slack channel or specific user when your workflow runs. + +**Configuration:** + +1. **Integration:** Select your ""Slack Bot"" integration. +2. **Channel:** Choose the channel name or User ID to receive the message. +3. **Message:** Enter the text content. You can use dynamic data (e.g., `New lead: [Name]`) to personalize the message. + +How to set up the Slack Bot: + +To use this integration, you must create a Slack App and issue a token. + + 1. Navigate to your [workspace's apps page][8]. + 2. Create a new App in the **Slack API** portal, choose 'From scratch' and enter a name. Select the workspace your app should operate in, and click 'Create'. + > Notify your Slack workspace admin if you are unable to create a new Slack app. If you are re-using an existing app which can write messages, proceed to **Step 5** to install the app to your workspace. + + 3. In the left sidebar, navigate to **OAuth & Permissions**, scroll down to Scopes and under 'Bot Token Scopes', select 'Add an OAuth Scope'. + 4. To allow your app to post messages, add the `chat:write` scope. + 5. Navigate to the 'Settings' -> 'Install App' to install the App to your workspace. + 6. Copy your **Bot User OAuth Token** and store it in the 'Bot User Token' field in the Slack integration form in Baserow. + 7. **Crucial Step:** You must invite the bot to the Slack channel you wish to post in (e.g., type `/invite @YourBotName` in the Slack channel). + +### Send an HTTP request + +This action allows your workflow to connect to any external API or web service, enabling broad integration possibilities. It sends data via HTTP requests, letting you trigger actions in other platforms or retrieve information from external systems. + +**Configuration:** + +| Setting | Description | Example | +|---------|-------------|---------| +| **HTTP method** | Request type required by the API | POST (create data), GET (retrieve data), PUT (update data), DELETE (remove data), PATCH, HEAD, OPTIONS | +| **Endpoint URL** | The API's destination address | `https://api.example.com/v1/customers` | +| **Query parameters** | Data passed in the URL | `?customer_id=123&action=notify` | +| **Headers** | Metadata sent with the request | `Authorization: Token YOUR_TOKEN` | +| **Body type** | Format of the data payload | JSON (most common), Form data, Raw text | +| **Body content** | The actual data being sent | Customer details, order information, etc. | +| **Timeout** | Max wait time for response | 30 seconds (default) | + +> You can insert trigger and action data anywhere using dynamic data. + +Common use cases include sending new customer data to your CRM, notifying Slack channels when important events occur, automatically creating Trello cards or Jira issues, syncing order data with fulfillment services, updating external inventory management systems, and triggering workflows in platforms like Zapier or Make. + +**Example: Sending data to Slack** +``` +Method: POST +URL: https://hooks.slack.com/services/YOUR/WEBHOOK/URL +Body Type: JSON +Body: +{ + ""text"": ""New customer registered: customer_name"", + ""channel"": ""#sales"" +} +``` + +Learn more about [Baserow database tokens][9]. + +### Send an email + +This action allows your workflow to automatically notify users, teams, or customers when specific events occur. It sends emails using your configured SMTP settings, enabling immediate communication from your automation. + +**Configuration:** + +**SMTP configuration for email actions** + +To send emails from Baserow, you must configure an SMTP integration for each email action. + +Open the Integration sidebar and select **Add new integration**. In the modal, enter your SMTP credentials: host, port, username, and password. + +**Recipients:** +- **From email:** The sender address (must be configured in your SMTP settings) +- **From name:** (Optional) Display name for the sender (e.g., ""Baserow Notifications"") +- **To emails:** Primary recipients (comma-separated for multiple) +- **CC emails:** (Optional) Carbon copy recipients +- **BCC emails:** (Optional) Blind carbon copy recipients + +**Content:** +- **Subject:** Email subject line (can include dynamic data) `New order #order_id received` +- **Body:** Email content (can include trigger/action data) `Hello customer_name, thank you for your order...` +- **Body type:** Plain text or HTML for styled emails + +Common use cases include welcoming new users after registration, sending order confirmation emails, notifying team members when tasks are assigned, alerting managers about high-priority items, sending daily or weekly summary reports, and reminding users about upcoming deadlines. + +**HTML email example:** +```html +

Welcome to Baserow, customer_name!

+

Your account has been created successfully.

+
    +
  • Email: email
  • +
  • Account ID: row_id
  • +
+

Get Started

+``` + +### AI Prompt + +The AI Prompt node connects to [generative AI models][10] to execute prompts, analyze data, or generate content directly within your workflow. This allows you to build powerful automations that can summarize text, categorize customer feedback, translate languages, or generate email replies based on your Baserow data. + +**Configuration:** + +To use the AI Prompt, you must first configure an AI integration. + +1. **Select AI integration:** + + * Click the **AI integration** dropdown. If you have already set up AI in your workspace, you can select it here. + * To add a new one, click **Add new integration**. A modal will appear. + * **Workspace AI Settings:** By default, new integrations inherit [settings from your workspace][10]. You can override specific AI providers with different API keys or models if needed. + * Click **Create** to save the integration. + +2. **Configure AI action:** + Once your integration is set, configure the AI prompt settings in the sidebar. + +| Setting | Description | +| --- | --- | +| **Label** | A descriptive name for the AI action (e.g., ""Summarize feedback""). | +| **AI Provider** | Select the specific AI provider you configured in your integration (e.g., OpenAI). | +| **Output Type** | Choose how the AI should format its response:
\* **Text:** For free-form responses, summaries, or generative content.
\* **Choice:** For classification tasks where you want the AI to select from a specific list of options. | +| **Temperature** | Controls randomness (0.0 - 2.0). Lower values (e.g., 0.2) are more focused and deterministic. Higher values (e.g., 0.8) are more creative and varied. | +| **Prompt** | The most important field. Write your prompt and use dynamic data from previous nodes.
**Example:** `Summarize the following customer feedback into one sentence: [map 'Notes' field from trigger]` | +| **Advanced formula mode** | Check this box to use an expression to dynamically generate the entire prompt. | + +## Testing and debugging actions + +To test an action, + +1. Ensure all previous nodes (trigger and any prior actions) have been tested +2. Click the action node to open its configuration +3. Configure all required settings and field mappings +4. Click **Test this event** in the sidebar +5. Review the results to verify correct execution +6. Check the generated sample data for use in subsequent actions + +> **Why previous nodes must be tested first:** Actions often reference data from earlier steps. You can't properly configure field mappings without test data from previous nodes. + +After testing an action, review several key indicators to ensure it worked correctly. Look for success indicators, examine the payload generated by the action, and verify that all field values were mapped correctly. + +Also, check for error messages in the history which indicate configuration issues that need to be addressed. + +## Frequently asked questions + +### How many actions can I add to a workflow? + +You can add multiple actions to a single workflow. They execute sequentially in the order they appear. There's no strict limit, but consider workflow performance for very long sequences. + +### Can I reuse data from multiple previous actions? + +Yes. Any tested node's data is available to all subsequent actions. For example, you can use row data from both a ""Get single row"" action and a ""Create a row"" action in a later ""Send email"" action. + +### What happens if an action fails? + +The workflow stops at the failed action and doesn't execute subsequent steps. The failure is logged in the History tab with error details. Fix the configuration and test again. + + +### How do I delete a Router node? + +First, delete all actions in every branch coming out of the Router. Once all downstream actions are removed, you can delete or replace the Router node itself. + +### What's the difference between ""Get single row"" and ""List multiple rows""? + +""Get single row"" returns one record as an object with its field values. ""List multiple rows"" returns multiple records as an array/collection that you might need to iterate through. + +### Do HTTP requests timeout? + +Yes. Configure the timeout setting to control how long the workflow waits for a response. If the external service doesn't respond within the timeout period, the action fails. + +### Can I send emails to multiple recipients? + +Yes. Enter multiple email addresses separated by commas in the ""To emails,"" ""CC emails,"" or ""BCC emails"" fields. You can also use dynamic values from your trigger or previous actions. + +### How do I know which HTTP method to use? + +Check the external API's documentation. Generally: + - **GET:** Retrieve data + - **POST:** Create new records + - **PUT/PATCH:** Update existing records + - **DELETE:** Remove records + +### How do I update multiple rows at once? + +The best way to update multiple rows is to combine three actions: + +1. **List multiple rows:** Find all the rows you want to update (e.g., all tasks with ""Pending"" status). +2. **Iterator:** Set the source of the iterator to the list from the previous step. +3. **Update a row:** Place this action *inside* the Iterator. In its ""Row ID"" field, map the `row_id` from the Iterator's *current item*. This will cause the workflow to update each row, one by one, that was found in the list. + +### Can I use my table data in an AI prompt? + +Yes. This is the primary function of the AI Prompt node. In the **Prompt** field, you can write your instructions (e.g., ""Translate the following to French:"") and then drag and drop a field from your trigger or a previous action (like `[field_name]`) into the prompt. + +### What does the AI 'Temperature' setting do? + +Temperature controls the ""creativity"" or randomness of the AI's response. A low value (like 0.1) will produce very consistent, focused answers. A high value (like 1.0) will produce more varied and creative, but less predictable, responses. + +## Troubleshooting common issues + +### ""Previous node must be tested first"" error + +You're trying to configure an action that depends on data from an untested previous node. Work through your workflow sequentially from trigger to end, testing each node before configuring the next one. + +### Update or delete action can't find the row + +The Row ID you're referencing doesn't exist or is incorrect. Verify the Row ID source. Print the ID value to check it's valid. Ensure you're using the correct field from your trigger or previous action. + +### HTTP request returns authentication errors + +Missing or incorrect API credentials. Check the external API's authentication requirements. Add necessary headers (like `Authorization` or `X-API-Key`) with valid credentials. + +### Router condition always takes default branch + +The condition formula isn't returning a boolean value or has syntax errors. Test your condition formula separately. Ensure it returns exactly `true` or `false`. Check for typos in field names. + +### Iโ€™m trying to create a new row, but Iโ€™m getting an error or no response. + +This usually happens when your workspace has reached its row limit. Check your current plan to confirm that it allows additional rows. If the workspace has exceeded its row limit, youโ€™ll need to either delete some rows to stay within your planโ€™s limit or upgrade your plan to continue adding new rows. Learn more about [Baserow pricing plan and limits][11]. + +## Related content + + - [Workflow automation overview](/user-docs/workflow-automation) - Learn workflow fundamentals + - [Workflow triggers](/user-docs/automation-triggers) - Configure events that start workflows + - [Automation Settings](/user-docs/automation-settings) + - [Manage workflow automation](/user-docs/workflow-management) + - [Formula field reference](/user-docs/understanding-formulas) - Build formulas for conditions and mappings + - [Webhooks](/user-docs/webhooks) - Alternative method for external integrations + - [Database API documentation](/user-docs/database-api) - Direct API access to your tables + - [Email field](/user-docs/email-field) - Configure email fields in your tables + +--- + +Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. + + - [Ask the Baserow community](https://community.baserow.io) + - [Contact support](/contact) for questions about Baserow or help with your account + + + [1]: https://baserow.io/user-docs/automation-triggers + [2]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/af2bedfe-17cd-41f5-becc-b1dac63e3760/Baserow%20workflow%20automation.jpg + [3]: https://baserow.io/user-docs/data-recovery-and-deletion + [4]: https://baserow.io/user-docs/filters-in-baserow + [5]: https://baserow.io/user-docs/footer-aggregation + [6]: https://baserow.io/user-docs/understanding-formulas + [7]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/f1b84bbf-6bb8-463b-ad37-3f9af542b9bd/Baserow%20router%20automation.jpg + [8]: https://api.slack.com/apps + [9]: https://baserow.io/user-docs/personal-api-tokens + [10]: https://baserow.io/user-docs/configure-generative-ai + [11]: https://baserow.io/user-docs/pricing-plans",,baserow_user_docs,https://baserow.io/user-docs/automation-actions +527,Workflow management,workflow-management,Baserow Workflow settings and management,"# Manage workflow automation in Baserow + +Automation management gives you full control over the lifecycle of your workflows, from initial testing to real-time, published execution. + +Managing your workflows means controlling when they run, monitoring their performance, and troubleshooting issues. Baserow provides simple controls to test workflows safely, publish them for production use, pause them temporarily, and track every execution through detailed history logs. + +Proper workflow management ensures your automations run reliably, helps you catch errors early, and gives you confidence that your database processes are working as expected. + +![Baserow workflow automation image][3] + +## Workflow execution states + +Every workflow operates in one of three states that control whether it responds to trigger events. + +| State | Toggle appearance | Behavior | +|-------|------------------|----------| +| **Draft** | Gray, not clickable | Workflow is being built and will not execute | +| **Paused** | Gray toggle (clickable) | Workflow is temporarily stopped but can resume. Workflow does not respond to trigger events, and configuration remains intact for quick resuming. | +| **Live** | Green toggle (clickable) | Workflow executes automatically when triggered. Workflow is actively running, responds to all trigger events, and executes actions automatically. | + +State progression: + +``` +Draft (building) โ†’ Test โ†’ Publish โ†’ Live (running) โŸท Paused (suspended) +``` + +> You cannot toggle a workflow to Live until it has been tested and published at least once. + +## Testing and publishing workflows + +### Start test run + +Testing validates your workflow configuration before it affects production data. Before testing, configure all nodes completely and use test data when possible to avoid affecting live records. + +**How to test:** + +1. Build your complete workflow (trigger + actions). Review payload for each node test run. +2. Click **Start test run** in the workflow header. This executes the entire workflow once. +3. Manually trigger the event (e.g., create a test row for ""Rows are created"" triggers) +4. Check the History tab for execution details; green checkmarks indicate success, red warnings show errors. + +> Click ""Start test run"" again to re-test. Testing does not repeat automatically. + +### Publish + +Publishing activates your workflow for production use. Workflow must be tested successfully at least once, with no configuration errors present. + +**How to publish:** + +1. Click **Publish** in the workflow header after successful testing +2. The workflow enters Live state (green toggle appears) +3. Toggle becomes clickable, switch between Live and Paused as needed. + +When published, workflow monitors for trigger events continuously and executes automatically every time the trigger fires. The workflow logs all executions in the History tab and runs indefinitely until paused or deleted. + +Once published, use the toggle to pause and resume execution. + +### How to pause and resume + +To pause, navigate to the published workflow โ†’ Click the **Live** toggle in the header. The workflow immediately enters the **Paused** state. Trigger events will no longer execute the workflow + +Pause workflows temporarily when you need to investigate reported issues without stopping trigger events, perform maintenance on connected external services, make minor configuration adjustments, temporarily stop automated processes during business changes, or prevent execution during scheduled system maintenance. + +To resume, navigate to the paused workflow โ†’ Click the **Paused** toggle in the header. The workflow immediately returns to the **Live** state. Trigger events begin executing the workflow again. + +> Pausing does not affect currently running executions. Any workflow already in progress will be completed. + +![Image Baserow automation history][2] + +## Monitoring workflow history + +The History tab provides a complete audit log of all workflow executions, both test runs and live executions. + +| Information | Description | +|-------------|-------------| +| **Status** | Success (green) or Failed (red) | +| **Timestamp** | When the workflow executed | +| **Run messages** | Detailed logs including error messages | +| **Execution type** | Test run or Live execution | + +When a workflow fails: + +1. Open the History tab +2. Find the failed execution (red status) +3. Click to expand the execution details +4. Read the error message showing: Which node failed, why it failed, and what data was present at failure +5. Fix the configuration issue +6. Test again to verify the fix + +## Automatic workflow disabling + +Baserow automatically disables workflows after multiple consecutive failures to prevent data issues. + +Workflows typically disable after 5-10 consecutive failed executions, persistent configuration errors, repeated authentication failures, or continuous timeout errors. + +To re-enable: + +1. Review **History** tab for error patterns +2. Fix the root cause (credentials, field mappings, timeouts) +3. Run a successful test +4. Publish the workflow again + +## Frequently asked questions + +### What's the difference between a test run and publishing an automation? + +A **test run** manually executes an automation workflow once for debugging and verification. You must click ""test"" each time you want it to run. **Publishing** activates the automation for production use, so it runs automatically whenever the trigger conditions occur, without manual intervention. + +### Can I edit a published workflow? + +Yes, but pause it first for major changes. For structural changes, pause โ†’ edit โ†’ test โ†’ resume. + +### Can I export History logs? + +Currently, History is viewable in-app only. For audit needs, regularly review and document critical executions manually. + +### Why can't I toggle my workflow to Live? + +The toggle remains ""Draft"" until you successfully test and publish the workflow at least once. Run a test, then click Publish. + +### What's the difference between pausing and deleting? + +Pausing temporarily stops execution but preserves the workflow. Deleting permanently removes it. Use pause for temporary stops, delete only for permanent removal. + +### How many workflows can one automation contain? + +No strict limit, but organize related workflows within the same automation for better management. Separate unrelated automations for clarity. + +### Will testing a workflow affect my live data? + +Yes. Test runs execute real actions on live data. Create/update/delete operations are permanent. Use test tables or test records when possible. + +## Troubleshooting guide + +### Workflow not executing after publishing + +Check that the toggle shows ""Live"" (not ""Paused""), the trigger event is actually occurring, and the **History** tab for disabled events or errors. Manually trigger the event to verify trigger configuration. + +### Test succeeds, but published workflow fails + +Possible causes: Live data differs from test data, external API rate limits, or permissions issues with production data. Test with production-like data, add error handling, review **History** for specific failure details. + +### Can't find workflow execution in History + +Refresh the page, check the trigger fired, and ensure that the workflow is published (Draft workflows don't execute). + +## Related content + +- [Workflow automation overview](/user-docs/workflow-automation) - Workflow basics +- [Workflow triggers](/user-docs/automation-triggers) - Configure trigger events +- [Workflow actions](/user-docs/automation-actions) - Build automation tasks +- [Snapshots](/user-docs/snapshots) - Backup and restore data +- [Webhooks](/user-docs/webhooks) - Alternative automation method +- [Notifications](/user-docs/notifications) - Configure alerts + +--- + +Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. + +- [Ask the Baserow community](https://community.baserow.io) +- [Contact support](/contact) for questions about Baserow or help with your account + + + [1]: https://baserow.io/user-docs/snapshots + [2]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/e377c8d5-503a-42aa-a6cd-0ea224630168/Baserow%20automation%20history.jpg + [3]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/af2bedfe-17cd-41f5-becc-b1dac63e3760/Baserow%20workflow%20automation.jpg",,baserow_user_docs,https://baserow.io/user-docs/workflow-management +557,Automation settings,automation-settings,Baserow Workflow Automation settings,"# Workflow Automation settings + +Automation management gives you control over workflow execution, from initial testing to production monitoring. + +Manage when workflows run, track their performance, and troubleshoot issues using Baserow's workflow controls. Test safely before going live, monitor every execution, and maintain reliable automations. + +Use the sidebar menu to rename, duplicate, delete automations and workflows, plus create snapshots for backup. + +Learn more about how to [manage workflows in Baserow][1]. + +![Baserow workflow automation image][3] + +## Automation actions + +Access automation settings by clicking the **three dots (โ‹ฏ)** next to the automation name in the sidebar. + +**Available actions:** + +- **Rename automation:** Change the automation's display name for better organization +- **Duplicate automation:** Create a copy of the entire automation including all workflows +- **Create [snapshot][2]:** Save a backup version of your automation configuration. +- **Delete automation:** Permanently remove the automation and all its workflows. Back up critical workflows via [snapshots][2] before deleting. + +## Workflow actions + +Access workflow settings by clicking the **three dots (โ‹ฏ)** next to the workflow name in the sidebar. + +**Available actions:** + +- **Rename workflow:** Give your workflow a descriptive name. Use clear, descriptive names like ""Send welcome email on signup"" instead of ""Workflow 1"". +- **Duplicate workflow:** Copy the workflow within the same automation. Duplicate workflows when creating similar automations to save configuration time. +- **Delete workflow:** Remove the workflow permanently + +> When an application or workflow is deleted, itโ€™s moved to the workspace trash and can be restored within a limited time. After this period, they are permanently removed. Learn more about [deleting and recovering data in Baserow][4]. + +## Creating and using snapshots + +Snapshots preserve automation configurations as backup points you can restore later. Snapshots are a full copy of your automation at the moment when they were created. A duplication of that data will be created when restoring. + +### When to create snapshots +- Before making significant workflow changes +- Before deleting or restructuring automations +- After completing and testing major workflows +- Before updating external API integrations + +### How to create a snapshot + +1. Click the three dots (โ‹ฏ) next to the automation name +2. Select **Create snapshot** +3. Name your snapshot descriptively (e.g., ""Before API v2 migration"") +4. Confirm creation + +Learn more about creating and restoring [snapshots in Baserow][2]. + +## Frequently asked questions + +### What happens if I delete a workflow that's running? + +The workflow stops immediately, and any in-progress execution completes. Consider pausing instead if you might need it again. + +### Do snapshots include workflow history? + +No, snapshots save only the automation configuration (workflows, triggers, actions). History logs are separate and not included in snapshots. + +### Can I duplicate a workflow to a different automation? + +Not directly. Duplicate the entire automation, then delete the unwanted workflows, or rebuild the workflow in the target automation. + +## Related content + + - [Workflow automation overview](/user-docs/workflow-automation) - Workflow basics + - [Workflow triggers](/user-docs/automation-triggers) - Configure trigger events + - [Workflow actions](/user-docs/automation-actions) - Build automation tasks + - [Manage workflow automation](/user-docs/workflow-management) + - [Snapshots](/user-docs/snapshots) - Backup and restore data + - [Webhooks](/user-docs/webhooks) - Alternative automation method + - [Notifications](/user-docs/notifications) - Configure alerts + - [Database API documentation](/user-docs/database-api) - API access for advanced automation + - [Audit logs](/user-docs/admin-panel-audit-logs) - Enterprise-level activity tracking + + +--- + +Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; we're ready to assist you. + +- [Ask the Baserow community](https://community.baserow.io) +- [Contact support](/contact) for questions about Baserow or help with your account + + + [1]: https://baserow.io/user-docs/workflow-management + [2]: https://baserow.io/user-docs/snapshots + [3]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/af2bedfe-17cd-41f5-becc-b1dac63e3760/Baserow%20workflow%20automation.jpg + [4]: https://baserow.io/user-docs/data-recovery-and-deletion",,baserow_user_docs,https://baserow.io/user-docs/automation-settings +590,Date dependency,date-dependency,Baserow's Date Dependency,"# Date dependency + +Baserow's Date Dependency makes project planning simple by automatically shifting related tasks when your schedule changes. + +This guide covers how to use Baserow's Date Dependencies feature to link rows and automatically manage project schedules. You'll learn how to set up dependencies and how they keep your timelines consistent. + +> This feature is available on a paid plan. To enable it, [upgrade your account by subscribing][1]. + +## Overview + +Date Dependencies let you link rows in a table so that their dates update automatically based on relationships you set. When you adjust a ""parent"" row's date, all dependent ""child"" rows shift proportionally, preserving the original time intervals. + +This feature is ideal for project schedules, Gantt charts, or any workflow where a delay in one task needs to automatically push back the start dates of all subsequent activities. You can create a dependency by linking two date fields (like a `Start Date` and `End Date`) and defining how they relate to each other. + +![Date dependency in Baserow][2] + +## How to set up date dependencies + +You can configure dependencies from your table or view settings. This setup applies to the entire table. + + 1. Navigate to the [view][3] or [table menu][4] you want to manage. + 2. Click the three-dot icon (`โ‹ฎ`) next to any table or view to open the menu. + 3. Select **""Configure date dependencies""** from the dropdown menu. + 4. A configuration modal will open. From here: + * **[""Select 'Duration' field...""]** This field must use the โ€œd hโ€ [duration format][5]. + * **[""Select the 'Start [Date' field][6]...""]** + * **[""Select the 'End [Date' field][6]...""]** + * **[""Define the relationship...""]** Use a [Link-to-table field][7] to connect a row to its predecessors. +5. Click **Save** + + +Once configured, any change you make to a date in one linked row will automatically adjust the dates in its dependent rows to maintain the correct schedule. + + +## Frequently Asked Questions (FAQs) + +### Does this only work with Timeline Views? + +No, Date Dependencies are set at the table level and will apply to all views. However, they are most visually apparent and useful when used with the **[Timeline View](/user-docs/guide-to-timeline-view)**, as you can see the schedule shifts in real-time. + +### Can I link dates across different tables? + +Date Dependencies currently only apply to rows within the same table. + +### Can I use fields like ""Created on"" or ""Last modified""? + +Dependencies generally require editable date fields (like `Date` or `Last Modified`). You cannot typically use a computed field like `Created on` as the one that gets *changed* by a dependency. + +## Related content + + * [Timeline View](/user-docs/guide-to-timeline-view) + * [Date and time fields](/user-docs/date-and-time-fields) + * [Views overview](/user-docs/overview-of-baserow-views) + * [Configure table options](/user-docs/customize-a-table) + +--- + + +Still need help? If you're looking for something else, please feel free to make recommendations or ask us questions; weโ€™re ready to assist you. + + - [Ask the Baserow community](https://community.baserow.io) + - [Contact support](/contact) for questions about Baserow or help with your account. + + + [1]: https://baserow.io/pricing + [2]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/be957e7c-0a80-4956-993c-80c2836cd6f9/date_dependency.png + [3]: https://baserow.io/user-docs/view-customization + [4]: https://baserow.io/user-docs/customize-a-table + [5]: https://baserow.io/user-docs/duration-field + [6]: https://baserow.io/user-docs/date-and-time-fields + [7]: https://baserow.io/user-docs/link-to-table-field",,baserow_user_docs,https://baserow.io/user-docs/date-dependency +591,AI assistant,ai-assistant,"Meet Kuma, your Baserow AI assistant","# Introduction to Kuma AI + +Meet Kuma, your AI assistant. Chat with Kuma to create databases, write formulas, and organize your data; all in plain language. + +This guide introduces Kuma, Baserow's built-in AI assistant. Learn how to access Kuma, what you can ask it, and how it can help you build and manage your databases faster. + +## What is Kuma? + +Kuma is your Baserow AI assistant integrated directly into the Baserow interface. It helps you work faster without switching tools or digging through documentation. + +Itโ€™s not just a chatbot. Kuma understands the context of your workspace and can take action to **create or edit** tables, views, and fields on your behalf. You can also decide which AI provider and model it uses, so you stay in control of your data and privacy. + +![Meet Kuma, your Baserow AI assistant][1] + +### How to access the AI assistant + +You can access Kuma from anywhere in your Baserow workspace. + + 1. Navigate to your workspace. + 2. Click the **Kuma AI** tab located in the side bar. + 3. This will open the Kuma chat panel. + 4. Type your request in plain language and press Enter. + +## What you can do with the AI assistant + +Kuma is a powerful builder's assistant. You can ask it to perform a wide range of tasks, from building new tables to explaining complex features. + +### Build and edit databases + +Instead of manually [creating tables][2] and [adding each field][3], you can describe what you need to Kuma. Kuma will build the database for you, complete with relevant fields, views, and relationships. + +**Examples:** +* `""Create a project management table.""` +* `""Add a 'Priority' single select field with options for High, Medium, and Low to my 'Tasks' table.""` +* `""Create a new table to track customer orders and link it to my 'Customers' table.""` + +### Write formulas + +Stop trying to remember complex syntax. Describe the calculation you need, and Kuma will write the formula for you. It can [create a new Formula field][4] or update an existing one instantly. + +**Examples:** +* `""Write a formula that calculates the number of days until the deadline.""` +* `""I need a formula that combines the 'First Name' and 'Last Name' fields.""` +* `""Create a formula that shows 'Overdue' if the due date is in the past and the status isn't 'Done'.""` + +### Organize and manage your data + +Use plain language to quickly [manage your data views][5]. Kuma can [create new views][6] or modify your current view by adding filters, sorting rules, or grouping. + +**Examples:** +* `""Create a new Grid view in my 'Tasks' table called 'High Priority Tasks'.""` +* `""In this view, only show me rows where the status is 'To-Do' and the priority is 'High'.""` +* `""Group this view by the 'Assignee' field.""` +* `""Sort this view by the 'Due Date' field, from earliest to latest.""` + +### Search the documentation + +If you're unsure how a feature works or where to find a setting, just ask Kuma. It can search the Baserow documentation and walk you through the steps directly in the chat. + +**Examples:** +* `""Explain how to use automations.""` +* `""How do I set up a form view?""` +* `""What's the difference between a lookup and a rollup field?""` + +## View your chat history + +To access your previous conversations with Kuma, open the Kuma chat panel. Click the **Chat History icon** at the top-right of the panel. + +This will open a list of your past conversations, allowing you to review, continue, or reference previous requests and answers. + +## How to configure AI provider + +Kuma gives you full control over your data privacy by allowing you to choose which AI provider and model it uses. + +1. Open the Kuma chat panel. +2. Click the **Settings icon** () at the top of the panel. +3. Select **AI Provider Settings**. +4. From here, you can choose your preferred provider (e.g., OpenAI, Anthropic) and model (e.g., GPT-4o, Claude 3 Sonnet) from the dropdown lists. + +## Frequently Asked Questions (FAQs) + +### What is the difference between AI assistant and the AI field? + +The **[AI field](/user-docs/ai-field)** operates *inside* a table to perform a specific, repeatable task on data in a row (like summarizing text or extracting keywords). + +**Kuma** is a conversational assistant that helps you *build and manage* your entire workspace (like creating tables, writing formulas, and filtering views). + +### Can Kuma see my data? + +To perform actions, Kuma needs to understand your workspace structure (like table and field names). By allowing you to choose your own AI provider in the settings, you remain in control of which service handles your data and your privacy. + +### What if Kuma makes a mistake? + +Like any AI, Kuma can sometimes misinterpret a request or make a mistake. We recommend reviewing any tables, views, or formulas Kuma creates to ensure they are correct before relying on them for critical work. + +## Related content + + * [AI prompt field](/user-docs/ai-field) + * [Write effective AI prompts in Baserow](/user-docs/write-effective-ai-prompts) + * [Formula field reference](/user-docs/understanding-formulas) + * [Introduction to databases in Baserow](/user-docs/intro-to-databases) + + + [1]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/c0754a24-8b55-4d73-9526-9662d3ef6fb3/Meet%20Kuma%2C%20your%20Baserow%20AI%20assistant.jpg + [2]: https://baserow.io/user-docs/create-a-table + [3]: https://baserow.io/user-docs/adding-a-field + [4]: https://baserow.io/user-docs/formula-field-overview + [5]: https://baserow.io/user-docs/view-customization + [6]: https://baserow.io/user-docs/create-custom-views-of-your-data",,baserow_user_docs,https://baserow.io/user-docs/ai-assistant 1,What is Baserow?,faq,What is Baserow?,"What is Baserow? Baserow is an open-source no-code database. Our database platform enables both non-technical and technical teams to capture, organize and build logical relationships between data to trigger decisions and automate processes. We focus on openness, scalability, performance, and data security.",faq,faq,https://baserow.io/faq diff --git a/heroku.Dockerfile b/heroku.Dockerfile index 83471dee7d..21211d2b77 100644 --- a/heroku.Dockerfile +++ b/heroku.Dockerfile @@ -1,4 +1,4 @@ -ARG FROM_IMAGE=baserow/baserow:1.35.3 +ARG FROM_IMAGE=baserow/baserow:2.0.0 # This is pinned as version pinning is done by the CI setting FROM_IMAGE. # hadolint ignore=DL3006 FROM $FROM_IMAGE AS image_base diff --git a/plugin-boilerplate/{{ cookiecutter.project_slug }}/Dockerfile b/plugin-boilerplate/{{ cookiecutter.project_slug }}/Dockerfile index 4f15be105c..dc5f3a4926 100644 --- a/plugin-boilerplate/{{ cookiecutter.project_slug }}/Dockerfile +++ b/plugin-boilerplate/{{ cookiecutter.project_slug }}/Dockerfile @@ -1,4 +1,4 @@ -FROM baserow/baserow:1.35.3 +FROM baserow/baserow:2.0.0 COPY ./plugins/{{ cookiecutter.project_module }}/ /baserow/plugins/{{ cookiecutter.project_module }}/ RUN /baserow/plugins/install_plugin.sh --folder /baserow/plugins/{{ cookiecutter.project_module }} diff --git a/plugin-boilerplate/{{ cookiecutter.project_slug }}/backend-dev.Dockerfile b/plugin-boilerplate/{{ cookiecutter.project_slug }}/backend-dev.Dockerfile index 5175c77730..824aebb89e 100644 --- a/plugin-boilerplate/{{ cookiecutter.project_slug }}/backend-dev.Dockerfile +++ b/plugin-boilerplate/{{ cookiecutter.project_slug }}/backend-dev.Dockerfile @@ -1,7 +1,7 @@ # This a dev image for testing your plugin when installed into the Baserow backend image -FROM baserow/backend:1.35.3 as base +FROM baserow/backend:2.0.0 as base -FROM baserow/backend:1.35.3 +FROM baserow/backend:2.0.0 USER root diff --git a/plugin-boilerplate/{{ cookiecutter.project_slug }}/backend.Dockerfile b/plugin-boilerplate/{{ cookiecutter.project_slug }}/backend.Dockerfile index 27e1c4aad0..0cf08716be 100644 --- a/plugin-boilerplate/{{ cookiecutter.project_slug }}/backend.Dockerfile +++ b/plugin-boilerplate/{{ cookiecutter.project_slug }}/backend.Dockerfile @@ -1,4 +1,4 @@ -FROM baserow/backend:1.35.3 +FROM baserow/backend:2.0.0 USER root diff --git a/plugin-boilerplate/{{ cookiecutter.project_slug }}/dev.Dockerfile b/plugin-boilerplate/{{ cookiecutter.project_slug }}/dev.Dockerfile index 99dce5774b..b982e3a3b8 100644 --- a/plugin-boilerplate/{{ cookiecutter.project_slug }}/dev.Dockerfile +++ b/plugin-boilerplate/{{ cookiecutter.project_slug }}/dev.Dockerfile @@ -1,7 +1,7 @@ # This a dev image for testing your plugin when installed into the Baserow all-in-one image -FROM baserow/baserow:1.35.3 as base +FROM baserow/baserow:2.0.0 as base -FROM baserow/baserow:1.35.3 +FROM baserow/baserow:2.0.0 ARG PLUGIN_BUILD_UID ENV PLUGIN_BUILD_UID=${PLUGIN_BUILD_UID:-9999} diff --git a/plugin-boilerplate/{{ cookiecutter.project_slug }}/plugins/{{ cookiecutter.project_module }}/baserow_plugin_info.json b/plugin-boilerplate/{{ cookiecutter.project_slug }}/plugins/{{ cookiecutter.project_module }}/baserow_plugin_info.json index c6438bf08f..23fdadbb52 100644 --- a/plugin-boilerplate/{{ cookiecutter.project_slug }}/plugins/{{ cookiecutter.project_module }}/baserow_plugin_info.json +++ b/plugin-boilerplate/{{ cookiecutter.project_slug }}/plugins/{{ cookiecutter.project_module }}/baserow_plugin_info.json @@ -1,7 +1,7 @@ { "name": "{{ cookiecutter.project_name }}", "version": "0.0.1", - "supported_baserow_versions": "1.35.3", + "supported_baserow_versions": "2.0.0", "plugin_api_version": "0.0.1-alpha", "description": "TODO", "author": "TODO", diff --git a/plugin-boilerplate/{{ cookiecutter.project_slug }}/web-frontend-dev.Dockerfile b/plugin-boilerplate/{{ cookiecutter.project_slug }}/web-frontend-dev.Dockerfile index 6e6374acec..92dd6367ad 100644 --- a/plugin-boilerplate/{{ cookiecutter.project_slug }}/web-frontend-dev.Dockerfile +++ b/plugin-boilerplate/{{ cookiecutter.project_slug }}/web-frontend-dev.Dockerfile @@ -1,6 +1,6 @@ # This a dev image for testing your plugin when installed into the Baserow web-frontend image -FROM baserow/web-frontend:1.35.3 as base -FROM baserow/web-frontend:1.35.3 +FROM baserow/web-frontend:2.0.0 as base +FROM baserow/web-frontend:2.0.0 USER root diff --git a/plugin-boilerplate/{{ cookiecutter.project_slug }}/web-frontend.Dockerfile b/plugin-boilerplate/{{ cookiecutter.project_slug }}/web-frontend.Dockerfile index 82eaed83f0..d1f2d8b57f 100644 --- a/plugin-boilerplate/{{ cookiecutter.project_slug }}/web-frontend.Dockerfile +++ b/plugin-boilerplate/{{ cookiecutter.project_slug }}/web-frontend.Dockerfile @@ -1,4 +1,4 @@ -FROM baserow/web-frontend:1.35.3 +FROM baserow/web-frontend:2.0.0 USER root diff --git a/premium/backend/pyproject.toml b/premium/backend/pyproject.toml index a2ac7b8dd4..d7273d990d 100644 --- a/premium/backend/pyproject.toml +++ b/premium/backend/pyproject.toml @@ -12,7 +12,7 @@ description = """Baserow is an open source no-code database tool and Airtable \ # mixed license license={file="LICENSE"} requires-python=">=3.11" -version = "1.35.3" +version = "2.0.0" classifiers = [] [project.urls] diff --git a/web-frontend/docker/docker-entrypoint.sh b/web-frontend/docker/docker-entrypoint.sh index 9074808876..23ad8cd271 100755 --- a/web-frontend/docker/docker-entrypoint.sh +++ b/web-frontend/docker/docker-entrypoint.sh @@ -2,7 +2,7 @@ # Bash strict mode: http://redsymbol.net/articles/unofficial-bash-strict-mode/ set -euo pipefail -export BASEROW_VERSION="1.35.3" +export BASEROW_VERSION="2.0.0" BASEROW_WEBFRONTEND_PORT="${BASEROW_WEBFRONTEND_PORT:-3000}" show_help() { diff --git a/web-frontend/package.json b/web-frontend/package.json index 4a91cdce5e..b7786343dc 100644 --- a/web-frontend/package.json +++ b/web-frontend/package.json @@ -1,6 +1,6 @@ { "name": "baserow", - "version": "1.35.3", + "version": "2.0.0", "private": true, "description": "Baserow: open source no-code database web frontend.", "author": "Bram Wiepjes (Baserow)",