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

# Managed Views

> Configure admin-managed List, Kanban, Calendar, Dashboard, and Agent views that users across your organization can share.

Managed views are admin-configured views of an object's records. They are defined by an App Admin and shared with specific users or groups, creating a single source of truth for how people track work in an object.

Managed views are available on **Apps**, **Elements**, **Tasks**, and **Tables**. Only App Admins can create and edit them. Users with access can apply ad hoc filters and sorting when browsing a managed view, but cannot change the underlying view definition.

## View Types

App Admins can create the following view types as a managed view:

* **List** — Column-based record listings with filters, sort, grouping, and row density controls.
* **Kanban** — Card-based workflow boards grouped by a status or category field.
* **Calendar** — Date-based record visualization.
* **Dashboard** — Metrics, charts, and summary widgets for at-a-glance reporting.
* **Agent** — A full-page embedded chat experience. See [Attach an Agent to a View](#attach-an-agent-to-a-view).

## Create a Managed View

1. Open the object (App, Element, Task, or Table) where you want to create the view.
2. Select **Managed Views** under the **User Interface** section of the left navigation menu.
3. Click **+ Create New View** and select a view type from the dropdown: List, Kanban, Calendar, Dashboard, or Agent.
4. Enter a name in the **Create View** field.
5. Configure the view using the tabs at the top (described below).
6. Click **Save View**.

## Configuration Tabs

Each managed view is configured through a set of tabs. Available tabs depend on the view type.

| Tab | Description |
| - | - |
| General | Name the view and toggle whether users can create records from this view. |
| Display As | Change the view type (for example, switch a List to a Kanban). |
| Columns | Choose which fields display, and set column visibility and row density defaults. |
| Sort | Define the default sort order. |
| Filters | Define default filters that scope the records shown. |
| Agent | Attach an agent to the view. See [Attach an Agent to a View](#attach-an-agent-to-a-view). |
| Access Policies | Grant data access to specific groups or users. |

<Tip>
  To disable record creation globally across all managed views, use the record-creation toggle at the object level. To control it per view, use the toggle in the **General** tab of that view.
</Tip>

## Share Access

Managed views are not automatically visible to other users. After saving a view, share it with the users or groups who should see it:

1. In the **Managed Views** list, hover over the view you want to share.
2. Click the <img src="https://mintcdn.com/elementum/2l5Do6DqmydOnWm-/images/icons/users.png?fit=max&auto=format&n=2l5Do6DqmydOnWm-&q=85&s=1463601f455626fdd5eacc0e59b50a08" alt="Share access icon" className="inline-ui-icon" width="24" height="24" data-path="images/icons/users.png" /> **Users** icon.
3. Select the users or groups who should have access.

Users and groups with access see the managed view in their view list for that object.

## How Managed Views Behave for Users

* Only App Admins can create or edit managed views. Users with access cannot modify the view definition.
* Changes an admin makes to a managed view propagate to every user with access immediately.
* Record-level permissions on the underlying object still apply. Users only see records they are entitled to, even when a view's filters would otherwise return more.
* Users can apply ad hoc filters and sorting on top of a managed view to focus on specific records, but those adjustments are local to their session and do not change the view for anyone else.
* Users who want a persistent layout of records across apps can build a [Workspace](/getting-started/home-page#workspaces) on their home page and pin filtered widgets to it. Home page Workspaces are configured by individual users — and can be shared with other users or groups — but do not change the managed view definition.

## Widget Column Layouts

On any **Dashboard** view that includes a Table Widget, App Administrators can set the default column layout everyone with access to the widget sees. Individual users can still adjust their own layout on top of the org default, and reset back to the admin-defined view at any time.

### Set the org default layout

Configuration happens on the widget itself, not on the view's **Columns** tab.

1. Open the Dashboard view that contains the Table Widget you want to configure.
2. Click the <img src="https://mintcdn.com/elementum/m1Z8iohbYDb7uicT/images/icons/ellipsis-vertical.svg?fit=max&auto=format&n=m1Z8iohbYDb7uicT&q=85&s=95eb1df478aa639b46276122cd086257" alt="More icon" className="inline-ui-icon" width="24" height="24" data-path="images/icons/ellipsis-vertical.svg" /> **More** icon on the Table Widget and select **Display Settings**.
3. At the top of the **Display Settings** popup, select the **Everyone** tab to manage the layout for all users with permission to view the widget.
4. Choose which columns are **Visible** or **Hidden** and arrange them in the order you want.
5. Click **Save for Everyone** to publish the layout as the org default.

### How the org default behaves for users

* Individual users can still adjust their own column view on top of the org default from the same **Display Settings** popup. Their changes are visible only to them.
* If a user has personalized the layout, they can return to **Display Settings** and click **Reset to Default** to restore the admin-defined view.

<Warning>
  **Reset to Default cannot be undone.** If a user wants their previous personalized layout back, they will need to recreate it manually.
</Warning>

## Attach an Agent to a View

Attach an [agent](/ai-agents/agents-experience) to a managed view so users can interact with the agent in the context of the records they are viewing. There are two ways to surface an agent:

### Attach an agent to an existing view

Add an agent to any existing List, Kanban, Calendar, or Dashboard managed view to render a chat box at the top of the view.

1. Open the managed view in edit mode.
2. Go to the **Agent** tab.
3. Enable **Agent** and select the agent you want to attach.
4. Click **Save View**.

Users with access to the view see a chat box above the records.

### Create an Agent view

Choose **Agent** as the view type when creating a new managed view to provide a full-page embedded chat experience with no record list.

1. Click **+ Create New View** and select **Agent** as the view type.
2. Enter a name and select the agent to attach.
3. Configure **Access Policies** to control who can open the view.
4. Click **Save View**.

### Behavior Notes

* Agents respect the permissions of the viewing user. Responses reflect only the records that user can access.
* Each view references a single agent. Swap agents by editing the view's **Agent** tab configuration.
* Agent views do not render a record list. Use them when the primary interaction is conversational.

## Customize an Agent view

When you create or edit an **Agent** managed view, choose between a **Standard** layout and a **Custom** layout.

* **Standard** — Full-page chat with the linked agent. Use this when conversation is the entire experience and the agent's [starting actions](/ai-agents/agents-starting-actions) already explain what it can do.
* **Custom** — A branded welcome experience with an optional image, header, and subheader, plus a static content section below the chat. Use this when users need orientation, external resource links, or short reference content before they start talking to the agent.

App Administrators configure Agent views from **Managed Views** under **User Interface** in the left navigation menu of the App, Element, Task, or Table.

### Static content by design

The additional content section on a Custom layout is authored when you configure the view and stays the same for every user until an App Administrator edits and saves it again. It is suited for instructions, checklists, external links, and small reference tables.

It does **not** query records, react to the current user, apply filters, run automations, or change based on selections. The linked agent provides the dynamic, context-aware part of the experience.

### Linked agent versus layout assistant

Custom Agent views can involve two different agent experiences:

| Role | Who uses it | Purpose |
| - | - | - |
| Linked agent | End users | Conversation, starting actions, history, and responses in the view |
| Layout assistant | App Administrators | Builds the optional static content section for a Custom layout |

The layout assistant is not visible to end users, does not replace the linked agent, and does not save the managed view. You open it from **Layout** → **Layout assistant**.

An organization administrator must turn on the **Generative UI system agent** in **Admin Settings** before authors can use the layout assistant.

### Starting actions versus content cards

* **Starting actions** belong to the linked agent. They are suggested prompts that begin a conversation (for example, "Check my open requests"). Configure them on the agent — see [Agent Starting Actions](/ai-agents/agents-starting-actions). Do not define them in the content JSON.
* **Action cards** belong to the Custom content section. In Agent managed views, each card must link to an absolute external `http://` or `https://` URL (for example, a help center or status page). They do not send prompts to the agent and cannot run Elementum actions.

### Configure a Custom Agent view

1. Click **+ Create New View** and select **Agent**, or open an existing Agent managed view in edit mode.
2. On the **Agent** tab, select the agent end users should talk to. An Agent view without a selected agent will not provide a working chat experience.
3. Open **Layout** and choose **Custom**.
4. Optionally upload an image (5 MB or smaller), then enter the welcome **Header** and **Subheader**.
5. Open **Layout assistant** to build the additional content section, or use **View JSON** to inspect or edit the layout directly.
6. Review the live preview.
7. Configure **Access Policies** and click **Save View**.
8. Open the saved view as an end user and confirm the chat, starting actions, and any external links.

The layout assistant updates the draft layout only. Always **Save View** after you accept or edit the content section.

### Use the layout assistant

Describe the user outcome, the content that must appear, and how it should be grouped. Generate, review the preview, then refine one change at a time.

Example first prompts:

> Create a welcome section for an HR help agent. Add a heading, a short explanation, three external resource cards, and a short list of the information employees should have ready.

> Build a customer-support reference section. Show an introductory paragraph, a two-column row of cards for documentation and service status, then a details list with support hours and escalation contact.

Avoid asking the assistant for live records, filters, automations, dashboards, or content that changes with the current user. Keep the custom section static and let the linked agent handle dynamic interaction.

Type `/blocks` in the layout-assistant input to see the currently supported block catalog for Agent managed views.

### Example content JSON

Most authors should start with the layout assistant. Use **View JSON** when you need to inspect the layout, copy a starting point, or make a precise edit.

Elementum validates the JSON. Invalid JSON is not applied — the preview keeps the last valid layout.

```json theme={null}
{
  "version": 1,
  "spec": {
    "root": "page",
    "elements": {
      "page": {
        "type": "StackBlock",
        "props": {
          "gap": "lg",
          "padding": "md"
        },
        "children": ["introCard", "resourceCards", "divider", "supportDetails"]
      },
      "introCard": {
        "type": "CardBlock",
        "props": {},
        "children": ["introHeading", "introBody", "introBullets"]
      },
      "introHeading": {
        "type": "HeaderBlock",
        "props": {
          "text": "How this agent can help",
          "level": 2,
          "tone": "primary"
        }
      },
      "introBody": {
        "type": "BodyBlock",
        "props": {
          "text": "Ask a question or use these resources to get started.",
          "tone": "muted"
        }
      },
      "introBullets": {
        "type": "BulletsBlock",
        "props": {
          "items": [
            "Describe the outcome you need",
            "Include relevant dates or names",
            "Review the response before taking action"
          ]
        }
      },
      "resourceCards": {
        "type": "ActionCardBlock",
        "props": {
          "cards": [
            {
              "id": "help-center",
              "title": "Help center",
              "description": "Browse common questions and product guidance.",
              "icon": "circle-help",
              "href": "https://help.example.com"
            },
            {
              "id": "service-status",
              "title": "Service status",
              "description": "Check current availability and incidents.",
              "icon": "activity",
              "href": "https://status.example.com"
            }
          ]
        }
      },
      "divider": {
        "type": "DividerBlock",
        "props": {}
      },
      "supportDetails": {
        "type": "DetailsListBlock",
        "props": {
          "items": [
            {
              "label": "Support hours",
              "value": "Monday–Friday, 8:00 AM–5:00 PM"
            },
            {
              "label": "Expected response",
              "value": "Within one business day"
            }
          ]
        }
      }
    }
  }
}
```

Layout rules:

* Use `version` `1`, a `spec.root` ID, and an `elements` map keyed by unique IDs.
* Every `root` and `children` ID must exist in `elements`.
* Do not add click handlers or dynamic bindings such as `$state`, `$bindState`, `$computed`, or `$template`.
* Every `ActionCardBlock` card needs an absolute `http://` or `https://` URL. Relative paths such as `/records` are not supported.
* `DataTableBlock` rows must be authored in the layout. Live record queries are not supported in this section.

### Supported content blocks

Agent managed view content supports a fixed set of static blocks. A block available elsewhere in Elementum is not necessarily available here.

| Block | Use for |
| - | - |
| `StackBlock` | Vertical grouping; typically the page root |
| `RowBlock` | Side-by-side layout that stacks on smaller screens |
| `HeaderBlock` | Section headings |
| `BodyBlock` | Short paragraphs |
| `BulletsBlock` | Checklists and short lists |
| `CardBlock` | Grouped content in a bordered panel |
| `ActionCardBlock` | External resource tiles with absolute URLs |
| `DataTableBlock` | Small authored reference tables |
| `DetailsListBlock` | Label/value reference rows |
| `DetailsFieldsBlock` | Field-style authored summaries (display text only) |
| `DividerBlock` | Visual separation between sections |
| `SpacerBlock` | Extra vertical space when stack gap is not enough |

### Troubleshoot Custom Agent views

| Issue | What to check |
| - | - |
| View shows **No Agent Configured** | Select an agent on the **Agent** tab and save the view. |
| Layout assistant asks for setup | An organization administrator must enable the **Generative UI system agent** in **Admin Settings**. |
| Starting actions do not appear | Confirm they are configured on the linked agent and that the view was saved after selecting the agent. Starting actions are not created with `ActionCardBlock`. |
| Generated layout is rejected | Replace unsupported or dynamic blocks with static headings, body text, bullets, external action cards, authored details, or a static table. |
| Action card is rejected | Use an absolute `https://` or `http://` URL. Relative paths are not supported. |
| Table is rejected | Include static `columns` and `rows` in the layout. Remove record queries, filters, and state bindings. |
| Preview does not change after a JSON edit | Fix validation errors and apply the JSON again. Invalid JSON keeps the last valid layout. |
| Changes appear in the editor but not for users | Save the managed view after accepting or editing the layout. |

## Default search by column

List views support searching by a specific text column. App Administrators set the app's default search column on **App Details**. Users on a List view can switch to a different text column from the search bar without changing that default.

Only **text** columns are supported for both the default and the per-search selection.

### Set the default search column

App Administrators configure the default for List views in the app:

1. Open the app and go to <Icon icon="settings" size={16} /> **App Details**.
2. Scroll to **Default Search Column**.
3. Select a text column to use as the default.

### Change the search column on a List view

Anyone using a List view can search by a different text column for their session:

1. Open a List view.
2. Click the <img src="https://mintcdn.com/elementum/TFCVHNVI8zhq54sg/images/icons/settings.svg?fit=max&auto=format&n=TFCVHNVI8zhq54sg&q=85&s=3ffc43e8a0875412cc27335241aeb4c8" alt="Config icon" className="inline-ui-icon" width="24" height="24" data-path="images/icons/settings.svg" /> **config** icon next to the search bar.
3. Select a text column to search by.

## Add a picklist option from a List view

Users with permission to create records in the element referenced by a dynamic picklist column can add a missing option without leaving the List view.

1. In the **List view**, click a dynamic picklist cell.
2. Begin typing a new picklist option.
3. Press **Enter**.
4. Fill out the required fields in the **Create** modal to complete the record creation process.

The **Create** modal opens with the record name pre-filled from what you typed. For picklists with simple equals filters, the matching field is pre-filled and locked so the new record automatically satisfies the column's criteria. The new record is created in the element the dynamic picklist references, not the element backing the current List view. Once saved, it becomes a selectable option in every dynamic picklist that references the same element.

## Related Documentation

* [Layout Builder](/workflows/layouts) — Configure the record details layout that opens when a user selects a record from a view.
* [Filtering](/getting-started/fundamentals/filtering) — Filter and sort reference used across views.
* [Building Agents](/ai-agents/agents-experience) — Create and configure the agents you attach to a view.
* [Agent Starting Actions](/ai-agents/agents-starting-actions) — Suggested prompts that begin a conversation with the linked agent.
* [Groups](/administration/groups) — Manage the groups you share views with.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.