CommunityHire an ExpertSign Up
User Groups and PermissionsGlobal data restrictions
User Groups and Permissions

Global data restrictions

Restrict the data users can interact with in your data sources.

Global data restrictions hide irrelevant or sensitive records across dynamic blocks, dropdown options, and inline filters. You set a rule once, and it applies to the whole app. Your users see the records they need and nothing else.

Client portals are a common use case. They restrict each client to their own data, which protects privacy and blocks access to other clients’ information.

Getting started

To open global data restrictions, open your app in the Studio, go to the Users tab, and open Data restrictions. This tab lists every restriction in your app. Click Add restriction to create one.

The Data restrictions table with two rules on the same table, one for Admin and Manager and one for HR

The Data restrictions tab lists each rule with its table, user groups, and restriction types.

Adding a restriction

Select a source to define restrictions

A restriction rule applies to one table in your data source. Select the source as you do when you connect a block. Use the “Used in this app” toggle to list only the sources your app already uses.

Apply restrictions to

A restriction rule can apply to one or several user groups. You cannot apply a restriction to a single user, unless that user is alone in a user group.

Specifying restriction types & scopes

Restriction types

A restriction is made up of restriction types.

TypeDescription
ViewRestrict what users can only or can’t see
CreateRestrict users from creating new records
EditRestrict what users can only or can’t edit
DeleteRestrict what users can only or can’t delete

Choose one or all of these restriction types. The rules then apply to the table and the user groups you selected.

Restriction scopes

A restriction also contains one of two scopes.

ScopeDescription
Can onlySpecifies the records that users can take any of the available actions on (viewing, creating, editing or deleting).
Can’tSpecifies the records that users can’t take any of the available actions on (viewing, creating, editing or deleting).

For example: Table X has 5 records: A, B, C, D, E and the following restriction rules applied:

User groupRestriction rule
ACan only view record A, B, C
BCan only view record D, E
CCan’t view record E

Result: A user in all three user groups can view records A, B, C, and D.

Three rules for user groups A, B, and C over records A to E, and the result for a user in all three groups: records A, B, C, and D

The same example: A, B, and C come from group A, D comes from group B, and group C hides E.

Adding conditions

Add conditions to link records to the table and user group. For example, to let User group A view only its own records in Table W, match the logged-in user’s email to the Email field of Table W. Each user then sees only the Table W records with their email.

The Add restrictions window on the View tab: User group A can only see records where Email is the logged-in user's email

Restrict view access to Table W's records for User group A based on email

What your app users see

This table shows how global data restrictions change what your app users see.

TypeScopeAction buttonsDropdown field optionsInline filtersCustomizable formsDynamic block records
ViewCan only view certain or all recordsN/AApp users will only be able to see the dropdown options for records specified by restriction rules.App users will only be able to see the options for records specified by restriction rules (i.e if there is a “Status” inline filter, and only “Done” & “In Progress” items are visible, then only display the Done & In Progress filters).N/AApp users will only be able to see the options for records specified by restriction rules (same behavior as conditional block filter).
ViewCan’t view certain or all recordsN/AApp users will not be able to see the dropdown options for records specified by restriction rules.App users will not be able to see the options for records specified by restriction rules (i.e if there is a “Status” inline filter, and all “ToDo” items are restricted, then don’t display the ToDo filter).N/AApp users will not be able to see the options for records specified by restriction rules (same behavior as conditional block filter).
CreateCan’t add recordsApp users will not be able to see any configured add record action buttons used in blocks connected to the restricted table.N/AN/AApp users will not be able to submit form entries. They still see a submit button, but it is disabled.N/A
Edit & DeleteCan only edit/delete certain or all recordsApp users will see the configured edit, update, or delete action buttons for the records that the restriction rules allow.N/AN/AN/AN/A
Edit & DeleteCan’t edit/delete certain or all recordsApp users will not be able to see any configured edit, update or delete action buttons for the records specified by restriction rules.N/AN/AN/AN/A

Adding more than one restriction to a table

You can add several restriction rules to a table. Each combination of table and user group can appear only once. This limits conflicting rules.

For example, a rule on the Full-time table already applies to the HR user group. You can add another rule to the Full-time table, but you cannot select HR again. To use HR in the new rule, first remove it from the existing rule.

The Add restrictions window with the user group list open. HR is greyed out with a message that another rule already uses it

HR is not selectable because another rule on this table already uses it.

Use these docs with your AI tools

An AI agent can read this documentation directly. You do not need an account or an API key. Everything here is public and read-only.

Query these docs via MCP

Recommended

Add this server to Claude, Claude Code, Cursor, Mistral, or any tool that supports MCP. Your agent can then search Softr Documentation documentation and read it in full, instead of answering from memory.

https://docs.softr.io/mcp
  • searchFind the passages that answer a question.
  • fetchRead one page in full, as Markdown.
  • list_pagesSee every page in this documentation.

Query these docs over HTTP

The same tools also work as plain web requests. Use this for scripts, or for any tool that does not support MCP. There is one endpoint per tool. Arguments go in the query string, and the answer comes back as JSON.

https://docs.softr.io/api/docs/search?query=custom+domain

Read the OpenAPI description. It is built from the same definitions as the tools, so it always matches what the endpoints do.

Read these docs as Markdown

Add .md to any page URL to get its Markdown source. You can also send the headerAccept: text/markdown to the page URL itself.

To read the whole documentation in one file, open llms-full.txt. For a short index of every page, open llms.txt.