# Welcome to NotionApps

NotionApps turns Notion databases into secure, shareable apps — lists, forms, login, branding, and a published link — without giving users your Notion workspace.

## Build your first app (start here)

Do not bounce across Basics / Customize / Guides yet. Follow this sequence:

1. [Connect Notion](https://docs.notionapps.com/get-started/connect-notion)
2. [Create an app](https://docs.notionapps.com/get-started/create-an-app)
3. [Add List and Details](https://docs.notionapps.com/get-started/add-list-and-details)
4. [Publish and share](https://docs.notionapps.com/get-started/publish-and-share)
5. [Make it private](https://docs.notionapps.com/get-started/make-it-private) (optional)

[Open Get started](https://docs.notionapps.com/get-started)

## Builder map

| Builder rail | Docs                                                                  |
| ------------ | --------------------------------------------------------------------- |
| Screens      | [Screens & components](https://docs.notionapps.com/customize-app)     |
| Data         | [Settings → Data](https://docs.notionapps.com/settings/data)          |
| Users        | [Users](https://docs.notionapps.com/users)                            |
| Automate     | [Automation](https://docs.notionapps.com/automation)                  |
| Settings     | [Settings](https://docs.notionapps.com/settings)                      |
| Integrations | [Integrations](https://docs.notionapps.com/integrations/introduction) |

Full map: [Builder](https://docs.notionapps.com/builder).

## What you can build

* Client and member portals — [Use Cases](https://docs.notionapps.com/use-cases)
* Internal tools and request trackers
* Field apps with photos and signatures
* Approval and operations apps (with Automation)

## Plans & help

* [Plans and entitlements](https://docs.notionapps.com/plans-and-entitlements)
* [Troubleshooting](https://docs.notionapps.com/frequently-asked-questions)
* [Community](https://community.notionapps.com)
* [Release Notes](https://docs.notionapps.com/release-notes)


# Get started

Build your first NotionApps app in under an hour. Follow these steps **in order** — this is the progressive path (Connect → First list → Publish → Private → later Automation).

Sidebar feel long? Start with [How the docs are organized](https://docs.notionapps.com/get-started/how-the-docs-are-organized) (maker path vs secondary sections).

## First-app checklist

1. Connect Notion — authorize the workspace that holds your database
2. Create an app — name it and link a database
3. Add List and Details screens — the core read experience
4. Publish and share — give users a link
5. Make it private — optional login and user restriction

## After your first publish

| Next job                     | Go here                                                                      |
| ---------------------------- | ---------------------------------------------------------------------------- |
| Learn the builder rail       | [Builder](https://docs.notionapps.com/builder)                               |
| Brand + URI                  | [Settings](https://docs.notionapps.com/settings)                             |
| Custom domain / sharing      | [Publish & share](https://docs.notionapps.com/publish-and-share)             |
| Forms, Board, Grid, Calendar | [Screens & components](https://docs.notionapps.com/customize-app)            |
| Private personalization      | [Users](https://docs.notionapps.com/users)                                   |
| Workflows / approvals        | [Automation](https://docs.notionapps.com/automation)                         |
| What your plan unlocks       | [Plans and entitlements](https://docs.notionapps.com/plans-and-entitlements) |

## Tip

Stay on **one database** for your first app. Multi-database apps and Automation are easier after you have published a simple list + details flow.


# How the docs are organized

The sidebar follows a **maker path** first, then learning/support sections, then Release Notes.

## Maker path (build an app)

Follow these in order for day-to-day building:

1. [Get started](https://docs.notionapps.com/get-started) — connect Notion, first list, publish, optional private
2. [Builder](https://docs.notionapps.com/builder) — left-rail map (Screens, Databases, Users, Settings, Automation)
3. [Screens & components](https://docs.notionapps.com/screens-and-components) — layouts and field components
4. [Databases](https://docs.notionapps.com/databases) — linked DBs, reload, sync
5. [Users](https://docs.notionapps.com/users) — public/private, roles, View as
6. [Settings](https://docs.notionapps.com/settings) — brand, comments, data, advanced
7. [Publish & share](https://docs.notionapps.com/publish-and-share) — link, domain, sharing
8. [Automation](https://docs.notionapps.com/automation) — when you are ready for workflows
9. [Integrations](https://docs.notionapps.com/integrations) — Slack and other connections
10. [Plans and entitlements](https://docs.notionapps.com/plans-and-entitlements) — what each plan unlocks
11. [Workspace & account](https://docs.notionapps.com/workspace-and-account) — billing, collaborators, reload

## Guides & help

[Guides & help](https://docs.notionapps.com/guides-and-help) is the hub for support extras. [Hire an expert](https://docs.notionapps.com/hire-an-expert) lives under it.

Nearby in the sidebar (after the maker path):

| Need                 | Section                                                        |
| -------------------- | -------------------------------------------------------------- |
| Step-by-step recipes | [How-to guides](https://docs.notionapps.com/how-to-guides)     |
| Errors / FAQs        | [Troubleshooting](https://docs.notionapps.com/troubleshooting) |
| End-to-end examples  | [Use Cases](https://docs.notionapps.com/use-cases)             |
| Watch someone build  | [Video Tutorials](https://docs.notionapps.com/video-tutorials) |
| Older / legacy docs  | [Archive](https://docs.notionapps.com/archive)                 |

## Changelogs

* [Release Notes](https://docs.notionapps.com/release-notes) — stays near the end so updates are easy to find

Nothing above is hidden or removed — only reordered for a clearer maker path.


# Connect Notion

NotionApps reads and writes the Notion databases you authorize. Connecting a workspace is the first step.

## What you need

* A Notion account with access to the database you want to app-ify
* Permission to install the NotionApps integration on that workspace

## Steps

1. Sign in to NotionApps and open **My Apps** (or create an account if you are new).
2. Start creating an app, or open an existing app and go to **Databases** / connect flow when prompted.
3. Choose the Notion workspace, then grant access to the pages/databases NotionApps should use.
4. Confirm the database appears as a linked database in the builder.

## After you connect

* Use **Sync from Notion** / **Reload Data** when you add properties in Notion.
* If a database is missing, re-open Notion sharing for the integration and share the parent page that contains the database.

## Deep dive

Full detail: [Connect Notion](https://docs.notionapps.com/basics/connect-notion)

## Next

[Create an app](https://docs.notionapps.com/get-started/create-an-app)


# Create an app

Create an app shell, pick a URL, and link the Notion database you connected.

## Steps

1. From **My Apps**, choose **Create app** (or the equivalent new-app action).
2. Enter an app name and confirm the public URI (for example `yourapp.notionapps.com`).
3. Select the Notion database that will power your first screens.
4. Open the **builder** — you should see Screens, Data, Users, and Settings in the left rail.

## Good first choices

| Choice     | Recommendation                                                            |
| ---------- | ------------------------------------------------------------------------- |
| Database   | One primary table with a title property and a few fields users care about |
| Access     | Leave **Public** until you finish List + Details and publish once         |
| Navigation | Default tabs are fine; tidy icons later                                   |

## Deep dive

[Create an app](https://docs.notionapps.com/basics/create-an-app)

## Next

[Add List and Details screens](https://docs.notionapps.com/get-started/add-list-and-details)


# Add List and Details

Most apps start with a **List (View Items)** screen and a **Details (View One Item)** screen so users can browse records and open one item.

## Steps

1. In the builder, open **Screens**.
2. Click **+ New Screen** and add **List (View Items)** for your database.
3. In **Content**, map **Title** (and optional description / color tag) to Notion properties.
4. Add **Details (View One Item)** for the same database.
5. On the List screen, set the open action to go to Details (Open Item / navigate to details).
6. On Details, add **View** components for the fields users should read (Status, Owner, dates, etc.).
7. Open **Edit Navigation** and keep both screens reachable (or Details hidden and opened only from the list).

## Preview

Use the phone/desktop preview in the center of the builder. Tap a row and confirm Details opens with the right fields.

## Learn more

* [List (View Items)](https://docs.notionapps.com/customize-app/types-of-screens/list-view-items)
* [Details (View One Item)](https://docs.notionapps.com/customize-app/types-of-screens/details-view-one-item)
* [Types of Screens](https://docs.notionapps.com/customize-app/types-of-screens)

## Next

[Publish and share](https://docs.notionapps.com/get-started/publish-and-share)


# Publish and share

Publishing makes your latest builder configuration available on the app URL. Sharing that URL is how users open the app.

## Steps

1. Click **Publish** in the builder top bar.
2. Wait for the publish confirmation.
3. Open the app URI (shown near the app name) in a private/incognito window to verify what end users see.
4. Share the link with your team or customers.

## Checklist before you share widely

* [ ] List shows the rows you expect
* [ ] Details opens from a list row
* [ ] Branding (name, color, icon) looks acceptable
* [ ] You tested on mobile width once

## Deep dive

* [Publish](https://docs.notionapps.com/basics/share-app/publish)
* [Share App Link](https://docs.notionapps.com/basics/share-app/share-app-link)
* [Custom Domain](https://docs.notionapps.com/customize-app/custom-domain) (paid)

## Next

[Make it private](https://docs.notionapps.com/get-started/make-it-private) (optional)


# Make it private

When the app should not be open to anyone with the link, switch to a **Private** app, choose a login method, and (usually) restrict which Notion rows each user can see.

## Steps

1. Open **Users** in the builder rail.
2. Set the app to **Private** (see [Private apps](https://docs.notionapps.com/users/private-apps)).
3. Create or link a **Users** database and add at least one test user.
4. Choose a login method that is available today (email OTP and email+password are common; Google Login is available via Integrations).
5. Configure [Data Restriction](https://docs.notionapps.com/users/data-restriction) / personalization so users only see their rows.
6. **Publish** again, then open the app while signed out — you should hit login.

## Auth overview

See the full matrix: [Auth and access](https://docs.notionapps.com/users/auth-and-access)

## Related

* [App Users](https://docs.notionapps.com/users/app-users)
* [Sign up](https://docs.notionapps.com/users/sign-up)
* [Google Login](https://docs.notionapps.com/integrations/google-login)

## What’s next after your first private app

* Add a **Form (Add Item)** or **Form (Update One Item)**
* Try [Board layouts](https://docs.notionapps.com/guides/board-list-view)
* Explore [Automation](https://docs.notionapps.com/automation) if you need approvals or routing


# Builder

Map of the NotionApps **builder left rail**. Use after [Get started](https://docs.notionapps.com/get-started).

## Rail → docs

| Rail             | Opens in product                                                       | Docs                                                                                 |
| ---------------- | ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| **Screens**      | Screen list, layouts, navigation, components                           | Screens → [Screens & components](https://docs.notionapps.com/screens-and-components) |
| **Databases**    | Linked Notion databases, reload, recovery entry points                 | Databases → [Databases section](https://docs.notionapps.com/databases)               |
| **Users**        | Public/Private, App Users, Data Restriction, signup                    | Users → [Users section](https://docs.notionapps.com/users)                           |
| **Settings**     | General, Appearance, Comments, Version History, Data, Advanced         | Settings → [Settings](https://docs.notionapps.com/settings)                          |
| **Integrations** | Google Login (only shipping integration today)                         | [Integrations](https://docs.notionapps.com/integrations/integrations)                |
| **Automation**   | One Automation entry when entitled (hub inside — not three rail icons) | Automate → [Automation](https://docs.notionapps.com/automation)                      |

Help lives in the **rail footer** (docs, community, tour, zoom) — not a main rail destination.

## Recommended maker order

1. Screens — List + Details (+ Create Form when needed)
2. Databases — confirm links + reload after Notion changes
3. Settings — name, URI, theme
4. [Publish & share](https://docs.notionapps.com/publish-and-share)
5. Users — when the app must be Private / personalized
6. Automation — only after the data path works
7. [Plans and entitlements](https://docs.notionapps.com/plans-and-entitlements) — when a control is missing

## Also useful

* [Find your way around the builder nav rail](https://docs.notionapps.com/how-to-guides/find-your-way-around-the-builder-nav-rail)
* [How-to guides](https://docs.notionapps.com/how-to-guides)
* [Troubleshooting](https://docs.notionapps.com/troubleshooting)


# Screens

Configure what end users see and tap.

## Start here

1. [Add New Screen](https://docs.notionapps.com/screens-and-components/add-new-screen)
2. [Types of Screens](https://docs.notionapps.com/screens-and-components/types-of-screens)
3. [View Types](https://docs.notionapps.com/screens-and-components/customize-a-screen/view-types-list-grid-calendar-board) — List / Grid / Calendar / Board
4. [Type of Components](https://docs.notionapps.com/screens-and-components/type-of-components)

## Layouts

* [Grid view](https://docs.notionapps.com/screens-and-components/grid-view)
* [Calendar view](https://docs.notionapps.com/screens-and-components/calendar-view)
* [Board List View](https://docs.notionapps.com/how-to-guides/board-list-view)

## Navigation

* [App Navigation](https://docs.notionapps.com/screens-and-components/app-navigation)
* [Navigation Groups](https://docs.notionapps.com/screens-and-components/navigation-groups)

Full section: [Screens & components](https://docs.notionapps.com/screens-and-components)


# Databases

Manage linked Notion databases and keep schema/data fresh.

→ [**Databases section**](https://docs.notionapps.com/databases) (full docs)

Quick links:

* [Manage linked databases](https://docs.notionapps.com/databases/manage-linked-databases)
* [Reload and sync](https://docs.notionapps.com/databases/reload-and-sync)
* [Settings → Data](https://docs.notionapps.com/settings/data)


# Users

Privacy, login, App Users, and row-level personalization.

1. [Auth and access](https://docs.notionapps.com/users/auth-and-access)
2. [Private apps](https://docs.notionapps.com/users/private-apps)
3. [App Users](https://docs.notionapps.com/users/app-users)
4. [Data Restriction](https://docs.notionapps.com/users/data-restriction)
5. [Roles and navigation](https://docs.notionapps.com/users/roles-and-navigation)
6. [View as any user](https://docs.notionapps.com/users/view-as-any-user)

Full section: [Users](https://docs.notionapps.com/users)


# Settings

App-wide controls (not a single screen).

| Pane            | Docs                                                                               |
| --------------- | ---------------------------------------------------------------------------------- |
| General         | [Settings → General](https://docs.notionapps.com/settings/general)                 |
| Appearance      | [Settings → Appearance](https://docs.notionapps.com/settings/appearance)           |
| Comments        | [Settings → Comments](https://docs.notionapps.com/settings/comments)               |
| Version History | [Settings → Version History](https://docs.notionapps.com/settings/version-history) |
| Data            | [Settings → Data](https://docs.notionapps.com/settings/data)                       |
| Advanced        | [Settings → Advanced](https://docs.notionapps.com/settings/advanced)               |

Hub: [Settings](https://docs.notionapps.com/settings)


# Automate

When entitled, the rail shows **one Automation entry**. Inside the hub you work across Home, Recipes, Workflows, Messaging, Route map, Debugging, and Access — not three separate rail icons.

→ [Automation hub map](https://docs.notionapps.com/automation/automation-hub-map)

Canonical process path:

1. [Automation Overview](https://docs.notionapps.com/automation/automation-overview)
2. [Start From a Wizard](https://docs.notionapps.com/automation/start-from-a-wizard)
3. [Native Automation screens index](https://docs.notionapps.com/automation/native-automation-screens-index)
4. [Plans and entitlements](https://docs.notionapps.com/plans-and-entitlements) if screens are missing


# Screens & components overview

Builder **Screens** rail documentation (formerly “Customize App” in the sidebar label).

## Core screen types

* [Types of Screens](https://docs.notionapps.com/customize-app/types-of-screens) — List, Details, Forms, Content, chrome, Automation screens
* [Add New Screen](https://docs.notionapps.com/customize-app/add-new-screen)
* [Customize a screen](https://docs.notionapps.com/customize-app/customize-a-screen)
* [View Types (List / Grid / Calendar / Board)](https://docs.notionapps.com/customize-app/customize-a-screen/view-types-list-grid-calendar)

## Layout deep dives

* [Grid view](https://docs.notionapps.com/customize-app/grid-view)
* [Calendar view](https://docs.notionapps.com/customize-app/calendar-view)
* [Board List View](https://docs.notionapps.com/guides/board-list-view)

## Navigation & chrome

* [App Navigation](https://docs.notionapps.com/customize-app/app-navigation)
* [Navigation Groups](https://docs.notionapps.com/customize-app/navigation-groups)
* [Desktop View](https://docs.notionapps.com/customize-app/desktop-view)

## Components

* [Type of Components](https://docs.notionapps.com/customize-app/type-of-components)
* [Address](https://docs.notionapps.com/customize-app/type-of-components/address) · [File upload](https://docs.notionapps.com/customize-app/type-of-components/file-upload) · [User field](https://docs.notionapps.com/customize-app/type-of-components/user-field) · [Comments](https://docs.notionapps.com/customize-app/type-of-components/comments)

## Also in this area

Custom domain, relations, formulas, barcode scanner, form submit redirection — see the sidebar under **Screens & components**.

Map back to the builder: [Builder](https://docs.notionapps.com/builder).


# App Navigation

NotionApps allows you to configure the navigation in your app with two types of navigation: *bottom tabs* and *side drawer*. By default, the app builder automatically adds a newly created screen to the bottom tab, but you can move the screen between the bottom tab and drawer as needed. Here's how to configure the navigation in your app:

1. On the home page, click on the app you want to customize. This will open your app in the app builder.
2. Click on the "Edit Navigation" button in the bottom-right corner of the app builder to view the navigation and icon/name of your screens.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FSh2nv2Kw9F5SBG82KmXn%2Fedit-nav.png?alt=media&#x26;token=c0c554b4-c007-4c8f-b222-ec368c963c0b" alt=""><figcaption></figcaption></figure>

3. To move a screen between the bottom tab and drawer, simply click on the screen and drag it to the desired location. You can also reorder screens using the drag (✥) icon.

{% hint style="info" %}
We suggest a maximum of 5 screens in the bottom tabs for the best experience.
{% endhint %}

4. To change the name or icon of a screen, click on the screen and then edit the desired properties.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FZ1ToHHZgOpXylRbZ5qMP%2Fedit-nav-details-2.png?alt=media&#x26;token=11015784-6e37-4d21-93b4-200247a8abf1" alt=""><figcaption></figcaption></figure>

5. Once you're done, you can go back to editing the screen by clicking on the "Edit Screen" button.

{% hint style="info" %}
We recommend putting primary screens or actions in the bottom tab and secondary screens or actions, like "Profile" or "About" screens, in the drawer.

This helps users easily access the most important screens and actions while keeping less frequently used screens and actions hidden.
{% endhint %}

By following these simple steps, you can easily configure the navigation in your NotionApp. Whether you want to reorder screen positions, change the name or icon of a screen, or configure the side drawer, the app builder makes it easy to create a user-friendly and intuitive app navigation.


# Navigation Groups

Navigation groups help you organize screens inside the side navigation of your app. You can use groups to keep your navigation clean when your app has many screens.

For example, you can create an "Archive" group and place older screens like "2023 Results", "2022 Results", or "Past Squads" inside it.

Follow these steps to create and use navigation groups:

1. Open your app in the app builder.
2. Click on the "Edit Navigation" button in the bottom-right corner of the app builder. This will open the navigation settings for your app.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FJGkrTTCo2KAJoUjZT20R%2FScreenshot%202026-06-07%20at%2010.02.40%E2%80%AFPM.png?alt=media&#x26;token=5c2337e3-5233-4708-9193-df8e000a38a9" alt=""><figcaption></figcaption></figure>

3. Make sure the screens you want to group are in the side navigation.

If a screen is currently in the bottom tabs, drag it into the side navigation section first.

{% hint style="info" %}
Navigation groups are only available for screens in side navigation. Screens in bottom tabs cannot be placed inside groups.
{% endhint %}

4. Click the "Add group" button in the side navigation section.

A new group will be added to your side navigation.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F9eqm0nhqNZaMPgBBuq2S%2FScreenshot%202026-06-07%20at%2010.05.12%E2%80%AFPM.png?alt=media&#x26;token=19c44aca-3f66-48d5-9458-43252266fa2f" alt=""><figcaption></figcaption></figure>

5. Rename the group by editing the group name.

For example, you can name the group "Archive", "Reports", "Admin", or anything else that helps organize your app.

6. Add screens to the group.

Click on a screen in the side navigation, then use the "Group" dropdown to select the group where the screen should appear.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fcx7An9KWryzET8CdwTSY%2FScreenshot%202026-06-07%20at%2010.16.04%E2%80%AFPM.png?alt=media&#x26;token=514409d5-3ada-4ec4-9e69-58c6cfd4e7c0" alt=""><figcaption></figcaption></figure>

7. Repeat this for any other screens you want to place inside the group.

The grouped screens will appear under the group in the side navigation preview.

8. To remove a screen from a group, click on the screen and set the "Group" dropdown back to "No group".
9. To reorder groups, use the "Move up" and "Move down" buttons on the group.
10. To delete a group, click the "Delete group" button.

{% hint style="info" %}
Deleting a group does not delete the screens inside it. The screens will stay in the side navigation and will no longer be grouped.
{% endhint %}

11. Preview your app.

In the app preview, group names appear as collapsible rows. Users can click the group name or caret to expand or collapse the screens inside it.

12. Once you're done, publish your app to make the navigation group changes live for your users.

{% hint style="success" %}
Changes are automatically saved in the app builder, but they only show up on your app link after publishing the app.
{% endhint %}

Navigation groups are useful for keeping less frequently used screens tucked away while still making them easy to access when needed.


# App Icon, Colour, URL

NotionApps allows you to customize your app's icon, colour, and URL to create a unique look and feel for your app. You can customize these attributes by following these steps:

1. Open your app in the app builder.
2. Click on the "Settings" button in the left side panel of the app builder.
3. To customize the app icon, scroll to the "App Icon" section inside the settings. You can choose an icon from our library or upload a custom icon from your system.
4. To customize the app colour, scroll to the "App Color Theme" section. You can choose from our pre-defined colour themes.
5. To customize your app's URL, scroll to the "URL" section. Your app's URL can only contain letters, numbers, and hyphens. If the URL you want is already taken, you'll need to choose a different URL. Once you've chosen your URL, you will need to publish the app for the app to be available at the desired URL.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FEuvjGFbeO4udlLlIVle5%2Fapp-settings.png?alt=media&#x26;token=faa30e4a-3b6f-4c17-a490-fbdc81d21afe" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
You can also customize the app's name and description.
{% endhint %}

By following these simple steps, you can easily customize your NotionApp's icon, colour, and URL. Whether you want to create a unique look and feel for your app or make it easier for users to identify your brand, the app builder makes it easy to customize your app to your liking.


# Custom Domain

You can link your own custom domain to the apps. This means that the app will be available on *app.mydomain.com* instead of *app.notionapps.com,* making it easier to promote the app with your branding when sharing it with others.

{% hint style="info" %}
Subdomains under a root domain count as a single custom domain. For example, blog.mydomain.com and sales.mydomain.com will be counted as one custom domain.

However, if you have two apps, one linked with mydomain.com and the other with myseconddomain.com, these will be counted as two custom domains.
{% endhint %}

{% embed url="<https://youtu.be/P_gsinKQLxA>" %}

### Update your DNS Settings <a href="#block-7a6fdacb422c4e8fb47a775ea6e7b9e9" id="block-7a6fdacb422c4e8fb47a775ea6e7b9e9"></a>

Below you can find the DNS settings that need to be included on your domain registrar's (GoDaddy, Namecheap, Google Domains, etc) or DNS provider's (Cloudflare, Netlify, etc) website.

### Root domain records <a href="#block-71cd6ec31f1e4a40a7afa0e55866cfc6" id="block-71cd6ec31f1e4a40a7afa0e55866cfc6"></a>

For a root domain like `example.com` you'll need to add the following records:

| Type  | Name | Value                |
| ----- | ---- | -------------------- |
| A     | @    | 76.76.21.21          |
| CNAME | www  | cname.notionapps.com |

{% hint style="warning" %}
Make sure to remove any old A records or AAAA records for your root domain or old CNAME entries for www in your DNS settings if your provider does not do this automatically.
{% endhint %}

### Subdomain records <a href="#block-2826060c83e242d085c64902c269c1e8" id="block-2826060c83e242d085c64902c269c1e8"></a>

For a subdomain like `blog.example.com` add this record:

| Type  | Name             | Value                |
| ----- | ---------------- | -------------------- |
| CNAME | (your subdomain) | cname.notionapps.com |

{% hint style="warning" %}
Make sure to remove any old A records for your subdomain or CNAME entries for the subdomain in your DNS settings if your provider does not do this automatically.
{% endhint %}

### Adding your custom domain to your app <a href="#block-984cd56333624dc79fe48dfdbaa303f6" id="block-984cd56333624dc79fe48dfdbaa303f6"></a>

To add a domain to your app,

1. Open the NotionApps app builder
2. Go to App Settings
3. Add your custom domain to the input in the *Custom Domain* section

After entering your own domain address in the popup, if you haven’t already done so, you'll then need to make some changes to the DNS settings through your hosting provider.

You would need to change your DNS records through your domain registrar's (GoDaddy, Namecheap, Google Domains, etc) or DNS provider's (Cloudflare, Netlify, etc) website. For specific instructions, view the content inside the blocks above.

{% hint style="info" %}
**If you run into issues, please make sure that you have:**

* Added new DNS records to your domain provider
* Removed old DNS records
* Waited up to 24 hours for new settings to propagate
  {% endhint %}

## Troubleshooting

***Problem***

My custom domain shows an empty screen and I use CloudFlare as my DNS Provider/Proxy.

***Solution***

When Cloudflare proxy is on your site may show an error `err_too_many_redirects`.

This issue occurs when your Cloudflare SSL/TLS configuration is set to "Flexible". This will have Cloudflare send requests to NotionApps over HTTP and in response, NotionApps will send data back over HTTPS.

To keep all our connections secure you must request Cloudflare to only send requests over HTTPS. To fix this issue, the "SSL/TLS" option in Cloudflare needs to be set to "Full (strict)".

***Problem***

My custom domain is configured and it's been some time but the browser still shows an SSL error.

***Solution***

NotionApps uses Vercel to provide you with custom domains. If you use another service that may be using Vercel as their domain provider, you can see such as SSL error.

To resolve this, please reach out to us at <help@notionapps.com> and we will help you resolve this quickly.


# Buy Additional Custom Domains

## **How to purchase additional custom domains:**

1. **Subscribe to a paid NotionApps plan:** This feature is not available on the FREE plan. Upgrade to a paid plan that best suits your needs. Go to the [Pricing](https://www.notionapps.com/pricing) page to upgrade.
2. **Access your account settings:** On the NotionApps [homepage](https://www.notionapps.com/home), click on **Settings** in the side navigation bar.
3. **Locate the "Buy More" option:** Under the **Usage** section, click the **"Buy more usage"** button.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FauFo2RIRsa8Gk65bLTYW%2FSCR-20250705-qumt.png?alt=media&#x26;token=a0e997a2-d433-4e6b-9a59-2af9ba928cb9" alt=""><figcaption></figcaption></figure>

4. **Manage your plan through Stripe:** You'll be redirected to a secure Stripe customer portal. Click **"Update Plan"** to manage your subscriptions.
5. **Add "Extra Custom Domain" add-on:** Look for the new option **"Extra Custom Domain"** under available add-ons.
6. **Choose the quantity and confirm:** Select the number of additional custom domains you want to purchase and confirm your selection.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FbuAtDKeS7ictz1Noen9M%2FScreenshot%202024-02-22%20at%2012.12.25%E2%80%AFAM.png?alt=media&#x26;token=d01d551e-908d-4454-9e26-3a75090d0dec" alt=""><figcaption></figcaption></figure>

## **Important notes:**

* This feature is not currently available on free plans.
* For custom solutions or bulk purchases, please contact NotionApps support at `help@notionapps.com`.
* Remember to update your DNS settings with the provided information after purchasing your additional domains.

## **Additional resources:**

* Learn more about custom domains in our documentation:
* Watch a video tutorial on configuring custom domains: <https://www.youtube.com/watch?v=P_gsinKQLxA&list=PLCorDDb5Av4qNRY5ca1x1evzWeRPbVpkc&index=5>


# Add New Screen

## Add New Screen

Adding a new screen to your NotionApp is a simple process that allows you to customize the look and functionality of your app. Follow these steps to add a new screen to your app:

1. Open your app in the app builder.
2. Click on the "+ New Screen" button in the bottom-right corner of the app builder. This will open a popup that allows you to add a new screen to your app.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FMrtddH4OL5d2hPiaOJuR%2Fnew-screen-button.png?alt=media&#x26;token=d323677a-d02f-4b8b-8a4a-de5ced245179" alt=""><figcaption></figcaption></figure>

3. Select the Notion database whose items you want to view, update, or add from the drop-down menu.
4. Select the type of screen you want to add. There are four types of screens available: List (View Items), Details (View One Item), List (Update Items), Form (Update Item), and Form (Add Item). Each type of screen has different functionality, so choose the one that best fits your needs.
5. Press the "Done" button to add the screen to your app.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FFge61wD6RPgEQg8v0S0W%2Fnew-screen-popup.png?alt=media&#x26;token=7ef94b45-3552-407f-949b-4dcde69fcf8d" alt=""><figcaption></figcaption></figure>

After adding the screen, you can customize its appearance and functionality. You can customize the look of the screen by changing its row configuration, title, and icon. You can also filter and sort the screen items to display the data in the way that makes the most sense for your app.

#### Other Screen Actions

You can delete or duplicate a screen on NotionApps using the buttons provided right next to the screen name.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FFSxJdChR1AFBoXqsx8KD%2Fdelete-screen-edited.png?alt=media&#x26;token=4b436799-82b2-4d04-a7f7-a5e04e6715a8" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
The option to delete or duplicate a screen is only available on the top-level screens in the bottom tabs or the side drawer.
{% endhint %}

### When this app needs automation

Use the normal instructions on this page when users only need to view, add, or update data. Use automation when the app needs to do something after that data changes, such as submit for approval, notify a reviewer, route work to a queue, start a conversation, update workflow status, or show a recoverable failure.

Good next steps:

* Automation Overview explains the full maker journey.
* Start From a Wizard is the safest way to create a guided workflow.
* Create your first approval workflow walks through a complete approval setup.
* Native Automation Screens explains Decision, Work Queue, Notification Center, Conversation, Workflow Status, Exception Resolution, Automation Launcher, Linked App Exchange, and Operator Console.


# Types of Screens

Screens are the pages your app users open to view data, update records, submit forms, make decisions, follow workflow status, send messages, recover workflow problems, or act on work routed by automation. A good screen type choice keeps the app simple: users should immediately understand what they are looking at, what they can do, and what result to expect after they act.

NotionApps screen types fall into these families:

* **Data screens** show or edit records from connected Notion databases. These are the standard screens used for lists, detail pages, update forms, and add-item forms.
* **Automation screens** show work created by workflows, approvals, messages, notifications, exceptions, launch actions, linked app exchanges, and operational runtime data.
* **Everyday chrome screens** give users Home, Search, and Profile — always-on app-shell utilities that do not require Automation entitlements.
* **Queue & activity screens** give users My Queue and Activity — personal “needs me” and history feeds that require Workflow, Messaging, or Approval Management.

**Data screen types**

Use data screens when the user's main job is to view, create, or update Notion-backed records. Each leaf guide below includes a complete builder options reference (What it does / How to use / Why) and annotated builder screenshots.

| Screen type             | Use it when                                                                                | Guide                                                                                                       |
| ----------------------- | ------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------- |
| List (View Items)       | Users need to browse many records without editing them directly.                           | [List (View Items)](https://docs.notionapps.com/customize-app/types-of-screens/list-view-items)             |
| Details (View One Item) | Users need a focused read-only page for one record.                                        | [Details (View One Item)](https://docs.notionapps.com/customize-app/types-of-screens/details-view-one-item) |
| List (Update Items)     | Users need to review and update multiple records from one list.                            | [List (Update Items)](https://docs.notionapps.com/customize-app/types-of-screens/update-items-form)         |
| Form (Update One Item)  | Users need to edit one existing record through a guided form.                              | [Form (Update One Item)](https://docs.notionapps.com/customize-app/types-of-screens/form-update-one-item)   |
| Form (Add Item)         | Users need to create a new record from the app.                                            | [Form (Add Item)](https://docs.notionapps.com/customize-app/types-of-screens/add-new-item-form)             |
| Content                 | Users need a branded landing, help, or consent page that is not tied to a Notion database. | [Content](https://docs.notionapps.com/customize-app/types-of-screens/content)                               |

Related maker how-tos for data screens: [Prefill Create Forms from a URL](https://docs.notionapps.com/guides/prefill-create-forms-from-a-url), [Validate Email and Phone on Form Fields](https://docs.notionapps.com/guides/validate-email-and-phone-on-form-fields), [Filter List Screens by Logged-in User Properties](https://docs.notionapps.com/guides/filter-list-screens-by-logged-in-user-properties), [Per-Screen Public Access](https://docs.notionapps.com/guides/per-screen-public-access).

**Automation screen types**

Use automation screens when the user's main job is to act on work created by a workflow, understand where work is in a process, respond to a message, recover a failure, launch an operation, or hand work to another app or destination.

| Automation screen    | Use it when                                                                                                               |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| Work Queue           | A focused inbox where users claim, complete, or escalate workflow-created work.                                           |
| Decision             | Human checkpoints where a reviewer chooses Approve, Reject, Request changes, or a similar business decision.              |
| Workflow Status      | Showing where workflow runs are in the process, including waits, retries, completed steps, and outcomes.                  |
| Conversation         | Workflow-aware message threads, comments, replies, and support exchanges tied to a record, route, or conversation.        |
| Exception Resolution | Recovering failed workflow steps, missing data, blocked routes, retries, and manual fixes.                                |
| Notification Center  | Persistent alerts, announcements, reminders, unread notices, and acknowledgements.                                        |
| Automation Launcher  | Controlled manual starts, service requests, operator actions, and launch buttons for workflows.                           |
| Linked App Exchange  | Requests, messages, payloads, acknowledgements, and handoffs exchanged between linked NotionApps applications.            |
| Operator Console     | A high-level dashboard for app owners and operators to monitor runs, queue depth, failures, messages, and audit activity. |

Guides live under [Native Automation And Operational Screen Guides](https://docs.notionapps.com/customize-app/types-of-screens/native-automation-and-operational-screen-guides).

**Everyday chrome screen types**

Use Everyday chrome when users need always-on app shell screens that do **not** require Automation entitlements.

| Everyday chrome screen | Use it when                                                             |
| ---------------------- | ----------------------------------------------------------------------- |
| Home                   | Users need a daily landing surface with next actions and a primary CTA. |
| Search                 | Users need cross-database keyword search from one place.                |
| Profile                | Users need landing-screen and notification preferences.                 |

Guides live under [Everyday Chrome Screens](https://docs.notionapps.com/customize-app/types-of-screens/everyday-chrome-screens).

**Queue & activity screen types**

Use Queue & activity when users need personal feeds backed by automation activity. These cards appear only when Workflow, Messaging, or Approval Management is enabled. Keep this family separate from Everyday chrome when you plan entitlements and navigation.

| Queue & activity screen | Use it when                                               |
| ----------------------- | --------------------------------------------------------- |
| My Queue                | Users need a personal inbox of work and notifications.    |
| Activity                | Users need a timeline of submits, decisions, and updates. |

Guides live under [Queue & Activity Screens](https://docs.notionapps.com/customize-app/types-of-screens/queue-and-activity-screens).

**How to choose the right screen**

1. If the user is browsing or editing Notion records, use a data screen.
2. If the user is claiming or completing routed work, use Work Queue.
3. If the user is approving, rejecting, or requesting changes, use Decision.
4. If the user needs to see workflow progress, use Workflow Status.
5. If the user needs to discuss work in context, use Conversation.
6. If the user needs announcements or reminders, use Notification Center.
7. If the user needs to fix blocked automation, use Exception Resolution.
8. If the user needs to manually start an operation, use Automation Launcher.
9. If work moves between apps, use Linked App Exchange.
10. If an owner needs operational health, use Operator Console.
11. If the user needs a Home hub, Search, or Profile prefs, use an Everyday chrome screen.
12. If the user needs a personal My Queue or Activity feed, use a Queue & activity screen.

Before publishing, run the workflow or message path that should feed the screen. The screen is ready when a non-technical user can open it, understand what happened, and take the expected next action without support help.

### Updates in the 9 Aug 2026 release

* **Content Pages** are first-class unbound screens (HTML/CSS, no Notion database). See [Content](https://docs.notionapps.com/customize-app/types-of-screens/content).
* Apps can mix **public** and **private** screens on one URL. See [Build a Mixed Public–Private Portal](https://docs.notionapps.com/guides/build-a-mixed-public-private-portal).
* Automation screens gained multi-sheet Work Queues, Decision writeback/attachments, Conversation file uploads, and Launcher announcements — see the [9 Aug 2026 Release](https://docs.notionapps.com/release-notes/9-aug-2026-release).


# List (View Items)

The **List (View Items)** screen shows many records from a Notion database in one place. It is the main browsing surface for apps: users scan rows, search or filter, and open a details screen when they need more.

{% hint style="info" %}
**Who this guide is for**\
Makers configuring a list of Notion records. This guide explains every List builder option across the **Content**, **Behaviour**, and **Appearance** tabs, including when each control appears.
{% endhint %}

## What the screen is for

### Use List (View Items) when

* Users need to browse many records from one database
* You want search, sorting, grouping, or end-user filters
* Row click should open a **Details** screen
* You may also want an **Add** path into a Create Form

### Do not use it when

* Users only submit new records with no browsing: use **Form (Add Item)**
* Users edit one existing record: use **Form (Update One Item)** or **List (Update Items)**
* Work is claim-and-complete workflow items: use **Work Queue**
* The page is static HTML: use **Content**

## What users see in the live app

* A list, grid, calendar, or board of records (View Type)
* Mapped Title / Description / Caption / Tag / Image fields (depending on layout)
* Optional search, scanner, and in-app filters
* Optional add button when Add New Item is enabled
* Row tap opens the configured Details screen when Open Item On Click is on

## Add List (View Items) in the builder

1. Open **Screens → + New Screen**.
2. Choose the Notion database to list.
3. Under **Data screens**, select **List (View Items)**.
4. Click **Done**.
5. Map Title (required) and other Data fields.
6. On **Behaviour**, point **Go to Screen** at a Details screen.
7. On **Appearance**, pick List / Grid / Calendar / Board.
8. Publish and test on phone and desktop.

![Builder configuration for this screen](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FGYiogZzVBwSDxHo6O0Oz%2Fdata-1786203139-0-00-builder-hero.jpg?alt=media)

![End-user preview of this screen](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FapC3Adktvi9vTtNxU8Rs%2Fdata-1786203139-1-09-preview-closeup.jpg?alt=media)

## Complete Builder Options Reference

List configuration uses three inspector tabs: **Content**, **Behaviour**, and **Appearance**. Per-field styling and validation are edited in the field inspector after you open a Details/Form field — not on these list tabs.

### Content tab

![Annotated builder screenshot: Content](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F5agxtKxY98RGRFIvmRlU%2Fdata-1786203139-2-01-section-content.jpg?alt=media)

#### Data

![Annotated builder screenshot: Data](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fz3frwv7wwTL8uX33wG9Z%2Fdata-1786203139-3-02-section-data.jpg?alt=media)

**Title**

**What it does:**\
Sets the primary property shown as each row’s title. Required for a usable list.

**How to use it:**\
Pick the field users recognize first (name, request summary, ticket title). Avoid IDs unless users search by ID.

**Why / recommended default:**\
Title is the scan target. A common mistake is mapping a weak or empty property, which makes every row look identical.

**Description / Caption**

**What it does:**\
Optional secondary and tertiary text under the title. Hidden in compact List layouts and unavailable in Calendar mode.

**How to use it:**\
Use Description for status or owner; Caption for dates or short metadata. Keep both short for mobile.

**Why / recommended default:**\
Leave blank until the title alone is not enough. Overloading description text makes dense lists hard to scan.

**Color Tag**

**What it does:**\
Maps a select/status-style property to a colored tag on each row, with optional per-option colors.

**How to use it:**\
Point it at Status or Priority. Set colors that match your app theme.

**Why / recommended default:**\
Use for one high-signal status field. A common mistake is tagging a field with too many options, which becomes noisy.

**Image**

**What it does:**\
Shows an image property on each row (List/Grid styles vary).

**How to use it:**\
Map a file/image property. On Appearance, tune Image Style / Fill / Grid Image Style.

**Why / recommended default:**\
Only enable when images add recognition value. Empty image slots waste space.

**Date (Calendar only)**

**What it does:**\
When View Type is Calendar, Date replaces Description/Caption/Tag/Image and places items on the calendar.

**How to use it:**\
Map the date property that should position events. Pair with Title only.

**Why / recommended default:**\
Required for Calendar to be useful. Wrong date fields scatter items incorrectly.

#### Filtering

![Annotated builder screenshot: Filtering](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FBeek50o8z2ulhDIMufH1%2Fdata-1786203139-4-03-section-filtering.jpg?alt=media)

**Filter rows / + Add Filtering**

**What it does:**\
Maker-defined filters that permanently limit which rows appear on this screen (separate from Data Restriction and In-App Filtering).

**How to use it:**\
Add conditions that define this list’s job (for example Status is Open). Use AND/OR as needed.

**Why / recommended default:**\
Prefer a clear fixed filter over teaching users to filter everything manually. A common mistake is duplicating Data Restriction here.

#### Logged-in user property filters

![Annotated builder screenshot: Logged-in user property filters](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fcdy8HLbrAsCGR2HUI25x%2Fdata-1786203139-5-04-section-logged-in-user-property-filters.jpg?alt=media)

**Allow logged-in user property filters**

**What it does:**\
Lets filters compare list properties to the signed-in user’s Users-sheet properties (for example Owner equals Me).

**How to use it:**\
Enable when each user should see “my” rows. Requires a linked Users sheet and matching properties. May be plan-gated.

**Why / recommended default:**\
Excellent for private portals. Do not enable for public guest lists — guests have no user profile.

#### Grouping

![Annotated builder screenshot: Grouping](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FzFYHokSs3LhFzd0aubNK%2Fdata-1786203139-6-07-section-grouping.jpg?alt=media)

**Group By / Order / + Add Grouping**

**What it does:**\
Groups rows by a property (feature/beta may apply). Hidden for Calendar. Typically one group level.

**How to use it:**\
Group by Status or Category when users triage by buckets. Choose A→Z or Z→A order.

**Why / recommended default:**\
Skip grouping until the list is long enough that buckets help. Grouping empty or unique fields adds clutter.

#### Sorting

![Annotated builder screenshot: Sorting](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fzm2PdBmjMXRl1S3dPZUR%2Fdata-1786203139-7-05-section-sorting.jpg?alt=media)

**Sort By / Order / + Add Sorting**

**What it does:**\
Default sort for the list. Hidden for Calendar.

**How to use it:**\
Sort by newest date or priority. Add multiple levels only when needed.

**Why / recommended default:**\
Default to newest-first for operational lists. Unsorted lists feel unfinished.

#### In-App Filtering

![Annotated builder screenshot: In-App Filtering](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FsNL4Z2f4SahHM4DW3Nj0%2Fdata-1786203139-8-06-section-in-app-filtering.jpg?alt=media)

**Filter Name / Filter Columns / + Add Filter Property**

**What it does:**\
Defines filters end users can change while browsing (distinct from maker Filtering).

**How to use it:**\
Expose 1–3 useful columns (Status, Category, Owner). Name filters clearly.

**Why / recommended default:**\
Use for exploratory browsing. Do not expose every column — mobile filter UIs get heavy.

### Behaviour tab

![Annotated builder screenshot: Behaviour](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F1yGEzLOub2hSvVPP5c2c%2Fdata-1786203139-9-08-section-behaviour.jpg?alt=media)

#### Open Item On Click / Go to Screen

{% hint style="info" %}
On **List (View Items)**, this control is labeled **Open Item On Click**. The annotated screenshot below is taken from the same Behaviour panel position on a List (Update Items) screen, where the twin control is **Go to Update Screen**.
{% endhint %}

![Annotated builder screenshot: Open Item On Click](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FM8VZoB7yl4FMw4ZQGvgy%2Fdata-1786203139-10-09-section-go-to-update-screen.jpg?alt=media)

**What it does:**\
When on, tapping a row opens the selected Details (or other) screen.

**How to use it:**\
Turn on for browse→details flows. Pick the Details screen for the same database.

**Why / recommended default:**\
On for almost every View List. Leaving it off makes the list feel dead.

#### Add New Item

![Annotated builder screenshot: Add New Item](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fm9tAxyHdchnSjE9oggF2%2Fdata-1786203139-11-11-section-add-new-item.jpg?alt=media)

**Add New Item / Go to Screen**

**What it does:**\
Shows an add affordance that opens a Create Form screen.

**How to use it:**\
Enable when users should create records from this list. Point to the matching Form (Add Item).

**Why / recommended default:**\
On for operational intake lists; off for read-only directories.

#### Allow Search

![Annotated builder screenshot: Allow Search](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F9nrL5su3Z7yl7rhcAaV6%2Fdata-1786203139-12-12-section-allow-search.jpg?alt=media)

**Allow Search / Search Helper Text / Show Scanner / Scan Type**

**What it does:**\
Adds a search bar; optional barcode/QR scanner with type Barcode or QR Code.

**How to use it:**\
Enable search for large lists. Set helper text like “Search requests”. Enable scanner only when users scan codes into the same properties.

**Why / recommended default:**\
Search on for lists over \~20 rows. Scanner off unless the workflow is scan-driven.

#### Screen Visibility Logic

![Annotated builder screenshot: Screen Visibility Logic](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F1yGEzLOub2hSvVPP5c2c%2Fdata-1786203139-9-08-section-behaviour.jpg?alt=media)

**Status / + Add Logic**

**What it does:**\
Controls who can open this screen (restricted vs unrestricted). Logic filters use the Users sheet on private apps.

**How to use it:**\
Keep unrestricted for shared team lists. Add user-sheet logic when only certain roles should see the screen.

**Why / recommended default:**\
Unrestricted unless the screen is role-sensitive. Do not confuse this with Filtering (which rows) or Data Restriction (which rows per user).

#### Data Restriction

![Annotated builder screenshot: Data Restriction](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F1yGEzLOub2hSvVPP5c2c%2Fdata-1786203139-9-08-section-behaviour.jpg?alt=media)

**Enabled for this screen**

**What it does:**\
Applies database personalization so each user only sees rows they are allowed to access. Disabled on public apps or when the sheet is not personalized.

**How to use it:**\
Enable for customer/partner portals. Keep off for shared staff desks that should see all open work.

**Why / recommended default:**\
Match the database’s personalization strategy. Enabling without a Users mapping looks like an empty list bug.

### Appearance tab

![Annotated builder screenshot: Appearance](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FPTRpDqLKd391R0wInLWk%2Fdata-1786203139-13-14-section-appearance.jpg?alt=media)

#### View Type

![Annotated builder screenshot: View Type](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FV38ny00dPtSmKenoiHuC%2Fdata-1786203139-14-15-section-view-type.jpg?alt=media)

**View Type**

**What it does:**\
Chooses List, Grid, Calendar, or Board presentation.

**How to use it:**\
List for dense ops queues; Grid for image-heavy catalogs; Calendar for dated work; Board for status columns.

**Why / recommended default:**\
List is the safest default. Calendar requires a Date mapping; Board needs a useful status/select property.

#### Style controls (conditional)

**Grid Column Size / Grid Image Style**

**What it does:**\
Grid density and image crop style when View Type is Grid.

**How to use it:**\
Large for marketing-style cards; Small for denser catalogs.

**Why / recommended default:**\
Large when images matter; Small when titles matter more.

**Image Style / Image Fill**

**What it does:**\
Shape and fit for list/grid images (not Calendar).

**How to use it:**\
Match brand (square vs round). Use Fit for logos; Fill for photos.

**Why / recommended default:**\
Square + Fill is a solid default for photos.

**Default Mode / Allow Mode Change (Calendar)**

**What it does:**\
Calendar starts in Day/Week/Month/Agenda; optional user mode switching.

**How to use it:**\
Month for overview; Week for scheduling teams. Allow Mode Change when users need flexibility.

**Why / recommended default:**\
Month + Allow Mode Change on for most calendar lists.

**View Less Data / Wrap Text / Desktop split view**

**What it does:**\
Compact list density; wrap long text; show list+details side-by-side on wide desktops.

**How to use it:**\
View Less Data for long operational lists. Desktop split view when desktop users triage quickly.

**Why / recommended default:**\
View Less Data on for dense queues; Desktop split view on for staff desktop apps.

### Related setup outside the inspector

#### Edit Navigation

**What it does:**\
Controls nav label, icon, and whether the list appears in guest/signed-in navigation (and Public access on private apps via the screen accordion).

**How to use it:**\
Put primary lists in navigation. Keep secondary lists hidden and open them from buttons.

**Why / recommended default:**\
One primary list in nav beats five competing lists.

#### Field inspector on Details/Form

**What it does:**\
Per-field labels, required, validation, visibility, defaults — configured on Details/Form screens, not on List Data mapping.

**How to use it:**\
After list→details navigation works, polish field-level options on the Details/Form screens.

**Why / recommended default:**\
Do not expect list Data mapping to replace field inspector setup.

## Recommended default setup

| Setting            | Recommended value                                       |
| ------------------ | ------------------------------------------------------- |
| Title              | Primary human-readable property                         |
| Open Item On Click | On → Details screen                                     |
| Add New Item       | On only if users create from this list                  |
| Allow Search       | On for larger lists                                     |
| View Type          | List                                                    |
| Filtering          | Match the list’s job (e.g. open items only)             |
| Data Restriction   | On for personalized portals; off for shared staff desks |

## Testing checklist

* [ ] Title mapping is readable on mobile
* [ ] Row click opens the intended Details screen
* [ ] Add button opens the intended Create Form (if enabled)
* [ ] Maker Filtering shows the expected subset
* [ ] In-app filters work for end users
* [ ] Search finds known records
* [ ] Calendar/Board/Grid layouts render with required fields
* [ ] Data Restriction / visibility behave correctly per persona (`View as user`)

## Troubleshooting

| Symptom                | Likely cause                                   | What to check                       |
| ---------------------- | ---------------------------------------------- | ----------------------------------- |
| List is empty          | Filtering, Data Restriction, or empty DB       | Relax filters; test as another user |
| Row click does nothing | Open Item On Click off or missing Go to Screen | Behaviour tab                       |
| Calendar empty/wrong   | Date not mapped or wrong field                 | Content → Data → Date               |
| Search missing         | Allow Search off                               | Behaviour tab                       |
| Users see others’ rows | Data Restriction off                           | Behaviour → Data Restriction        |

## Best practices

* One list job per screen (Open requests, Closed archive) instead of one mega-list.
* Always pair View List with a Details destination.
* Keep in-app filters few and meaningful.
* Prefer maker Filtering for permanent scope; In-App Filtering for exploration.


# Details (View One Item)

The **Details (View One Item)** screen shows one Notion record at a time. It is the destination users open from a List row when they need the full record, related fields, and optional edit/delete actions.

{% hint style="info" %}
**Who this guide is for**\
Makers wiring browse→details flows. This guide covers every Details builder option on **Content**, **Behaviour**, and **Appearance**, plus how field-level options work in the field inspector.
{% endhint %}

## What the screen is for

### Use Details when

* Users open one record from a List
* You need a read-focused record page with optional Edit / Delete
* Field order and visibility matter more than bulk browsing

### Do not use it when

* Users primarily create records: use **Form (Add Item)**
* Users edit in place across many rows: use **List (Update Items)** or **Form (Update One Item)**
* The page is marketing/help HTML: use **Content**

## What users see in the live app

* Field components in the order you configure under Logic
* Optional Edit control that opens an Update Form
* Optional Delete (when the screen is not primary and Allow Delete is on)
* Maker Filtering only applies when this Details screen is a primary screen

## Add Details in the builder

1. **Screens → + New Screen** → choose the database → **Details (View One Item)**.
2. Add and order fields under **Content → Logic**.
3. On **Behaviour**, enable **Allow Editing** and point to an Update Form if users should edit.
4. From the List screen, set **Open Item On Click → Go to Screen** to this Details screen.
5. Publish and test list→details navigation.

![Builder configuration for this screen](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FgOQxWTKdJGHhUkIJmGZg%2Fdata-1786203142-15-00-builder-hero.jpg?alt=media)

![End-user preview of this screen](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FS3ADCpO7kdB5XJZfvcli%2Fdata-1786203142-16-09-preview-closeup.jpg?alt=media)

## Complete Builder Options Reference

### Content tab

![Annotated builder screenshot: Content](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FMqndrBU3kIzx1p1swmvY%2Fdata-1786203142-17-01-section-content.jpg?alt=media)

#### Logic

![Annotated builder screenshot: Logic](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FHHdZC1bSbHw8w1GIrux4%2Fdata-1786203142-18-02-section-logic.jpg?alt=media)

**Field / component list**

**What it does:**\
Defines which properties appear and in what order (add, reorder, remove comps).

**How to use it:**\
Add only fields users need. Put identity fields first (title, status), then details, then attachments.

**Why / recommended default:**\
A short, ordered Details page beats dumping every Notion property. Empty Logic shows “Add Logic to edit the screen”.

#### Filtering (primary screens only)

![Annotated builder screenshot: Filtering](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FAh1EjWFRjDlpVR1o2o0P%2Fdata-1786203142-19-03-section-filtering.jpg?alt=media)

**Filter rows**

**What it does:**\
Limits which records this primary Details screen can show when opened as a standalone primary route.

**How to use it:**\
Usually leave empty when Details is only opened from a List with its own filters. Use when Details is primary and must be scoped.

**Why / recommended default:**\
Off/empty for typical list→details apps. Prefer list Filtering for browse scope.

### Behaviour tab

![Annotated builder screenshot: Behaviour](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F9wn1A8lDkY6fTA0zj5XR%2Fdata-1786203142-20-04-section-behaviour.jpg?alt=media)

#### Allow Editing

![Annotated builder screenshot: Allow Editing](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Ft2buDhZEgcxnmvfVasiY%2Fdata-1786203142-21-05-section-allow-editing.jpg?alt=media)

**Allow Editing / Go to Update Screen**

**What it does:**\
Shows an edit path into a Form (Update One Item) for the same database.

**How to use it:**\
Enable for staff/customer edit flows. Select the Update Form screen.

**Why / recommended default:**\
On when users should change records; off for read-only portals.

#### Allow Delete (non-primary only)

![Annotated builder screenshot: Allow Delete](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Ft2buDhZEgcxnmvfVasiY%2Fdata-1786203142-21-05-section-allow-editing.jpg?alt=media)

**Allow Delete / Button Text / Ask for confirmation / Delete Confirmation Text**

**What it does:**\
Lets users delete the open record. Available when the Details screen is not the app’s primary screen. Success message is typically hidden for Notion.

**How to use it:**\
Enable only for trusted roles. Keep confirmation on. Use clear button text like “Delete request”.

**Why / recommended default:**\
Off by default. Destructive actions should be rare and confirmed.

#### Screen Visibility Logic (primary)

![Annotated builder screenshot: Screen Visibility Logic](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FcPWWBQa9LhD6RsLwlIqF%2Fdata-1786203142-22-07-section-screen-visibility-logic.jpg?alt=media)

**Visibility status / + Add Logic**

**What it does:**\
Controls who can open this Details screen when it is primary (Users-sheet logic on private apps).

**How to use it:**\
Restrict when Details is a landing surface for a role. Otherwise leave unrestricted and rely on list navigation.

**Why / recommended default:**\
Unrestricted for standard secondary Details screens.

### Appearance tab

![Annotated builder screenshot: Appearance](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FEoxN3Djy7EaNsLpdFDNc%2Fdata-1786203142-23-08-section-appearance.jpg?alt=media)

Details Appearance is intentionally empty: field styles live in the field inspector and app theme lives in Settings.

### Field inspector (not screen tabs)

When you select a field in Logic, makers commonly set:

* Label, Helper Text
* Visibility Logic (when the field shows)
* View/style options for read-only display
* For linked edit forms: required, validation, defaults (on the Update Form fields)

**Why / recommended default:**\
Treat Details as layout + navigation; treat the field inspector as copy and visibility polish.

### Related setup outside the inspector

#### List Open Item On Click

Wire the List Behaviour tab to this Details screen or users cannot open records.

#### Edit Navigation

Details is often hidden from navigation and reached only from lists. Mark primary only if users should land here.

## Recommended default setup

| Setting       | Recommended value                     |
| ------------- | ------------------------------------- |
| Logic fields  | Title, status, key details, files     |
| Allow Editing | On → Update Form (if edits allowed)   |
| Allow Delete  | Off unless trusted role + non-primary |
| Filtering     | Empty for secondary Details           |
| Navigation    | Usually hidden; open from List        |

## Testing checklist

* [ ] List row opens this Details screen with the correct record
* [ ] Field order reads well on mobile
* [ ] Edit opens the Update Form with the same record
* [ ] Delete (if enabled) confirms and removes the Notion page
* [ ] Hidden fields respect visibility logic
* [ ] `View as user` confirms role-appropriate access

## Troubleshooting

| Symptom                    | Likely cause                            | What to check   |
| -------------------------- | --------------------------------------- | --------------- |
| List does not open Details | List Go to Screen wrong / Open Item off | List Behaviour  |
| Blank Details              | No Logic comps or wrong record context  | Content → Logic |
| Edit missing               | Allow Editing off                       | Behaviour       |
| Delete missing             | Screen is primary or Allow Delete off   | Behaviour       |

## Best practices

* Keep Details scannable; push rare fields lower or hide with visibility logic.
* Always pair with List Open Item On Click.
* Prefer Update Form for editing instead of overloading Details.


# List (Update Items)

The **List (Update Items)** screen browses many records like a View List, but row open always targets an **Update Form** instead of a Details “open on click” toggle. Use it when the list’s job is “find a row and edit it.”

{% hint style="info" %}
**Who this guide is for**\
Makers building edit-centric lists. Options largely match **List (View Items)**; this guide highlights Behaviour differences and the shared Content/Appearance controls.
{% endhint %}

## What the screen is for

### Use List (Update Items) when

* Users scan many rows and edit them often
* You want list search/filters plus a direct path to Update Form
* A separate read-only Details page is unnecessary

### Do not use it when

* Users mostly read then sometimes edit: use **List (View Items)** → **Details** → **Update Form**
* Users only create: use **Form (Add Item)**
* Work items are workflow queue items: use **Work Queue**

## What users see in the live app

* Same list presentations as View List (List/Grid/Calendar/Board)
* Row tap opens the configured **Update Form**
* Optional Add New Item, search, in-app filters, maker Filtering, Data Restriction

## Add List (Update Items) in the builder

1. **Screens → + New Screen** → database → **List (Update Items)**.
2. Map Data fields (Title required).
3. On **Behaviour**, set **Go to Update Screen** to the Update Form.
4. Configure Appearance View Type.
5. Publish and test row → edit → save.

![Builder configuration for this screen](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Ff0hVxaSDnPUZzeiK8AOF%2Fdata-1786203151-44-00-builder-hero.jpg?alt=media)

![End-user preview of this screen](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FJKCbD0pKyzdPvMsza94H%2Fdata-1786203155-45-09-preview-closeup.jpg?alt=media)

## Complete Builder Options Reference

### Content tab

![Annotated builder screenshot: Content](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FGvG27M6a6HtOR0mDfBem%2Fdata-1786203155-46-01-section-content.jpg?alt=media)

Content matches **List (View Items)**:

#### Data

Title (required), Description, Caption, Color Tag, Image, and Calendar Date — same rules and recommendations as View List.

![Annotated builder screenshot: Data](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FNwnNLgvpGIhjWcOOtFe9%2Fdata-1786203155-47-02-section-data.jpg?alt=media)

#### Filtering / Logged-in user property filters / Grouping / Sorting / In-App Filtering

Same controls and guidance as View List. Use maker Filtering for permanent scope; In-App Filtering for end-user exploration; user-property filters for “my rows.”

![Annotated builder screenshot: Filtering](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F8tCRwhhZIK05n5a2tSWU%2Fdata-1786203155-48-03-section-filtering.jpg?alt=media)

![Annotated builder screenshot: Sorting](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FZoZe57wXoXGF9HtXIjpL%2Fdata-1786203155-49-05-section-sorting.jpg?alt=media)

![Annotated builder screenshot: In-App Filtering](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FMpIYHt1w1e6L3uUbtITY%2Fdata-1786203155-50-06-section-in-app-filtering.jpg?alt=media)

### Behaviour tab

![Annotated builder screenshot: Behaviour](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FH4KTIwMhpVxDvHEZDJNF%2Fdata-1786203155-51-08-section-behaviour.jpg?alt=media)

#### Go to Update Screen

![Annotated builder screenshot: Go to Update Screen](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FcDtY21FZ2TwKBANEjYY2%2Fdata-1786203155-52-09-section-go-to-update-screen.jpg?alt=media)

**Go to Update Screen**

**What it does:**\
Always navigates row open to an Update Form (no “Open Item On Click” toggle).

**How to use it:**\
Select the Form (Update One Item) for the same database.

**Why / recommended default:**\
Required for the screen to be useful. Pointing at Details defeats the edit-list purpose.

#### Add New Item / Allow Search / Screen Visibility / Data Restriction

Same as View List:

* **Add New Item** → Create Form when users also create from this list
* **Allow Search** (+ helper text, optional scanner)
* **Screen Visibility Logic** for who can open the list
* **Data Restriction** for personalized row access

![Annotated builder screenshot: Allow Search](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FkefBFTvME5LW5raRXWFY%2Fdata-1786203155-53-11-section-allow-search.jpg?alt=media)

![Annotated builder screenshot: Data Restriction](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FH4KTIwMhpVxDvHEZDJNF%2Fdata-1786203155-51-08-section-behaviour.jpg?alt=media)

### Appearance tab

![Annotated builder screenshot: Appearance](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FBYzjlIMSDtWmuHHfpNdl%2Fdata-1786203155-54-13-section-appearance.jpg?alt=media)

#### View Type / Style

Same as View List: List, Grid, Calendar, Board, plus conditional image/calendar/compact/split-view controls.

![Annotated builder screenshot: View Type](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fl5XOxC0kNH7n2S9ear8v%2Fdata-1786203155-55-14-section-view-type.jpg?alt=media)

### Not in the current inspector

A legacy “update multiple rows” section exists in code but is **not shown** in the current tabbed inspector. Do not document it as an available maker control.

### Related setup

* Create a matching **Form (Update One Item)** before wiring Go to Update Screen
* Prefer this list when edit is the primary job; prefer View List→Details when reading is primary

## Recommended default setup

| Setting             | Recommended value              |
| ------------------- | ------------------------------ |
| Go to Update Screen | Matching Update Form           |
| Title               | Human-readable identity field  |
| Allow Search        | On for larger edit lists       |
| View Type           | List                           |
| Add New Item        | On only if create belongs here |

## Testing checklist

* [ ] Row opens Update Form with the correct record
* [ ] Save on Update Form writes to Notion
* [ ] Search/filters still find the right editable rows
* [ ] Data Restriction / visibility correct per persona
* [ ] Add New Item (if on) opens Create Form

## Troubleshooting

| Symptom                | Likely cause                     | What to check                 |
| ---------------------- | -------------------------------- | ----------------------------- |
| Row opens wrong screen | Go to Update Screen mis-set      | Behaviour                     |
| Cannot edit fields     | Update Form Logic missing inputs | Update Form Content           |
| Empty list             | Filtering / Data Restriction     | Content Filtering + Behaviour |

## Best practices

* Use Update List for operator “find and fix” desks.
* Use View List + Details when users need a read-first experience.
* Keep the Update Form field set small so edit stays fast.


# Form (Update One Item)

The **Form (Update One Item)** screen edits an existing Notion record. It is usually opened from Details (**Allow Editing**) or from **List (Update Items)**.

{% hint style="info" %}
**Who this guide is for**\
Makers configuring edit forms. This guide covers Content/Behaviour options for Update Form, including how it differs from Create Form (no Public access, no section stepper).
{% endhint %}

## What the screen is for

### Use Form (Update One Item) when

* Users change fields on an existing record
* Details should stay read-focused while edit lives on a separate form
* You need after-save Actions or delete from the edit surface

### Do not use it when

* Users only create records: use **Form (Add Item)**
* Users only view: use **Details**
* Guests should submit new intake: use Create Form + Public access (Update Form has no public panel)

## What users see in the live app

* Editable fields for the open record
* Submit button (when editable comps exist) with placement settings
* Optional Delete (non-primary screens)
* Optional after-save Actions

## Add Form (Update One Item) in the builder

1. **Screens → + New Screen** → database → **Form (Update One Item)**.
2. Add editable fields under **Content → Logic**.
3. On Details, enable **Allow Editing → Go to Update Screen** pointing here.
4. Configure Save Button Text, Success Message, and Actions.
5. Publish and test edit→save→Notion sync.

![Builder configuration for this screen](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FO1iu4lLVVukXcY7MiHMR%2Fdata-1786203151-35-00-builder-hero.jpg?alt=media)

![End-user preview of this screen](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FdtFEtkzmOBQHVVNiegTW%2Fdata-1786203151-36-09-preview-closeup.jpg?alt=media)

## Complete Builder Options Reference

### Content tab

![Annotated builder screenshot: Content](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FTiMPo9SCrO7FyYdlO0tj%2Fdata-1786203151-37-01-section-content.jpg?alt=media)

#### Logic

![Annotated builder screenshot: Logic](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FUndcLsDrCMRoKYfzsCfl%2Fdata-1786203151-38-02-section-logic.jpg?alt=media)

**Field / component list**

**What it does:**\
Defines which properties users can edit (and read-only comps if included).

**How to use it:**\
Include fields users actually change. Hide system fields. Use visibility logic for role-specific edits.

**Why / recommended default:**\
Keep edit forms tighter than Details. A common mistake is allowing edits to fields that workflows own.

#### Filtering (primary only)

![Annotated builder screenshot: Filtering](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FrugAB9UEjfNYhgIlkKt8%2Fdata-1786203151-39-03-section-filtering.jpg?alt=media)

**Filter rows**

**What it does:**\
Scopes records when this Update Form is used as a primary screen.

**How to use it:**\
Usually empty when opened from Details/List with context. Use when Update Form is a primary gated editor.

**Why / recommended default:**\
Empty for secondary edit forms.

### Behaviour tab

![Annotated builder screenshot: Behaviour](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FakIkHSzrTMCBH2ump1gG%2Fdata-1786203151-40-04-section-behaviour.jpg?alt=media)

#### Save Button Text / positions / Success Message

![Annotated builder screenshot: Save Button Text](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FCASP3MbnuuhJfqwFGwGP%2Fdata-1786203151-41-05-section-save-button-text.jpg?alt=media)

**What it does:**\
Submit chrome for saving changes. Hidden if the layout has no explicit editable comps.

**How to use it:**\
Label as “Save changes”. Match mobile/desktop placement to Create Form patterns your users already know.

**Why / recommended default:**\
Always provide a clear save label and success message.

#### Actions

![Annotated builder screenshot: Actions](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F4SzoMuPxJ7FDdmmu2pGv%2Fdata-1786203151-42-06-section-actions.jpg?alt=media)

**Action Type / + Add Action**

**What it does:**\
After-save Change Data / Go to Screen / Open Link.

**How to use it:**\
Often Go to Screen back to Details or List after save.

**Why / recommended default:**\
Return users to the record they edited.

#### Allow Delete (non-primary)

![Annotated builder screenshot: Allow Delete](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F4SzoMuPxJ7FDdmmu2pGv%2Fdata-1786203151-42-06-section-actions.jpg?alt=media)

**What it does:**\
Delete the current record from the edit form (with confirmation options).

**How to use it:**\
Enable only for trusted editors. Prefer confirmation on.

**Why / recommended default:**\
Off unless delete is a real product requirement.

#### Screen Visibility Logic (primary)

![Annotated builder screenshot: Screen Visibility Logic](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FncacbmvhwtrvjQiuoYLm%2Fdata-1786203151-43-08-section-screen-visibility-logic.jpg?alt=media)

**What it does:**\
Who can open the Update Form when it is primary.

**How to use it:**\
Restrict to roles that may edit. Secondary edit forms usually inherit access via Details navigation.

**Why / recommended default:**\
Unrestricted secondary; restrict if primary.

### Appearance tab

Empty — use field inspector + app theme.

### Differences from Create Form

| Option                         | Create Form | Update Form                            |
| ------------------------------ | ----------- | -------------------------------------- |
| Public access / Copy form link | Yes         | No                                     |
| Use sections as steps          | Yes         | No                                     |
| Filtering                      | Never       | Primary only                           |
| Delete                         | No          | Non-primary yes                        |
| URL default prefills           | Common      | Less common; still available per field |

### Field inspector highlights

* Is Required, Validate input
* Disable Changes (lock fields)
* Visibility When: current row vs user inputs
* Default Value (use carefully on updates)

## Recommended default setup

| Setting         | Recommended value     |
| --------------- | --------------------- |
| Opened from     | Details Allow Editing |
| Fields          | Editable subset only  |
| Success Message | “Changes saved”       |
| Actions         | Return to Details     |
| Delete          | Off                   |

## Testing checklist

* [ ] Details Edit opens this form with the same record
* [ ] Save writes to Notion
* [ ] Required/validation rules work
* [ ] Actions return to the expected screen
* [ ] Delete (if on) confirms correctly
* [ ] Role visibility works with `View as user`

## Troubleshooting

| Symptom              | Likely cause           | What to check                    |
| -------------------- | ---------------------- | -------------------------------- |
| No submit button     | No editable comps      | Logic fields                     |
| Opens blank          | Missing record context | Navigation from Details/List     |
| Public link expected | Wrong screen type      | Use Create Form for guest intake |

## Best practices

* Keep Update Form focused on mutable fields.
* Let workflows own status fields when automation sets them.
* Always provide a return path after save.


# Form (Add Item)

The **Form (Add Item)** screen creates new Notion records. It is the intake surface for requests, applications, feedback, and any “submit something new” flow — including public guest forms in private apps.

{% hint style="info" %}
**Who this guide is for**\
Makers building create/intake forms. This guide explains every Create Form option on **Content** and **Behaviour**, including Public access, submit placement, section steps, and after-save Actions.
{% endhint %}

## What the screen is for

### Use Form (Add Item) when

* Users create new database rows
* Guests should submit without seeing the private app (Public access)
* You need success messaging and follow-up Actions after save
* You want a section stepper for longer intakes

### Do not use it when

* Users only browse existing rows: use **List**
* Users edit an existing row: use **Form (Update One Item)**
* The page is static content: use **Content**

## What users see in the live app

* Input fields in Logic order (and optional section steps)
* Submit button with your Save Button Text and placement settings
* Success message after save
* Optional post-save Actions (change data, go to screen, open link)
* Public forms can open via shareable link without login when Public access is on

## Add Form (Add Item) in the builder

1. **Screens → + New Screen** → database → **Form (Add Item)**.
2. Add inputs under **Content → Logic**.
3. On **Behaviour**, set Save Button Text, placement, Success Message, and Actions.
4. For guest intake on a private app, enable **Public access** and test the copied form link signed out.
5. Optionally enable **Use sections as steps**.
6. Publish and submit a real test record.

![Builder configuration for this screen](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FX86KpaPUaGNxfftgrJn6%2Fdata-1786203142-24-00-builder-hero.jpg?alt=media)

![End-user preview of this screen](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F7gXXVbGbJIjs5WuYqSXC%2Fdata-1786203142-25-09-preview-closeup.jpg?alt=media)

## Complete Builder Options Reference

### Content tab

![Annotated builder screenshot: Content](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FQvRvRd2VsvNW8GrTKtzz%2Fdata-1786203142-26-01-section-content.jpg?alt=media)

#### Logic

![Annotated builder screenshot: Logic](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FGRTnU5kmSkciihcH9q4w%2Fdata-1786203142-27-02-section-logic.jpg?alt=media)

**Field / component list**

**What it does:**\
Defines inputs, sections, and display comps on the form.

**How to use it:**\
Add required intake fields first. Use Section comps to group long forms. Avoid optional noise on the first screen of a stepper.

**Why / recommended default:**\
Short forms convert better. A common mistake is mirroring every Notion property.

Create Form does **not** show screen-level Filtering.

### Behaviour tab

![Annotated builder screenshot: Behaviour](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FHEGL9IcrlLjOUSbvJMiX%2Fdata-1786203142-28-03-section-behaviour.jpg?alt=media)

#### Public access (private apps)

![Annotated builder screenshot: Public access](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F5uU6NqglQa2KXDZAAOYv%2Fdata-1786203142-29-04-section-public-access.jpg?alt=media)

**Public access / guest nav / signed-in nav / Copy form link**

**What it does:**\
Lets anyone with the form link submit without signing in. Guest and signed-in navigation toggles control menu visibility. Copy form link builds a shareable URL (needs app domain).

**How to use it:**\
Enable for public intake. Usually keep guest navigation off and link from a public Content page. Copy and test the link in an incognito window. See [Per-Screen Public Access](https://docs.notionapps.com/guides/per-screen-public-access).

**Why / recommended default:**\
Public on only for forms that are safe for unauthenticated submitters. Never expose private data fields.

![Annotated builder screenshot: Save Button Text](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FpinZSVXQxlnUZYVsAT0n%2Fdata-1786203151-30-05-section-save-button-text.jpg?alt=media)

#### Save Button Text / Mobile position / Desktop position / Desktop alignment

**What it does:**\
Controls submit label and where the button sits on mobile and desktop.

**How to use it:**\
Use action verbs (“Submit request”). Pick Fixed at bottom on mobile for long forms. On desktop, End of form content or Sticky page footer are common.

**Why / recommended default:**\
Clear label + always-reachable button. Floating can help very long forms; test on real devices.

#### Use sections as steps

![Annotated builder screenshot: Use sections as steps](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F0VC1lMNT9Ztr4GQRyOtG%2Fdata-1786203151-31-06-section-use-sections-as-steps.jpg?alt=media)

**Use sections as steps**

**What it does:**\
Turns Section components into a multi-step wizard (Create Form only).

**How to use it:**\
Add Section comps in Logic, then enable this toggle. Keep each step short.

**Why / recommended default:**\
On for long intakes; off for 3–5 field forms.

#### Success Message

![Annotated builder screenshot: Success Message](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FOI447aw4U5aBeJpj2k9Y%2Fdata-1786203151-32-07-section-success-message.jpg?alt=media)

**Success Message**

**What it does:**\
Text shown after a successful create.

**How to use it:**\
Confirm what happened and what happens next (“Request submitted — we’ll email you”).

**Why / recommended default:**\
Always set a human success message. Empty success states feel broken.

#### Actions

![Annotated builder screenshot: Actions](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FOSuHpfewGFWeXBeJ3krw%2Fdata-1786203151-33-08-section-actions.jpg?alt=media)

**Action Type / + Add Action**

**What it does:**\
Runs after save: Change Data, Go to Screen, or Open Link (one navigation-style action max).

**How to use it:**\
Go to Screen for a thank-you Content page or status screen. Change Data for status defaults. Open Link for external confirmation pages.

**Why / recommended default:**\
Prefer an in-app thank-you screen for private apps; Content thank-you for public intake.

#### Screen Visibility Logic (primary)

![Annotated builder screenshot: Screen Visibility Logic](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fn2sRCecJJEYi1PbHZB7h%2Fdata-1786203151-34-09-section-screen-visibility-logic.jpg?alt=media)

**Visibility / + Add Logic**

**What it does:**\
Who can open the form when it is a primary screen.

**How to use it:**\
For staff-only create forms, restrict by role. For public forms, Public access is the guest path — still publish and test both guest and signed-in.

**Why / recommended default:**\
Unrestricted for most intake forms unless role-gated.

### Appearance tab

Empty — field styles are in the field inspector; theme is in Settings.

### Field inspector highlights

* **Is Required**
* **Validate input** (Email / Phone)
* **Default Value** (Static or From URL parameter) — see Prefill guide
* **Visibility Logic**
* **Show Scanner** on text inputs
* Section title/description for stepper sections

### Related setup outside the inspector

* List **Add New Item** can open this form
* Content page links often deep-link to this form
* Edit Navigation name/icon and Public badges

## Recommended default setup

| Setting               | Recommended value                         |
| --------------------- | ----------------------------------------- |
| Logic                 | Only fields required to create the record |
| Public access         | On for guest intake; off for staff-only   |
| Guest navigation      | Off if linked from Content                |
| Use sections as steps | On for long forms                         |
| Success Message       | Explicit confirmation                     |
| Actions               | Go to thank-you Content or status screen  |

## Testing checklist

* [ ] Required fields block empty submit
* [ ] Record appears in Notion immediately
* [ ] Success message and Actions run
* [ ] Public link works signed out (if public)
* [ ] URL prefills work (if configured)
* [ ] Section steps advance and validate
* [ ] Desktop/mobile submit placement usable

## Troubleshooting

| Symptom           | Likely cause                       | What to check                      |
| ----------------- | ---------------------------------- | ---------------------------------- |
| Guest sees login  | Public access off / not published  | Behaviour → Public access; Publish |
| Submit missing    | No editable comps                  | Content → Logic                    |
| Prefill empty     | URL param / Default Value mismatch | Field inspector defaults           |
| Stepper confusing | Sections not used or toggle off    | Use sections as steps              |

## Best practices

* Ask only what you need at create time; edit the rest later on Update Form.
* Pair public forms with a public Content landing page.
* Test signed-out before sharing links.


# Content

Learn how to use Content screens for landing pages, help pages, public entry points, and static app content.

Content screens let you add a freeform page to a NotionApps app without connecting the screen to a Notion database. Use a Content screen when you need a welcome page, instructions page, landing page, help page, policy page, onboarding page, or public introduction page around the data-driven parts of your app.

Unlike List, Details, or Form screens, a Content screen is not for viewing or editing Notion records. It is for the static or semi-static information that helps users understand where they are, what they should do next, and how to move through the app.

![Builder view of a Content page with the configuration panel open](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FbhyUyV9W68VFQnigbsyI%2Fdata-1786203155-56-01-builder-hero.jpg?alt=media)

## When to use a Content screen

Use a Content screen when the screen is mostly explanatory, branded, instructional, or navigational.

Good examples include:

* A public welcome page before users sign in.
* A landing page that explains what the app does.
* A help page with instructions for using the app.
* A policy, consent, or terms page.
* A dashboard introduction that links users to the right forms or lists.
* A lightweight marketing-style page inside a private or mixed public/private app.
* A launch page with buttons or links to public intake forms.
* A support page with contact details, process notes, or frequently asked questions.

Use a database-backed screen instead when users need to browse records, open one record, create records, update records, filter rows, or see live Notion data.

![Content page selected in the Create New Screen picker](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F5IcJV7D5uV0SseaKLD1p%2Fdata-1786203155-57-00-picker-content-group.jpg?alt=media)

## Before you start

Before adding a Content screen, decide what job the page should do.

Ask these questions:

* Is this page for guests, signed-in users, or both?
* Should the page appear in navigation, or should users only reach it from a link or button?
* Does the page need to send users to a Form screen, List screen, Details screen, or external website?
* Is the app public, private, or a private app with selected public screens?
* Does the page need simple rich text, or does it need custom HTML and CSS?

This matters because Content screens can be used as public entry points in private apps, but only if you intentionally enable public access for the screen.

## Step 1: Add a Content screen

1. Open the app in the NotionApps builder.
2. Go to the screen list or screen management area.
3. Select **Add Screen**.
4. Choose **Content page** from the available screen types.
5. Give the screen a clear navigation name, such as **Welcome**, **Instructions**, **Help**, **Start Here**, or **About**.

The screen type may appear as **Content page** in the picker and as **Content** in navigation or short labels.

![Add a Content page from the screen picker](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F5IcJV7D5uV0SseaKLD1p%2Fdata-1786203155-57-00-picker-content-group.jpg?alt=media)

## Step 2: Open the Content page editor

After the screen is created, the builder opens the Content page configuration panel.

This panel is where you edit:

* The page content.
* The optional HTML source.
* The optional CSS source.
* Public access settings, when the app is private.
* Guest and signed-in navigation visibility, when public access is enabled.
* The live preview of the page.

The default content starts with a simple welcome message. Replace it with the copy, links, and layout that fit your app.

![Annotated builder screenshot: Content page config](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fv8DYXvjCylUWbOPVL7bD%2Fdata-1786203155-58-02-section-content-page-config.jpg?alt=media)

## Step 3: Use the visual editor for normal content

![Annotated builder screenshot: Editor toolbar](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F2b1iU6PBjhGeNB7fc3Is%2Fdata-1786203155-59-05-section-editor-toolbar.jpg?alt=media)

For most makers, the visual editor is the easiest place to start.

Use the visual editor to add:

* Headings.
* Paragraphs.
* Bullet lists.
* Numbered lists.
* Bold and italic text.
* Links.
* Images.

The visual editor is best when you want a clean page and do not need advanced layout control. You can write the page almost like a help article or landing-page draft.

Good visual-editor content usually has:

* A clear heading at the top.
* A short explanation of what the user can do.
* One or two obvious next actions.
* Links to the most important forms, lists, or external resources.
* Short sections instead of one long wall of text.

![Annotated builder screenshot: Visual editor](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F8MlvXXi4dKcgGwZz9xPJ%2Fdata-1786203158-60-04-section-visual-editor.jpg?alt=media)

## Step 4: Add links carefully

Content screens are often used to route users to the next part of the app.

You can add links to:

* Another page in the same published app.
* A public Form screen link.
* A help article.
* A website.
* A payment, booking, or support link.

For best results:

* Use full `https://` URLs for external websites.
* Test every link in the published app after publishing.
* If the link should be available to guests, make sure the target screen is also public.
* If the link goes to a Form screen in a private app, make that Form screen public when guests need to submit it without signing in.

Same-app links are handled inside the app shell when possible, so users do not unnecessarily lose the app experience.

![Annotated builder screenshot: Link](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FNmgBfRznzc5zYNxNecXl%2Fdata-1786203158-61-06-section-link-control.jpg?alt=media)

## Step 5: Add images

![Annotated builder screenshot: Image](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FTml9fx6dk2z9a89MXBwI%2Fdata-1786203158-62-07-section-image-control.jpg?alt=media)

Images can make a Content screen feel more useful and polished.

Use images for:

* A logo or brand header.
* A process diagram.
* A screenshot that shows what users should do.
* A simple hero image.
* A visual explanation of a workflow.

Image URLs should use `https://`. Avoid images that are very large, private, temporary, or hosted somewhere that may block public access. If an image appears in the builder but not in the published app, check whether the image URL is publicly accessible.

Keep the page readable on mobile. Large images should support the content, not push the important action too far down the page.

## Step 6: Use HTML mode only when you need more control

The Content screen also includes an HTML editing mode for makers who need more control over layout.

Use HTML mode when you need:

* A multi-section landing page.
* Custom spacing.
* Button-style links.
* A custom grid or card layout.
* A more branded welcome page.
* More control than the visual editor provides.

HTML mode is powerful, but it is still intentionally limited for safety. Content screens are not a place to run custom JavaScript.

The system removes or blocks unsafe content such as:

* `<script>` tags.
* Inline event handlers such as `onclick` or `onerror`.
* Iframes, embeds, objects, meta tags, base tags, and link tags.
* Unsafe `javascript:`, `vbscript:`, or risky data URLs.

The HTML limit is approximately `100,000` characters.

![Annotated builder screenshot: Edit HTML](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fc69kCuMmktOMYZeX3TmC%2Fdata-1786203158-63-08-section-html-mode.jpg?alt=media)

## Step 7: Add CSS when the page needs custom styling

CSS is optional. Use it when the Content screen needs to match your brand or create a more polished layout.

CSS is useful for:

* Buttons.
* Cards.
* Spacing.
* Background colors.
* Typography.
* Responsive sections.
* Simple grids.

Keep CSS focused on the page itself. Avoid styles that try to override the full NotionApps app shell, navigation, login screen, or unrelated screens.

The CSS limit is approximately `50,000` characters. If the CSS is too large or invalid, the builder may reject it.

![Annotated builder screenshot: CSS (optional)](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F47SugWp1ubLOrLxS0gjd%2Fdata-1786203158-64-09-section-css-field.jpg?alt=media)

## Step 8: Preview the page

The preview area shows how the Content screen will render.

Use preview to check:

* The top heading is clear.
* Important links are visible.
* Text is easy to read.
* Images load correctly.
* The page does not feel too long.
* The page works on smaller screens.
* The next action is obvious.

Preview is especially important when using HTML and CSS. A page can look fine in source form but feel cramped, oversized, or confusing in the actual app shell.

![Annotated builder screenshot: Preview](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fp8VMthflViecOpapuXgJ%2Fdata-1786203158-65-10-section-preview.jpg?alt=media)

## Step 9: Configure public access when needed

If your app is private, you can make a Content screen public.

Turn on **Public access** when anyone with the app link should be able to open that Content screen without signing in.

This is useful for:

* A public welcome page.
* A public onboarding page.
* A public help page.
* A public landing page that links to a public intake form.

Public access applies to the selected screen. Other private screens stay private unless you also mark them public.

If the app itself is already public, users can already open the app without signing in, so the public access setting is mainly important for private apps that need a public entry point.

![Annotated builder screenshot: Public access](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FKhrHh4mZvBkmzbYgLiPb%2Fdata-1786203158-66-03-section-public-access.jpg?alt=media)

## Step 10: Decide whether guests should see it in navigation

When a Content screen is public, you can decide whether guests see it in the app navigation.

Use **Show in navigation for guests** when:

* The page is a normal public page guests should find from the menu.
* The page is the public home or welcome page.
* You want users to return to it easily.

Turn guest navigation off when:

* The page should only be opened from a direct link.
* The page is part of a one-time flow.
* You want to keep guest navigation very simple.

A public screen can still be opened by link even if it is hidden from guest navigation.

## Step 11: Decide whether signed-in users should see it in navigation

![Annotated builder screenshot: Show in navigation when signed in](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fzpv56fxnjDHuDU52f1S1%2Fdata-1786203158-67-12-section-signed-in-navigation.jpg?alt=media)

Public screens can also have separate navigation visibility for signed-in users.

Use **Show in navigation when signed in** when:

* Signed-in users should still have easy access to the page.
* The page contains help, instructions, or app context that remains useful after login.

Turn it off when:

* The page is only for guests before login.
* The page is only a public landing page.
* Signed-in users should start on a dashboard, list, queue, or workspace screen instead.

This separation keeps guest onboarding clear without cluttering the logged-in app.

![Annotated builder screenshot: Guest and signed-in navigation](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FjzeQKVJXJljmSBLE3qSF%2Fdata-1786203158-68-11-section-guest-navigation.jpg?alt=media)

## Step 12: Publish and test

After the page looks correct, publish the app.

Test these paths:

* Open the app while signed out.
* Open the Content screen directly, if it is public.
* Click every link on the page.
* Confirm guest-only links do not send users to private screens.
* Sign in and confirm the signed-in landing page is correct.
* Check whether the Content screen should or should not appear in signed-in navigation.
* Test on desktop and mobile.

For public intake flows, test the full path:

1. Guest opens the public Content screen.
2. Guest clicks the intake or start link.
3. Guest opens the public Form screen.
4. Guest submits the form.
5. The new Notion record appears where expected.

## Complete Builder Options Reference

Content screens do not use the Content / Behaviour / Appearance tabs that data screens use. All options live in the Content page configuration panel. Each option below uses the **What it does / How to use it / Why + recommended default** pattern.

![Annotated builder screenshot: Content page config](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fv8DYXvjCylUWbOPVL7bD%2Fdata-1786203155-58-02-section-content-page-config.jpg?alt=media)

### Visual editor

![Annotated builder screenshot: Visual editor](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F8MlvXXi4dKcgGwZz9xPJ%2Fdata-1786203158-60-04-section-visual-editor.jpg?alt=media)

#### Editor toolbar

**What it does:**\
Formats text and inserts structure (headings, lists, links, images) without writing HTML.

**How to use it:**\
Start every Content page here. Add a heading, one short paragraph, and one clear next-action link before you refine styling.

**Why / recommended default:**\
Use the visual editor unless you need a layout the toolbar cannot express. Jumping to HTML first makes later edits harder for other makers.

#### Link control

**What it does:**\
Inserts a hyperlink to another app screen, a public form URL, or an external `https://` site.

**How to use it:**\
Prefer full published app URLs or external `https://` links. After publish, test every link signed out and signed in.

**Why / recommended default:**\
Links are the main job of most Content pages. Broken or private targets are the most common guest-flow failure.

#### Image control

**What it does:**\
Inserts an image from a public URL into the page body.

**How to use it:**\
Use public `https://` image hosts. Keep hero images short on mobile so the primary CTA stays above the fold.

**Why / recommended default:**\
Optional. Add an image only when it clarifies the next action or brand; decorative images slow the page without helping orientation.

### HTML mode

![Annotated builder screenshot: Edit HTML](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fc69kCuMmktOMYZeX3TmC%2Fdata-1786203158-63-08-section-html-mode.jpg?alt=media)

#### Edit HTML / HTML source

**What it does:**\
Switches the page body to raw HTML for custom layout (sections, button-style links, grids). Unsafe tags and scripts are stripped.

**How to use it:**\
Use when the visual editor cannot produce the layout. Stay under \~100,000 characters. Never rely on `<script>`, iframes, or inline event handlers — they are removed.

**Why / recommended default:**\
Off / visual mode for most pages. HTML is for branded landing layouts, not for embedding third-party apps.

### CSS (optional)

![Annotated builder screenshot: CSS (optional)](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F47SugWp1ubLOrLxS0gjd%2Fdata-1786203158-64-09-section-css-field.jpg?alt=media)

#### CSS field

**What it does:**\
Applies page-scoped CSS for buttons, spacing, typography, and simple responsive layout. Limit is \~50,000 characters.

**How to use it:**\
Put styles in the CSS field (not inside a `<style>` tag in HTML). Scope selectors to your page content; do not try to restyle the app shell or login screen.

**Why / recommended default:**\
Empty until the visual layout is correct. Add CSS only for brand polish that HTML structure alone cannot achieve.

### Public access (private apps)

![Annotated builder screenshot: Public access](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FKhrHh4mZvBkmzbYgLiPb%2Fdata-1786203158-66-03-section-public-access.jpg?alt=media)

#### Public access

**What it does:**\
Lets anyone with the app link open this Content screen without signing in. Other screens stay private unless also marked public.

**How to use it:**\
Enable for welcome, help, or intake landing pages that guests must see. Pair with public Create Forms when guests should submit data.

**Why / recommended default:**\
Off unless guests need this page. Turning it on without planning guest navigation creates confusing menus.

#### Show in navigation for guests

**What it does:**\
When public access is on, controls whether guests see this screen in the hamburger menu or bottom tray.

**How to use it:**\
On for a public home/welcome page. Off when the page should only open from a direct link or button.

**Why / recommended default:**\
On for the primary public entry page; off for one-time or deep-link-only pages.

#### Show in navigation when signed in

**What it does:**\
Controls whether signed-in users still see this screen in navigation after login.

**How to use it:**\
On for help/instructions that remain useful after login. Off for guest-only landing pages so staff land on lists, queues, or dashboards instead.

**Why / recommended default:**\
Off for guest welcome pages; on for enduring help content.

### Preview

![Annotated builder screenshot: Preview](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fp8VMthflViecOpapuXgJ%2Fdata-1786203158-65-10-section-preview.jpg?alt=media)

#### Live preview

**What it does:**\
Renders the page inside the builder shell so you can check layout, links, and images before publish.

**How to use it:**\
After every HTML/CSS change, confirm headings, CTA visibility, and mobile readability in preview.

**Why / recommended default:**\
Always review preview before publish — source that looks fine can still feel cramped in the app shell.

## Recommended page patterns

### Public welcome page

Use this pattern when you want a private app to have a public front door.

Recommended setup:

* Content screen: public access on.
* Guest navigation: on if this is the public home page.
* Signed-in navigation: off if users should go to a dashboard after login.
* Add one clear link to a public Form screen or the login flow.

### Help or instructions page

Use this pattern when users need guidance after they are inside the app.

Recommended setup:

* Public access: off unless guests also need it.
* Guest navigation: off unless public access is on.
* Signed-in navigation: on.
* Include short sections, screenshots, and links to relevant screens.

### Public intake start page

Use this pattern when guests should submit a request without seeing the rest of the app.

Recommended setup:

* Content screen: public access on.
* Intake Form screen: public access on.
* Guest navigation: usually off for the form and on for the welcome page.
* Signed-in navigation: usually off for the public welcome page.
* Test the form link while signed out.

### Internal process page

Use this pattern when staff need a reference page inside a private app.

Recommended setup:

* Public access: off.
* Signed-in navigation: on.
* Use headings for each process.
* Link to the relevant list, queue, form, or details screens.

## What Content screens do not do

Content screens do not replace database-backed screens.

They do not:

* Display a live list of Notion records.
* Create a Notion record by themselves.
* Update a Notion record by themselves.
* Apply database filters like a List screen.
* Replace a Details screen.
* Run custom JavaScript.
* Embed unsafe third-party scripts.
* Bypass private app access rules.

If a user needs to interact with Notion data, link the Content screen to the appropriate Form, List, Details, or Update screen.

## Troubleshooting

### I do not see the Content page option

Make sure the app builder version you are using includes the Content screen release. Refresh the builder and check the Add Screen picker again.

### My Content screen is not visible to guests

Check these settings:

* The app is private.
* The Content screen has **Public access** turned on.
* If guests should find it in the menu, **Show in navigation for guests** is turned on.
* If guests should reach it by link only, use the direct published app link to the screen.

### Guests can open the Content screen but cannot open the form link

The target Form screen also needs to be public if guests should submit it without signing in.

### My signed-in users land on a different screen

Signed-in users land on the first appropriate visible screen in navigation. If a public Content screen is only for guests, turn off **Show in navigation when signed in** so signed-in users start on the right app screen.

### My HTML changed after saving

Unsafe HTML is removed for security. Scripts, iframes, event handlers, and unsafe URLs are not allowed inside Content screens.

### My CSS is not applying

Check that the CSS is in the CSS field, not inside a `<style>` tag in the HTML. Also check that the CSS is valid and within the character limit.

### My image does not load

Use a public `https://` image URL. If the image is private, expired, or blocked by the image host, it may not render in the published app.

## Best practices

* Give the screen a short, clear name.
* Start with the visual editor unless you need HTML.
* Keep the first screen section focused on the next action.
* Use public access only for screens guests should actually see.
* Keep guest navigation simple.
* Hide guest-only landing pages from signed-in navigation when they are no longer useful after login.
* Test all links while signed out and signed in.
* Use Content screens to explain the app, then send users to database-backed screens for real work.

## Quick checklist

Before publishing, confirm:

* The Content screen has a clear purpose.
* The page title and first paragraph explain what users should do.
* The correct access setting is selected.
* Guest navigation is intentional.
* Signed-in navigation is intentional.
* All links work.
* All images load.
* The page is readable on mobile.
* The target screens linked from the page have the correct access settings.
* The app is published and tested as both guest and signed-in user.

### Updates in the 9 Aug 2026 release

* Content screens work especially well as **public Welcome** pages in mixed public/private portals.
* Pair with **Show in navigation for guests** / **Show in navigation when signed in** so Welcome stays guest-friendly.
* Full walkthrough: [Build a Mixed Public–Private Portal](https://docs.notionapps.com/guides/build-a-mixed-public-private-portal).
* Release notes: [9 Aug 2026 Release](https://docs.notionapps.com/release-notes/9-aug-2026-release).


# Native Automation And Operational Screen Guides

![Automation screens picker group](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FwaTaVWLW7HMS4eKEvzlA%2F03-automation-screens-group.jpg?alt=media)

> Current state: native Automation and Operational screens are entitlement-gated surfaces inside **Automation**. They use the same broad app-screen model as data screens, but they read NotionApps runtime state instead of ordinary Notion database rows.

NotionApps native automation screens expose workflow, messaging, queue, decision, notification, exchange, and operational state inside a live app. A normal data screen reads Notion records. A native automation screen reads platform-owned runtime activity.

Each screen guide below includes a **complete builder options reference**. The sections follow the builder order, and every option is explained in prose so makers can quickly understand what the control does, how to set it up, and which default or mistake matters most.

## Screen Guide Index

| Screen               | Builder group | Primary job                                                                                                                     | Primary foundation           |
| -------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
| Work Queue           | Automation    | A focused inbox for tasks, approvals, exceptions, and follow-up work that needs a person to claim and finish                    | Workflow, optional Messaging |
| Decision             | Automation    | A guided approval, rejection, or request-changes checkpoint where automation pauses until a person records a structured outcome | Workflow                     |
| Conversation         | Automation    | A workflow-aware message thread for comments, replies, and support exchanges tied to a record, route, or conversation           | Messaging, optional Workflow |
| Exception Resolution | Automation    | A recovery screen for failed steps, missing data, blocked routes, retries, and manual fixes                                     | Workflow, optional Messaging |
| Notification Center  | Automation    | A persistent place for announcements, alerts, unread notices, and acknowledgements                                              | Messaging, optional Workflow |
| Linked App Exchange  | Automation    | A collaboration screen for requests, messages, payloads, and acknowledgements exchanged between linked NotionApps applications  | Messaging, optional Workflow |
| Workflow Status      | Operational   | A live timeline of workflow runs, steps, waits, retries, and outcomes so requesters and operators can see where work stands     | Workflow                     |
| Automation Launcher  | Operational   | A controlled launchpad for manual workflow starts, service requests, and operator announcements                                 | Workflow                     |
| Operator Console     | Operational   | A high-level operational dashboard for runs, queue depth, failures, messages, and audit activity                                | Workflow and Messaging       |

## Shared Builder Sections (all nine screens)

| Section                             | What the maker controls                                              |
| ----------------------------------- | -------------------------------------------------------------------- |
| Header and screen type              | Native type, category, title, description                            |
| Automation source                   | Listen scope + workflow/form/channel/topic/linked app bindings       |
| App audience and notification prefs | Tenant mode, tenant/role fields, notification categories (app-level) |
| Template setup state                | Provisioned / Needs review / No setup report                         |
| Related context                     | Read-only discovery counts                                           |
| Visibility and access               | Visibility rules, allowed roles, allowed users                       |
| Display and action policy           | Title, description, payload visibility, density, timeline, claim     |
| Available actions                   | Action buttons, after-action screen, target workflow                 |
| Preview scenario                    | Device, persona, state, simulated vs live test                       |
| Empty state and sample data         | Empty copy and sample runtime references                             |

## Screen-specific sections

| Section                                               | Screens              |
| ----------------------------------------------------- | -------------------- |
| Include sheets                                        | Work Queue, Decision |
| Submission review (Overview / Submission / Documents) | Work Queue, Decision |
| Decision outcomes + Notion status writeback           | Decision             |
| Inbox modes Active / History / All                    | Work Queue, Decision |

## Choosing The Right Screen

| User job                           | Best screen          |
| ---------------------------------- | -------------------- |
| Claim and complete work            | Work Queue           |
| Approve / reject / request changes | Decision             |
| Discuss a request                  | Conversation         |
| Recover failed automation          | Exception Resolution |
| Read durable notices               | Notification Center  |
| Inspect app-to-app handoffs        | Linked App Exchange  |
| Track a run’s progress             | Workflow Status      |
| Manually start automation          | Automation Launcher  |
| Monitor overall health             | Operator Console     |

## Safe Defaults

* Prefer **Specific workflow** over **Entire app** for user-facing desks.
* Prefer **Redacted preview** or **Metadata only** unless the audience is trusted ops.
* Restrict Operator Console, Exception Resolution, and Automation Launcher to Admin/Operator roles.
* Turn **Require claim before action** on for shared Decision desks.
* Bind **Submission review** on Decision/Work Queue before governed go-live.
* Test empty, claimed-by-other, mobile, and blocked-user paths before publish.

## Related screen families

* [Everyday Chrome Screens](https://docs.notionapps.com/customize-app/types-of-screens/everyday-chrome-screens) — Home, Search, My Queue, Activity, Profile (app shell, not runtime desks)
* Operational screens in this index: Workflow Status, Automation Launcher, Operator Console


# Work Queue Screen

> Current state: this native screen is part of **Automation**. It is entitlement-gated, uses NotionApps runtime state instead of ordinary Notion data controls, and should be tested with realistic workflow or messaging activity before a maker relies on it in production.

The **Work Queue** screen is a focused inbox for tasks, approvals, exceptions, and follow-up work that needs a person to claim and finish.

Think of this screen as **A shared desk of work items that people claim, complete, or escalate.**

![Builder view of this screen with the configuration panel open](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FZdhFR1OrDjJr8zaw7ivt%2F00-builder-hero.jpg?alt=media)

## Who This Guide Is For

This guide is for makers configuring a **Work Queue** screen in the app builder. It lists every builder option available on the screen and explains how to use each one.

Use this guide when:

* A team needs an inbox of workflow-created work.
* Users must claim ownership before completing an item.
* Operators need one place for mixed human work (tasks, follow-ups, some decisions).

## What The Screen Is For

### Use Work Queue when

* A team needs an inbox of workflow-created work.
* Users must claim ownership before completing an item.
* Operators need one place for mixed human work (tasks, follow-ups, some decisions).

### Do not use it when

* A single approve/reject checkpoint — use Decision.
* Free-form discussion — use Conversation.
* Operational health dashboards — use Operator Console or Workflow Status.

## What Users See In The Live App

* Active / History / All segments (Active default).
* Work cards with title, status, summary, and ownership.
* Claim, Complete, and optional Release when claim is required.
* Review modal for Submission / Documents / Overview when Submission review is configured.

| Default                         | Value                                                                         |
| ------------------------------- | ----------------------------------------------------------------------------- |
| Default listen scope            | Entire app                                                                    |
| Require claim before action     | Off                                                                           |
| Default preview persona / state | Technician / Waiting approval                                                 |
| Empty title                     | No work is waiting                                                            |
| Empty description               | New tasks and decisions appear here when workflows or messages need a person. |

## Required Foundations

| Requirement                                | Why it matters                                               |
| ------------------------------------------ | ------------------------------------------------------------ |
| Automation screen entitlement              | Work Queue appears in the Automation / Operational group.    |
| Workflow, optional Messaging               | Primary foundation for this screen’s runtime state.          |
| Private app + Users database (recommended) | Role/tenant visibility and audience policy need user fields. |

## Complete Builder Options Reference

The sections below match the builder order. Read them from top to bottom when you configure the screen: each option explains what the control changes in the live app, how to set it up in practice, and which default or mistake matters most for a queue that people actually use.

### Header and screen type

This section tells the builder which native screen you are editing and gives the live screen its basic label. Makers often rush through it, but the title and description are what users rely on when they decide whether this queue is for them.

#### Screen type

**What it does:** Sets the native runtime behavior to **Work Queue**, which means the screen renders claimable work items instead of normal Notion rows.\
**How to use it:** Leave the screen type as Work Queue once you create the screen. If you need approvals, conversation threads, or read-only operations status, create the matching native screen instead of trying to repurpose this one.\
**Why / recommended default:** The screen type is the foundation for everything else in the panel. A common mistake is expecting ordinary list controls here; this screen is for automation runtime items only.

#### Category

**What it does:** Places the screen in the Automation or Operational family inside the builder so makers can find it again later.\
**How to use it:** Keep the existing category that the native screen ships with. Use navigation labels and grouping elsewhere in the app to decide where users discover the queue.\
**Why / recommended default:** This is mostly organizational, but it helps teams keep native screens separated from everyday data screens.

#### Title

**What it does:** Sets the end-user title shown in navigation and at the top of the live queue.\
**How to use it:** Name the job, not the implementation. Good examples are `Manager approvals`, `Ops follow-up`, or `Intake work queue`. Avoid titles like `workflow_17_queue` or internal project names.\
**Why / recommended default:** Clear titles reduce training and mis-clicks. If users cannot tell who owns the queue, they will either ignore it or open the wrong desk.

#### Description

**What it does:** Adds helper copy under the title so users know what they are expected to do on the screen.\
**How to use it:** Write one short sentence that tells people what belongs here and what action they should take, such as "Claim new intake tasks and complete follow-up work."\
**Why / recommended default:** A good description reduces hesitation, especially when you have multiple automation desks in one app. The common mistake is leaving a generic description that says nothing about ownership.

### Automation source

![Annotated builder screenshot: Automation source](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FUl4dCGWddbAePPXvQZr0%2F01-section-automation-source.jpg?alt=media)

This section decides which runtime items are allowed to appear in the queue. It is one of the most important sections because a Work Queue only feels trustworthy when users understand why an item showed up there and why something else did not.

| Listen scope                   | Best for                                      | Common mistake                                            |
| ------------------------------ | --------------------------------------------- | --------------------------------------------------------- |
| Entire app                     | A shared operations queue covering many flows | Showing too much mixed work to one team                   |
| Specific screen or form        | Queues that start from one intake surface     | Forgetting to update the binding after replacing the form |
| Specific workflow              | A focused queue for one process               | Pointing at the wrong published workflow version          |
| Conversation or message thread | Message-driven follow-up work                 | Expecting it to behave like a general chat screen         |
| Linked application             | Cross-app handoff work                        | Using it when no linked app route exists                  |

#### Listen scope

**What it does:** Chooses the top-level source of work items the queue listens to.\
**How to use it:** Start with **Specific workflow** when the queue exists for one business process. Use **Entire app** only when you intentionally want a cross-process shared desk. Choose **Specific screen or form** when one intake form is the natural boundary.\
**Why / recommended default:** The safest default for most maker-built queues is **Specific workflow**, not Entire app, because it keeps the desk understandable. A common mistake is leaving the queue too broad and then wondering why unrelated work keeps appearing.

#### Source screen or form

**What it does:** Appears when the listen scope is **Specific screen or form** and binds the queue to that intake surface.\
**How to use it:** Pick the form or screen that creates the work. After cloning or replacing a form, revisit this picker and confirm it still points at the new source.\
**Why / recommended default:** This is useful when teams think in terms of one intake experience rather than one workflow. The most common mistake is assuming the builder will automatically follow a renamed or swapped form.

#### Workflow

**What it does:** Appears when the listen scope is **Specific workflow** and filters the queue to items created by that workflow.\
**How to use it:** Select the published workflow users should work from. If the workflow has sibling versions for staging or demos, double-check that you picked the production one.\
**Why / recommended default:** This is the recommended default for a focused team queue. It keeps visibility understandable and makes troubleshooting much easier when a task does not appear.

#### Messaging channel

**What it does:** Narrows message-driven queue activity to one messaging channel.\
**How to use it:** Set this only when your queue is fed by messaging routes or conversation-linked work. Match the channel name used by the workflow or route that emits the item.\
**Why / recommended default:** Channel filtering is powerful, but it is also easy to misconfigure. If the screen looks empty, a channel mismatch is one of the first things to check.

#### Topic

**What it does:** Narrows the source further to one topic within the selected channel, such as `approval.requested` or another stable route label.\
**How to use it:** Use the exact topic the route publishes. Keep topic naming consistent across automations so makers can reason about filters without reading backend details.\
**Why / recommended default:** Topic filters are best when you want one queue per type of work. A common mistake is using slightly different topic strings between environments and creating "mysteriously empty" queues.

#### Conversation or correlation

**What it does:** Binds the queue to one specific thread or correlation context when the process is case-based.\
**How to use it:** Use this only when the queue should follow one ongoing case, request, or thread. Leave it broader for a shared team desk.\
**Why / recommended default:** Most Work Queue screens should not hard-code a single correlation. Over-filtering here can make a perfectly healthy queue look broken.

#### Linked application

**What it does:** Appears for linked-app listening and binds the queue to one external NotionApps application.\
**How to use it:** Pick the linked app only when work truly enters the queue from an app-to-app exchange. Otherwise leave the queue on workflow or form scope.\
**Why / recommended default:** This option is usually not the right starting point for Work Queue. Use it only when the work really originates outside the current app.

### Include sheets

![Annotated builder screenshot: Include sheets](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FT249o7gzhf4NVNmxS7H3%2F02-section-include-sheets.jpg?alt=media)

This screen-specific section lets makers limit the queue to work tied to selected Notion sheets. It is most helpful when one workflow touches several sheets but only some of them should surface in this desk.

#### Included sheets

**What it does:** Limits the queue to items associated with the checked sheets. If nothing is checked, the queue can show work from every eligible sheet in scope.\
**How to use it:** Check only the sheets that produce work for this specific team. For a true cross-sheet operations inbox, leave every sheet unchecked so the queue stays broad.\
**Why / recommended default:** Use sheet filters when teams own different parts of the data model. The common mistake is checking a sheet during testing and forgetting that the filter is still active in production.

### App audience and notification prefs

![Annotated builder screenshot: App audience and notification prefs](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FSrFNjPe7WDtfDRBJPnHw%2F03-section-app-audience-and-notification-prefs.jpg?alt=media)

These controls are app-level policy even though they appear on the screen config. Work Queue respects the same tenant boundaries and notification-category rules as the rest of the automation surfaces, so this section is where you keep the queue aligned with who should see shared work.

#### Tenant mode

**What it does:** Defines whether runtime items are broadcast broadly or partitioned by tenant relationship.\
**How to use it:** Choose **Off** only for simple single-tenant apps. Choose **Relation** when users should only see work for their own client, company, branch, or account.\
**Why / recommended default:** For most multi-user production apps, **Relation** is the safer default. Leaving tenant mode off in a multi-tenant queue is one of the highest-risk visibility mistakes a maker can make.

#### Tenant field

**What it does:** Identifies which relation field on the Users sheet tells the platform how to group users into tenants.\
**How to use it:** Pick the company, client, account, or workspace relation field from the Users sheet. Use the field that already powers other tenant-aware parts of the app.\
**Why / recommended default:** Consistency matters more than cleverness here. If you point the queue at a different tenant field than the rest of the app, users will see inconsistent visibility.

#### Role field

**What it does:** Tells the platform which Users-sheet field stores each person's role if it is not the default `Role` field.\
**How to use it:** Leave it blank when your user role property is already named `Role`. Set it explicitly when your app uses a custom name such as `Team Role` or `Access Level`.\
**Why / recommended default:** This is a small setting with big consequences. If the wrong field is chosen, your visibility rules can look correct in the builder while failing at runtime.

#### Notification categories

**What it does:** Maps category keys and labels to preference fields so users can opt into or out of notice types.\
**How to use it:** Add only the categories your automations truly send, then bind each one to the matching preference field on the Users sheet.\
**Why / recommended default:** Even though Work Queue is not a notification screen, these categories often shape how people discover follow-up work. Too many unused categories create policy clutter and confuse future makers.

#### Add notification category

**What it does:** Adds another category row, typically with in-app and email delivery defaults.\
**How to use it:** Create a new category only when you have a real sender and a real user preference to connect to it.\
**Why / recommended default:** Fewer, well-named categories are easier to govern. The common mistake is creating categories "just in case" and never wiring them consistently.

#### Save audience policy

**What it does:** Persists tenant and notification preference changes at the app level.\
**How to use it:** Click it after every tenant or category update before leaving the screen. If you are testing with several personas, save first and then retest.\
**Why / recommended default:** Unsaved audience policy is a classic source of false debugging. Makers often think the queue is wrong when the real issue is simply that the policy changes were never saved.

### Template setup state

![Annotated builder screenshot: Template setup state](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FJMPg8gQoKEoEMbvGosM2%2F04-section-template-setup-state.jpg?alt=media)

This section is diagnostic rather than interactive. It helps makers understand whether a template clone or repaired demo still has healthy automation bindings behind the queue.

#### Setup state indicator

**What it does:** Reports whether the automation screen setup looks provisioned, needs review, or has no setup report.\
**How to use it:** Treat **Provisioned** as the happy path. Treat **Needs review** as a prompt to re-check your workflow, form, and channel bindings. Treat **No setup report** as normal for hand-built apps.\
**Why / recommended default:** This indicator can save a lot of time after cloning a template. The common mistake is ignoring a `Needs review` badge and then troubleshooting the wrong layer for hours.

### Related context

![Annotated builder screenshot: Related context](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FFJftZKln9lbLAEort6ZB%2F05-section-related-context.jpg?alt=media)

This section gives read-only discovery context so you can find the other objects that matter to the queue. It is especially useful in mature apps where builders may not remember which form, workflow, or follow-up screen was originally intended.

#### Related context panel

**What it does:** Shows discovery counts and related references for screens, forms, workflows, channels, and other nearby runtime objects.\
**How to use it:** Use the panel to jump to likely bindings, review what already exists, and locate candidate after-action screens or detail screens before creating duplicates.\
**Why / recommended default:** This panel reduces guesswork. The common mistake is copying raw IDs around when the builder already provides safer pickers and discovery cues.

### Visibility and access

![Annotated builder screenshot: Visibility and access](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fsjcp2Qmw8qtsRXSNETmf%2F06-section-visibility-and-access.jpg?alt=media)

This section controls who can open the queue at all. A Work Queue often contains shared operational work, so visibility design matters as much as the source filter design.

#### Visibility rules

**What it does:** Applies the same visibility-condition model used by other private-app screens.\
**How to use it:** Build conditions around stable user fields such as role, team, location, or tenant membership. Keep the logic readable so another maker can audit it later.\
**Why / recommended default:** Role- and tenant-based rules are usually safer than broad access. A common mistake is making the queue visible to everyone and relying on source filters alone to keep people out of the wrong work.

#### Allowed role names

**What it does:** Adds a direct allow list of role names for this queue.\
**How to use it:** Enter a concise CSV list such as `Technician, Supervisor, Admin` when a simple role gate is enough.\
**Why / recommended default:** This is often the fastest reliable access control for team desks. The common mistake is adding too many near-duplicate role names and creating hidden access drift.

#### Allowed users

**What it does:** Allows individual people by email or user reference even if they are not part of the main role-based rule.\
**How to use it:** Use this for named operators, pilot users, or emergency backstops. Keep the list short and review it after launches.\
**Why / recommended default:** Per-user overrides are useful, but they do not scale well. The common mistake is quietly building the whole access model out of exceptions.

### Submission review

![Annotated builder screenshot: Submission review](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FrrvNuOpiF5OmmXCbBlaP%2F07-section-submission-review.jpg?alt=media)

This screen-specific section controls the in-place review modal that opens before a user completes work. It is the main way to let someone inspect the submission without navigating away from the queue.

| Review mode                   | Best for                                                        | Default guidance     |
| ----------------------------- | --------------------------------------------------------------- | -------------------- |
| Overview fields + full record | Governed review with quick summary plus full detail             | Recommended default  |
| Overview fields only          | Short, structured queues where the important fields are obvious | Good for speed       |
| Full record only (legacy)     | Older setups that still rely on the full form view alone        | Use only when needed |

#### Review sheet

**What it does:** Defines which sheet powers the curated Overview field pickers.\
**How to use it:** Leave it blank to auto-detect from the source item when that works cleanly. Set it explicitly when the queue can receive mixed items and you want a stable review configuration.\
**Why / recommended default:** Auto-detect is convenient, but explicit binding is safer in more complex queues. The common mistake is pointing the review at the wrong sheet and then wondering why the field picker looks incomplete.

#### Review mode

**What it does:** Chooses whether reviewers see curated overview fields, the full submission, or both in the modal.\
**How to use it:** Pick **Overview fields + full record** for most governed work. Choose **Overview fields only** when the full record is noisy and you want a faster operational flow. Use **Full record only** mainly for compatibility with older setups.\
**Why / recommended default:** The recommended default is **Overview fields + full record** because it balances speed and confidence. A common mistake is offering only the full record, which makes simple work items harder to scan.

#### Overview fields

**What it does:** Defines the ordered shortlist of fields shown in the Overview tab.\
**How to use it:** Select the minimum set a user needs to decide whether to claim, complete, or escalate the work. Put the most decision-relevant fields first.\
**Why / recommended default:** A curated overview makes queues much more usable. The common mistake is checking every field and recreating the clutter of the full form.

#### Submission screen override

**What it does:** Replaces the automatically chosen full-record tab target with a specific screen.\
**How to use it:** Bind the exact details or update screen you want reviewers to open in the Submission tab. Leave it blank only when the auto-selected target already matches the real source experience.\
**Why / recommended default:** This is the safest way to make the modal predictable. A common mistake is assuming auto-selection will still be correct after screens are renamed or replaced.

#### Documents screen override

**What it does:** Binds the Documents tab in the review modal to a specific document or photo screen.\
**How to use it:** Point it at the related documents list or upload surface users actually need during review. Leave it blank when the automatic document target is already correct.\
**Why / recommended default:** This matters most in document-heavy queues. The common mistake is configuring Submission review but forgetting to wire the documents experience that operators rely on.

### Inbox modes

These modes are what end users switch between in the live app, but makers should still understand them while configuring the screen because they affect testing, training, and expectations around where finished work goes.

#### Active, History, and All

**What it does:** Splits the queue into currently actionable items, past terminal items, and the combined full record.\
**How to use it:** Train users to work from **Active** by default, check **History** when they need proof an item was handled, and use **All** for audits or support investigations.\
**Why / recommended default:** The default live segment is **Active** because it keeps the desk focused. A common mistake is thinking a completed item disappeared when it actually moved to History.

### Display and action policy

![Annotated builder screenshot: Display and action policy](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FldPYCwN6zqJIfEVvns8F%2F08-section-display-and-action-policy.jpg?alt=media)

These controls shape how much context people see on each item and how the queue behaves when multiple people share it. For Work Queue, this section is where you tune the balance between speed, safety, and operational density.

#### Screen title override

**What it does:** Lets you override or refine the title shown in the live queue.\
**How to use it:** Use the end-user wording your team already uses day to day. If the queue is process-specific, include the process name rather than internal workflow terminology.\
**Why / recommended default:** Consistent language matters more than clever labels. If a user has to translate the title mentally, the queue will feel less reliable.

#### Description

**What it does:** Controls the helper copy shown under the title in the live view.\
**How to use it:** Tell users exactly what they should do here, for example "Claim open cases, review the submission, and complete work when finished."\
**Why / recommended default:** Specific instructions reduce mistakes for infrequent users. The common mistake is leaving a vague description that sounds like every other operations screen.

#### Payload visibility

**What it does:** Chooses how much of the runtime payload the queue reveals.\
**How to use it:** Use **Metadata only** for broad or external audiences, **Redacted preview** for most internal team queues, and **Full payload** only for trusted operators who genuinely need raw detail.\
**Why / recommended default:** **Redacted preview** is the usual default for Work Queue because it gives people enough context without oversharing. Full payload is the most common over-permissioning mistake.

#### Density

**What it does:** Controls the spacing and compactness of cards and list rows.\
**How to use it:** Choose **Comfortable** when reviewers need to read summaries carefully. Choose **Compact** when experienced operators are working high volume and know the process well.\
**Why / recommended default:** Comfortable is safer for mixed audiences; Compact is better for mature ops desks. The common mistake is using Compact too early and making new users miss important context.

#### Show timeline

**What it does:** Shows workflow, messaging, and audit history alongside the work item.\
**How to use it:** Turn it on when operators need to see how the item got here or whether someone already touched it. Turn it off only for extremely simple, high-speed queues.\
**Why / recommended default:** For most Work Queue screens, **On** is the recommended default because it reduces back-and-forth debugging. The common mistake is hiding the timeline and then opening another screen just to answer basic history questions.

#### Require claim before action

**What it does:** Decides whether a user must claim an item before they can act on it.\
**How to use it:** Leave it **Off** when items are already effectively assigned or when speed matters more than ownership locks. Turn it **On** for shared team desks where two people might otherwise complete the same item.\
**Why / recommended default:** The registry default for Work Queue is **Off**. That is a good default for lighter-weight follow-up queues, but shared operations teams should consider turning it on once parallel handling becomes a problem.

### Available actions

![Annotated builder screenshot: Available actions](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FvB30xXvJH4ecI07bMSRN%2F09-section-available-actions.jpg?alt=media)

This section controls what users can actually do from the queue. For Work Queue the action set is intentionally small: claim the work if needed, then complete it when the human step is finished.

#### Claim

**What it does:** Takes ownership of an unclaimed item so other users can see who is handling it.\
**How to use it:** Keep Claim available on any shared queue where ownership matters. Pair it with `Require claim before action` when you need a strict handoff model.\
**Why / recommended default:** Claim makes shared desks safer and easier to coordinate. The common mistake is hiding Claim while still expecting teams to avoid duplicate work manually.

#### Complete

**What it does:** Marks the work item done and lets the workflow or runtime state move forward when applicable.\
**How to use it:** Keep Complete on the screen unless the work should always branch into another action such as approve or escalate. Make sure operators understand what "done" means in the business process.\
**Why / recommended default:** Complete is the core action for this screen. A common mistake is using Work Queue for work that really needs structured outcomes, in which case Decision is a better fit.

#### After-action screen

**What it does:** Opens another screen after a queue action succeeds.\
**How to use it:** Send users to **Workflow Status** when they need proof the route continued, to **Conversation** when discussion usually follows, or to a confirmation/content screen for a cleaner finish.\
**Why / recommended default:** This is optional, not required. The common mistake is confusing after-action routing with Submission review, which happens before the action and stays in the modal.

#### Target workflow

**What it does:** Supplies the destination workflow for actions that launch or escalate into another process.\
**How to use it:** Work Queue usually does not need this for Claim or Complete, but it becomes important if you add escalation-style actions later. Pick the exact published workflow that should start next.\
**Why / recommended default:** Leave it unset unless an action explicitly needs it. Unnecessary workflow bindings create confusion during maintenance.

### Preview scenario

![Annotated builder screenshot: Preview scenario](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FXsj5q2ZnBBLo5WnNBUE2%2F10-section-preview-scenario.jpg?alt=media)

Preview controls let makers test the queue with realistic device sizes, personas, and runtime states before publishing. For operational screens, preview is where you catch most empty-state and claimed-by-other problems early.

#### Device and orientation

**What it does:** Changes the preview frame to desktop, tablet, or mobile in portrait or landscape.\
**How to use it:** Always check mobile even if the queue is mainly desktop-facing, because field teams and approvers often open operational screens on phones. Use landscape only when you know tablets or kiosks are part of the workflow.\
**Why / recommended default:** Responsive failures are easy to miss in a desktop-only preview. Mobile verification is one of the highest-value final checks.

#### Test persona

**What it does:** Simulates the user role viewing the queue.\
**How to use it:** Preview as the real worker, not just as Admin. For this screen the default persona is **Technician**, which is a good starting point when the queue is meant for doers rather than system owners.\
**Why / recommended default:** Admin previews can hide role-based problems. The common mistake is validating only as an all-powerful user and shipping a queue that ordinary staff cannot use.

#### Preview state

**What it does:** Simulates states such as Empty, Loading, Error, Waiting approval, Claimed by me, and Claimed by someone else.\
**How to use it:** Walk through the blocked and claimed-by-other states deliberately. Those are the states where queue policy problems become obvious.\
**Why / recommended default:** The default preview state for Work Queue is **Waiting approval**, which is useful because it resembles a real actionable item. Makers often forget to check the failure states until after launch.

#### Test mode

**What it does:** Switches between simulated preview and live runtime testing.\
**How to use it:** Use simulated preview for layout and copy checks, then use a live test with a real workflow item before publishing.\
**Why / recommended default:** Simulated preview is fast, but only live testing proves that bindings and permissions are correct.

### Empty state and sample data

![Annotated builder screenshot: Empty state and sample data](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FcTFu81Ta3QsATAGjmONH%2F11-section-empty-state-and-sample-data.jpg?alt=media)

Even healthy queues are empty sometimes. This section controls whether the screen feels calmly idle or accidentally broken when there is nothing to work on.

#### Empty title

**What it does:** Sets the headline shown when no items match the current queue filters.\
**How to use it:** Keep the default `No work is waiting` unless you have a clearer phrase for your audience. Prefer language that sounds complete rather than alarming.\
**Why / recommended default:** A good empty title reassures users that the queue is simply clear. Titles that sound like errors make people file unnecessary support requests.

#### Empty description

**What it does:** Adds supporting text that explains what users should expect when the queue is empty.\
**How to use it:** Keep or adapt the default `New tasks and decisions appear here when workflows or messages need a person.` If needed, add where users should go next while they wait.\
**Why / recommended default:** Helpful empty copy reduces "is this broken?" confusion. The common mistake is leaving a generic sentence that does not explain why the queue is empty.

#### Sample item, run, or conversation

**What it does:** Provides builder-only references for previewing realistic runtime data.\
**How to use it:** Attach representative items before taking screenshots, testing review tabs, or validating compact layouts. Swap them out if they no longer reflect the live process.\
**Why / recommended default:** Good sample data prevents false confidence. A toy sample can hide long titles, missing documents, or unusual statuses that appear in production.

## Recommended Default Setup

| Setting                     | Recommended value                                        |
| --------------------------- | -------------------------------------------------------- |
| Listen scope                | Specific workflow (or Entire app for a shared ops inbox) |
| Visibility                  | Technician, Supervisor, or Ops role                      |
| Payload visibility          | Redacted preview                                         |
| Show timeline               | On                                                       |
| Require claim before action | On for shared teams; Off for personal queues             |
| Submission review           | Overview fields + full record                            |
| Actions                     | Claim, Complete                                          |

## Common Configuration Patterns

### Team intake queue

Listen to a specific workflow. Require claim. Bind Submission review to the intake details form.

### Personal my-work queue

Listen to Entire app or Specific workflow. Claim off if items are already assigned. Compact density.

## Testing Checklist

* [ ] Create a workflow item and confirm it appears under Active.
* [ ] Claim as user A; confirm user B cannot complete it while claimed.
* [ ] Complete and confirm the item moves to History.
* [ ] Open Review and confirm Submission / Documents tabs resolve.
* [ ] Verify a disallowed role cannot see the screen.

## Troubleshooting

### Queue is empty but workflows ran

Listen scope is too narrow, Include sheets excludes the source sheet, or visibility hides the items.

### Complete is disabled

Require claim before action is on and the item is unclaimed or claimed by someone else.

### Review opens blank

Submission screen override is missing or the item has no source\_record\_id.

## Best Practices

* Configure **Work Queue** for one clear user job.
* Prefer the narrowest listen scope that still shows the right work.
* Keep payload visibility conservative for broad audiences.
* Test as an allowed user and a blocked user before publish.
* Pair related screens (Decision + Conversation + Workflow Status + Notification Center) instead of overloading one screen.


# Decision Screen

> Current state: this native screen is part of **Automation**. It is entitlement-gated, uses NotionApps runtime state instead of ordinary Notion data controls, and should be tested with realistic workflow or messaging activity before a maker relies on it in production.

The **Decision** screen is a guided approval, rejection, or request-changes checkpoint where automation pauses until a person records a structured outcome.

Think of this screen as **A controlled approval desk for one clear question that records one structured outcome.**

![Builder view of this screen with the configuration panel open](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FfPrIykeBGDZEQ8E87xep%2F00-builder-hero.jpg?alt=media)

## Who This Guide Is For

This guide is for makers configuring a **Decision** screen in the app builder. It lists every builder option available on the screen and explains how to use each one.

Use this guide when:

* A workflow needs Approve / Reject / Request changes.
* Reviewers must inspect the real submission before deciding.
* Only one reviewer should own the decision at a time.

## What The Screen Is For

### Use Decision when

* A workflow needs Approve / Reject / Request changes.
* Reviewers must inspect the real submission before deciding.
* Only one reviewer should own the decision at a time.

### Do not use it when

* A general task list — use Work Queue.
* Long discussion before deciding — pair with Conversation.
* Run health dashboards — use Workflow Status or Operator Console.

## What Users See In The Live App

* Active / History / All segments (Active default).
* Decision title, status, summary, and due date.
* Review modal with Overview, Submission, and Documents tabs when configured.
* Claim / Release when claim is required (default on).
* Approve, Reject, and Request changes with optional reason and attachments.

| Default                         | Value                                                          |
| ------------------------------- | -------------------------------------------------------------- |
| Default listen scope            | Entire app                                                     |
| Require claim before action     | On                                                             |
| Default preview persona / state | Technician / Waiting approval                                  |
| Empty title                     | No decisions are waiting                                       |
| Empty description               | Workflow decisions appear here when a route pauses for review. |

## Required Foundations

| Requirement                                | Why it matters                                               |
| ------------------------------------------ | ------------------------------------------------------------ |
| Automation screen entitlement              | Decision appears in the Automation / Operational group.      |
| Workflow                                   | Primary foundation for this screen’s runtime state.          |
| Private app + Users database (recommended) | Role/tenant visibility and audience policy need user fields. |

## Complete Builder Options Reference

The sections below follow the builder order. Every option is explained in prose so a maker can tell what the setting changes, how to configure it for a real approval flow, and which defaults or mistakes matter most before publishing.

### Header and screen type

This opening section identifies the native screen and defines the basic language reviewers will see. Even though it is short, it sets the tone for the whole experience: a Decision screen should feel like one clear checkpoint with one clear question.

#### Screen type

**What it does:** Locks the screen into **Decision** behavior so the live app renders structured outcomes instead of a general task list or data table.\
**How to use it:** Leave the screen type as Decision once the screen is created. If the step is really open-ended work, use Work Queue; if it is only discussion, use Conversation.\
**Why / recommended default:** Decision is best when the workflow is waiting for a formal answer. Trying to stretch another screen type into approval behavior is a common source of confusing action labels and missing outcome logic.

#### Category

**What it does:** Places the screen in the native Automation or Operational grouping inside the builder.\
**How to use it:** Keep the built-in category and use app navigation to decide where reviewers discover the screen.\
**Why / recommended default:** This setting is mainly organizational, but it helps large apps keep approval desks separate from ordinary data screens.

#### Title

**What it does:** Sets the live title shown in navigation and at the top of the approval desk.\
**How to use it:** Name the review job, such as `Manager approval`, `Compliance review`, or `Client sign-off`. Avoid internal workflow names that only makers understand.\
**Why / recommended default:** Good titles reduce accidental approvals from the wrong desk. A common mistake is giving every screen a vague name like `Review`.

#### Description

**What it does:** Adds the helper sentence beneath the title so reviewers know what decision they are making.\
**How to use it:** Write one sentence that tells reviewers what to inspect and what outcome to record, such as "Review the submission, then approve, reject, or request changes."\
**Why / recommended default:** Clear description text is especially important when the same audience has several approval desks. It reduces hesitation and prevents guesswork.

### Automation source

![Annotated builder screenshot: Automation source](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FhWnrvtJqiiRhoLQh9V8u%2F01-section-automation-source.jpg?alt=media)

This section controls which workflow-generated decisions appear on the screen. The correct source is what makes the desk feel focused and trustworthy instead of becoming a mixed pile of unrelated approvals.

| Listen scope                   | Best for                                          | Common mistake                                        |
| ------------------------------ | ------------------------------------------------- | ----------------------------------------------------- |
| Entire app                     | A shared admin approval center                    | Pulling in too many unrelated decisions               |
| Specific screen or form        | One intake experience that always leads to review | Forgetting to update the binding after swapping forms |
| Specific workflow              | One defined approval process                      | Pointing at the wrong workflow version                |
| Conversation or message thread | Message-driven review flows                       | Expecting it to behave like a chat screen             |
| Linked application             | Cross-app approval handoffs                       | Using it when the approval is still local to one app  |

#### Listen scope

**What it does:** Decides the high-level runtime source the screen listens to for decision items.\
**How to use it:** Start with **Specific workflow** for most approval desks. Use **Entire app** only when trusted admins need one shared review center. Choose **Specific screen or form** when one intake surface is the natural source boundary.\
**Why / recommended default:** **Specific workflow** is the recommended default for most makers because it keeps the approval queue understandable. Overly broad scope is the most common reason a Decision desk feels noisy.

#### Source screen or form

**What it does:** Appears when the scope is **Specific screen or form** and binds the desk to that submission surface.\
**How to use it:** Pick the exact create or update form that triggers the approval step. Revisit this binding any time you replace or duplicate the intake screen.\
**Why / recommended default:** This is useful when business owners think in terms of "submissions from this form." The common mistake is assuming the binding will follow a renamed or rebuilt form automatically.

#### Workflow

**What it does:** Appears when the scope is **Specific workflow** and filters the desk to decisions emitted by that workflow.\
**How to use it:** Select the published workflow that contains the decision step. If the workflow has staging or archived versions, verify you picked the live one.\
**Why / recommended default:** This is the safest default for a clear approval desk. It makes debugging much easier when a decision does not appear or appears in the wrong place.

#### Messaging channel

**What it does:** Narrows decision-related activity to a specific messaging channel when the workflow and approval route also emit messages.\
**How to use it:** Set it only when your approval model depends on channel-bound messaging. Otherwise leave the Decision screen centered on workflow scope.\
**Why / recommended default:** Channel filters are powerful but easy to mismatch. Use them deliberately, not by habit.

#### Topic

**What it does:** Filters channel-driven activity to one topic inside that channel.\
**How to use it:** Use stable topic names and match them exactly to the route that creates the approval context.\
**Why / recommended default:** Topic mismatch is a common cause of empty screens. Consistent topic naming across environments prevents subtle drift.

#### Conversation or correlation

**What it does:** Limits the desk to one specific conversation thread or correlation context.\
**How to use it:** Use this only for a tightly scoped case review or a single-request follow-up experience. Leave it broader for a reusable approval desk.\
**Why / recommended default:** Hard-coding a correlation is usually too narrow for a general approval queue, so use it only when that narrowness is intentional.

#### Linked application

**What it does:** Binds the decision desk to a linked external NotionApps application when approvals are exchanged across apps.\
**How to use it:** Select the linked app only when the approval context really originates there. Most Decision screens stay on workflow scope inside the same app.\
**Why / recommended default:** Cross-app review can be powerful, but it adds another layer to troubleshoot. Do not choose this unless the architecture truly needs it.

### Include sheets

![Annotated builder screenshot: Include sheets](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FD4SDKrB6pwdan33uiBHF%2F02-section-include-sheets.jpg?alt=media)

This section lets you narrow a Decision desk to the sheets that matter. It is useful when one workflow handles several record types but only some of them should come to a particular reviewer group.

#### Included sheets

**What it does:** Limits visible decision items to the selected sheets. Leaving everything unchecked allows all eligible sheets in scope.\
**How to use it:** Check only the sheets that should feed this desk. If the same approver group handles multiple sources, leave them unchecked for a broader review center.\
**Why / recommended default:** Sheet filtering is helpful for routing, but it is also easy to forget during testing. A hidden sheet filter is a common reason reviewers insist approvals are missing.

### Decision outcomes

![Annotated builder screenshot: Decision outcomes](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FnGmoMpatFKrpJcswn2R4%2F03-section-decision-outcomes.jpg?alt=media)

This section is the heart of the screen. It defines the structured answers the reviewer can submit and how those answers behave, including whether a reason is required, whether attachments are allowed, and whether the source record should receive a Notion status writeback.

| Outcome         | Default key         | Default behavior                                       |
| --------------- | ------------------- | ------------------------------------------------------ |
| Approve         | `approved`          | Primary action, reason optional                        |
| Reject          | `rejected`          | Danger action, reason required                         |
| Request changes | `changes_requested` | Secondary action, reason required, attachments allowed |

#### Approve

**What it does:** Records the positive decision outcome and submits the decision key `approved`.\
**How to use it:** Keep Approve available whenever the workflow has a successful review branch. Verify the workflow branch expects the `approved` key or its mapped equivalent.\
**Why / recommended default:** Approve should be the clearest action on the screen when acceptance is a normal path. A common mistake is relabeling the button in a way that no longer matches the workflow outcome logic.

#### Reject

**What it does:** Records a negative outcome using the `rejected` decision key.\
**How to use it:** Keep Reject available when the workflow needs a formal stop or denial path. Make sure the corresponding workflow branch and any downstream notifications expect a rejected outcome.\
**Why / recommended default:** Reject should be explicit, not hidden. Reviewers need a clean way to say "no" without using Request changes as a workaround.

#### Request changes

**What it does:** Records the `changes_requested` outcome so the workflow can loop back for edits instead of fully approving or rejecting.\
**How to use it:** Keep this action when the process supports revision cycles. Pair it with a clear submission review setup and, when useful, a Conversation screen for back-and-forth clarification.\
**Why / recommended default:** This action is valuable because it preserves nuance. The common mistake is leaving it enabled even when the workflow has no branch for changes requested, which makes the screen look capable of something the route cannot handle.

#### Require reason

**What it does:** Forces the reviewer to enter a comment before submitting a selected outcome.\
**How to use it:** Leave **Require reason** on for **Reject** and **Request changes**. Approve can stay optional unless policy or regulation requires written approval notes.\
**Why / recommended default:** Rejections and change requests should nearly always explain themselves. The common mistake is making reasons optional everywhere and losing the audit trail people need later.

#### Allow attachments

**What it does:** Lets the reviewer attach files to the selected outcome.\
**How to use it:** Enable attachments where evidence matters, especially on **Request changes** for annotated documents or screenshots. Only enable them on Approve or Reject when there is a real business need.\
**Why / recommended default:** Attachments are helpful, but they introduce more complexity. The default pattern of using them mainly for Request changes is usually the right balance.

#### Notion status value

**What it does:** Maps each outcome to a status value written back to the source record.\
**How to use it:** Enter the exact source-record status value you want for each outcome, such as `Approved by Client`, `Rejected`, or `Needs Revision`. Populate every meaningful path rather than relying on memory or convention.\
**Why / recommended default:** Explicit writeback mappings make the app and Notion stay aligned. The common mistake is assuming people will infer decision state from runtime history alone.

#### Attachment Notion field

**What it does:** Points outcome attachments to a files/uploads field on the source record when attachments are enabled.\
**How to use it:** Choose the files property that should store review evidence. Confirm that the field exists on the relevant sheet and is appropriate for long-term retention.\
**Why / recommended default:** If attachments matter, they should land somewhere predictable. The common mistake is enabling attachments but forgetting to point them at a usable record field.

#### Outcome labels and styles

**What it does:** Shows the maker-facing labels, keys, and styles for each outcome.\
**How to use it:** Keep labels short and business-readable, and make sure any workflow branching still matches the underlying decision keys. Treat styles as meaning cues: primary for forward progress, danger for hard stop, secondary for revision.\
**Why / recommended default:** These defaults are already sensible. Changing labels without checking workflow branch expectations is one of the easiest ways to create a subtle mismatch.

#### Writeback behavior

**What it does:** Applies the configured Notion status mapping after the decision is submitted.\
**How to use it:** Prefer explicit mappings for all important outcomes, including `changes_requested`. Use fallback behavior only when you are maintaining older setups.\
**Why / recommended default:** Explicit mapping is more predictable than legacy fallback. That predictability matters when other screens, filters, or notifications depend on the status field.

### App audience and notification prefs

![Annotated builder screenshot: App audience and notification prefs](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FClql8B8Y5hSzqWyk1sbn%2F04-section-app-audience-and-notification-prefs.jpg?alt=media)

These controls are app-wide policy, but they matter for Decision because approvals often carry sensitive payloads and should only be visible to the right tenant and reviewer population.

#### Tenant mode

**What it does:** Decides whether decisions are isolated by tenant relation or treated more broadly.\
**How to use it:** Choose **Relation** for multi-tenant approval apps so reviewers only see decisions for their own client or company. Use **Off** only in genuinely single-tenant setups.\
**Why / recommended default:** Tenant isolation is usually the safer default. Decision desks often surface sensitive content, so getting this wrong is especially costly.

#### Tenant field

**What it does:** Selects the Users-sheet relation that represents tenant membership.\
**How to use it:** Point this at the same company, client, or workspace field used elsewhere in the app.\
**Why / recommended default:** Consistency across screens is more important than creative modeling. If this field differs from the rest of the app, reviewer visibility will feel random.

#### Role field

**What it does:** Identifies the field holding a user's role when it is not named `Role`.\
**How to use it:** Leave blank for the default field name or set it to your custom role property.\
**Why / recommended default:** Role-based access only works if the builder is reading the correct field. This is easy to overlook when importing or cloning user schemas.

#### Notification categories

**What it does:** Connects notification types to user preferences so people can control how approval-related notices reach them.\
**How to use it:** Add only the categories the approval flow actually sends, such as review requests or escalation notices, and map each one to a real preference field.\
**Why / recommended default:** Lean, real categories are easier to maintain. Too many categories create policy drift and make notification behavior harder to explain.

#### Add notification category

**What it does:** Adds another category row to the audience policy.\
**How to use it:** Create a new category only when you also have a sending route and a user preference to bind it to.\
**Why / recommended default:** Categories should represent actual user choices, not future possibilities.

#### Save audience policy

**What it does:** Saves tenant and category settings at the app level.\
**How to use it:** Save immediately after policy changes and before retesting approval visibility or notifications.\
**Why / recommended default:** Unsaved policy changes are a common source of false debugging, especially when several makers are testing with different personas.

### Template setup state

![Annotated builder screenshot: Template setup state](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FfngPgCsyo0Gi0yGqY481%2F05-section-template-setup-state.jpg?alt=media)

This section tells you whether a cloned template or repaired demo still has healthy bindings behind the Decision screen.

#### Setup state indicator

**What it does:** Reports whether the native screen is provisioned, needs review, or has no setup report.\
**How to use it:** Treat **Provisioned** as healthy, treat **Needs review** as a signal to re-check workflow and review-tab bindings, and treat **No setup report** as normal for manual builds.\
**Why / recommended default:** This status can point you to configuration drift before users ever notice a broken approval desk.

### Related context

![Annotated builder screenshot: Related context](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FHU1iJuDHaiogfO9loecN%2F06-section-related-context.jpg?alt=media)

This read-only panel helps you locate nearby forms, workflows, channels, and other screens that influence the decision experience.

#### Related context panel

**What it does:** Shows discovery counts and related objects connected to the current native screen.\
**How to use it:** Use it to find the right detail screen, documents screen, or after-action destination rather than recreating them from scratch.\
**Why / recommended default:** Discovery is safer than copying IDs around, especially in larger builder setups.

### Visibility and access

![Annotated builder screenshot: Visibility and access](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FYRn2pM8Mr2obD7cfYIOx%2F07-section-visibility-and-access.jpg?alt=media)

This section controls who is allowed to open the Decision screen at all. Approval desks should be tighter than general task lists because the payload and outcome power are usually more sensitive.

#### Visibility rules

**What it does:** Applies rule-based screen visibility using the same private-app model as other screens.\
**How to use it:** Build conditions using stable fields such as role, team, tenant, or region. Keep the logic easy to read and test.\
**Why / recommended default:** Simpler access rules are easier to audit. A common mistake is opening the desk too broadly and relying on reviewers to self-select.

#### Allowed role names

**What it does:** Adds a direct role allow list for the approval desk.\
**How to use it:** Use clear roles such as `Manager, Approver, Admin` when role gating is sufficient.\
**Why / recommended default:** This is often the clearest and safest access model for approvals. The common mistake is accumulating similar role names until no one remembers which one actually unlocks the screen.

#### Allowed users

**What it does:** Grants access to specific people by email or user reference.\
**How to use it:** Use this sparingly for pilot reviewers, emergency approvers, or executive overrides.\
**Why / recommended default:** Per-person overrides are useful but hard to scale. They should supplement the role model, not replace it.

### Submission review

![Annotated builder screenshot: Submission review](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fcbifwv292bnC4RIHDHt0%2F08-section-submission-review.jpg?alt=media)

Submission review is the pre-decision inspection experience inside the review modal. It is separate from after-action routing and is one of the most important parts of a trustworthy approval desk.

| Review mode                   | Best for                                           | Recommendation            |
| ----------------------------- | -------------------------------------------------- | ------------------------- |
| Overview fields + full record | Most governed approvals                            | Recommended default       |
| Overview fields only          | Fast, repetitive reviews                           | Good for simple approvals |
| Full record only (legacy)     | Older setups that rely on the full submission view | Use only when needed      |

#### Review sheet

**What it does:** Chooses which sheet powers the Overview field picker.\
**How to use it:** Leave it blank to auto-detect when the decision items always come from one reliable source. Set it explicitly when you want the review configuration to stay stable across similar items.\
**Why / recommended default:** Explicit binding is safer in complex approvals. Auto-detect is convenient, but it can hide differences between item types.

#### Review mode

**What it does:** Decides whether reviewers see overview fields, the full submission, or both.\
**How to use it:** Choose **Overview fields + full record** for most regulated or high-confidence approval flows. Use **Overview fields only** when the review is simple and speed matters. Keep **Full record only** mainly for older compatibility cases.\
**Why / recommended default:** **Overview fields + full record** is the best default because it lets a reviewer scan first and drill in only when needed.

#### Overview fields

**What it does:** Defines the short list of fields shown in the Overview tab.\
**How to use it:** Include only the fields needed to answer the review question. Put the most decision-relevant facts first, such as amount, requester, due date, or risk flags.\
**Why / recommended default:** A tight overview reduces decision time. Including every field turns the summary tab into a second full form and defeats the point.

#### Submission screen override

**What it does:** Forces the Submission tab to open a specific detail screen instead of relying on auto-selection.\
**How to use it:** Bind the canonical review or detail screen that the approver should inspect.\
**Why / recommended default:** This is one of the most valuable safety settings for mature approval flows because it keeps the review experience predictable even after screens are renamed.

#### Documents screen override

**What it does:** Binds the Documents tab to a chosen document screen for the decision item.\
**How to use it:** Point it at the related documents or uploads experience reviewers actually need.\
**Why / recommended default:** This matters whenever attachments or supporting files are part of the approval standard. Forgetting it is a common reason the review modal feels incomplete.

### Inbox modes

Decision screens still use inbox-style segmentation even though the action is structured. Makers should understand these modes because reviewers often use History to confirm that a decision was already made.

#### Active, History, and All

**What it does:** Separates actionable open decisions from completed history and the full combined audit list.\
**How to use it:** Tell reviewers to work from **Active**, check **History** when they need to confirm a completed outcome, and use **All** for support or audit work.\
**Why / recommended default:** The default live segment is **Active** because it keeps the desk focused. A common mistake is assuming a handled decision vanished when it simply moved to History.

### Display and action policy

![Annotated builder screenshot: Display and action policy](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FBghBOexNkwy5grsIRhQa%2F09-section-display-and-action-policy.jpg?alt=media)

This section controls how much context reviewers see and whether ownership is enforced before a decision can be submitted. For Decision, this section is where safety defaults matter most.

#### Screen title override

**What it does:** Refines the live title for the approval desk.\
**How to use it:** Use the business-friendly name reviewers already recognize, such as `Client approval` or `Finance review`.\
**Why / recommended default:** Clear names reduce the risk of making the right decision in the wrong place.

#### Description

**What it does:** Sets the helper text shown under the title.\
**How to use it:** Tell reviewers exactly what they must do, for example "Inspect the request, then approve, reject, or request changes."\
**Why / recommended default:** Specific guidance helps occasional reviewers stay consistent without extra training.

#### Payload visibility

**What it does:** Controls how much runtime payload detail is visible during review.\
**How to use it:** Choose **Metadata only** for broad or external audiences, **Redacted preview** for most internal approval desks, and **Full payload** only for trusted operators or sensitive back-office reviewers who genuinely need it.\
**Why / recommended default:** **Redacted preview** is the usual default because it balances context and safety. Full payload should be intentional, not automatic.

#### Density

**What it does:** Changes how much visual space each item and detail block uses.\
**How to use it:** Keep **Comfortable** for most approval work where careful reading matters. Switch to **Compact** only for experienced, high-volume review teams.\
**Why / recommended default:** Comfortable spacing lowers reviewer error rates. Compact works best only after the process is mature.

#### Show timeline

**What it does:** Displays steps, messages, and audit events around the decision item.\
**How to use it:** Leave it **On** for most Decision screens so reviewers can see what happened before the item reached them.\
**Why / recommended default:** Timeline visibility reduces back-and-forth and improves auditability. Hiding it often makes borderline cases harder to judge.

#### Require claim before action

**What it does:** Requires the reviewer to claim the decision item before using Approve, Reject, or Request changes.\
**How to use it:** Leave this **On** for shared approval desks unless the screen is truly personal and already assigned to one person.\
**Why / recommended default:** The registry default for Decision is **On**, and that is the recommended default in almost every shared review workflow. The common mistake is turning it off too early and letting two reviewers act on the same item.

### Available actions

![Annotated builder screenshot: Available actions](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FiJYRvlMiNNGOCHkaI0ye%2F10-section-available-actions.jpg?alt=media)

These are the live actions reviewers see at the decision point. Together they should cover the full policy of the approval step without forcing the reviewer into side-channel workarounds.

#### Approve action

**What it does:** Submits the positive approval outcome.\
**How to use it:** Keep it enabled when the workflow can continue forward after a successful review. Pair it with an after-action screen such as Workflow Status if users need confirmation.\
**Why / recommended default:** Approve is the default forward path in most review flows. Make sure its label and workflow branch still match after any process rename.

#### Reject action

**What it does:** Submits the negative denial outcome.\
**How to use it:** Keep the default reason requirement so denials are explained. Route users to a follow-up screen only when there is a real post-rejection task.\
**Why / recommended default:** A documented rejection is safer than an undocumented one. The common mistake is treating reject like a shortcut instead of a governed outcome.

#### Request changes action

**What it does:** Sends the item back for revision with the `changes_requested` outcome.\
**How to use it:** Keep the default reason requirement and attachment support when reviewers may need to explain missing information or mark up documents.\
**Why / recommended default:** This action is most useful when the process expects iterative improvement. It is the right place for evidence-backed feedback, not a second version of Reject.

#### After-action screen

**What it does:** Sends the reviewer to another screen after a decision submits successfully.\
**How to use it:** Route to **Workflow Status** for confirmation, to **Conversation** when clarification usually follows, or to a confirmation screen when you want a clean finish.\
**Why / recommended default:** This is optional. Do not confuse it with Submission review, which happens before the outcome is chosen.

#### Target workflow

**What it does:** Provides the target workflow for actions that launch or escalate into another workflow.\
**How to use it:** Decision usually does not need this for normal Approve, Reject, or Request changes actions, but use it deliberately if you add escalation-style follow-up behavior.\
**Why / recommended default:** Leave it empty unless an action truly needs it. Unused workflow bindings make maintenance harder.

### Preview scenario

![Annotated builder screenshot: Preview scenario](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FM9cihiS19VN5umAcRK7Y%2F11-section-preview-scenario.jpg?alt=media)

Preview controls let you test not just layout but policy. For Decision, you should always check claimed and blocked states before publish because that is where shared-ownership mistakes show up.

#### Device and orientation

**What it does:** Changes the preview frame to desktop, tablet, or mobile in portrait or landscape.\
**How to use it:** Always inspect the review modal on mobile, even if most reviewers work on desktop.\
**Why / recommended default:** Mobile approval is common for managers and approvers. If the modal or action footer breaks there, the workflow will feel broken.

#### Test persona

**What it does:** Simulates who is using the desk.\
**How to use it:** Test with the real reviewer role, not only with Admin. The default preview persona is **Technician**, but you should switch to the actual approver persona your app uses.\
**Why / recommended default:** Admin previews hide permission mistakes. Persona testing is the fastest way to catch visibility errors before launch.

#### Preview state

**What it does:** Simulates runtime states such as Waiting approval, Claimed by me, Claimed by someone else, Empty, and Error.\
**How to use it:** Test **Waiting approval**, **Claimed by me**, and **Claimed by someone else** in particular.\
**Why / recommended default:** The default preview state is **Waiting approval**, which is the right starting point, but it does not reveal concurrency problems by itself.

#### Test mode

**What it does:** Switches between simulated preview and live runtime testing.\
**How to use it:** Use simulated mode for copy and layout, then verify a real workflow run in live test mode before publishing.\
**Why / recommended default:** Only a live decision test proves that outcome keys, writeback, and permissions all work together.

### Empty state and sample data

![Annotated builder screenshot: Empty state and sample data](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FEJKff2FeyN0kTOj8MlUT%2F12-section-empty-state-and-sample-data.jpg?alt=media)

Even an approval desk should have a calm idle state. Empty-state settings help users understand that there is simply nothing waiting, not that the review process failed.

#### Empty title

**What it does:** Sets the headline shown when no decision items match.\
**How to use it:** Keep the default `No decisions are waiting` unless your reviewers use clearer team-specific language.\
**Why / recommended default:** The default is strong because it sounds complete, not broken.

#### Empty description

**What it does:** Explains why the desk is empty and what users should expect next.\
**How to use it:** Keep or adapt the default `Workflow decisions appear here when a route pauses for review.` Add a secondary hint only if your users truly need it.\
**Why / recommended default:** Good empty copy prevents unnecessary support questions from reviewers who are new to the process.

#### Sample item, run, or conversation

**What it does:** Provides builder-only runtime references for realistic previewing and screenshots.\
**How to use it:** Use a representative approval item with documents, a real summary, and meaningful status values so the review modal reflects production conditions.\
**Why / recommended default:** Weak sample data can hide exactly the cases that make approvals fail in production, such as long titles, missing documents, or required reasons.

## Recommended Default Setup

| Setting                     | Recommended value                                              |
| --------------------------- | -------------------------------------------------------------- |
| Listen scope                | Specific workflow                                              |
| Visibility                  | Manager, Supervisor, Approver, or Admin                        |
| Payload visibility          | Redacted preview                                               |
| Show timeline               | On                                                             |
| Require claim before action | On                                                             |
| Submission review           | Overview fields + full record with Submission screen bound     |
| Decision outcomes           | Approve / Reject / Request changes with Notion status mappings |

## Common Configuration Patterns

### Manager approval

Specific workflow, claim on, redacted preview, after-action to Workflow Status.

### Request-changes loop

Require reason on Reject and Request changes; bind Documents screen; optional Conversation for clarification.

### Admin approval center

Entire app listen scope, Admin-only visibility, compact density.

## Testing Checklist

* [ ] Run the workflow until a decision item appears under Active.
* [ ] Confirm claim enables decision buttons.
* [ ] Approve and verify the approved workflow branch.
* [ ] Reject and Request changes with reasons; verify writeback status values.
* [ ] Open Review and confirm Overview / Submission / Documents.
* [ ] Confirm History shows completed decisions.

## Troubleshooting

### Approve/Reject disabled

Claim is required and the item is unclaimed or owned by someone else.

### Workflow does not continue

Outcome key does not match a workflow branch, or submit failed — check Workflow Status.

### Wrong users can approve

Visibility / allowed roles are too broad — tighten roles and retest as requester.

## Best Practices

* Configure **Decision** for one clear user job.
* Prefer the narrowest listen scope that still shows the right work.
* Keep payload visibility conservative for broad audiences.
* Test as an allowed user and a blocked user before publish.
* Pair related screens (Decision + Conversation + Workflow Status + Notification Center) instead of overloading one screen.


# Workflow Status Screen

> Current state: this native screen is part of **Automation**. It is entitlement-gated, uses NotionApps runtime state instead of ordinary Notion data controls, and should be tested with realistic workflow or messaging activity before a maker relies on it in production.

The **Workflow Status** screen is a live timeline of workflow runs, steps, waits, retries, and outcomes so requesters and operators can see where work stands.

Think of this screen as **A progress board for automation runs — read-only by default.**

![Builder view of this screen with the configuration panel open](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FaDpzl1JrdyxppnzmbqQt%2F00-builder-hero.jpg?alt=media)

## Who This Guide Is For

This guide is for makers configuring a **Workflow Status** screen in the app builder. It lists every builder option available on the screen and explains how to use each one.

Use this guide when:

* Requesters need to see whether their submission is waiting, approved, or failed.
* Operators need run timelines without opening backend logs.

## What The Screen Is For

### Use Workflow Status when

* Requesters need to see whether their submission is waiting, approved, or failed.
* Operators need run timelines without opening backend logs.

### Do not use it when

* Acting on approvals — use Decision or Work Queue.
* Recovering failures — use Exception Resolution.
* High-level ops metrics across many surfaces — use Operator Console.

## What Users See In The Live App

* Run cards with status, current step, and timestamps.
* Timeline of waits, retries, completions, and failures when Show timeline is on.
* Safe payload preview based on Payload visibility.

| Default                         | Value                                                                          |
| ------------------------------- | ------------------------------------------------------------------------------ |
| Default listen scope            | Entire app                                                                     |
| Require claim before action     | Off (not used)                                                                 |
| Default preview persona / state | Operator / Live                                                                |
| Empty title                     | No workflow runs yet                                                           |
| Empty description               | Runs appear after a workflow starts from a form, button, webhook, or schedule. |

## Required Foundations

| Requirement                                | Why it matters                                                 |
| ------------------------------------------ | -------------------------------------------------------------- |
| Automation screen entitlement              | Workflow Status appears in the Automation / Operational group. |
| Workflow                                   | Primary foundation for this screen’s runtime state.            |
| Private app + Users database (recommended) | Role/tenant visibility and audience policy need user fields.   |

## Complete Builder Options Reference

The sections below match the builder order. Each option is explained in plain language so makers can decide how much run detail to show, who should see it, and how narrow or broad the status view should be.

### Header and screen type

This first section labels the read-only status board. Workflow Status works best when the name clearly tells users whether they are looking at their own request progress or an operator-facing run inspector.

#### Screen type

**What it does:** Sets the native behavior to **Workflow Status**, which renders workflow run state instead of ordinary data rows or claimable tasks.\
**How to use it:** Leave the type as Workflow Status. If users need to take action on an item, pair this screen with Decision, Work Queue, or Exception Resolution instead of trying to make Workflow Status do everything.\
**Why / recommended default:** This screen is meant to explain where work stands, not to complete the work. Makers commonly get better results when they keep it read-only and focused.

#### Category

**What it does:** Places the screen in the native Automation or Operational grouping.\
**How to use it:** Keep the built-in category and use navigation structure to decide whether users see the screen as a self-service tracker or an operator tool.\
**Why / recommended default:** Clear separation between operational runtime screens and ordinary app screens makes the builder easier to maintain.

#### Title

**What it does:** Sets the live title shown in navigation and at the top of the page.\
**How to use it:** Use names like `Request status`, `Workflow progress`, or `Ops run status` so people immediately know this screen is informational.\
**Why / recommended default:** Good titles reduce the chance that users open this screen expecting action buttons.

#### Description

**What it does:** Adds helper text under the title.\
**How to use it:** Explain what users are looking at, such as "Track the current step, timeline, and final outcome of this workflow."\
**Why / recommended default:** A clear description prevents confusion between a status board and a queue.

### Automation source

![Annotated builder screenshot: Automation source](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FcKwaeMp3Ywkaq4ycqqEI%2F01-section-automation-source.jpg?alt=media)

This section decides which runs are visible. It is the main control for whether the screen feels like a focused customer status page or a broad operational run log.

#### Listen scope

**What it does:** Chooses the top-level source of workflow runs shown on the screen.\
**How to use it:** Use **Specific workflow** for a single-process status page, especially for requesters. Use **Entire app** for operators who need one consolidated view. Use **Specific screen or form** when one intake surface is the clearest source boundary.\
**Why / recommended default:** For requester-facing status, **Specific workflow** is usually the safest default. For operational oversight, Entire app is reasonable if the audience is trusted and the screen still feels readable.

#### Source screen or form

**What it does:** Binds the screen to one form or screen when that scope is selected.\
**How to use it:** Choose the intake surface that starts the workflow runs you want to track. Re-check it after cloning or replacing that screen.\
**Why / recommended default:** This is useful when users think in terms of "the thing I submitted from this page." The common mistake is forgetting to update the binding after a rebuild.

#### Workflow

**What it does:** Filters the screen to one workflow when **Specific workflow** is selected.\
**How to use it:** Choose the published workflow whose runs should appear. Be careful in apps with staging, demo, or duplicate workflows.\
**Why / recommended default:** Workflow-specific binding keeps status pages easy to reason about and is the best default for end-user progress tracking.

#### Messaging channel

**What it does:** Narrows message-linked runtime context when workflow status is combined with messaging signals.\
**How to use it:** Use it only when your run tracking depends on a particular messaging route. Otherwise, keep the screen centered on workflow scope.\
**Why / recommended default:** Extra filters are only helpful when they match the actual runtime design. Unnecessary channel filtering is an easy way to hide runs by accident.

#### Topic

**What it does:** Filters channel-linked context to one topic.\
**How to use it:** Match the topic exactly when a status view should only follow one class of routed events.\
**Why / recommended default:** Topic mismatch commonly looks like "no runs visible," so use it only when the screen really needs that precision.

#### Conversation or correlation

**What it does:** Limits the screen to one case, request, or thread context.\
**How to use it:** Use this when the screen is embedded in a specific case experience. Leave it broader for reusable status boards.\
**Why / recommended default:** Hard-coding one correlation is powerful but very narrow. Most standalone status screens should avoid it.

#### Linked application

**What it does:** Binds the screen to a linked NotionApps application when runs are part of an app-to-app handoff.\
**How to use it:** Select it only when the workflow context truly spans apps.\
**Why / recommended default:** Most Workflow Status screens stay local to one app, which keeps troubleshooting simpler.

### App audience and notification prefs

These controls are app-level policy. They still matter here because run visibility should align with the same tenant boundaries and role expectations used elsewhere in the app.

#### Tenant mode

**What it does:** Decides whether run visibility is partitioned by tenant relationship.\
**How to use it:** Use **Relation** when customers or departments should only see their own workflow progress. Use **Off** only in simple single-tenant apps.\
**Why / recommended default:** Tenant isolation is usually the right default for requester-facing status pages. It prevents status leakage across clients or teams.

#### Tenant field

**What it does:** Selects the Users-sheet relation that defines tenant membership.\
**How to use it:** Point at the same company, client, or workspace field the rest of the app already uses.\
**Why / recommended default:** Consistency matters. A status page that uses a different tenant model from the rest of the app will feel broken even when the workflow is healthy.

#### Role field

**What it does:** Tells the platform which field stores a user's role if it is not named `Role`.\
**How to use it:** Leave blank for the default or set it explicitly for a custom role field.\
**Why / recommended default:** Role-driven visibility depends on the right field. This is easy to miss in cloned apps.

#### Notification categories

**What it does:** Maps notification categories to user preference fields.\
**How to use it:** Keep only real categories that matter to the workflows shown on the status screen.\
**Why / recommended default:** Clean policy mapping makes the whole automation experience easier to understand, even when this screen itself is read-only.

#### Add notification category

**What it does:** Adds another category row to the app-wide audience policy.\
**How to use it:** Add one only when a workflow actually sends that category and users have a matching preference field.\
**Why / recommended default:** Unused categories add policy noise without improving the status experience.

#### Save audience policy

**What it does:** Saves the audience and notification policy at the app level.\
**How to use it:** Save after policy changes before retesting with another persona.\
**Why / recommended default:** Unsaved policy changes often look like runtime bugs when they are not.

### Template setup state

This section is a health hint for cloned or repaired apps.

#### Setup state indicator

**What it does:** Shows whether automation bindings are provisioned, need review, or have no setup report.\
**How to use it:** Treat **Needs review** as a prompt to re-check the workflow binding before trusting the status board.\
**Why / recommended default:** It is a quick way to catch broken template remaps before users start reporting empty screens.

### Related context

This panel helps you find nearby forms, workflows, and follow-up screens without hunting manually.

#### Related context panel

**What it does:** Shows read-only counts and related runtime objects.\
**How to use it:** Use it to locate the forms that start the workflow, the screens you may route to next, and the neighboring automation surfaces that belong with this status page.\
**Why / recommended default:** Discovery tools reduce guesswork and help makers avoid duplicate screens.

### Visibility and access

![Annotated builder screenshot: Visibility and access](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FMMmLPKa1vkcUbpzMgaNd%2F02-section-visibility-and-access.jpg?alt=media)

Visibility matters here because Workflow Status is often shared with broader audiences than the action screens it sits beside.

#### Visibility rules

**What it does:** Applies condition-based screen visibility.\
**How to use it:** Build simple conditions using role, tenant, or team membership.\
**Why / recommended default:** Requesters and operators often need different status boards. Clear rules prevent accidental oversharing.

#### Allowed role names

**What it does:** Adds a direct role allow list.\
**How to use it:** Use roles like `Requester`, `Operator`, or `Admin` depending on the purpose of the page.\
**Why / recommended default:** A short, explicit role list is usually easier to audit than complex nested rules.

#### Allowed users

**What it does:** Grants access to named people.\
**How to use it:** Use sparingly for pilots, executives, or break-glass support access.\
**Why / recommended default:** Individual exceptions are useful, but they should not become the main access model.

### Display and action policy

![Annotated builder screenshot: Display and action policy](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F9FDZPiydSmecyhZT696C%2F03-section-display-and-action-policy.jpg?alt=media)

For Workflow Status, this section mostly decides how much detail the screen shows. Because the screen is read-only, payload visibility and timeline design matter more than action configuration.

#### Screen title override

**What it does:** Refines the user-facing title.\
**How to use it:** Name the exact job of the page, such as `Track your request` or `Operations run status`.\
**Why / recommended default:** Clear wording helps users understand this is a status view, not an action desk.

#### Description

**What it does:** Sets the helper text under the title.\
**How to use it:** Explain what the timeline shows and what users should do if they need to take action elsewhere.\
**Why / recommended default:** One sentence of guidance can prevent a lot of navigation confusion.

#### Payload visibility

**What it does:** Controls whether the run shows metadata only, a redacted preview, or fuller payload detail.\
**How to use it:** Use **Metadata only** for customer-facing status pages, **Redacted preview** for most internal visibility, and **Full payload** only for trusted operators who really need the raw run data.\
**Why / recommended default:** The right setting depends on audience, but **Metadata only** and **Redacted preview** are usually the safest defaults. Full payload should be rare and intentional.

#### Density

**What it does:** Chooses comfortable or compact spacing for the run list and detail layout.\
**How to use it:** Use **Comfortable** for requester-friendly status pages and **Compact** for operator-heavy boards.\
**Why / recommended default:** Dense layouts are useful for ops, but they can make a self-service tracker feel harder to read.

#### Show timeline

**What it does:** Shows the run timeline, including waits, retries, and outcome transitions.\
**How to use it:** Leave **On** for most Workflow Status screens. It is the main reason people open this screen.\
**Why / recommended default:** Timeline visibility is one of the most valuable parts of the status experience. Turning it off usually removes the very context people need.

#### Require claim before action

**What it does:** Exists in the shared policy panel, but this screen does not use claim behavior by default.\
**How to use it:** Leave it **Off**. Workflow Status is read-only in the default registry configuration.\
**Why / recommended default:** This setting is not meaningful for the standard screen, so changing it usually adds confusion without changing behavior.

### Available actions

Workflow Status is read-only by default. That is a feature, not a gap: the screen is designed to answer "what is happening?" rather than "what should I click next?"

#### Default action set

**What it does:** The registry ships this screen with no claim, complete, or decision actions.\
**How to use it:** Keep it that way for most builds. Pair the screen with Work Queue, Decision, or Exception Resolution elsewhere in navigation if users need to act.\
**Why / recommended default:** Read-only behavior makes the screen safe for broader audiences and prevents accidental edits from a page meant for monitoring.

#### After-action screen

**What it does:** Exists only if you later add custom actions.\
**How to use it:** Most makers leave this unused. If you extend the screen later, route users to the next logical operational page, not back into a loop.\
**Why / recommended default:** Leaving it blank is the normal default. Workflow Status does not need forced navigation after read-only viewing.

#### Target workflow

**What it does:** Supplies a workflow binding for custom launch or escalation actions if you add them later.\
**How to use it:** Leave it empty on the standard read-only screen.\
**Why / recommended default:** Adding a target workflow without a matching action only creates maintenance noise.

### Preview scenario

![Annotated builder screenshot: Preview scenario](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FCFi08b6KYEEqVFk3Fjgk%2F04-section-preview-scenario.jpg?alt=media)

Preview controls help you check both audience fit and state coverage.

#### Device and orientation

**What it does:** Changes the preview frame across desktop, tablet, and mobile sizes.\
**How to use it:** Always check mobile if requesters may track progress from a phone.\
**Why / recommended default:** A status page is often opened on the go, so mobile readability matters even when other automation screens are desktop-first.

#### Test persona

**What it does:** Simulates who is viewing the status board.\
**How to use it:** Use **Operator** for ops-focused screens and switch to requester-like personas when building self-service tracking experiences.\
**Why / recommended default:** Persona testing helps you catch when the payload or timeline is appropriate for one audience but too detailed for another.

#### Preview state

**What it does:** Simulates states like Live, Empty, Loading, or Error.\
**How to use it:** Check **Live**, **Empty**, and **Error** at minimum. Those three states tell you whether the page feels useful, calm, and trustworthy.\
**Why / recommended default:** The default preview state is **Live**, which is good for checking the core timeline, but the empty state deserves equal attention.

#### Test mode

**What it does:** Switches between simulated preview and live runtime testing.\
**How to use it:** Use simulated mode for layout, then confirm with a real run in live mode.\
**Why / recommended default:** Only live testing proves that the source binding and visibility rules are correct.

### Empty state and sample data

![Annotated builder screenshot: Empty state and sample data](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F9ZGBXcd0UDDjKPTf51xd%2F05-section-empty-state-and-sample-data.jpg?alt=media)

Read-only status screens are often empty in new apps or quiet periods, so the empty experience should feel informative rather than alarming.

#### Empty title

**What it does:** Sets the headline shown when no runs match the current scope.\
**How to use it:** Keep the default `No workflow runs yet` unless your audience uses more familiar language.\
**Why / recommended default:** The default is clear and calm. It signals inactivity, not failure.

#### Empty description

**What it does:** Explains when runs will appear.\
**How to use it:** Keep or adapt the default `Runs appear after a workflow starts from a form, button, webhook, or schedule.`\
**Why / recommended default:** This text answers the first question new users ask when the page is empty.

#### Sample item, run, or conversation

**What it does:** Lets you preview with realistic runtime references.\
**How to use it:** Use a sample run that includes multiple timeline events so you can verify the page is actually useful before publishing.\
**Why / recommended default:** Rich sample data is especially important on a read-only screen because the timeline itself is the product.

## Recommended Default Setup

| Setting            | Recommended value                                                |
| ------------------ | ---------------------------------------------------------------- |
| Listen scope       | Specific workflow for requester status; Entire app for operators |
| Visibility         | Requester role for self-status; Operator/Admin for ops           |
| Payload visibility | Metadata only for customers; Redacted for internal               |
| Show timeline      | On                                                               |
| Actions            | None (read-only)                                                 |

## Common Configuration Patterns

### Requester status page

Specific workflow, Metadata only, visible to requesters.

### Ops run inspector

Entire app or Specific workflow, Redacted/Full payload, Operator role.

## Testing Checklist

* [ ] Start a workflow and confirm a run card appears.
* [ ] Wait for a decision step and confirm Waiting state shows.
* [ ] Complete the run and confirm Completed state.
* [ ] Force a failure and confirm failure appears (or is routed to Exception Resolution).

## Troubleshooting

### No runs visible

Listen scope excludes the workflow, or the user lacks visibility.

### Timeline missing

Show timeline is off.

## Best Practices

* Configure **Workflow Status** for one clear user job.
* Prefer the narrowest listen scope that still shows the right work.
* Keep payload visibility conservative for broad audiences.
* Test as an allowed user and a blocked user before publish.
* Pair related screens (Decision + Conversation + Workflow Status + Notification Center) instead of overloading one screen.


# Conversation Screen

> Current state: this native screen is part of **Automation**. It is entitlement-gated, uses NotionApps runtime state instead of ordinary Notion data controls, and should be tested with realistic workflow or messaging activity before a maker relies on it in production.

The **Conversation** screen is a workflow-aware message thread for comments, replies, and support exchanges tied to a record, route, or conversation.

Think of this screen as **A chat surface backed by Messaging channels, topics, and correlation — not Notion page comments.**

![Builder view of this screen with the configuration panel open](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fn1M8nwOG1vinwKkC89dE%2F00-builder-hero.jpg?alt=media)

## Who This Guide Is For

This guide is for makers configuring a **Conversation** screen in the app builder. It lists every builder option available on the screen and explains how to use each one.

Use this guide when:

* Users need to discuss a request or work item in-app.
* Approvers need clarification before deciding.
* Support needs a durable thread tied to a workflow or record.

## What The Screen Is For

### Use Conversation when

* Users need to discuss a request or work item in-app.
* Approvers need clarification before deciding.
* Support needs a durable thread tied to a workflow or record.

### Do not use it when

* Durable announcements only — use Notification Center.
* Recording an approve/reject outcome — use Decision.
* Ordinary Notion comments on database pages.

## What Users See In The Live App

* Message thread for the bound conversation/correlation.
* Send reply composer when the reply action is enabled.
* Context from the linked workflow or record when available.

| Default                         | Value                                                                       |
| ------------------------------- | --------------------------------------------------------------------------- |
| Default listen scope            | Conversation or message thread                                              |
| Require claim before action     | Off                                                                         |
| Default preview persona / state | Operator / Conversation active                                              |
| Empty title                     | No messages yet                                                             |
| Empty description               | Messages appear when a workflow, user, or linked app starts a conversation. |

## Required Foundations

| Requirement                                | Why it matters                                               |
| ------------------------------------------ | ------------------------------------------------------------ |
| Automation screen entitlement              | Conversation appears in the Automation / Operational group.  |
| Messaging, optional Workflow               | Primary foundation for this screen’s runtime state.          |
| Private app + Users database (recommended) | Role/tenant visibility and audience policy need user fields. |

## Complete Builder Options Reference

The sections below follow the builder order. Each option is explained in prose so makers can tell how the conversation is bound, who can participate, and how reply behavior should feel in the live app.

### Header and screen type

This section gives the messaging surface its identity. Conversation screens work best when the title tells users what thread they are joining and the description tells them why that thread exists.

#### Screen type

**What it does:** Sets the native behavior to **Conversation**, which renders a runtime-backed thread instead of a general list or data screen.\
**How to use it:** Keep the screen type as Conversation. If you need durable notices, use Notification Center instead; if you need structured approvals, use Decision.\
**Why / recommended default:** Keeping the messaging job focused helps the thread stay understandable. Makers often get into trouble when they try to combine chat, approvals, and notifications in one place.

#### Category

**What it does:** Places the screen in the native Automation or Operational grouping.\
**How to use it:** Keep the default grouping and use your app navigation to position the screen near related review or support flows.\
**Why / recommended default:** Clear organization helps makers maintain message-driven surfaces over time.

#### Title

**What it does:** Sets the end-user title shown for the thread.\
**How to use it:** Use a label like `Case conversation`, `Approval discussion`, or `Support thread` so users know the purpose immediately.\
**Why / recommended default:** A clear title prevents users from mistaking this for general app chat or ordinary Notion comments.

#### Description

**What it does:** Adds helper text beneath the title.\
**How to use it:** Explain who should reply here and what kind of updates belong in the thread.\
**Why / recommended default:** Good description text keeps the conversation focused and reduces off-topic replies.

### Automation source

![Annotated builder screenshot: Automation source](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FuUceDPwZHNAchWgSavyU%2F01-section-automation-source.jpg?alt=media)

This section is the most important part of the screen because it decides which thread users are actually seeing. Conversation screens are very sensitive to source mismatches, especially around channel, topic, and correlation.

#### Listen scope

**What it does:** Chooses the top-level runtime source for the thread.\
**How to use it:** For most Conversation screens, start with **Conversation or message thread**. Use **Specific workflow** only when the thread is tightly coupled to one workflow, and use **Entire app** only for broad internal support or admin use cases.\
**Why / recommended default:** The recommended default for this screen is **Conversation or message thread** because it matches how users think about a durable thread. A common mistake is choosing a broader scope and then expecting a single clean thread.

#### Source screen or form

**What it does:** Binds the conversation to one screen or form when that scope is selected.\
**How to use it:** Choose the exact intake surface that starts the message flow if the thread should always originate there.\
**Why / recommended default:** This is useful when each form submission should own its own discussion thread. Forgetting to update the binding after replacing the form is a common cause of empty conversations.

#### Workflow

**What it does:** Filters the thread to one workflow when **Specific workflow** is selected.\
**How to use it:** Pick the published workflow that creates or participates in the conversation.\
**Why / recommended default:** Workflow scope is useful when the thread is just one part of a larger process, but it is still broader than a direct conversation binding.

#### Messaging channel

**What it does:** Filters messages to a particular channel.\
**How to use it:** Choose the channel used by the messaging route that should feed this thread. Use the exact channel name your runtime emits.\
**Why / recommended default:** Channel is one of the first things to check when a thread looks empty. A near-match is still a mismatch.

#### Topic

**What it does:** Narrows the selected channel to a specific topic.\
**How to use it:** Use topic values consistently, especially in environments where the same channel handles several message types.\
**Why / recommended default:** Topic filtering is excellent for keeping one thread type clean, but it is also a common place for subtle configuration drift.

#### Conversation or correlation

**What it does:** Binds the screen to a specific conversation thread or correlation key.\
**How to use it:** Use correlation when replies must stay attached to one case, request, or approval cycle. Leave it broader only if the screen is meant to show a wider inbox-like view.\
**Why / recommended default:** This is usually the key setting that makes the screen feel like a real thread instead of a stream of unrelated messages.

#### Linked application

**What it does:** Binds the conversation to a linked external NotionApps app when the thread crosses app boundaries.\
**How to use it:** Choose a linked app only when messages genuinely travel between apps.\
**Why / recommended default:** Most conversation threads stay inside one app. Linked-app scope adds complexity and should be used only when the architecture needs it.

### App audience and notification prefs

![Annotated builder screenshot: App audience and notification prefs](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fr9pn8eASC2AGTt6Z2y34%2F02-section-app-audience-and-notification-prefs.jpg?alt=media)

These app-level controls still matter for messaging because a conversation may be tenant-specific and may coexist with notification preference policy elsewhere in the app.

#### Tenant mode

**What it does:** Controls whether conversation visibility is isolated by tenant relationship.\
**How to use it:** Use **Relation** when clients or departments should only see their own threads. Use **Off** only for simple single-tenant or fully internal apps.\
**Why / recommended default:** Tenant-aware messaging is usually the safer default. A thread that crosses customer boundaries is a serious privacy problem.

#### Tenant field

**What it does:** Selects the Users-sheet relation that defines tenant membership.\
**How to use it:** Choose the same client, company, or workspace field used elsewhere in the app.\
**Why / recommended default:** Consistency keeps access behavior predictable across screens.

#### Role field

**What it does:** Tells the platform which field stores a user's role if it is not the default `Role`.\
**How to use it:** Set it only when your user model uses a different property name.\
**Why / recommended default:** Correct role-field mapping is essential if support, approver, or requester audiences should see different threads.

#### Notification categories

**What it does:** Maps message-related categories to preference fields so users can control what notices or follow-up signals they receive.\
**How to use it:** Keep categories limited to real message types you plan to send around the conversation flow.\
**Why / recommended default:** Cleaner category design makes it easier to explain why someone received a thread-related alert.

#### Add notification category

**What it does:** Adds another category row.\
**How to use it:** Add only categories with a real sender and a real user preference field behind them.\
**Why / recommended default:** Unused categories create policy clutter without helping the conversation experience.

#### Save audience policy

**What it does:** Saves tenant and category policy at the app level.\
**How to use it:** Save before testing with another persona or tenant.\
**Why / recommended default:** Unsaved policy is a very common reason one user can see a thread while another cannot.

### Template setup state

This section is a quick health check after cloning or repairing an app.

#### Setup state indicator

**What it does:** Reports whether the screen setup is provisioned, needs review, or has no setup report.\
**How to use it:** Treat **Needs review** as a sign to re-check the conversation binding, especially channel, topic, and correlation.\
**Why / recommended default:** Messaging routes are easy to remap incorrectly in templates, so this hint can save time.

### Related context

This read-only panel helps you discover nearby workflows, screens, and channels.

#### Related context panel

**What it does:** Shows discovery counts and related runtime objects connected to the screen.\
**How to use it:** Use it to locate the originating form, related Decision screen, or follow-up Workflow Status page before creating new duplicates.\
**Why / recommended default:** Seeing the existing context helps makers keep thread-based experiences cohesive.

### Visibility and access

![Annotated builder screenshot: Visibility and access](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FhfEvWexq4BbN5mSCbIYw%2F03-section-visibility-and-access.jpg?alt=media)

This section controls who can open the conversation at all. It should mirror the real participants in the workflow or support process.

#### Visibility rules

**What it does:** Applies condition-based screen visibility.\
**How to use it:** Use role, tenant, team, or case-ownership conditions so only relevant participants can open the thread.\
**Why / recommended default:** Messaging is often more sensitive than it looks. Broad access creates unnecessary exposure.

#### Allowed role names

**What it does:** Adds a direct role allow list.\
**How to use it:** Use simple roles like `Requester, Support, Approver, Admin` when that matches the process.\
**Why / recommended default:** A short role list is usually easier to maintain than a patchwork of per-user exceptions.

#### Allowed users

**What it does:** Allows named people by email or user reference.\
**How to use it:** Use sparingly for pilots, executive participants, or named escalation owners.\
**Why / recommended default:** Per-user access is useful for edge cases, but it should not become the default access model.

### Display and action policy

![Annotated builder screenshot: Display and action policy](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FOQXS1PNRfgtWAvz2fxI6%2F04-section-display-and-action-policy.jpg?alt=media)

These settings shape how much thread context is visible and whether the screen behaves like a simple chat surface or a more audited workflow conversation.

#### Screen title override

**What it does:** Refines the live thread title.\
**How to use it:** Choose wording that matches the business context of the thread rather than technical channel names.\
**Why / recommended default:** Users should never need to understand backend route labels to know where they are.

#### Description

**What it does:** Sets the helper copy beneath the title.\
**How to use it:** Tell users what kind of message belongs in the thread and whether replies should move the process forward.\
**Why / recommended default:** Clear description text reduces noise and off-thread coordination.

#### Payload visibility

**What it does:** Decides how much linked runtime context or payload detail is shown next to the conversation.\
**How to use it:** Use **Redacted preview** for most internal threads, **Metadata only** for broader or customer-facing audiences, and **Full payload** only when trusted operators need raw detail.\
**Why / recommended default:** **Redacted preview** is the common default because it gives context without overexposing backend details.

#### Density

**What it does:** Chooses comfortable or compact spacing for messages and surrounding context.\
**How to use it:** Use **Comfortable** for most participant-facing threads. Use **Compact** only for high-volume support or operator views.\
**Why / recommended default:** Comfortable spacing improves readability in message-heavy screens.

#### Show timeline

**What it does:** Shows related audit and workflow activity alongside the thread.\
**How to use it:** Turn it on when participants need to understand how the conversation relates to workflow state changes.\
**Why / recommended default:** Timeline visibility is often helpful in approval or support flows, but it can be unnecessary for lightweight chat experiences.

#### Require claim before action

**What it does:** Exists in the shared policy section, but Conversation does not use claim behavior as part of its default reply flow.\
**How to use it:** Leave it **Off** for standard conversation behavior.\
**Why / recommended default:** Claim-based ownership is a queue concept, not a conversation concept, so turning this on usually adds confusion.

### Available actions

![Annotated builder screenshot: Available actions](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FiCXWtOrNYT1jDszHnRr3%2F05-section-available-actions.jpg?alt=media)

Conversation keeps the action model intentionally simple. The main question is whether users should be able to reply from this thread or only read it.

#### Send reply

**What it does:** Adds the composer action that lets users post into the active conversation thread.\
**How to use it:** Keep **Send reply** enabled when the screen is meant to be interactive. Remove or avoid it only when the thread should be read-only for that audience.\
**Why / recommended default:** Reply capability is usually the whole point of the screen. A common mistake is binding the thread correctly but forgetting to expose the reply action.

#### After-action screen

**What it does:** Routes users to another screen after they send a reply.\
**How to use it:** Most makers leave users on the Conversation screen, but you can route to Workflow Status or a related review screen when the process usually continues somewhere else.\
**Why / recommended default:** Leaving people in the thread is often the least surprising default. Automatic redirects after a reply can feel abrupt.

#### Target workflow

**What it does:** Supplies a workflow binding for custom launch or escalation actions if you add them later.\
**How to use it:** Leave it empty for a standard Conversation screen focused on replies.\
**Why / recommended default:** Extra workflow bindings are unnecessary unless you intentionally extend the action model.

### Preview scenario

![Annotated builder screenshot: Preview scenario](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FC57PIJNWtYzdqBtX9uVU%2F06-section-preview-scenario.jpg?alt=media)

Preview controls are especially helpful for verifying thread readability and ensuring the right personas can actually reply.

#### Device and orientation

**What it does:** Changes the preview frame across desktop, tablet, and mobile sizes.\
**How to use it:** Always check mobile because conversation threads are commonly used on phones.\
**Why / recommended default:** Message composition is one of the first things to break on smaller layouts.

#### Test persona

**What it does:** Simulates the viewer role.\
**How to use it:** Test as both the likely sender and the likely reader, such as requester and support agent or approver and submitter.\
**Why / recommended default:** Reply permissions and payload visibility often vary by persona, so one-persona testing is not enough.

#### Preview state

**What it does:** Simulates states such as Conversation active, Empty, Loading, and Error.\
**How to use it:** Check **Conversation active** for normal thread behavior and **Empty** to ensure the page does not look broken before the first message arrives.\
**Why / recommended default:** The default preview state is **Conversation active**, which is right for testing the thread, but empty state quality matters just as much.

#### Test mode

**What it does:** Switches between simulated preview and live testing.\
**How to use it:** Use live testing before publish to verify the real route, channel, topic, and correlation all match.\
**Why / recommended default:** Messaging screens are notoriously easy to "almost configure" correctly. Live testing is what proves the binding is actually real.

### Empty state and sample data

![Annotated builder screenshot: Empty state and sample data](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F29NRMCVKAfofe2IugWJs%2F07-section-empty-state-and-sample-data.jpg?alt=media)

New or quiet threads should feel calm, not broken.

#### Empty title

**What it does:** Sets the empty-state headline.\
**How to use it:** Keep the default `No messages yet` unless your audience uses more specific language like `No conversation yet`.\
**Why / recommended default:** The default is short and familiar, which works well for most thread experiences.

#### Empty description

**What it does:** Explains when messages will appear.\
**How to use it:** Keep or adapt the default `Messages appear when a workflow, user, or linked app starts a conversation.`\
**Why / recommended default:** Helpful empty copy reduces false bug reports from users who are opening the thread before any route has posted.

#### Sample item, run, or conversation

**What it does:** Supplies preview references for realistic screenshots and QA.\
**How to use it:** Use a representative thread with several message turns so you can validate the layout, composer, and any linked context.\
**Why / recommended default:** Thin sample data can make a conversation screen look fine right up until a real customer sends a long message or a thread picks up extra context.

## Recommended Default Setup

| Setting            | Recommended value                                                          |
| ------------------ | -------------------------------------------------------------------------- |
| Listen scope       | Conversation or message thread (set channel + topic; optional correlation) |
| Visibility         | Participants / Support / Approver roles                                    |
| Payload visibility | Redacted preview                                                           |
| Show timeline      | On if you want delivery/audit events                                       |
| Actions            | Send reply                                                                 |

## Common Configuration Patterns

### Approval clarification thread

Channel/topic matching the approval messaging route; pair with Decision.

### Support inbox thread

Broader conversation scope for operators; redacted payload.

## Testing Checklist

* [ ] Start a messaging route and confirm the thread appears.
* [ ] Send a reply and confirm it is visible to the other persona.
* [ ] Confirm empty state copy when no thread exists.

## Troubleshooting

### No messages

Channel/topic/correlation do not match the messaging route, or listen scope is wrong.

### Cannot reply

Send reply action missing, or user lacks access.

## Best Practices

* Configure **Conversation** for one clear user job.
* Prefer the narrowest listen scope that still shows the right work.
* Keep payload visibility conservative for broad audiences.
* Test as an allowed user and a blocked user before publish.
* Pair related screens (Decision + Conversation + Workflow Status + Notification Center) instead of overloading one screen.


# Exception Resolution Screen

> Current state: this native screen is part of **Automation**. It is entitlement-gated, uses NotionApps runtime state instead of ordinary Notion data controls, and should be tested with realistic workflow or messaging activity before a maker relies on it in production.

The **Exception Resolution** screen is a recovery screen for failed steps, missing data, blocked routes, retries, and manual fixes.

Think of this screen as **A repair desk for broken automation — diagnose, resolve, or escalate.**

![Builder view of this screen with the configuration panel open](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FhAZujkMUY2mgIuHlsRTy%2F00-builder-hero.jpg?alt=media)

## Who This Guide Is For

This guide is for makers configuring an **Exception Resolution** screen in the app builder. It lists every builder option available on the screen and explains how to use each one.

Use this guide when:

* Operators must clear failed workflow steps.
* Blocked routes need a human fix before continuing.
* Failed work should escalate into another workflow.

## What The Screen Is For

### Use Exception Resolution when

* Operators must clear failed workflow steps.
* Blocked routes need a human fix before continuing.
* Failed work should escalate into another workflow.

### Do not use it when

* Normal approvals — use Decision.
* Ordinary task completion — use Work Queue.
* Passive monitoring only — use Operator Console / Workflow Status.

## What Users See In The Live App

* Exception cards with failure reason and related run context.
* Mark resolved and Escalate actions.
* Timeline of failure and recovery events when enabled.

| Default                         | Value                                                       |
| ------------------------------- | ----------------------------------------------------------- |
| Default listen scope            | Entire app                                                  |
| Require claim before action     | Off                                                         |
| Default preview persona / state | Technician / Live                                           |
| Empty title                     | No exceptions need attention                                |
| Empty description               | Failed workflow work and unresolved exceptions appear here. |

## Required Foundations

| Requirement                                | Why it matters                                                      |
| ------------------------------------------ | ------------------------------------------------------------------- |
| Automation screen entitlement              | Exception Resolution appears in the Automation / Operational group. |
| Workflow, optional Messaging               | Primary foundation for this screen’s runtime state.                 |
| Private app + Users database (recommended) | Role/tenant visibility and audience policy need user fields.        |

## Complete Builder Options Reference

The sections below follow the builder order. Each option is explained in prose so makers can configure an exception desk that is safe for operators, narrow enough to be useful, and clear about what recovery actions are allowed.

### Header and screen type

This section defines the repair desk at a glance. Exception Resolution works best when the name tells operators they are fixing blocked automation, not handling ordinary intake work.

#### Screen type

**What it does:** Sets the native behavior to **Exception Resolution**, which renders workflow failures, blocked steps, and manual recovery state.\
**How to use it:** Keep the screen type as Exception Resolution. Use Work Queue for normal human work and Decision for structured approvals.\
**Why / recommended default:** Exception desks should stay focused on recovery. Mixing them with general work makes the most urgent problems harder to spot.

#### Category

**What it does:** Places the screen in the native Automation or Operational grouping.\
**How to use it:** Keep the default grouping and locate the screen near other operator tools in navigation.\
**Why / recommended default:** Good organization helps makers keep operational recovery surfaces distinct from day-to-day desks.

#### Title

**What it does:** Sets the live title.\
**How to use it:** Use clear names like `Exception resolution`, `Automation recovery`, or `Ops repair desk`.\
**Why / recommended default:** A clear title helps users understand that the items here are broken states that need intervention.

#### Description

**What it does:** Adds the helper sentence below the title.\
**How to use it:** Tell operators what they should do, such as "Review blocked automation, mark resolved after a manual fix, or escalate when deeper recovery is needed."\
**Why / recommended default:** Good description text helps distinguish this screen from a normal queue.

### Automation source

![Annotated builder screenshot: Automation source](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FWT7YMOwh5gQoRAc9Z3bl%2F01-section-automation-source.jpg?alt=media)

This section controls which failures appear on the desk. A well-scoped exception screen should make urgent issues obvious without flooding operators with every event in the app.

#### Listen scope

**What it does:** Chooses the top-level source of exceptions shown on the screen.\
**How to use it:** Use **Specific workflow** when one team owns recovery for one process. Use **Entire app** only for a shared operations desk covering many workflows.\
**Why / recommended default:** **Specific workflow** is usually the clearest default. Entire app is valuable for central ops teams, but it gets noisy quickly.

#### Source screen or form

**What it does:** Binds the screen to one intake surface when that scope is selected.\
**How to use it:** Choose the form or screen whose downstream automation may fail and should route to this desk.\
**Why / recommended default:** This is helpful when support teams think in terms of the entry point users touched rather than the internal workflow name.

#### Workflow

**What it does:** Filters the desk to exceptions from one workflow.\
**How to use it:** Pick the published workflow your operators are responsible for recovering.\
**Why / recommended default:** This setting is the simplest way to keep a recovery desk understandable.

#### Messaging channel

**What it does:** Narrows exception-related context to one messaging channel when recovery is paired with routed messages.\
**How to use it:** Set it only when messaging is part of the failure-handling design.\
**Why / recommended default:** Extra channel filtering is only useful when it reflects the actual route design. Otherwise it just creates one more way to hide the exceptions you need.

#### Topic

**What it does:** Narrows message-linked activity to one topic.\
**How to use it:** Match the exact topic when recovery messages or alerts are topic-specific.\
**Why / recommended default:** Topic mismatch is a common reason a repair desk looks empty even though the workflow failed.

#### Conversation or correlation

**What it does:** Limits the desk to one case or thread context.\
**How to use it:** Use this only for case-specific recovery experiences, not for a reusable ops desk.\
**Why / recommended default:** Most exception desks should remain reusable. Over-filtering by correlation makes them too brittle.

#### Linked application

**What it does:** Binds the desk to a linked NotionApps app when failures happen in an app-to-app exchange.\
**How to use it:** Choose the linked app only when cross-app recovery really matters.\
**Why / recommended default:** Cross-app recovery is valid, but it is not the normal starting point for this screen.

### App audience and notification prefs

Exception desks should almost always be restricted, and they often intersect with tenant boundaries and operator-notification policy. These app-level settings help keep recovery work visible to the right people only.

#### Tenant mode

**What it does:** Decides whether runtime visibility is partitioned by tenant relation.\
**How to use it:** Use **Relation** when support teams should only see failures for their own client or operating group. Use **Off** only when the app is truly single-tenant or internally shared.\
**Why / recommended default:** Tenant isolation is often safer than people expect, especially when exception payloads contain sensitive business details.

#### Tenant field

**What it does:** Selects the Users-sheet relation that defines tenant membership.\
**How to use it:** Pick the same client, company, or workspace field used across the rest of the app.\
**Why / recommended default:** Consistent tenant modeling keeps recovery screens aligned with every other protected surface.

#### Role field

**What it does:** Tells the platform which field holds a user's role when it is not named `Role`.\
**How to use it:** Set it only for custom user schemas.\
**Why / recommended default:** A wrong role-field mapping can quietly open the desk to the wrong audience or hide it from the right one.

#### Notification categories

**What it does:** Maps operator-facing notification categories to user preference fields.\
**How to use it:** Use only real categories, such as recovery alerts or escalation notices, that the automation system actually sends.\
**Why / recommended default:** Clean category design makes exception handling more predictable and easier to support.

#### Add notification category

**What it does:** Adds another category row.\
**How to use it:** Add one only when you also have a sender and preference field to connect to it.\
**Why / recommended default:** Unused categories make policy harder to understand without improving recovery.

#### Save audience policy

**What it does:** Saves tenant and notification preference policy at the app level.\
**How to use it:** Save after every policy change and before testing with another operator persona.\
**Why / recommended default:** Unsaved policy often looks like a screen bug when it is really just a missed save.

### Template setup state

This diagnostic section matters most after templates are cloned or demos are repaired.

#### Setup state indicator

**What it does:** Reports whether bindings look provisioned, need review, or have no setup report.\
**How to use it:** Treat **Needs review** as a prompt to verify the recovery workflow bindings before trusting the desk.\
**Why / recommended default:** Template drift is a common cause of missing exceptions, and this indicator gives you an early warning.

### Related context

This panel helps you find the forms, workflows, and follow-up screens that belong to the same recovery flow.

#### Related context panel

**What it does:** Shows discovery counts and related runtime objects.\
**How to use it:** Use it to locate the originating workflow, a related status screen, or a Conversation screen operators may need during triage.\
**Why / recommended default:** Context discovery reduces guesswork and helps you wire a coherent recovery experience.

### Visibility and access

![Annotated builder screenshot: Visibility and access](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FEWeRFejbhQvtLgSHY16O%2F02-section-visibility-and-access.jpg?alt=media)

Exception desks should be tightly controlled. The screen may expose failure details, payloads, or operational clues that ordinary users should never see.

#### Visibility rules

**What it does:** Applies condition-based visibility logic.\
**How to use it:** Restrict the screen by role, team, and tenant so only support, operations, or admin users can open it.\
**Why / recommended default:** Broad access is almost always a mistake here. Exception data is operationally sensitive.

#### Allowed role names

**What it does:** Adds a role allow list.\
**How to use it:** Use concise roles such as `Operator, Support, Admin`.\
**Why / recommended default:** A direct role list is usually the cleanest access model for repair desks.

#### Allowed users

**What it does:** Grants access to named people.\
**How to use it:** Use for temporary pilots or break-glass operators only.\
**Why / recommended default:** Per-user overrides are useful, but they should stay exceptional.

### Display and action policy

![Annotated builder screenshot: Display and action policy](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F8PI71YbrbGanmYChuotx%2F03-section-display-and-action-policy.jpg?alt=media)

These settings control how much failure detail operators can see and whether the desk behaves like a lean triage list or a more investigative recovery console.

#### Screen title override

**What it does:** Refines the user-facing title.\
**How to use it:** Use wording that clearly signals operational repair work.\
**Why / recommended default:** Operators should understand at a glance that the screen is about broken automation, not normal throughput.

#### Description

**What it does:** Sets the helper copy below the title.\
**How to use it:** Tell operators to diagnose, resolve, or escalate as appropriate.\
**Why / recommended default:** A precise description helps teams use the right recovery path instead of improvising.

#### Payload visibility

**What it does:** Controls whether operators see metadata only, a redacted preview, or full payload detail.\
**How to use it:** Use **Redacted preview** for most operator desks and **Full payload** only for the trusted teams who truly need the underlying detail to recover failures.\
**Why / recommended default:** Recovery often needs more context than requester screens, but **Full payload** should still be deliberate, not automatic.

#### Density

**What it does:** Chooses comfortable or compact spacing.\
**How to use it:** Use **Comfortable** when failures are complex and need careful reading. Use **Compact** when an experienced ops team is handling high volume.\
**Why / recommended default:** Comfortable layouts reduce missed clues; compact layouts support speed once the process is stable.

#### Show timeline

**What it does:** Shows the sequence of workflow, message, and audit events around the exception.\
**How to use it:** Leave **On** for most Exception Resolution screens. Operators usually need the history to understand what actually failed.\
**Why / recommended default:** Timeline context is one of the highest-value tools in recovery. Turning it off usually slows triage.

#### Require claim before action

**What it does:** Controls whether someone must claim an exception before acting on it.\
**How to use it:** The registry default is **Off**. Leave it off when the desk is already owned by a small trusted team, or turn it on if duplicate recovery work becomes a real problem.\
**Why / recommended default:** Off is a reasonable default for many ops desks because speed matters, but shared larger teams may benefit from explicit ownership locks.

### Available actions

![Annotated builder screenshot: Available actions](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FUJCUbCusMRtcMqqBflMj%2F04-section-available-actions.jpg?alt=media)

This section defines how operators move an exception out of the unresolved state. The two core actions are different on purpose: one clears the issue after a fix, and the other starts a deeper recovery route.

#### Mark resolved

**What it does:** Clears the exception after the operator has handled the manual fix.\
**How to use it:** Use this when the operator corrected the underlying issue outside the screen or confirmed the workflow can be considered resolved. Train the team on what evidence is required before marking something resolved.\
**Why / recommended default:** Mark resolved should be the clean path for ordinary recoveries. The common mistake is using it too early, before the real cause is actually addressed.

#### Escalate

**What it does:** Starts a deeper recovery or incident workflow from the exception item.\
**How to use it:** Keep Escalate available when failures sometimes require a second-line process, another team, or a more formal response.\
**Why / recommended default:** Escalate is valuable because not every failure should be closed locally. It turns an unresolved exception into an auditable recovery handoff.

#### After-action screen

**What it does:** Routes the operator to another screen after resolving or escalating.\
**How to use it:** Send operators to **Workflow Status** when they need to confirm the route recovered, or to **Conversation** when follow-up communication is standard.\
**Why / recommended default:** This is optional. Use it only when the next step is predictable enough to justify an automatic redirect.

#### Target workflow

**What it does:** Supplies the destination workflow for **Escalate**.\
**How to use it:** Bind the published recovery workflow that should start when the operator escalates.\
**Why / recommended default:** This setting matters a lot. If Escalate exists but no target workflow is set, the action will not do the job operators expect.

### Preview scenario

![Annotated builder screenshot: Preview scenario](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FchWEsrS5PryJdwMFIFT1%2F05-section-preview-scenario.jpg?alt=media)

Preview controls help makers test whether the desk feels useful when something is actually broken.

#### Device and orientation

**What it does:** Changes the preview frame across desktop, tablet, and mobile sizes.\
**How to use it:** Test the screen on desktop first, then check mobile if field operators or support staff may use it on the go.\
**Why / recommended default:** Recovery work often happens under time pressure, so layout problems matter more than usual.

#### Test persona

**What it does:** Simulates the viewer role.\
**How to use it:** Test with the real operator or support persona rather than only as Admin.\
**Why / recommended default:** Admin preview can hide access problems that would block the actual recovery team.

#### Preview state

**What it does:** Simulates states such as Live, Empty, Error, or Overdue.\
**How to use it:** Check **Live**, **Error**, and **Empty** so you know the desk still feels understandable under pressure.\
**Why / recommended default:** The default preview state is **Live**, which is good for core behavior, but recovery screens also need a strong empty and failure presentation.

#### Test mode

**What it does:** Switches between simulated preview and live testing.\
**How to use it:** Use live testing with a real failed run before publish so you can verify the action buttons and timeline against actual exception data.\
**Why / recommended default:** Simulated preview is useful, but live failure testing is what proves the desk is ready.

### Empty state and sample data

![Annotated builder screenshot: Empty state and sample data](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Ft8It5skB3CU2uWJ8TEFz%2F06-section-empty-state-and-sample-data.jpg?alt=media)

Even operator desks should look intentional when there is nothing to fix.

#### Empty title

**What it does:** Sets the headline shown when no unresolved exceptions match the current scope.\
**How to use it:** Keep the default `No exceptions need attention` unless your team uses a clearer phrase.\
**Why / recommended default:** The default sounds healthy and complete, which is ideal for a recovery desk.

#### Empty description

**What it does:** Explains what kinds of failures would appear here.\
**How to use it:** Keep or adapt the default `Failed workflow work and unresolved exceptions appear here.`\
**Why / recommended default:** Helpful empty copy reassures operators that the system is quiet, not broken.

#### Sample item, run, or conversation

**What it does:** Provides builder-only sample references for realistic preview.\
**How to use it:** Use a sample with an actual failure reason and timeline context so you can confirm the desk is useful before a real incident happens.\
**Why / recommended default:** Exception screens are hard to judge with toy data. Good samples make the preview much more trustworthy.

## Recommended Default Setup

| Setting                  | Recommended value                                     |
| ------------------------ | ----------------------------------------------------- |
| Listen scope             | Specific workflow for one process; Entire app for ops |
| Visibility               | Operator, Support, Admin                              |
| Payload visibility       | Redacted or Full for trusted operators                |
| Show timeline            | On                                                    |
| Escalate target workflow | Bind a recovery/escalation workflow                   |

## Common Configuration Patterns

### Process-specific recovery

Specific workflow + Mark resolved.

### Ops escalation desk

Entire app + Escalate bound to an incident workflow.

## Testing Checklist

* [ ] Force a workflow failure and confirm the exception appears.
* [ ] Mark resolved and confirm it leaves the open list.
* [ ] Escalate and confirm the target workflow starts.

## Troubleshooting

### Exceptions never appear

Failures are not producing exception items, or listen scope excludes them.

### Escalate does nothing

Target workflow is not set on the Escalate action.

## Best Practices

* Configure **Exception Resolution** for one clear user job.
* Prefer the narrowest listen scope that still shows the right work.
* Keep payload visibility conservative for broad audiences.
* Test as an allowed user and a blocked user before publish.
* Pair related screens (Decision + Conversation + Workflow Status + Notification Center) instead of overloading one screen.


# Notification Center Screen

> Current state: this native screen is part of **Automation**. It is entitlement-gated, uses NotionApps runtime state instead of ordinary Notion data controls, and should be tested with realistic workflow or messaging activity before a maker relies on it in production.

The **Notification Center** screen is a persistent place for announcements, alerts, unread notices, and acknowledgements.

Think of this screen as **A durable inbox for notices — not a chat thread and not a work queue.**

![Builder view of this screen with the configuration panel open](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F1CrUaLEcJ80Y1sHezY4K%2F00-builder-hero.jpg?alt=media)

## Who This Guide Is For

This guide is for makers configuring a **Notification Center** screen in the app builder. It lists every builder option available on the screen and explains how to use each one.

Use this guide when:

* Users need lasting alerts or announcements.
* Acknowledgements or dismissals should be recorded.
* Category preferences should gate which notices a user receives.

## What The Screen Is For

### Use Notification Center when

* Users need lasting alerts or announcements.
* Acknowledgements or dismissals should be recorded.
* Category preferences should gate which notices a user receives.

### Do not use it when

* Threaded discussion — use Conversation.
* Claimable work — use Work Queue.
* Transient toast-only messages with no history.

## What Users See In The Live App

* Notification list with unread/read state.
* Acknowledge and Dismiss actions.
* Category-filtered notices based on app audience prefs.

| Default                         | Value                                               |
| ------------------------------- | --------------------------------------------------- |
| Default listen scope            | Entire app                                          |
| Require claim before action     | Off                                                 |
| Default preview persona / state | Operator / Live                                     |
| Empty title                     | No notifications                                    |
| Empty description               | Announcements and routed notifications appear here. |

## Required Foundations

| Requirement                                | Why it matters                                                     |
| ------------------------------------------ | ------------------------------------------------------------------ |
| Automation screen entitlement              | Notification Center appears in the Automation / Operational group. |
| Messaging, optional Workflow               | Primary foundation for this screen’s runtime state.                |
| Private app + Users database (recommended) | Role/tenant visibility and audience policy need user fields.       |

## Complete Builder Options Reference

The sections below follow the builder order. Every option is explained in prose so makers can configure a durable notice center with the right audience, the right categories, and the right read/clear behavior.

### Header and screen type

This section defines the notice inbox at a glance. Notification Center works best when users can tell immediately that it is for durable alerts and announcements, not chat and not claimable work.

#### Screen type

**What it does:** Sets the native behavior to **Notification Center**, which renders persistent notices tied to automation and messaging runtime state.\
**How to use it:** Keep the type as Notification Center. Use Conversation for threaded back-and-forth and Work Queue for claimable tasks.\
**Why / recommended default:** Each screen family has a distinct job. Mixing them together makes the notice center harder to trust.

#### Category

**What it does:** Places the screen in the native Automation or Operational grouping.\
**How to use it:** Keep the default grouping and place the screen where users expect to look for durable alerts.\
**Why / recommended default:** Clear structure helps makers keep notice surfaces separate from action surfaces.

#### Title

**What it does:** Sets the live title shown in navigation and at the top of the screen.\
**How to use it:** Use clear labels like `Notifications`, `Alerts`, or `Company notices` depending on the audience.\
**Why / recommended default:** Familiar naming helps users discover the screen naturally without training.

#### Description

**What it does:** Adds helper text beneath the title.\
**How to use it:** Explain what kind of notices appear here and what users should do with them, such as acknowledge or dismiss.\
**Why / recommended default:** Good description text keeps the screen from being mistaken for a support inbox or conversation thread.

### Automation source

![Annotated builder screenshot: Automation source](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FnAvGbsBFSCxbge9rmQeB%2F01-section-automation-source.jpg?alt=media)

This section decides which notices the center listens to. Notification Center can be broad, but it still works best when makers are intentional about scope.

#### Listen scope

**What it does:** Chooses the top-level runtime source for notifications.\
**How to use it:** Use **Entire app** for a global notice center. Use **Specific workflow** when the page should only show notices from one process, such as a regulated approval flow.\
**Why / recommended default:** The common default for a shared Notification Center is **Entire app**, but narrower scope is often better when the app has several unrelated automation systems.

#### Source screen or form

**What it does:** Binds the screen to one intake surface when that scope is selected.\
**How to use it:** Choose the screen or form that should own the resulting notices if one intake experience is the natural boundary.\
**Why / recommended default:** This is useful for targeted portals, but broad notice centers usually do not need it.

#### Workflow

**What it does:** Filters the screen to notices associated with one workflow.\
**How to use it:** Pick the published workflow when users only need process-specific alerts.\
**Why / recommended default:** Workflow scope helps prevent alert fatigue by keeping a notice center focused.

#### Messaging channel

**What it does:** Narrows the screen to one messaging channel.\
**How to use it:** Match the exact channel used by the routes that publish notices.\
**Why / recommended default:** A channel mismatch is a common reason a notice center looks empty even though messages are being sent.

#### Topic

**What it does:** Filters the selected channel to one topic.\
**How to use it:** Use stable topic names when one channel carries several notice types.\
**Why / recommended default:** Topic filtering is useful, but it should be used on purpose. Over-filtering can hide notices people expect to see.

#### Conversation or correlation

**What it does:** Limits the center to a specific case or correlation context.\
**How to use it:** Use this only when the notice center is meant to accompany one request or one thread.\
**Why / recommended default:** Most Notification Center screens should stay broader than a single correlation so they behave like a true inbox.

#### Linked application

**What it does:** Binds the notice center to a linked NotionApps application when notices are exchanged across apps.\
**How to use it:** Choose a linked app only when cross-app notices are part of the product design.\
**Why / recommended default:** Most notice centers remain local to one app, which keeps governance simpler.

### App audience and notification prefs

![Annotated builder screenshot: App audience and notification prefs](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FzjEobTLWslbsB0LrTdJ6%2F02-section-app-audience-and-notification-prefs.jpg?alt=media)

This section matters more on Notification Center than on any other screen because it defines who is eligible to see notices and which notice categories they have opted into.

#### Tenant mode

**What it does:** Decides whether notices are isolated by tenant relation.\
**How to use it:** Use **Relation** when each client or company should only see its own notices. Use **Off** only for truly single-tenant or fully internal apps.\
**Why / recommended default:** Tenant-aware notice delivery is usually the safer default. Broadcast-style notice visibility is a common source of unintended exposure.

#### Tenant field

**What it does:** Selects the Users-sheet relation that defines tenant membership.\
**How to use it:** Point at the same client, company, or workspace field used elsewhere in the app.\
**Why / recommended default:** Consistent tenant modeling keeps notice visibility predictable across screens and channels.

#### Role field

**What it does:** Tells the platform which field stores a user's role if it is not named `Role`.\
**How to use it:** Leave it blank for the default field name or set it explicitly for a custom schema.\
**Why / recommended default:** Role-sensitive notice delivery only works if the builder is reading the right role field.

#### Notification categories

**What it does:** Maps category keys and labels to user preference fields so people can opt into or out of notice types.\
**How to use it:** Add only categories you really send, such as announcements, approvals, service alerts, or reminders, then map each to a real preference field on the Users sheet.\
**Why / recommended default:** This is the most important policy section on the screen. Users who opt out of a category should not see those notices even if the screen itself is visible, so sloppy category setup leads directly to confusing inbox behavior.

#### Add notification category

**What it does:** Adds another category row, usually with in-app and email delivery defaults.\
**How to use it:** Create a category only when you have a real sending route and a real user preference to bind it to.\
**Why / recommended default:** A small set of meaningful categories is better than a long list of theoretical ones.

#### Save audience policy

**What it does:** Saves tenant and category policy at the app level.\
**How to use it:** Save after every category or tenant change before testing as another persona.\
**Why / recommended default:** Unsaved audience policy is one of the easiest ways to misread a notice-visibility test.

### Template setup state

This is a diagnostic section for cloned or repaired apps.

#### Setup state indicator

**What it does:** Reports whether the screen setup is provisioned, needs review, or has no setup report.\
**How to use it:** Treat **Needs review** as a sign to re-check the notice source bindings, especially after template remaps or channel renames.\
**Why / recommended default:** Notification screens can look healthy in the builder while still pointing at the wrong underlying routes. This indicator helps you catch that earlier.

### Related context

This panel helps you discover the forms, workflows, and messaging objects that shape the notice experience.

#### Related context panel

**What it does:** Shows read-only discovery counts and related runtime objects.\
**How to use it:** Use it to find the Automation Launcher that publishes announcements, the workflows that emit alerts, or neighboring screens like Workflow Status and Conversation.\
**Why / recommended default:** Discovery tools make it easier to build a coherent notice experience instead of scattering alerts across unrelated pages.

### Visibility and access

![Annotated builder screenshot: Visibility and access](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FP5CBVzJu2YTCrVZ1Kd96%2F03-section-visibility-and-access.jpg?alt=media)

This section controls who can open the notice center at all. That is separate from category opt-in, which decides which notices appear after a user is already allowed onto the screen.

#### Visibility rules

**What it does:** Applies condition-based screen visibility.\
**How to use it:** Use role, tenant, or audience conditions to define which users can open the screen.\
**Why / recommended default:** Visibility and category preferences solve different problems. A common mistake is trying to use categories instead of real screen access rules.

#### Allowed role names

**What it does:** Adds a direct role allow list.\
**How to use it:** Use simple role sets like `All Users`, `Staff`, or `Admin` depending on the scope of the notice center.\
**Why / recommended default:** Clear role access is easier to audit than a mix of hidden exceptions.

#### Allowed users

**What it does:** Grants access to specific people by email or user reference.\
**How to use it:** Use for pilots, named stakeholders, or executive-only announcement centers.\
**Why / recommended default:** Per-user access is fine for special cases, but it should not be the main access model in a production notice center.

### Display and action policy

![Annotated builder screenshot: Display and action policy](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F6wYBykW87onwKt3gGaLq%2F04-section-display-and-action-policy.jpg?alt=media)

These settings define how much notice detail is visible and how heavy or lightweight the center feels in the live app.

#### Screen title override

**What it does:** Refines the user-facing title.\
**How to use it:** Use wording that matches the audience, such as `My notifications` for end users or `Operations alerts` for internal teams.\
**Why / recommended default:** The title should set expectations before a user even opens the list.

#### Description

**What it does:** Sets the helper copy under the title.\
**How to use it:** Explain whether users should read, acknowledge, or dismiss notices here.\
**Why / recommended default:** This small bit of guidance prevents uncertainty about what the actions mean.

#### Payload visibility

**What it does:** Controls how much detail from the runtime payload is shown with each notice.\
**How to use it:** Use **Metadata only** for broad or customer-facing audiences, **Redacted preview** for most internal use, and **Full payload** only for trusted operator contexts.\
**Why / recommended default:** Notice centers often reach wider audiences than other automation screens, so conservative payload visibility is usually the right default.

#### Density

**What it does:** Chooses comfortable or compact list spacing.\
**How to use it:** Use **Comfortable** for general audiences and **Compact** for high-volume operator alert lists.\
**Why / recommended default:** Comfortable spacing makes long notice lists easier to scan for most users.

#### Show timeline

**What it does:** Shows related audit or workflow activity with each notice.\
**How to use it:** Turn it on when users need extra delivery or history context. Turn it off when the center should stay very simple.\
**Why / recommended default:** Many notice centers work well without a heavy timeline, but it can be useful for operational alerts.

#### Require claim before action

**What it does:** Exists in the shared policy section, but Notification Center does not use claim behavior in its default model.\
**How to use it:** Leave it **Off**. Notices are acknowledged or dismissed, not claimed.\
**Why / recommended default:** Claim-based ownership is not part of the standard notification experience, so turning it on usually creates confusion.

### Available actions

![Annotated builder screenshot: Available actions](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F6RiU6vguH7StsT4sVqcs%2F05-section-available-actions.jpg?alt=media)

This section controls how users clear or record notice state. The two core actions have different meanings and should both be explained clearly in maker-facing docs.

#### Acknowledge

**What it does:** Marks the notice as seen or acknowledged while preserving its history.\
**How to use it:** Keep Acknowledge when users should formally record that they read an alert or announcement.\
**Why / recommended default:** Acknowledge is especially useful for compliance, policy, and important service updates where "read" matters.

#### Dismiss

**What it does:** Removes the notice from the active list after the user decides it no longer needs attention.\
**How to use it:** Keep Dismiss when the notice center should stay tidy and users may want to clear informational items after reading them.\
**Why / recommended default:** Dismiss is helpful for reducing noise, but makers should use it carefully on notices that must remain easy to audit.

#### After-action screen

**What it does:** Routes the user to another screen after acknowledging or dismissing a notice.\
**How to use it:** Most makers leave users on the notice center, but you can send them to Workflow Status, Conversation, or another follow-up page when a notice naturally points somewhere specific.\
**Why / recommended default:** Staying in the notice center is the least surprising default. Redirects are best only when the next step is obvious.

#### Target workflow

**What it does:** Supplies a workflow target for custom actions that launch or escalate into another process.\
**How to use it:** Leave it empty for the standard Acknowledge and Dismiss actions.\
**Why / recommended default:** Unused workflow bindings add complexity without improving the notice experience.

### Preview scenario

![Annotated builder screenshot: Preview scenario](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FoARQpClXdog8gtxApmle%2F06-section-preview-scenario.jpg?alt=media)

Preview settings help makers check whether the notice list stays readable across devices and whether the empty state feels intentional.

#### Device and orientation

**What it does:** Changes the preview frame across desktop, tablet, and mobile sizes.\
**How to use it:** Always check mobile because notices are commonly consumed on phones.\
**Why / recommended default:** A notice center that breaks on mobile will often be ignored even if the alerts themselves are important.

#### Test persona

**What it does:** Simulates the viewer role.\
**How to use it:** Test with the real audience, not only as Admin, especially when categories or tenant policy differ across user groups.\
**Why / recommended default:** Persona testing is critical because notification gating is often policy-driven rather than visually obvious.

#### Preview state

**What it does:** Simulates states such as Live, Empty, Loading, and Error.\
**How to use it:** Check **Live** for the normal list, **Empty** for calm idle behavior, and **Error** to ensure the screen still feels trustworthy under failure conditions.\
**Why / recommended default:** The default preview state is **Live**, but the empty state is often what new users see first.

#### Test mode

**What it does:** Switches between simulated preview and live testing.\
**How to use it:** Use live testing before publish to confirm notice routing and category gating with real personas.\
**Why / recommended default:** Simulation helps with layout, but only live testing proves the notice policy is correct.

### Empty state and sample data

![Annotated builder screenshot: Empty state and sample data](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FMAY9JxmSX8nmjJnBAtZX%2F07-section-empty-state-and-sample-data.jpg?alt=media)

Quiet inboxes should feel calm, not broken.

#### Empty title

**What it does:** Sets the headline shown when no notices match.\
**How to use it:** Keep the default `No notifications` unless your audience uses a more specific label like `No alerts`.\
**Why / recommended default:** The default is short, familiar, and easy to understand.

#### Empty description

**What it does:** Explains when notices will appear.\
**How to use it:** Keep or adapt the default `Announcements and routed notifications appear here.`\
**Why / recommended default:** Simple empty copy reassures users that the center is just quiet.

#### Sample item, run, or conversation

**What it does:** Provides builder-only sample references for preview and screenshots.\
**How to use it:** Use representative notices from a few categories so you can validate list density, action labels, and payload visibility before publish.\
**Why / recommended default:** Good sample data helps you catch problems such as overly long titles or confusing category presentation before real users do.

## Recommended Default Setup

| Setting                              | Recommended value                                                     |
| ------------------------------------ | --------------------------------------------------------------------- |
| Listen scope                         | Entire app for a global center; Specific workflow for process notices |
| Visibility                           | All signed-in users or role-scoped groups                             |
| Payload visibility                   | Metadata only or Redacted                                             |
| App audience notification categories | Map categories to user-sheet preference fields                        |
| Actions                              | Acknowledge, Dismiss                                                  |

## Common Configuration Patterns

### Company announcements

Entire app + Publish announcement from Automation Launcher.

### Process alerts

Specific workflow notices with Acknowledge only.

## Testing Checklist

* [ ] Publish or route a notification and confirm it appears.
* [ ] Acknowledge and confirm unread state clears.
* [ ] Dismiss and confirm it leaves the active list.
* [ ] Toggle a notification category preference and confirm gating.

## Troubleshooting

### User sees no notices

Category prefs opt them out, visibility hides the screen, or messaging route did not target them.

### Too many notices

Listen scope is Entire app — narrow scope or tighten categories.

## Best Practices

* Configure **Notification Center** for one clear user job.
* Prefer the narrowest listen scope that still shows the right work.
* Keep payload visibility conservative for broad audiences.
* Test as an allowed user and a blocked user before publish.
* Pair related screens (Decision + Conversation + Workflow Status + Notification Center) instead of overloading one screen.


# Automation Launcher Screen

> Current state: this native screen is part of **Automation**. It is entitlement-gated, uses NotionApps runtime state instead of ordinary Notion data controls, and should be tested with realistic workflow or messaging activity before a maker relies on it in production.

The **Automation Launcher** screen is a controlled launchpad for manual workflow starts, service requests, and operator announcements.

Think of this screen as **A trusted start button panel — users intentionally begin automation.**

![Builder view of this screen with the configuration panel open](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FHKWhCkYSLgbVxzCefcK7%2F00-builder-hero.jpg?alt=media)

## Who This Guide Is For

This guide is for makers configuring an **Automation Launcher** screen in the app builder. It lists every builder option available on the screen and explains how to use each one.

Use this guide when:

* Operators must manually start an approved workflow.
* Staff need a safe place to publish announcements.
* Service requests should start without exposing the whole workflow builder.

## What The Screen Is For

### Use Automation Launcher when

* Operators must manually start an approved workflow.
* Staff need a safe place to publish announcements.
* Service requests should start without exposing the whole workflow builder.

### Do not use it when

* Automatic starts from form submit — configure the workflow trigger instead.
* Approving work — use Decision.
* Monitoring runs — use Workflow Status / Operator Console.

## What Users See In The Live App

* Launch actions configured on the screen.
* Publish announcement and Launch workflow buttons.
* Empty state when no launch actions are configured.

| Default                         | Value                                                             |
| ------------------------------- | ----------------------------------------------------------------- |
| Default listen scope            | Entire app                                                        |
| Require claim before action     | Off                                                               |
| Default preview persona / state | Operator / Live                                                   |
| Empty title                     | No launch actions configured                                      |
| Empty description               | Add workflow or messaging actions to make this screen actionable. |

## Required Foundations

| Requirement                                | Why it matters                                                     |
| ------------------------------------------ | ------------------------------------------------------------------ |
| Automation screen entitlement              | Automation Launcher appears in the Automation / Operational group. |
| Workflow                                   | Primary foundation for this screen’s runtime state.                |
| Private app + Users database (recommended) | Role/tenant visibility and audience policy need user fields.       |

## Complete Builder Options Reference

The sections below follow the builder order. Each option is explained in prose so makers can configure a launch surface that is safe, deliberate, and clear about which workflows or announcements it can start.

### Header and screen type

This section defines the launcher itself. Automation Launcher should feel like a controlled control panel, not a general-purpose workspace.

#### Screen type

**What it does:** Sets the native behavior to **Automation Launcher**, which renders manual launch actions instead of runtime items or Notion rows.\
**How to use it:** Keep the screen type as Automation Launcher. If a workflow should start automatically, configure the trigger in the workflow instead of sending users here.\
**Why / recommended default:** Launchers are best for intentional human-start actions. Using them for automatic flows usually adds extra clicks without adding control.

#### Category

**What it does:** Places the screen in the native Automation or Operational grouping.\
**How to use it:** Keep the default grouping and put the launcher near the operational tools the same audience already uses.\
**Why / recommended default:** Good grouping helps makers separate action launch surfaces from monitoring surfaces.

#### Title

**What it does:** Sets the live title shown to users.\
**How to use it:** Use names like `Operations launcher`, `Service actions`, or `Admin tools` so the audience understands this is a start point.\
**Why / recommended default:** The title should signal deliberate action. Vague titles make users unsure whether they are allowed to click.

#### Description

**What it does:** Adds helper text beneath the title.\
**How to use it:** Explain what kinds of launches belong here and whether the screen is restricted to trusted staff.\
**Why / recommended default:** One clear sentence prevents accidental misuse.

### Automation source

![Annotated builder screenshot: Automation source](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FqOuQngRmMHSERrELPgzG%2F01-section-automation-source.jpg?alt=media)

Automation Launcher does not depend on a live queue of incoming items, but it still uses the shared source section. Makers should use it to keep the launch panel aligned with the workflows or messaging systems it belongs beside.

#### Listen scope

**What it does:** Chooses the high-level automation context the launcher is associated with.\
**How to use it:** Use **Entire app** for a general admin launcher or **Specific workflow** when the launcher should only relate to one process family.\
**Why / recommended default:** Entire app is a reasonable default for trusted operations panels, but narrower workflow context can make the launcher easier to understand.

#### Source screen or form

**What it does:** Binds the launcher to one source surface when that scope is selected.\
**How to use it:** Use this when launches should be conceptually tied to one intake or one app area.\
**Why / recommended default:** This is more about clarity than necessity. Most launchers remain broad unless they support one specific process.

#### Workflow

**What it does:** Filters the launcher's context to one workflow when **Specific workflow** is selected.\
**How to use it:** Pick the workflow family the launcher belongs to, especially when the screen will be used by one team for one service flow.\
**Why / recommended default:** Workflow-specific context makes a launcher easier to explain and govern.

#### Messaging channel

**What it does:** Narrows the launcher's messaging context to one channel.\
**How to use it:** Use it when the screen also publishes announcements or other message-driven actions into a known channel.\
**Why / recommended default:** Channel binding is especially useful when Publish announcement is one of the core actions.

#### Topic

**What it does:** Filters message publishing or context to a specific topic.\
**How to use it:** Use exact, stable topic names when your launcher should publish or align with a specific announcement pattern.\
**Why / recommended default:** Topic drift can make announcements look like they disappeared into the wrong inbox.

#### Conversation or correlation

**What it does:** Limits launcher context to a specific thread or case.\
**How to use it:** Use this only when the launcher is embedded inside one case experience.\
**Why / recommended default:** Most launchers should stay reusable, so a fixed correlation is usually too narrow.

#### Linked application

**What it does:** Binds the launcher to a linked NotionApps application when launch actions are part of a cross-app workflow.\
**How to use it:** Choose it only when the action surface truly spans apps.\
**Why / recommended default:** Most manual launch surfaces stay inside one app, which is easier to manage.

### App audience and notification prefs

These app-level controls matter here because launchers are usually restricted to trusted roles and may publish announcements that respect notification category policy.

#### Tenant mode

**What it does:** Decides whether launcher visibility and related runtime context are tenant-aware.\
**How to use it:** Use **Relation** when launch actions should only be visible within a tenant boundary. Use **Off** for simple single-tenant internal tooling.\
**Why / recommended default:** Many launchers are internal-only, but tenant-aware policy still matters in portal-style apps with delegated operators.

#### Tenant field

**What it does:** Selects the Users-sheet relation that defines tenant membership.\
**How to use it:** Use the same field the rest of the app relies on.\
**Why / recommended default:** Consistency prevents one operational screen from behaving differently than the rest.

#### Role field

**What it does:** Tells the platform which field stores user roles when it is not named `Role`.\
**How to use it:** Set it only if your user model uses a different field name.\
**Why / recommended default:** Launchers often depend heavily on role gating, so this mapping needs to be correct.

#### Notification categories

**What it does:** Maps notice categories to preference fields.\
**How to use it:** Configure the categories you plan to use when **Publish announcement** sends notices into Notification Center or email.\
**Why / recommended default:** Category policy matters most when the launcher is used for communication, not just workflow starts.

#### Add notification category

**What it does:** Adds another category row to the app-level policy.\
**How to use it:** Add one only for real announcement types you expect staff to publish.\
**Why / recommended default:** A small, meaningful category set is easier for makers and users to understand.

#### Save audience policy

**What it does:** Saves tenant and category policy at the app level.\
**How to use it:** Save before testing who can see or receive launcher-driven announcements.\
**Why / recommended default:** Unsaved policy leads to confusing test results.

### Template setup state

This section is a quick health indicator for cloned or repaired apps.

#### Setup state indicator

**What it does:** Reports whether the screen bindings are provisioned, need review, or have no setup report.\
**How to use it:** Re-check the status after duplicating launch surfaces or re-pointing actions to new workflows.\
**Why / recommended default:** Manual start screens are easy to forget during remaps, so this diagnostic is useful.

### Related context

This panel helps you find the workflows, screens, and channels the launcher should coordinate with.

#### Related context panel

**What it does:** Shows read-only discovery counts and related runtime objects.\
**How to use it:** Use it to locate the target Workflow Status screen, Notification Center, or related intake forms before wiring actions.\
**Why / recommended default:** Seeing the nearby operational landscape helps you create a launch surface that feels intentional.

### Visibility and access

![Annotated builder screenshot: Visibility and access](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FpOz4ml0zvJPzenYTgzpZ%2F02-section-visibility-and-access.jpg?alt=media)

Automation Launcher should usually be one of the most restricted native screens in the app. The screen starts work on purpose, so the audience should be explicit.

#### Visibility rules

**What it does:** Applies condition-based screen visibility.\
**How to use it:** Restrict the screen by role, tenant, or team so only trusted staff can launch workflows or publish announcements.\
**Why / recommended default:** Broad access is risky here. A launcher is a power tool, not a general navigation page.

#### Allowed role names

**What it does:** Adds a direct role allow list.\
**How to use it:** Use clear roles like `Operator, Admin, Dispatcher, Support Lead` as needed.\
**Why / recommended default:** Role lists are usually the clearest way to govern a launcher.

#### Allowed users

**What it does:** Grants access to named people.\
**How to use it:** Use for pilots or named operational owners, not as the long-term main access strategy.\
**Why / recommended default:** Per-user access is convenient short term but hard to maintain at scale.

### Display and action policy

![Annotated builder screenshot: Display and action policy](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FArSiSOvP6fksuBG0JnPn%2F03-section-display-and-action-policy.jpg?alt=media)

This section shapes how lightweight or intimidating the launcher feels. Since the main value is the actions, clear labels matter more than dense runtime detail.

#### Screen title override

**What it does:** Refines the user-facing title.\
**How to use it:** Use direct, job-oriented wording like `Start a workflow` or `Operations tools`.\
**Why / recommended default:** The title should tell users that clicking here has real operational consequences.

#### Description

**What it does:** Sets the helper copy under the title.\
**How to use it:** Explain what launches are allowed and when users should use this panel.\
**Why / recommended default:** A short instruction reduces accidental starts.

#### Payload visibility

**What it does:** Controls how much runtime context is shown on the launcher.\
**How to use it:** Use **Metadata only** for most launchers. Use **Redacted preview** or **Full payload** only if operators truly need extra context before launching.\
**Why / recommended default:** Launchers usually do not need heavy payload detail. Keeping them lighter makes the screen easier to scan.

#### Density

**What it does:** Chooses comfortable or compact spacing for launch actions and context.\
**How to use it:** Use **Comfortable** when you have only a few important actions. Use **Compact** when the screen is a dense internal tool panel.\
**Why / recommended default:** Comfortable spacing makes it harder to click the wrong action in a high-stakes launcher.

#### Show timeline

**What it does:** Shows related runtime history near the launcher.\
**How to use it:** Turn it on when the audience benefits from recent operational context before launching. Leave it off if the screen should stay clean and action-oriented.\
**Why / recommended default:** Many launchers do fine without much history, but some ops teams appreciate seeing recent runs before they start another one.

#### Require claim before action

**What it does:** Exists in the shared policy area, but launchers do not use claim behavior in the standard model.\
**How to use it:** Leave it **Off**. Launchers are deliberate action panels, not shared queues.\
**Why / recommended default:** Claim ownership does not add value here and usually just confuses the screen's purpose.

### Available actions

![Annotated builder screenshot: Available actions](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FlkTPP9dbq8cfE7swqBQk%2F04-section-available-actions.jpg?alt=media)

This section is the core of the screen. If the action list is empty, the launcher has no reason to exist in the live app.

#### Publish announcement

**What it does:** Sends an announcement into Notification Center or the configured messaging path.\
**How to use it:** Keep this action when staff need a controlled way to send durable notices. Pair it with well-defined notification categories so the right users receive the right message types.\
**Why / recommended default:** Publish announcement is powerful because it centralizes operational communication. The common mistake is enabling it without clear category policy or audience rules.

#### Launch workflow

**What it does:** Starts a target workflow manually from the screen.\
**How to use it:** Keep it only for workflows that should be started intentionally by a trusted human. Bind the exact target workflow and test it live.\
**Why / recommended default:** Manual launch is valuable when a process should not auto-run. The common mistake is forgetting to bind the target workflow and ending up with a button that looks ready but cannot start anything.

#### After-action screen

**What it does:** Routes the user to another screen after an action succeeds.\
**How to use it:** A strong default is **Workflow Status** after launching a workflow so operators can immediately confirm the run started.\
**Why / recommended default:** After-action routing is especially helpful on this screen because users often want immediate feedback after pressing a start button.

#### Target workflow

**What it does:** Supplies the workflow that **Launch workflow** should start.\
**How to use it:** Choose the exact published workflow for each launch action and retest after any workflow clone or rename.\
**Why / recommended default:** This is one of the most important settings on the screen. Without it, Launch workflow has no destination.

### Preview scenario

![Annotated builder screenshot: Preview scenario](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fmt5LsAj2WazsMe0vseOO%2F05-section-preview-scenario.jpg?alt=media)

Preview controls help makers verify that the launcher is understandable and safe before it reaches real operators.

#### Device and orientation

**What it does:** Changes the preview frame across desktop, tablet, and mobile sizes.\
**How to use it:** Always check the primary device your operators use, then check mobile if launches may happen in the field.\
**Why / recommended default:** High-stakes action screens should be easy to read and hard to mis-tap.

#### Test persona

**What it does:** Simulates the viewer role.\
**How to use it:** Test with the real operator or admin persona, not only with Admin.\
**Why / recommended default:** Role gating is central to launchers, so persona testing catches access problems quickly.

#### Preview state

**What it does:** Simulates states such as Live, Empty, or Error.\
**How to use it:** Check **Live** for normal action layout and **Empty** to ensure the screen still makes sense when no launch actions are configured.\
**Why / recommended default:** The empty state matters here because it is the direct signal that the screen still needs action configuration.

#### Test mode

**What it does:** Switches between simulated preview and live runtime testing.\
**How to use it:** Always run at least one live test for Launch workflow and one live test for Publish announcement before publishing the screen.\
**Why / recommended default:** Simulation is not enough for a screen whose main value is side effects.

### Empty state and sample data

![Annotated builder screenshot: Empty state and sample data](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F468uTH23wIVcEwn8EAT1%2F06-section-empty-state-and-sample-data.jpg?alt=media)

If the launcher has no configured actions, the empty state needs to make that clear instead of looking broken.

#### Empty title

**What it does:** Sets the headline shown when no launch actions are configured.\
**How to use it:** Keep the default `No launch actions configured` unless you have a clearer team-specific phrase.\
**Why / recommended default:** The default is direct and accurately describes the problem.

#### Empty description

**What it does:** Explains what the maker still needs to do for the screen to become useful.\
**How to use it:** Keep or adapt the default `Add workflow or messaging actions to make this screen actionable.`\
**Why / recommended default:** This is one of the rare empty states that is really configuration guidance, so clarity matters.

#### Sample item, run, or conversation

**What it does:** Provides preview references for screenshots and QA.\
**How to use it:** Use representative workflow and notice examples so you can validate action naming, after-action routing, and supporting context.\
**Why / recommended default:** Better sample data leads to better launch labels and fewer surprises when operators first use the screen.

## Recommended Default Setup

| Setting                           | Recommended value               |
| --------------------------------- | ------------------------------- |
| Listen scope                      | Entire app or Specific workflow |
| Visibility                        | Operator / Admin only           |
| Launch workflow → Target workflow | Required for Launch workflow    |
| After-action screen               | Workflow Status                 |
| Payload visibility                | Metadata only                   |

## Common Configuration Patterns

### Manual service request start

Launch workflow bound to intake workflow; after-action Workflow Status.

### Ops announcement pad

Publish announcement only; Notification Center for readers.

## Testing Checklist

* [ ] Launch workflow and confirm a run appears in Workflow Status.
* [ ] Publish announcement and confirm Notification Center receives it.
* [ ] Confirm a non-operator role cannot see the launcher.

## Troubleshooting

### Launch does nothing

Target workflow is not set on the Launch workflow action.

### Empty launcher

No actions configured, or actions were removed.

## Best Practices

* Configure **Automation Launcher** for one clear user job.
* Prefer the narrowest listen scope that still shows the right work.
* Keep payload visibility conservative for broad audiences.
* Test as an allowed user and a blocked user before publish.
* Pair related screens (Decision + Conversation + Workflow Status + Notification Center) instead of overloading one screen.


# Linked App Exchange Screen

> Current state: this native screen is part of **Automation**. It is entitlement-gated, uses NotionApps runtime state instead of ordinary Notion data controls, and should be tested with realistic workflow or messaging activity before a maker relies on it in production.

The **Linked App Exchange** screen is a collaboration screen for requests, messages, payloads, and acknowledgements exchanged between linked NotionApps applications.

Think of this screen as **An app-to-app mailbox for structured handoffs.**

![Builder view of this screen with the configuration panel open](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FDdkIHCaOye9vCav1Vew8%2F00-builder-hero.jpg?alt=media)

## Who This Guide Is For

This guide is for makers configuring a **Linked App Exchange** screen in the app builder. It lists every builder option available on the screen and explains how to use each one.

Use this guide when:

* Work or data must move between two NotionApps apps.
* Operators need to acknowledge linked-app payloads.
* Makers need visibility into cross-app request state.

## What The Screen Is For

### Use Linked App Exchange when

* Work or data must move between two NotionApps apps.
* Operators need to acknowledge linked-app payloads.
* Makers need visibility into cross-app request state.

### Do not use it when

* Inside-one-app chat — use Conversation.
* Human approvals — use Decision.
* External SaaS webhooks with no linked app — use webhook routes / Workflow Status.

## What Users See In The Live App

* Exchange cards for inbound/outbound linked-app activity.
* Acknowledge action for received exchanges.
* Payload preview based on visibility settings.

| Default                         | Value                                                                    |
| ------------------------------- | ------------------------------------------------------------------------ |
| Default listen scope            | Entire app (prefer Linked application in practice)                       |
| Require claim before action     | Off                                                                      |
| Default preview persona / state | Operator / Live                                                          |
| Empty title                     | No linked app exchanges                                                  |
| Empty description               | Linked app activity appears here after an app-to-app route is connected. |

## Required Foundations

| Requirement                                | Why it matters                                                     |
| ------------------------------------------ | ------------------------------------------------------------------ |
| Automation screen entitlement              | Linked App Exchange appears in the Automation / Operational group. |
| Messaging, optional Workflow               | Primary foundation for this screen’s runtime state.                |
| Private app + Users database (recommended) | Role/tenant visibility and audience policy need user fields.       |

## Complete Builder Options Reference

The sections below follow the builder order. Each option is explained in prose so makers can configure a cross-app exchange surface that is clearly scoped, appropriately restricted, and easy for operators to acknowledge.

### Header and screen type

This section defines the cross-app exchange desk. The screen works best when users immediately understand that the content is coming from a linked NotionApps application, not from ordinary local workflow items.

#### Screen type

**What it does:** Sets the native behavior to **Linked App Exchange**, which renders app-to-app exchange runtime state instead of local data rows.\
**How to use it:** Keep the type as Linked App Exchange. Use Conversation for in-app messaging and Work Queue for human-owned local tasks.\
**Why / recommended default:** Cross-app handoffs are easier to operate when they have their own dedicated surface.

#### Category

**What it does:** Places the screen in the native Automation or Operational grouping.\
**How to use it:** Keep the built-in grouping and position the screen near other integration or operations tools.\
**Why / recommended default:** Clear separation helps makers and operators distinguish exchange issues from local workflow issues.

#### Title

**What it does:** Sets the live title shown to users.\
**How to use it:** Use titles like `Linked app exchange`, `Partner handoffs`, or `Integration inbox` so the source is obvious.\
**Why / recommended default:** Naming matters here because users need to know that another app is involved.

#### Description

**What it does:** Adds helper text beneath the title.\
**How to use it:** Explain what kinds of payloads arrive here and whether users should review or acknowledge them.\
**Why / recommended default:** Good description text makes the screen easier for non-builders to operate.

### Automation source

![Annotated builder screenshot: Automation source](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fm4mLkrchy859dykP8G9u%2F01-section-automation-source.jpg?alt=media)

This section is the most important part of the screen. Linked App Exchange only works when it is pointed at the correct app and, when needed, the correct message context inside that app relationship.

#### Listen scope

**What it does:** Chooses the top-level source of exchange items shown on the screen.\
**How to use it:** Prefer **Linked application** for most real exchange desks. Use **Entire app** only for a broad integration oversight screen run by trusted admins.\
**Why / recommended default:** The practical default for this screen is **Linked application** even though broader scopes may exist. It keeps the screen tied to the specific partner app operators expect.

#### Source screen or form

**What it does:** Binds the screen to one local source surface when that scope is selected.\
**How to use it:** Use this only when the exchange is conceptually anchored to one intake surface in the current app.\
**Why / recommended default:** Most exchange desks are better defined by the linked app than by a local form.

#### Workflow

**What it does:** Filters exchange context to one workflow when **Specific workflow** is selected.\
**How to use it:** Use workflow scope if one integration flow is handled by a dedicated team.\
**Why / recommended default:** Workflow scope can help, but linked-app binding is usually the clearer starting point.

#### Messaging channel

**What it does:** Narrows exchange items to a particular channel.\
**How to use it:** Match the exact channel used by the app-to-app exchange route.\
**Why / recommended default:** Channel mismatch is one of the first things to check when an expected exchange never appears.

#### Topic

**What it does:** Filters the selected channel to a specific topic.\
**How to use it:** Use stable topics when one linked app sends several classes of exchange messages.\
**Why / recommended default:** Topic filtering is useful for clarity, but it can also hide items unexpectedly if names drift across environments.

#### Conversation or correlation

**What it does:** Limits the exchange desk to one case or one correlated handoff thread.\
**How to use it:** Use this only when the screen is embedded inside a specific case experience.\
**Why / recommended default:** Most exchange desks should stay reusable and broader than a single correlation.

#### Linked application

**What it does:** Binds the screen to the external NotionApps application participating in the exchange.\
**How to use it:** Choose the exact linked app that should feed this screen. Re-check the binding if you clone, relink, or rename the partner app.\
**Why / recommended default:** This is the defining setting for the screen. If the wrong linked app is selected, the desk will either be empty or show the wrong partner traffic.

### App audience and notification prefs

These app-level controls matter because cross-app exchange data can still be tenant-sensitive and role-sensitive, even when the items originate outside the current app.

#### Tenant mode

**What it does:** Decides whether exchange visibility is partitioned by tenant relation.\
**How to use it:** Use **Relation** when partner-specific or client-specific exchange data should stay isolated. Use **Off** only for simple single-tenant internal integration setups.\
**Why / recommended default:** Cross-app payloads can carry sensitive context, so tenant isolation is often the safer default.

#### Tenant field

**What it does:** Selects the Users-sheet relation that defines tenant membership.\
**How to use it:** Use the same tenant field the rest of the app already trusts.\
**Why / recommended default:** Consistency keeps access behavior predictable across internal and external runtime surfaces.

#### Role field

**What it does:** Tells the platform which field stores user roles when it is not named `Role`.\
**How to use it:** Set it only for custom user schemas.\
**Why / recommended default:** Integration desks are often restricted to specialized teams, so role mapping needs to be correct.

#### Notification categories

**What it does:** Maps notice categories to user preference fields.\
**How to use it:** Configure only the categories that matter for exchange-related alerts or follow-up notices.\
**Why / recommended default:** Clean policy makes it easier to understand who should be alerted about partner traffic.

#### Add notification category

**What it does:** Adds another category row to the app-level policy.\
**How to use it:** Add one only when the exchange system really uses it.\
**Why / recommended default:** Fewer categories are easier to govern.

#### Save audience policy

**What it does:** Saves tenant and category policy at the app level.\
**How to use it:** Save before testing linked-app visibility with another persona.\
**Why / recommended default:** Unsaved policy is a frequent cause of misleading access tests.

### Template setup state

This diagnostic section is especially useful after templates are cloned or linked apps are reconnected.

#### Setup state indicator

**What it does:** Reports whether the screen setup is provisioned, needs review, or has no setup report.\
**How to use it:** Treat **Needs review** as a sign to re-check the linked app binding and any channel or topic filters.\
**Why / recommended default:** Exchange screens depend on several bindings, so this quick health signal is valuable.

### Related context

This read-only panel helps makers locate neighboring screens, workflows, and channels connected to the exchange.

#### Related context panel

**What it does:** Shows discovery counts and related runtime objects.\
**How to use it:** Use it to find the partner-facing workflow, a related Conversation screen, or a follow-up Workflow Status page.\
**Why / recommended default:** Cross-app experiences are easier to maintain when makers can see their neighboring context.

### Visibility and access

![Annotated builder screenshot: Visibility and access](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F6IofLmflApqsKNiMVuTb%2F02-section-visibility-and-access.jpg?alt=media)

Linked App Exchange is usually an internal or partner-ops surface, so the audience should be explicit and narrow.

#### Visibility rules

**What it does:** Applies condition-based screen visibility.\
**How to use it:** Restrict the screen by role, tenant, or integration team membership.\
**Why / recommended default:** Exchange payloads often contain operational detail that ordinary users should not see.

#### Allowed role names

**What it does:** Adds a direct role allow list.\
**How to use it:** Use focused roles like `Integration, Operator, Admin`.\
**Why / recommended default:** A short role list is usually the clearest access model for exchange desks.

#### Allowed users

**What it does:** Grants access to specific named people.\
**How to use it:** Use this for pilots, partner-specific coordinators, or break-glass support.\
**Why / recommended default:** Named-user access is best kept exceptional.

### Display and action policy

![Annotated builder screenshot: Display and action policy](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FUwZ0JaeLR7MuyYvHK6h2%2F03-section-display-and-action-policy.jpg?alt=media)

These settings control how much exchange detail operators see and whether the desk feels like a light inbox or a denser integration console.

#### Screen title override

**What it does:** Refines the live title.\
**How to use it:** Use language the operator team actually uses for the partner relationship or handoff.\
**Why / recommended default:** Clear terminology is important because "exchange" can mean different things to different teams.

#### Description

**What it does:** Sets the helper text under the title.\
**How to use it:** Explain whether users should inspect, acknowledge, or follow up on items from the linked app.\
**Why / recommended default:** Good copy reduces uncertainty about whether the desk is passive or actionable.

#### Payload visibility

**What it does:** Chooses whether users see metadata only, a redacted preview, or fuller payload detail.\
**How to use it:** Use **Redacted preview** for most operator desks and **Full payload** only when trusted integration users really need raw exchange content.\
**Why / recommended default:** Cross-app payloads can expose a lot of detail, so conservative visibility is usually the right default.

#### Density

**What it does:** Chooses comfortable or compact spacing.\
**How to use it:** Use **Comfortable** for occasional operators and **Compact** for specialized teams who monitor exchange volume all day.\
**Why / recommended default:** Comfortable layouts reduce operator error when the payload structure is unfamiliar.

#### Show timeline

**What it does:** Shows related audit and runtime history around the exchange item.\
**How to use it:** Leave **On** when users need to understand when the handoff happened, who acknowledged it, or whether a downstream step followed.\
**Why / recommended default:** Timeline context is often useful in integration work because timing and sequence matter.

#### Require claim before action

**What it does:** Exists in the shared policy section, but Linked App Exchange does not use claim behavior in its default action model.\
**How to use it:** Leave it **Off**.\
**Why / recommended default:** The standard exchange action is acknowledgement, not claiming ownership.

### Available actions

![Annotated builder screenshot: Available actions](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FF3s1IIQk3SC1q1FpZABW%2F04-section-available-actions.jpg?alt=media)

This screen intentionally keeps the action model light. In most cases, the main operator action is to acknowledge that the cross-app payload has been seen or processed.

#### Acknowledge

**What it does:** Marks the linked-app exchange item as acknowledged.\
**How to use it:** Keep Acknowledge enabled when operators need to record that they reviewed or accepted the handoff.\
**Why / recommended default:** Acknowledge is usually the right default because it adds traceability without turning the screen into a full queue.

#### After-action screen

**What it does:** Routes the user to another screen after acknowledgement.\
**How to use it:** Use Workflow Status or Conversation only when the handoff naturally leads to a next step in the same app. Otherwise leave the user on the exchange desk.\
**Why / recommended default:** Staying on the exchange desk is often least surprising, especially for teams processing several handoffs in a row.

#### Target workflow

**What it does:** Supplies a workflow target for custom launch or escalation actions if you add them later.\
**How to use it:** Leave it blank on the standard screen unless an added action truly starts another workflow.\
**Why / recommended default:** Unused workflow targets add complexity without helping operators.

### Preview scenario

![Annotated builder screenshot: Preview scenario](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FbtvSDEyoPA2wSHFH83Yr%2F05-section-preview-scenario.jpg?alt=media)

Preview controls help you confirm that the linked-app context is understandable before the first real partner handoff arrives.

#### Device and orientation

**What it does:** Changes the preview frame across desktop, tablet, and mobile sizes.\
**How to use it:** Check the device your operators actually use, then validate mobile if exchange work may happen away from a desk.\
**Why / recommended default:** Payload-heavy integration screens can break more easily on smaller layouts.

#### Test persona

**What it does:** Simulates the viewer role.\
**How to use it:** Test with the actual integration or operator persona rather than only with Admin.\
**Why / recommended default:** Persona testing catches visibility issues that are especially common on restricted operational screens.

#### Preview state

**What it does:** Simulates states such as Live, Empty, Loading, and Error.\
**How to use it:** Check **Live** for payload readability and **Empty** to ensure the screen still feels intentional before the first linked-app route is connected.\
**Why / recommended default:** The empty state matters because builders often configure this screen before the integration is fully active.

#### Test mode

**What it does:** Switches between simulated preview and live testing.\
**How to use it:** Use live testing once the linked app is connected so you can verify the real binding and acknowledgement path.\
**Why / recommended default:** Simulation helps with layout, but live exchange testing is what proves the linkage works.

### Empty state and sample data

![Annotated builder screenshot: Empty state and sample data](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FoMAgLY86hdT3MCl9OOce%2F06-section-empty-state-and-sample-data.jpg?alt=media)

A new integration desk is often empty at first, so the empty state should reassure users that the connection is simply quiet.

#### Empty title

**What it does:** Sets the headline shown when no exchange items match.\
**How to use it:** Keep the default `No linked app exchanges` unless your team uses a more specific phrase like `No partner handoffs`.\
**Why / recommended default:** The default is accurate and easy to understand.

#### Empty description

**What it does:** Explains when exchange items will appear.\
**How to use it:** Keep or adapt the default `Linked app activity appears here after an app-to-app route is connected.`\
**Why / recommended default:** Helpful empty copy prevents operators from assuming the integration is broken before any traffic exists.

#### Sample item, run, or conversation

**What it does:** Provides builder-only sample references for preview and QA.\
**How to use it:** Use realistic cross-app payloads so you can validate the acknowledgement pattern and payload visibility before a real partner starts sending traffic.\
**Why / recommended default:** Thin or fake samples often hide exactly the field-length and timing issues that show up first in production.

## Recommended Default Setup

| Setting            | Recommended value                                                  |
| ------------------ | ------------------------------------------------------------------ |
| Listen scope       | Linked application (select the linked app; optional channel/topic) |
| Visibility         | Operator / Integration / Admin                                     |
| Payload visibility | Redacted preview                                                   |
| Show timeline      | On                                                                 |
| Actions            | Acknowledge                                                        |

## Common Configuration Patterns

### Two-app handoff inbox

Linked application scope + Acknowledge.

### Integration audit view

Entire app for admins; Full payload for trusted operators.

## Testing Checklist

* [ ] Send a linked-app message and confirm it appears.
* [ ] Acknowledge and confirm state updates.
* [ ] Confirm the wrong linked app binding shows empty.

## Troubleshooting

### No exchanges

Linked application not selected, apps not linked, or channel/topic mismatch.

### Cannot acknowledge

Action missing or user lacks access.

## Best Practices

* Configure **Linked App Exchange** for one clear user job.
* Prefer the narrowest listen scope that still shows the right work.
* Keep payload visibility conservative for broad audiences.
* Test as an allowed user and a blocked user before publish.
* Pair related screens (Decision + Conversation + Workflow Status + Notification Center) instead of overloading one screen.


# Operator Console Screen

> Current state: this native screen is part of **Automation**. It is entitlement-gated, uses NotionApps runtime state instead of ordinary Notion data controls, and should be tested with realistic workflow or messaging activity before a maker relies on it in production.

The **Operator Console** screen is a high-level operational dashboard for runs, queue depth, failures, messages, and audit activity.

Think of this screen as **A cockpit for app owners and operators — mostly read-only oversight.**

![Builder view of this screen with the configuration panel open](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F2qBsfpf8EIG2m8jjqkiB%2F00-builder-hero.jpg?alt=media)

## Who This Guide Is For

This guide is for makers configuring an **Operator Console** screen in the app builder. It lists every builder option available on the screen and explains how to use each one.

Use this guide when:

* Owners need a single place to monitor automation health.
* Support needs queue depth, failures, and recent activity at a glance.

## What The Screen Is For

### Use Operator Console when

* Owners need a single place to monitor automation health.
* Support needs queue depth, failures, and recent activity at a glance.

### Do not use it when

* Day-to-day claiming of work — use Work Queue.
* Approving items — use Decision.
* Deep run debugging for one process — use Workflow Status / Exception Resolution.

## What Users See In The Live App

* Operational summary cards (runs, failures, queue pressure, messaging activity).
* Recent audit / activity when timeline is enabled.
* Read-only by default (no claim/complete/decision buttons).

| Default                         | Value                                                                       |
| ------------------------------- | --------------------------------------------------------------------------- |
| Default listen scope            | Entire app                                                                  |
| Require claim before action     | Off (not used)                                                              |
| Default preview persona / state | Operator / Live                                                             |
| Empty title                     | No operations data yet                                                      |
| Empty description               | Workflow, messaging, and automation activity appears after the app is used. |

## Required Foundations

| Requirement                                | Why it matters                                                  |
| ------------------------------------------ | --------------------------------------------------------------- |
| Automation screen entitlement              | Operator Console appears in the Automation / Operational group. |
| Workflow and Messaging                     | Primary foundation for this screen’s runtime state.             |
| Private app + Users database (recommended) | Role/tenant visibility and audience policy need user fields.    |

## Complete Builder Options Reference

The sections below follow the builder order. Each option is explained in prose so makers can configure an operator-facing oversight surface that stays readable, appropriately restricted, and intentionally read-only.

### Header and screen type

This section defines the console at a glance. Operator Console should feel like a high-level monitoring cockpit, not a work queue and not a single-run detail page.

#### Screen type

**What it does:** Sets the native behavior to **Operator Console**, which renders aggregate operational runtime state instead of ordinary data rows or direct action items.\
**How to use it:** Keep the screen type as Operator Console. Pair it with Workflow Status, Work Queue, or Exception Resolution for the action screens that sit beside it.\
**Why / recommended default:** The console works best as oversight. Trying to turn it into the place where everything also gets done usually makes it harder to monitor anything well.

#### Category

**What it does:** Places the screen in the native Automation or Operational grouping.\
**How to use it:** Keep the built-in grouping and position the console near the top-level operations navigation.\
**Why / recommended default:** Clear organization helps the console serve as the entry point for operators.

#### Title

**What it does:** Sets the user-facing title shown in navigation and on the page.\
**How to use it:** Use names like `Operator console`, `Operations overview`, or `Automation health`.\
**Why / recommended default:** The title should signal oversight and monitoring, not case-by-case work.

#### Description

**What it does:** Adds helper text beneath the title.\
**How to use it:** Explain that the screen shows overall runs, failures, queue pressure, and recent activity.\
**Why / recommended default:** Good description text helps first-time users understand why they are here before they go deeper elsewhere.

### Automation source

![Annotated builder screenshot: Automation source](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fmr78lzmZAQANjRNf9vPh%2F01-section-automation-source.jpg?alt=media)

This section decides how broad the console is. Most consoles start broad because they are meant to show app-wide health, but focused consoles also make sense for large apps with several operating teams.

#### Listen scope

**What it does:** Chooses the high-level runtime source shown in the console.\
**How to use it:** Use **Entire app** for a true top-level operations console. Use **Specific workflow** when one team only needs oversight for one process family.\
**Why / recommended default:** Entire app is the usual default because the screen is meant for overview. Narrower scope becomes useful when the app is large enough that one console would otherwise be noisy.

#### Source screen or form

**What it does:** Binds the console to one local source surface when that scope is selected.\
**How to use it:** Use this only when one intake area needs its own localized operational view.\
**Why / recommended default:** Most consoles are broader than one intake surface.

#### Workflow

**What it does:** Filters the console to one workflow when **Specific workflow** is selected.\
**How to use it:** Pick the published workflow the operator team owns.\
**Why / recommended default:** A workflow-specific console can be much easier to read than an app-wide one in large, busy apps.

#### Messaging channel

**What it does:** Narrows the messaging-related operational view to one channel.\
**How to use it:** Use it only when operators need to monitor one message stream closely.\
**Why / recommended default:** Channel filtering is optional and should reflect a real operations use case, not habit.

#### Topic

**What it does:** Narrows message-linked context to one topic.\
**How to use it:** Use it when the operator team only cares about a specific class of events within a channel.\
**Why / recommended default:** Topic filtering can reduce noise, but it can also hide important signals if applied too early.

#### Conversation or correlation

**What it does:** Limits the console to one case or one thread context.\
**How to use it:** Use this only for embedded oversight inside a case-specific experience.\
**Why / recommended default:** Most operator consoles should remain broad and reusable.

#### Linked application

**What it does:** Binds the console to a linked NotionApps application when ops teams need cross-app oversight.\
**How to use it:** Choose it only when partner-app traffic is a meaningful part of what the console should show.\
**Why / recommended default:** Cross-app scope can be powerful, but it is not the standard starting point.

### App audience and notification prefs

These app-level settings matter because the console is often one of the most privileged screens in the app and may still need to respect tenant and role boundaries.

#### Tenant mode

**What it does:** Decides whether operational visibility is isolated by tenant relation.\
**How to use it:** Use **Relation** when delegated operators should only see their own tenant's activity. Use **Off** only for truly centralized or single-tenant internal ops.\
**Why / recommended default:** Broad ops visibility is not always appropriate. Tenant-aware consoles are safer in shared portal environments.

#### Tenant field

**What it does:** Selects the Users-sheet relation that defines tenant membership.\
**How to use it:** Use the same tenant field the rest of the app relies on.\
**Why / recommended default:** Consistency prevents the console from being the one screen that behaves unexpectedly.

#### Role field

**What it does:** Tells the platform which field stores a user's role when it is not named `Role`.\
**How to use it:** Set it only for custom user schemas.\
**Why / recommended default:** Role-driven console access depends on this being correct.

#### Notification categories

**What it does:** Maps categories to user preference fields for the wider app-level notice system.\
**How to use it:** Configure only the categories that really matter to the operations audience.\
**Why / recommended default:** Clean policy keeps the broader operational experience easier to reason about.

#### Add notification category

**What it does:** Adds another category row.\
**How to use it:** Add one only when a real notification pathway exists.\
**Why / recommended default:** Unused categories increase policy complexity without adding value.

#### Save audience policy

**What it does:** Saves tenant and category policy at the app level.\
**How to use it:** Save before retesting console visibility as another persona.\
**Why / recommended default:** Unsaved policy can make a healthy console look broken.

### Template setup state

This diagnostic section is especially helpful after templates are cloned or demo apps are repaired.

#### Setup state indicator

**What it does:** Reports whether the native screen bindings are provisioned, need review, or have no setup report.\
**How to use it:** Treat **Needs review** as a prompt to re-check the broad operational bindings before trusting the console.\
**Why / recommended default:** A console with broken bindings can look deceptively calm because "nothing is happening" is also a valid quiet state.

### Related context

This read-only panel helps you find the screens and workflows operators may need when they leave the console to investigate.

#### Related context panel

**What it does:** Shows discovery counts and related runtime objects.\
**How to use it:** Use it to locate Workflow Status, Exception Resolution, Work Queue, and messaging surfaces that belong with the console.\
**Why / recommended default:** Strong operational navigation starts with knowing what related surfaces already exist.

### Visibility and access

![Annotated builder screenshot: Visibility and access](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F4g2GZcsNyXMyoZc31Abw%2F02-section-visibility-and-access.jpg?alt=media)

Operator Console should usually be restricted to admins and operators. It is a broad operational window into the app.

#### Visibility rules

**What it does:** Applies condition-based screen visibility.\
**How to use it:** Restrict the screen with role, tenant, or team-based conditions so only the right operators can open it.\
**Why / recommended default:** Broad visibility here can reveal more operational detail than many teams realize.

#### Allowed role names

**What it does:** Adds a direct role allow list.\
**How to use it:** Use focused roles like `Operator, Admin, Support Lead`.\
**Why / recommended default:** A short role list is usually the clearest access model for a console.

#### Allowed users

**What it does:** Grants access to specific named people.\
**How to use it:** Use for pilots or named operational owners, not as the long-term primary access model.\
**Why / recommended default:** Individual exceptions are best kept rare and deliberate.

### Display and action policy

![Annotated builder screenshot: Display and action policy](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F33fGFZG37KLF3lANfiyB%2F03-section-display-and-action-policy.jpg?alt=media)

This is one of the most important sections on the screen because the console's value depends on seeing the right level of detail without overwhelming the operator.

#### Screen title override

**What it does:** Refines the live title.\
**How to use it:** Use language that signals a top-level operations view, not a case or queue view.\
**Why / recommended default:** The title should set the user's mental model before they start drilling into details elsewhere.

#### Description

**What it does:** Sets the helper text beneath the title.\
**How to use it:** Explain that the screen provides high-level health, activity, and audit visibility.\
**Why / recommended default:** This helps users understand that the console is primarily for monitoring.

#### Payload visibility

**What it does:** Controls whether the console shows metadata only, a redacted preview, or fuller payload detail.\
**How to use it:** Use **Redacted preview** for most internal consoles and **Full payload** only when a trusted operator team truly needs that depth. Use **Metadata only** if the audience is broader or more executive-facing.\
**Why / recommended default:** Payload detail drives the difference between a safe overview and an overexposed ops screen. Conservative defaults age better.

#### Density

**What it does:** Chooses comfortable or compact spacing for the console.\
**How to use it:** Use **Compact** for dense operator monitoring and **Comfortable** when the audience is broader or less technical.\
**Why / recommended default:** Compact is often a strong choice here because operators usually value more information on screen, but only if readability stays intact.

#### Show timeline

**What it does:** Shows recent activity and audit history in the console.\
**How to use it:** Leave **On** when you want the console to show recent operational movement instead of only static summary tiles.\
**Why / recommended default:** Timeline visibility is often what turns the console from a passive dashboard into a useful triage surface.

#### Require claim before action

**What it does:** Exists in the shared policy section, but Operator Console does not use claim behavior in its default model.\
**How to use it:** Leave it **Off**.\
**Why / recommended default:** The console is read-only by default, so claim settings do not normally change behavior.

### Available actions

Operator Console is read-only by default. That is the expected setup for most maker-built consoles.

#### Default action set

**What it does:** Ships with no claim, complete, or decision actions in the standard registry setup.\
**How to use it:** Keep the console read-only and use navigation to direct operators into the right action screens when they need to go deeper.\
**Why / recommended default:** Read-only design is what lets the console safely summarize a lot of information for a trusted audience.

#### After-action screen

**What it does:** Exists only if you later add custom actions.\
**How to use it:** Most makers leave it unused. If you add actions later, route users into a more focused operational screen such as Workflow Status or Exception Resolution.\
**Why / recommended default:** Blank is the normal default because the console is not primarily an action surface.

#### Target workflow

**What it does:** Supplies a workflow binding for custom actions if you add them later.\
**How to use it:** Leave it empty on the standard read-only console.\
**Why / recommended default:** Unused bindings add maintenance overhead without improving the screen.

### Preview scenario

![Annotated builder screenshot: Preview scenario](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F4cWhmH3VOmoIlMXgnWqB%2F04-section-preview-scenario.jpg?alt=media)

Preview controls help you validate the console's readability and make sure the empty state does not masquerade as healthy operations.

#### Device and orientation

**What it does:** Changes the preview frame across desktop, tablet, and mobile sizes.\
**How to use it:** Check the main operator device first, then validate mobile if leadership or support may glance at the console on phones.\
**Why / recommended default:** Dense overview screens are especially sensitive to smaller layouts.

#### Test persona

**What it does:** Simulates the viewer role.\
**How to use it:** Test as the real operator or admin role that will use the console.\
**Why / recommended default:** Persona testing catches access and visibility issues before publish.

#### Preview state

**What it does:** Simulates states such as Live, Empty, Loading, and Error.\
**How to use it:** Check **Live** for information density and **Empty** to make sure a quiet system still reads clearly.\
**Why / recommended default:** The default preview state is **Live**, but quiet periods are normal on some consoles, so the empty state deserves equal attention.

#### Test mode

**What it does:** Switches between simulated preview and live runtime testing.\
**How to use it:** Use live testing with real automation activity before publish so you can verify that the console is not silently too narrow.\
**Why / recommended default:** Only a live test confirms that the data volume and scope feel right.

### Empty state and sample data

![Annotated builder screenshot: Empty state and sample data](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FaxdtmjNT2u6p3E96lRm5%2F05-section-empty-state-and-sample-data.jpg?alt=media)

A broad console can be quiet when an app is new or traffic is low. The empty state should make that calm understandable.

#### Empty title

**What it does:** Sets the headline shown when no operational data matches.\
**How to use it:** Keep the default `No operations data yet` unless your team uses more specific operational wording.\
**Why / recommended default:** The default clearly signals low or absent activity, not a rendering failure.

#### Empty description

**What it does:** Explains when data will begin to appear.\
**How to use it:** Keep or adapt the default `Workflow, messaging, and automation activity appears after the app is used.`\
**Why / recommended default:** This copy helps new operators understand that an empty console can be expected in fresh apps.

#### Sample item, run, or conversation

**What it does:** Provides builder-only sample references for preview and QA.\
**How to use it:** Use samples with a mix of success, backlog, and failure signals so you can judge whether the console is actually useful.\
**Why / recommended default:** Thin sample data can make any console look good. Realistic samples show whether the overview still works once the app gets busy.

## Recommended Default Setup

| Setting            | Recommended value           |
| ------------------ | --------------------------- |
| Listen scope       | Entire app                  |
| Visibility         | Admin / Operator only       |
| Payload visibility | Redacted preview            |
| Show timeline      | On                          |
| Density            | Compact for dense ops views |
| Actions            | None                        |

## Common Configuration Patterns

### Owner morning console

Entire app, Admin/Operator, compact, timeline on.

### Support triage hub

Pair with Exception Resolution and Work Queue links in navigation.

## Testing Checklist

* [ ] Generate workflow, queue, and notification activity and confirm console populates.
* [ ] Confirm non-operators cannot open the screen.
* [ ] Confirm empty state before first activity.

## Troubleshooting

### Always empty

App has no automation traffic yet, or visibility restricts the viewer.

### Too noisy

Narrow listen scope or reduce payload visibility.

## Best Practices

* Configure **Operator Console** for one clear user job.
* Prefer the narrowest listen scope that still shows the right work.
* Keep payload visibility conservative for broad audiences.
* Test as an allowed user and a blocked user before publish.
* Pair related screens (Decision + Conversation + Workflow Status + Notification Center) instead of overloading one screen.


# Everyday Chrome Screens

Everyday chrome screens are the always-available utility surfaces you add from **Screens → + New Screen → Everyday chrome**. They are not standard Notion list, details, or form screens. Instead, they give the end-user app a familiar shell: a landing surface, a search surface, and a preferences surface.

Use this screen family when you want the app to feel guided instead of dumping people into a raw database view. In most private apps, these are the screens that make the app feel finished.

**My Queue** and **Activity** are related, but they do **not** live in the Everyday chrome group. They live in **Queue & activity** because they depend on Workflow, Messaging, or Approval Management. See [Queue & Activity Screens](https://docs.notionapps.com/customize-app/types-of-screens/queue-and-activity-screens).

{% hint style="info" %}
**Where to find them**\
In the builder, open **Screens → + New Screen**. Under **Everyday chrome**, pick **Home / Today**, **Search**, or **Profile**. Choose a Notion database as the context anchor, then click **Done**.
{% endhint %}

![Everyday chrome picker group](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FHVPlVGGvkUTowsEVE2Q8%2Feveryday-chrome__00-picker-group.jpg?alt=media)

## Screen guide index

| Screen                                                                                                | Primary job                                                                | Start here when                                                              |
| ----------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| [Home](https://docs.notionapps.com/customize-app/types-of-screens/everyday-chrome-screens/home)       | Give users a clear starting point, recent activity, and one main next step | You want users to land on “what should I do now?”                            |
| [Search](https://docs.notionapps.com/customize-app/types-of-screens/everyday-chrome-screens/search)   | Search across app data from one place                                      | Users need to find records faster than browsing lists                        |
| [Profile](https://docs.notionapps.com/customize-app/types-of-screens/everyday-chrome-screens/profile) | Let users pick a landing screen, manage notification prefs, and log out    | You want built-in user preferences without building a custom settings screen |

### Related guides

| Screen   | Guide                                                                                                                         |
| -------- | ----------------------------------------------------------------------------------------------------------------------------- |
| My Queue | [Queue & Activity → My Queue](https://docs.notionapps.com/customize-app/types-of-screens/queue-and-activity-screens/my-queue) |
| Activity | [Queue & Activity → Activity](https://docs.notionapps.com/customize-app/types-of-screens/queue-and-activity-screens/activity) |

## How Everyday chrome differs from other screen families

Everyday chrome is for app shell behavior, not record management. That distinction matters because makers often try to use Home, Search, or Profile like a list or a workflow desk and end up fighting the product.

| Family                               | What it is for                                                                                 |
| ------------------------------------ | ---------------------------------------------------------------------------------------------- |
| **Data screens**                     | Browsing, creating, and editing Notion-backed records                                          |
| **Everyday chrome**                  | Home, search, and profile surfaces that help users move around the app                         |
| **Queue & activity**                 | Personal feeds for “what needs me?” and “what changed?”                                        |
| **Automation / operational screens** | Action-heavy runtime surfaces like Work Queue, Decision, Operator Console, and Workflow Status |

## Complete Builder Options Reference

The Everyday chrome family uses a lightweight chrome config panel. That panel is intentionally smaller than the config for list, form, or automation screens, so the important setup work is split between the panel itself and a few builder actions outside the panel.

### Shared chrome config fields

These are the fields makers will see, or inherit, across the Everyday chrome family. Some are directly editable in the panel and some are defaults the runtime uses even though the panel does not expose them yet.

#### Screen type

**What it does:**\
The screen type determines whether the runtime behaves as `Home`, `Search`, or `Profile`. This is the core identity of the screen and controls which built-in behavior loads.

**How to use it:**\
You choose the screen type when you add the screen from the **Everyday chrome** picker. After that, think of the type as fixed behavior, not a cosmetic label. If you need a different job, add the correct screen rather than trying to force one chrome screen to act like another.

**Why / recommended default:**\
Pick the screen based on the user job, not the name of the database you happened to choose as the context anchor. A common mistake is adding `Search` when the real need is a filtered list, or adding `Home` when the real need is a shared operations desk.

#### Title and description defaults

**What it does:**\
Each chrome screen starts with registry defaults for its title and descriptive copy. Those defaults shape the header and empty-state framing the runtime shows.

**How to use it:**\
Treat the built-in wording as a starting point. If the builder exposes renaming elsewhere, keep the final wording user-facing and short. Use labels like `Home`, `Today`, `Search`, or `Profile`, not internal project names or database jargon.

**Why / recommended default:**\
Simple labels help users understand the app immediately. A common mistake is naming the screen after an internal team or sheet, which makes navigation feel technical and confusing.

#### Empty state title

**What it does:**\
This is the headline shown when the screen has no content to render yet.

**How to use it:**\
Write one short sentence that tells the user the current state without blame or panic. Good empty titles sound calm and expected.

**Why / recommended default:**\
Empty states happen often during onboarding, QA, and quiet periods. A reassuring title keeps the screen from feeling broken. A common mistake is writing something too technical, like `No records returned`.

#### Empty state description

**What it does:**\
This explains what will appear on the screen later, or what the user can do next.

**How to use it:**\
Use plain language and explain the value of the screen. Mention the type of content users should expect, such as assigned work, records, preferences, or notifications.

**Why / recommended default:**\
The description is where you reduce confusion for first-time users. A common mistake is leaving the description too vague, which makes the screen feel unfinished even when it is working correctly.

#### Empty action label

**What it does:**\
This is the label the runtime uses for the empty-state action when that screen supports one. The default comes from the chrome registry.

**How to use it:**\
Know that this value often exists at runtime even when the builder panel does not expose it for editing. For example, `Home` defaults to `Get started`, `Search` defaults to `Scan`, `My Queue` and `Activity` default to `Refresh`, and `Profile` defaults to `Save`.

**Why / recommended default:**\
This matters because makers sometimes expect every button label to be editable from the panel. In this screen family, that is not always true. The common mistake is trying to “fix” the label when the better move is to configure the target screen or the surrounding copy correctly.

### Shared builder actions outside chrome config

These are not part of the small chrome config panel, but they are still part of the real setup. If you skip them, the screen may be technically added but still unusable in the app.

#### Edit Navigation

**What it does:**\
This controls whether the screen actually appears in the app’s side navigation, tab bar, or other primary navigation surfaces.

**How to use it:**\
After adding a chrome screen, place it where users will expect it. In most apps, `Home` goes first, `Search` sits near the main working surfaces, and `Profile` goes last or under a `More` area.

**Why / recommended default:**\
Navigation placement is part of the product design, not an afterthought. A common mistake is adding a screen and forgetting to put it in navigation, which makes the maker think the screen failed when it was simply never surfaced.

#### Publish

**What it does:**\
Publishing pushes the builder changes into the live app experience so end users can actually open the screen.

**How to use it:**\
Publish after you finish configuration and after a quick preview pass. If you are testing multiple chrome screens, publish them together so the whole shell feels coherent.

**Why / recommended default:**\
Chrome screens are especially sensitive to “it works in builder but not live” confusion. The most common mistake is testing in one environment and forgetting that the live app still needs a publish.

#### View as user

**What it does:**\
This lets you preview the app as a specific end user while testing. It is especially important for screens whose content depends on identity, permissions, or end-user preferences.

**How to use it:**\
Use `View as user` whenever you need to validate personal behavior such as activity visibility, queue visibility, landing-screen choices, or authenticated preferences.

**Why / recommended default:**\
Builder preview by itself can hide role-specific issues. A common mistake is testing only as the maker and assuming the same content or options will appear for staff, clients, approvers, or other personas.

### Screen-specific options

Some options only exist on one Everyday chrome screen.

#### Home primary CTA screen

**What it does:**\
On `Home`, the primary CTA tells the big main button where to go.

**How to use it:**\
Point it at the most important next-step screen, typically a `Create Form` or `Automation Launcher`.

**Why / recommended default:**\
Home works best when it answers “what should I do next?” immediately. The common mistake is leaving the CTA empty and then wondering why Home feels passive.

#### Search sheet scope

**What it does:**\
On `Search`, the runtime can optionally limit results to certain sheet IDs through `searchSheetIds`.

**How to use it:**\
Leave it empty unless you have a strong reason to restrict search. The current builder panel only shows a hint about scope, and the picker is not fully exposed there, but the runtime still honors `searchSheetIds` when it exists in layout JSON.

**Why / recommended default:**\
Broad search is usually what users expect. A common mistake is narrowing scope so much that users believe Search is broken because the record they know exists is excluded.

## Choosing the right screen

| User job                                      | Best screen                                                                                                |
| --------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| Open the app and see the next best action     | Home                                                                                                       |
| Find a record by keyword                      | Search                                                                                                     |
| Choose a landing screen or notification prefs | Profile                                                                                                    |
| See only work that needs me                   | [My Queue](https://docs.notionapps.com/customize-app/types-of-screens/queue-and-activity-screens/my-queue) |
| Review recent workflow history                | [Activity](https://docs.notionapps.com/customize-app/types-of-screens/queue-and-activity-screens/activity) |

{% hint style="success" %}
**Maker tip**\
Start most private apps with **Home** and **Profile**. Add **Search** once users need cross-database lookup. Add **My Queue** and **Activity** from the separate **Queue & activity** group when automation is enabled and users need personal work feeds or history.
{% endhint %}

## Shared setup steps

1. Open the app in the builder.
2. Go to **Screens**.
3. Click **+ New Screen**.
4. Pick a Notion database as the context anchor.
5. Under **Everyday chrome**, select `Home / Today`, `Search`, or `Profile`.
6. Click **Done**.
7. Configure the empty-state fields and any screen-specific options.
8. Use **Edit Navigation** so the screen is actually reachable.
9. Preview in builder, including **View as user** when the screen is user-specific.
10. **Publish** before live testing.

## Safe defaults

* Put `Home` first in primary navigation for most private apps.
* Keep `Search` broadly scoped unless there is a clear data-boundary reason not to.
* Put `Profile` last or under a `More` area.
* Keep empty-state copy plain-language and calm.
* Test both builder preview and the published app before rollout.

## Related docs

* [Home](https://docs.notionapps.com/customize-app/types-of-screens/everyday-chrome-screens/home)
* [Search](https://docs.notionapps.com/customize-app/types-of-screens/everyday-chrome-screens/search)
* [Profile](https://docs.notionapps.com/customize-app/types-of-screens/everyday-chrome-screens/profile)
* [Queue & Activity Screens](https://docs.notionapps.com/customize-app/types-of-screens/queue-and-activity-screens)
* [Native Automation And Operational Screen Guides](https://docs.notionapps.com/customize-app/types-of-screens/native-automation-and-operational-screen-guides)


# Home

The **Home / Today** screen is the Everyday chrome landing surface. Its job is to answer one question quickly: *what should this user do next?* It does that with a built-in recent activity feed, a configurable primary CTA, and a clean empty state when nothing is waiting.

Use `Home` when you want the app to feel guided on first open. It is especially useful in private apps where users should land on a clear starting point instead of a random data screen.

{% hint style="info" %}
**Who this guide is for**\
Makers adding a Home hub so end users land on next actions instead of a raw list or form. This guide explains every Home builder option in prose, including the related setup that happens outside the small chrome config panel.
{% endhint %}

## What the screen is for

### Use Home when

* Users need a daily starting point
* You want one obvious next-step button
* Users should see recent activity without opening the full `Activity` screen

### Do not use it when

* You need a full Notion record list: use a **List** screen
* You need a shared claim-and-complete desk: use **Work Queue**
* You need a personal workflow inbox: use **My Queue**
* You need an operations health surface: use **Operator Console**

Good examples include a service app that lands on `Submit request`, an onboarding portal that starts with `Begin intake`, or an automation-heavy app that opens with an `Automation Launcher`.

## What users see in the live app

When Home has content, the runtime can show:

* The screen title and description
* A large primary CTA button when a target screen is configured
* A recent activity section populated from the end-user activity feed

When there is no activity and no CTA, users see the empty state instead.

| Default            | Value                                            |
| ------------------ | ------------------------------------------------ |
| Display title      | Home                                             |
| Empty title        | Nothing waiting today                            |
| Empty description  | Assigned work and queue items will show up here. |
| Empty action label | Get started                                      |
| Primary CTA screen | None                                             |
| Entitlement        | None                                             |

## Add Home in the builder

1. Open **Screens → + New Screen**.
2. Choose a Notion database as the context anchor.
3. Under **Everyday chrome**, select **Home / Today**.
4. Click **Done**.
5. Configure the empty-state fields and, if needed, the primary CTA.
6. Place Home in navigation, usually first.
7. Publish before live testing.

![Builder configuration for this screen](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FtNWljiBBk539yXIZ2j3v%2Feveryday-chrome__home__00-builder-hero.jpg?alt=media)

![End-user preview of this screen](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fc7JE2NWQ7DnW9mbtZNn8%2Feveryday-chrome__home__09-preview-closeup.jpg?alt=media)

## Complete Builder Options Reference

Home uses the lightweight chrome config panel. That panel is intentionally small, so the important setup is a combination of the visible fields, a few built-in defaults from the registry, and some builder actions outside the panel.

![Annotated builder screenshot: Chrome config](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FTKJlq4uLJfcawXkUwAqK%2Feveryday-chrome__home__01-section-chrome-config.jpg?alt=media)

### Screen identity

This section explains the parts that define what Home is before you customize the copy.

#### Screen type

**What it does:**\
This identifies the screen as `Home` and tells the runtime to load Home behavior: recent activity plus an optional primary CTA.

**How to use it:**\
You choose `Home / Today` from the picker when you create the screen. After that, treat the behavior as fixed. If you really need a search surface or a settings surface, add `Search` or `Profile` instead of trying to stretch Home into a different role.

**Why / recommended default:**\
Home works best when it stays focused on orientation and next steps. A common mistake is expecting it to behave like a list or a queue desk, which makes the screen feel too thin for the job.

#### Title and description defaults

**What it does:**\
Home starts with built-in display text from the chrome registry. The runtime uses that text for the screen’s hero area.

**How to use it:**\
Keep the label short and user-facing. `Home` and `Today` are both good. If you rename the screen elsewhere in the builder, use language the end user would understand immediately.

**Why / recommended default:**\
The landing screen should feel universal and calm. A common mistake is naming it after an internal team, process, or sheet, which makes the app feel like builder scaffolding instead of product UX.

### Empty state

These fields control what the user sees when Home has nothing to show yet. That includes a brand-new app, a quiet moment in the day, or a setup where no recent activity exists yet.

#### Empty state title

![Annotated builder screenshot: Empty state title](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FwJ7QsinkHUsQRCbr310S%2Feveryday-chrome__home__02-section-empty-state-title.jpg?alt=media)

**What it does:**\
This is the headline shown when Home has no recent activity and no CTA content to display.

**How to use it:**\
Use a reassuring sentence such as `Nothing waiting today`. The title should tell the user the state is normal, not broken.

**Why / recommended default:**\
Most apps will hit this state during QA or quieter periods. A calm title keeps the experience trustworthy. A common mistake is using technical wording like `No records found`, which sounds like a failed search instead of a healthy dashboard.

#### Empty state description

![Annotated builder screenshot: Empty state description](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FvMdTuvhdtcxpy0xlBT4X%2Feveryday-chrome__home__03-section-empty-state-description.jpg?alt=media)

**What it does:**\
This describes what will eventually appear on Home when the app becomes active.

**How to use it:**\
Tell users what kinds of items belong here, such as assigned work, queue items, or recent updates. Keep it plain-language and short enough to read quickly on mobile.

**Why / recommended default:**\
The description is your chance to teach the screen’s purpose. The recommended default is the registry text, because it already explains the screen without over-promising. A common mistake is writing generic filler copy that does not tell users what Home is for.

#### Empty action label

**What it does:**\
This is the label the runtime uses for the Home CTA button. By default, Home uses `Get started`.

**How to use it:**\
Know that this value comes from the registry default and is often **not editable in the panel**. In practice, you usually shape the CTA experience by choosing the right target screen, not by trying to rename the button in this config.

**Why / recommended default:**\
`Get started` is a safe default because it works for many first actions. The common mistake is assuming the button label is a fully configurable field when the more important setup choice is the destination screen.

### Home-only action

This is the one builder control that is unique to Home.

#### Primary CTA screen

![Annotated builder screenshot: Primary CTA screen](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FnVoxe4x5acwkGUNGp1ma%2Feveryday-chrome__home__04-section-primary-cta-screen.jpg?alt=media)

**What it does:**\
This tells Home which screen to open when the user taps the main CTA button.

**How to use it:**\
Point it at the action users perform most often. In the current picker, the practical choices are `Create Form` screens and `Automation Launcher` screens. Leave it blank only if you intentionally want Home to be passive and informational.

**Why / recommended default:**\
The recommended default is to set this to the most common starting action in the app. That makes Home immediately useful. A common mistake is pointing it to a secondary flow or leaving it unset, which makes the landing screen feel incomplete.

{% hint style="success" %}
**Maker tip**\
If you can only pick one strong action for Home, choose the form or launcher users open most often. Home should reduce hesitation, not present a menu of competing options.
{% endhint %}

### Related setup outside chrome config

Home only works well when you also set up navigation, publish flow, and preview correctly.

#### Edit Navigation

**What it does:**\
This determines whether Home appears in the app’s main navigation and where it sits relative to other screens.

**How to use it:**\
Put Home first in side navigation or the first primary tab in most private apps. If the app has role-based shells, make sure each audience still has an obvious landing surface.

**Why / recommended default:**\
Home is the most natural landing destination for many apps. The common mistake is adding Home but burying it behind other screens, which weakens the whole point of having a landing hub.

#### Publish

**What it does:**\
This pushes the Home configuration into the live app so end users can actually use it.

**How to use it:**\
Publish after checking the CTA target and empty-state copy in preview. If the CTA points to a newly added form or launcher, make sure that target screen is also published.

**Why / recommended default:**\
A Home CTA that works in builder but not live is usually a publish gap, not a Home bug. The common mistake is testing half-configured navigation or unpublished targets.

#### View as user

**What it does:**\
This lets you preview Home as a real end-user persona rather than only as the maker.

**How to use it:**\
Use `View as user` when testing private apps, especially if recent activity, permissions, or role-based screen visibility could change what appears.

**Why / recommended default:**\
Home is identity-sensitive because the activity feed is user-contextual. A common mistake is validating Home only as the maker and missing that another role sees no CTA, the wrong activity, or a different landing flow.

#### Navigation and publish as separate concerns

**What it does:**\
These are not the same step. Navigation decides whether the screen is reachable. Publish decides whether live users can see the latest version.

**How to use it:**\
Treat both as required steps. First place Home in navigation, then publish, then test the published result.

**Why / recommended default:**\
Many “Home is missing” or “Home did not update” reports come from skipping one of these steps. The common mistake is fixing copy in the panel and assuming users will see it immediately.

## Recommended default setup

| Setting                 | Recommended value                                |
| ----------------------- | ------------------------------------------------ |
| Empty state title       | Nothing waiting today                            |
| Empty state description | Assigned work and queue items will show up here. |
| Primary CTA screen      | Main `Create Form` or `Automation Launcher`      |
| Navigation              | First primary screen                             |

## Testing checklist

* [ ] Home appears in navigation after publish, because placement is separate from creation
* [ ] The empty-state title and description read clearly on phone and desktop, because Home is often a first impression
* [ ] The primary CTA opens the intended `Create Form` or `Automation Launcher`
* [ ] Recent activity appears after a real submit, message, or decision so the feed is proven, not assumed
* [ ] The activity feed does not expose items a different user should not see
* [ ] `View as user` confirms the right landing experience for each persona

## Troubleshooting

| Symptom                               | Likely cause                                  | What to check                                                            |
| ------------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------ |
| Home always looks empty               | No recent activity and no CTA target          | Submit a test record and confirm `Primary CTA screen` is set             |
| CTA button is missing                 | No target screen selected                     | Pick a `Create Form` or `Automation Launcher`                            |
| CTA appears but opens the wrong place | Wrong target screen configured                | Recheck which screen ID was selected in the Home config                  |
| Users do not land on Home by default  | Navigation order or Profile prefs override it | Put Home first in navigation and confirm user landing prefs in `Profile` |
| Maker sees content but users do not   | Persona / auth difference                     | Re-test with `View as user`                                              |

## Best practices

* Keep Home focused on one next step, not many competing actions.
* Pair Home with `Profile` so users can later choose a different landing screen if needed.
* Use `My Queue` or `Activity` for deeper workflow surfaces instead of overloading Home.


# Search

The **Search** screen gives end users one place to look across the app’s linked databases. Instead of opening several lists and guessing where a record lives, users can search by keyword, revisit recent searches, and open matching records directly from the results.

Use `Search` when browsing is too slow and the user’s real job is “I know roughly what I’m looking for, help me find it.” This is especially valuable in apps that span multiple sheets.

{% hint style="info" %}
**Who this guide is for**\
Makers whose users search across multiple databases and need one predictable lookup surface. This guide explains every Search option in prose, including the partially exposed scope behavior that the runtime already supports.
{% endhint %}

## What the screen is for

### Use Search when

* Users need to find a request, asset, order, client, or task by keyword
* Users repeat common lookups and benefit from recent searches
* Search results should open the matching record screen

### Do not use it when

* You only need one list’s built-in filters
* Users need a shared team inbox: use **Work Queue**
* Users need a personal “needs me” feed: use **My Queue**
* You want a scanner-only flow inside a single list: keep that flow on the list

## What users see in the live app

The runtime provides:

* A search field with the placeholder `Search across databases`
* A `Search` button
* Recent searches stored locally for the current app
* Result rows with a title and optional subtitle
* A no-query empty state and a separate no-match state

| Default                        | Value                                                               |
| ------------------------------ | ------------------------------------------------------------------- |
| Display title                  | Search                                                              |
| Empty title                    | Search your app                                                     |
| Empty description              | Find records across linked databases. Try a keyword or scan a code. |
| Empty action label             | Scan                                                                |
| Sheet scope (`searchSheetIds`) | Empty = all linked databases                                        |
| Entitlement                    | None                                                                |

## Add Search in the builder

1. Open **Screens → + New Screen**.
2. Choose a Notion database as the context anchor.
3. Under **Everyday chrome**, select **Search**.
4. Click **Done**.
5. Configure the empty-state copy.
6. Place Search in navigation where users can reach it quickly.
7. Publish before testing in the live app.

![Builder configuration for this screen](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F3MJXclbT6b6dZtOtdaqv%2Feveryday-chrome__search__00-builder-hero.jpg?alt=media)

![End-user preview of this screen](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FW8SPmpa57McQl0Iq2pOB%2Feveryday-chrome__search__09-preview-closeup.jpg?alt=media)

## Complete Builder Options Reference

Search uses the same lightweight chrome config panel as the other Everyday chrome screens. The visible controls are minimal, but the runtime behavior is important, especially for search scope and result navigation.

![Annotated builder screenshot: Chrome config](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FqSGH9whsTKZfJE4maXcL%2Feveryday-chrome__search__01-section-chrome-config.jpg?alt=media)

### Screen identity

This section explains the built-in behavior that makes Search different from a list or details screen.

#### Screen type

**What it does:**\
This identifies the screen as `Search` and tells the runtime to load the cross-database search experience with recents and result rows.

**How to use it:**\
Choose `Search` from the Everyday chrome picker when the user job is lookup, not browsing. Do not expect normal list filters, table layouts, or form configuration on this screen.

**Why / recommended default:**\
The recommendation is to use Search only when users truly need one search box across the app. A common mistake is adding Search as a substitute for a missing list screen, which creates a poor experience for users who need browsing rather than lookup.

#### Title and description defaults

**What it does:**\
Search starts with registry-provided display text and empty-state framing.

**How to use it:**\
Keep the navigation label simple, usually `Search`. The value of this screen comes from being easy to spot, not from a clever name.

**Why / recommended default:**\
Users expect the search surface to be obvious. A common mistake is renaming it to something branded or technical, which makes a core utility harder to find.

### Empty state

These fields shape the screen before the user starts typing.

#### Empty state title

![Annotated builder screenshot: Empty state title](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Frf8gQ5iyII5B3njTubzo%2Feveryday-chrome__search__02-section-empty-state-title.jpg?alt=media)

**What it does:**\
This is the heading shown when the search field is empty and no results are being shown.

**How to use it:**\
Use wording that encourages the user to start searching. `Search your app` is a strong default because it is direct and broad enough for many use cases.

**Why / recommended default:**\
The screen often opens in this state, so the title should teach the behavior quickly. A common mistake is making the title too specific to one database when Search is meant to work across many.

#### Empty state description

![Annotated builder screenshot: Empty state description](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FEWoN71Y2XB0Uui4iMgXq%2Feveryday-chrome__search__03-section-empty-state-description.jpg?alt=media)

**What it does:**\
This explains what kinds of searches the user can perform before they enter a query.

**How to use it:**\
Mention the types of data users can find and, if relevant, that they can use a keyword or scan path. Keep it short enough to be useful on mobile.

**Why / recommended default:**\
The recommended default already teaches two useful ideas: the search is cross-database, and scan-related lookup may also be part of the app. A common mistake is leaving the description generic, which misses a chance to set expectations.

#### Empty action label

**What it does:**\
The registry default for Search includes the action label `Scan`.

**How to use it:**\
Be aware that this is a runtime default, not a fully exposed builder field in the chrome config panel. In other words, you should not count on being able to tune this label from the panel today.

**Why / recommended default:**\
This matters because makers sometimes assume every visible string is directly editable. The common mistake is spending time hunting for a setting that is not exposed instead of validating the broader search flow.

### Search scope

This is the most important Search-specific concept for makers.

#### Sheet scope (`searchSheetIds`)

**What it does:**\
This optional setting narrows Search so it only queries specific databases. When it is empty, the runtime searches across all linked databases.

**How to use it:**\
The recommended setup is to leave `searchSheetIds` empty unless you have a strong, user-facing reason to restrict search. The current builder panel only shows a hint telling you that empty scope means all linked databases. The full multi-picker is not fully exposed there yet, but the runtime already honors `searchSheetIds` if it exists in the layout JSON.

**Why / recommended default:**\
The default should almost always be broad scope. Users usually interpret Search as “search the app,” not “search one carefully limited subset.” The common mistake is over-narrowing scope and then getting bug reports that Search cannot find records that do exist elsewhere.

{% hint style="warning" %}
**Scope guidance**\
Leave sheet scope empty unless there is a real boundary users understand, such as a role-specific app area or a compliance reason to exclude certain databases. Over-restricting Search makes the screen feel broken.
{% endhint %}

### Related setup outside chrome config

Search only feels complete when the maker also handles result destinations, navigation, publish flow, and user preview.

#### Result destination screens

**What it does:**\
Search results open the screen associated with the matching record. If that destination does not exist, the search experience feels incomplete even if the search query worked.

**How to use it:**\
Make sure each searchable database has an appropriate downstream screen, usually a details-style destination, so tapping a result leads somewhere useful.

**Why / recommended default:**\
Search is only as good as the record-opening path behind it. A common mistake is validating that results appear but forgetting to test where the user lands after tapping one.

#### Edit Navigation

**What it does:**\
This controls whether Search appears in the app’s main navigation and where users encounter it.

**How to use it:**\
Put Search somewhere users can reach without hunting for it. In many apps that means a primary tab or a near-top side-nav item, often close to Home.

**Why / recommended default:**\
Search is a utility screen, so discoverability matters. A common mistake is placing it too deep in navigation and then concluding users “do not use search,” when they may simply not find it.

#### Publish

**What it does:**\
Publishing makes the configured Search screen available in the live app.

**How to use it:**\
Publish after verifying the empty-state copy and after confirming the target destination screens are also live.

**Why / recommended default:**\
Search issues are easy to misdiagnose if one part of the navigation or result flow is unpublished. The common mistake is testing a new Search screen against an old published shell.

#### View as user

**What it does:**\
This lets you preview Search as a specific persona while testing visibility and result behavior.

**How to use it:**\
Use `View as user` when result visibility depends on role or private-app access. Search may be broad in concept, but the records a person can actually open can still differ by user.

**Why / recommended default:**\
Search can appear healthy for the maker while missing useful results for a real persona. The common mistake is validating only as the builder account and missing permission-based behavior.

## Recommended default setup

| Setting                 | Recommended value                                          |
| ----------------------- | ---------------------------------------------------------- |
| Empty state title       | Search your app                                            |
| Empty state description | Mention keyword search and, if relevant, scan-based lookup |
| Sheet scope             | Empty, so all linked databases are searchable              |
| Navigation              | A visible tab or side-nav item near Home                   |

## Testing checklist

* [ ] Search finds a known record from one database, proving the basic query path
* [ ] Search also finds a known record from a different database when scope is empty
* [ ] The empty state appears before typing, so the no-query experience is readable
* [ ] A nonsense query shows the `No matches` state, which proves the app is handling misses cleanly
* [ ] Tapping a result opens the correct downstream record screen
* [ ] Recent searches reappear after leaving and returning, because that local-memory behavior is part of the value
* [ ] `View as user` confirms role-specific result visibility where relevant

## Troubleshooting

| Symptom                                                    | Likely cause                                                              | What to check                                                  |
| ---------------------------------------------------------- | ------------------------------------------------------------------------- | -------------------------------------------------------------- |
| Search always returns no matches                           | Scope is too narrow or the query is weak                                  | Clear `searchSheetIds` and test with a known title value       |
| Search finds records in one database but not another       | Scope is restricted or the second sheet is not part of the searchable set | Recheck scope and linked database coverage                     |
| A result appears but opens the wrong place                 | The downstream screen mapping is not what you expected                    | Test which record screen is associated with that result        |
| Recent searches do not stick                               | Browser or device storage was cleared                                     | Remember recents are local to the device/browser               |
| Search feels broken to users even though some results work | Scope is too narrow for user expectations                                 | Reconsider whether broad app-wide search is the better default |

## Best practices

* Default to broad search unless you can explain the limit in user language.
* Keep Search near Home so users can shift from orientation to lookup quickly.
* Test the full flow from query to opened record, not just the result list.


# My Queue

`My Queue` moved out of the Everyday chrome docs because it is **not** an Everyday chrome screen in the builder. It belongs to the separate **Queue & activity** picker group and requires **Workflow**, **Messaging**, or **Approval Management**.

Use the full guide here:

[**Queue & Activity → My Queue**](https://docs.notionapps.com/customize-app/types-of-screens/queue-and-activity-screens/my-queue)

Why this moved:

* The picker group is different: `Queue & activity`, not `Everyday chrome`
* The entitlement requirement is different: automation-related features must be enabled
* The user job is different: `My Queue` is a personal “what needs me?” feed, not a general app-shell screen like `Home`, `Search`, or `Profile`

If you are deciding between screen types, use `My Queue` for personal queue items and notifications, and use Automation **Work Queue** when users must claim or complete shared work.


# Activity

`Activity` moved out of the Everyday chrome docs because it is **not** an Everyday chrome screen in the builder. It belongs to the separate **Queue & activity** picker group and requires **Workflow**, **Messaging**, or **Approval Management**.

Use the full guide here:

[**Queue & Activity → Activity**](https://docs.notionapps.com/customize-app/types-of-screens/queue-and-activity-screens/activity)

Why this moved:

* The picker group is different: `Queue & activity`, not `Everyday chrome`
* The entitlement requirement is different: automation-related features must be enabled
* The user job is different: `Activity` is a chronological “what changed?” feed, not a general app-shell screen like `Home`, `Search`, or `Profile`

If you are choosing between nearby surfaces, use `Activity` for history, `My Queue` for personal work that needs attention, and `Operator Console` or `Workflow Status` for operational monitoring.


# Profile

The **Profile** screen is the Everyday chrome preferences surface. It lets end users pick a default landing screen, control notification preferences, save those preferences, and log out of the app.

Use `Profile` when you want built-in user preferences without building a custom settings workflow on top of a Notion users database. It is especially important in private apps where users should control where they land after sign-in.

{% hint style="info" %}
**Who this guide is for**\
Makers who need a built-in settings page instead of a custom form. This guide explains every Profile-related option in prose, including the runtime preferences users control and the maker setup those preferences depend on.
{% endhint %}

## What the screen is for

### Use Profile when

* Users need to choose which primary screen opens after login
* Users should toggle in-app or email notifications for themselves
* Users need a clear `Log out` path in a private app

### Do not use it when

* You need to edit user record fields such as role or phone number: use an **Update Form**
* You want builder-only app settings such as branding or maker preferences
* You need identity-provider administration such as SSO or password reset flows

## What users see in the live app

Profile can show:

* A list of primary screens the user can choose as the default landing screen
* Notification toggles for in-app and email delivery
* A `Save preferences` button
* A `Log out` button

| Default            | Value                                                           |
| ------------------ | --------------------------------------------------------------- |
| Display title      | Profile                                                         |
| Empty title        | Your profile                                                    |
| Empty description  | Set notification preferences and choose where the app opens.    |
| Empty action label | Save                                                            |
| Entitlement        | None                                                            |
| Prefs API          | Auth-only; public apps without a signed-in user skip prefs load |

## Add Profile in the builder

1. Open **Screens → + New Screen**.
2. Choose a Notion database as the context anchor.
3. Under **Everyday chrome**, select **Profile**.
4. Click **Done**.
5. Put Profile somewhere predictable, usually last in navigation or under `More`.
6. Publish before end-user testing.

![Builder configuration for this screen](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FdgblaOJyYuFFArtPOmYK%2Feveryday-chrome__profile__00-builder-hero.jpg?alt=media)

![End-user preview of this screen](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FhsUY3u30jqgCGUMPhUtt%2Feveryday-chrome__profile__09-preview-closeup.jpg?alt=media)

## Complete Builder Options Reference

Profile uses the same lightweight chrome config panel as Home and Search, but most of its important behavior happens at runtime through end-user preferences. That means good maker setup matters even more than visible panel fields.

![Annotated builder screenshot: Chrome config](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F2skJrY9OUwiGyav2dUa9%2Feveryday-chrome__profile__01-section-chrome-config.jpg?alt=media)

### Screen identity

This section explains what makes Profile a built-in preferences surface rather than a generic data screen.

#### Screen type

**What it does:**\
This identifies the screen as `Profile` and tells the runtime to load built-in preferences and logout behavior.

**How to use it:**\
Choose `Profile` from the Everyday chrome picker when the job is user preferences. Do not use it as a substitute for a Notion-backed user profile form if you need editable user fields.

**Why / recommended default:**\
Profile is best when it stays focused on app preferences. A common mistake is expecting it to manage all user data, which leads makers to look for fields and controls that belong on a normal form screen instead.

#### Title and description defaults

**What it does:**\
The registry provides the default title and descriptive framing for the Profile screen.

**How to use it:**\
Keep the name obvious. `Profile` is usually the right choice because users already understand what settings or account areas usually live there.

**Why / recommended default:**\
Settings surfaces should be easy to find. A common mistake is renaming Profile to something abstract like `Preferences Hub` when plain language would be clearer.

### Empty state

These values supply the screen’s baseline copy and save-action framing.

#### Empty state title

![Annotated builder screenshot: Empty state title](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FeJ81wIngAklwrnd8Urc9%2Feveryday-chrome__profile__02-section-empty-state-title.jpg?alt=media)

**What it does:**\
This provides the default heading for the screen.

**How to use it:**\
Use a direct label like `Your profile`. Because Profile is not a feed-based screen, the copy should feel personal and stable rather than reactive.

**Why / recommended default:**\
The recommended default works because it immediately signals ownership. A common mistake is using workflow language here, which makes the settings page sound like another work surface instead of a personal preferences area.

#### Empty state description

![Annotated builder screenshot: Empty state description](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FQCMDOtrpD9e9rRUhmdmH%2Feveryday-chrome__profile__03-section-empty-state-description.jpg?alt=media)

**What it does:**\
This explains what the user can control on the Profile screen.

**How to use it:**\
Mention the two big jobs: choosing where the app opens and setting notification preferences. Keep it short and human.

**Why / recommended default:**\
This description helps users understand why Profile matters. A common mistake is describing only one preference area and leaving the other as a surprise.

#### Empty action label

**What it does:**\
The registry default associated with Profile is `Save`.

**How to use it:**\
Treat this as a runtime default rather than a fully exposed panel field. The visible button text users interact with is `Save preferences`, and the important maker task is making sure the preference choices are useful and testable.

**Why / recommended default:**\
The key decision is not the wording of the save affordance, but whether the user has meaningful options to save. A common mistake is assuming the button label is the primary customization lever.

### End-user preferences at runtime

These are the controls the user sees on Profile. They are not all directly configurable in the chrome config panel, but the maker still needs to understand and support them.

#### Default landing screen

**What it does:**\
This lets the user choose which screen the app should open after sign-in or after preferences load.

**How to use it:**\
Only screens marked as **primary** in navigation appear in this list. If you want a screen to be a landing choice, mark it primary in `Edit Navigation`. Good candidates are `Home`, `My Queue`, and other role-specific hubs.

**Why / recommended default:**\
This setting gives users control over how they start their day. The recommended maker setup is to expose only a small set of strong landing candidates. A common mistake is forgetting to mark screens as primary, which makes the landing list look empty or incomplete.

#### In-app notifications

**What it does:**\
This lets users toggle whether they receive notifications inside the app.

**How to use it:**\
Offer this when your app generates meaningful in-app notices and users need personal control. Test it with real notification-producing flows rather than assuming the toggle is enough.

**Why / recommended default:**\
In-app notifications are usually a good default because they are contextual and less intrusive than email. A common mistake is enabling a notification-heavy workflow but never checking whether the toggle meaningfully affects the experience.

#### Email notifications

**What it does:**\
This lets users opt in or out of email-based notifications.

**How to use it:**\
Use email when the audience expects follow-up outside the app or may not be logged in continuously. For many internal apps, leaving email off by default is a safer starting point unless the business process depends on it.

**Why / recommended default:**\
Email can be useful, but it also creates noise faster than in-app alerts. A common mistake is assuming every audience wants email the same way, which often leads to alert fatigue.

#### Save preferences

**What it does:**\
This persists the user’s selected landing screen and notification settings through the prefs API.

**How to use it:**\
Test the full save cycle: change a setting, tap `Save preferences`, reload, and confirm the new state sticks. Make sure users know their changes are not final until they save.

**Why / recommended default:**\
The runtime does not treat preference changes as automatically committed. A common mistake is toggling options in preview, navigating away, and thinking the system lost the change when it was never saved.

#### Log out

**What it does:**\
This ends the end-user session.

**How to use it:**\
Always validate logout in the same auth setup your users will use in production. That is especially important for private apps with external auth hosts or SSO-related flows.

**Why / recommended default:**\
Logout is a trust feature as much as a security feature. A common mistake is adding Profile but never testing whether logout returns the user to the correct signed-out state.

{% hint style="success" %}
**Maker tip**\
If you want users to choose a landing screen, mark those candidate screens as **primary** first. Profile only lists primary screens in the default landing picker.
{% endhint %}

### Related setup outside chrome config

Profile is only as good as the surrounding navigation and auth setup.

#### Edit Navigation

**What it does:**\
This controls whether Profile appears in the app shell and which screens count as primary landing candidates.

**How to use it:**\
Put Profile in a predictable place, usually last in a side nav or under `More` on mobile. Separately, make sure the screens you want available for landing selection are marked primary.

**Why / recommended default:**\
Navigation setup affects two things at once: discoverability of Profile itself and the contents of the landing-screen picker. A common mistake is handling only one of those.

#### Publish

**What it does:**\
Publishing makes Profile and any related navigation changes live.

**How to use it:**\
Publish after you configure both Profile and the primary screens it should reference. Then test in the live app, not just the builder preview.

**Why / recommended default:**\
Profile bugs are often really navigation or publish mismatches. A common mistake is changing a screen’s primary status in builder and forgetting that the live picker will not update until publish.

#### View as user

**What it does:**\
This lets you preview Profile as a specific end user, including role-based visibility and auth-sensitive behavior.

**How to use it:**\
Use `View as user` when checking which landing choices appear, how preferences load, and whether notification settings make sense for different personas.

**Why / recommended default:**\
Profile behavior depends on the user context. A common mistake is validating only as the maker and missing that another role has no landing options or a different visible screen set.

#### Public-app auth limitation

**What it does:**\
The prefs API is auth-only. In public apps without a signed-in end-user token, runtime preference loading is skipped.

**How to use it:**\
If you are testing Profile in a public shell, know that preference persistence may not behave the same way as in a private signed-in app. Use a real authenticated context or `View as user` when available.

**Why / recommended default:**\
This avoids false bug reports. A common mistake is treating public-preview behavior as proof that preferences are broken when the screen is intentionally auth-dependent.

## How landing screen works

1. The user opens `Profile`.
2. They choose one of the primary screens listed under `Default landing screen`.
3. They tap `Save preferences`.
4. On the next app start, the runtime uses that saved preference when the chosen screen is still available to that user.

If no preference is saved, the app falls back to its normal default navigation behavior, which is often the first primary screen.

## Recommended default setup

| Setting                   | Recommended value                                               |
| ------------------------- | --------------------------------------------------------------- |
| Empty state title         | Your profile                                                    |
| Empty state description   | Explain landing screen and notifications                        |
| Navigation                | Last item or `More`                                             |
| Primary screens available | `Home`, `My Queue`, and any role-specific hubs users truly need |

## Testing checklist

* [ ] Profile appears in a predictable navigation location after publish
* [ ] The expected primary screens appear in the landing-screen picker, proving navigation is configured correctly
* [ ] Selecting a landing screen and tapping `Save preferences` persists after reload
* [ ] In-app and email toggles save correctly rather than only changing visually
* [ ] Logout returns the user to the correct signed-out experience
* [ ] `View as user` confirms the right choices for each persona
* [ ] Public-app testing is interpreted correctly, knowing prefs are auth-only

## Troubleshooting

| Symptom                                    | Likely cause                                                      | What to check                                                        |
| ------------------------------------------ | ----------------------------------------------------------------- | -------------------------------------------------------------------- |
| Landing list is empty                      | No screens are marked primary                                     | Update `Edit Navigation` so at least one candidate screen is primary |
| User saves prefs but still lands elsewhere | The chosen screen is hidden or unavailable to that user           | Recheck screen visibility and persona-specific access                |
| Preference changes disappear               | User did not tap `Save preferences`, or prefs API did not persist | Re-test the full save cycle in an authenticated session              |
| Logout is missing or broken                | Auth flow or private-app setup is incomplete                      | Validate the app’s auth host and signed-out redirect                 |
| Profile looks inactive in a public app     | Prefs API is auth-only                                            | Test with a real signed-in end user or `View as user`                |

## Best practices

* Add Profile to every private app.
* Keep the landing-screen choices small and meaningful instead of exposing every possible primary screen.
* Mention in onboarding or Home copy that users can change their landing screen in Profile.


# Queue & Activity Screens

The **Queue & activity** picker group contains the two personal feed screens that sit between simple Everyday chrome and heavier automation desks: **My Queue** and **Activity**. Both use the lightweight chrome config panel, but unlike `Home`, `Search`, and `Profile`, they require **Workflow**, **Messaging**, or **Approval Management**.

Use this screen family when users need a built-in personal feed without the full action model of screens like `Work Queue`, `Decision`, or `Operator Console`.

{% hint style="info" %}
**Where to find them**\
In the builder, open **Screens → + New Screen**. Under **Queue & activity**, pick **My Queue** or **Activity**. Choose a Notion database as the context anchor, then click **Done**. If the group is disabled, enable **Workflow**, **Messaging**, or **Approval Management** first.
{% endhint %}

![Queue & activity picker group](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F2GlY2gHfLMrUknf3t8nF%2Fqueue-and-activity__00-picker-group.jpg?alt=media)

## Screen guide index

| Screen                                                                                                     | Primary job                                                                  | Start here when                                          |
| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -------------------------------------------------------- |
| [My Queue](https://docs.notionapps.com/customize-app/types-of-screens/queue-and-activity-screens/my-queue) | Show the current user the queue items and notifications that need them       | You want “what needs me?” without claim/complete actions |
| [Activity](https://docs.notionapps.com/customize-app/types-of-screens/queue-and-activity-screens/activity) | Show recent submits, decisions, comments, and updates in chronological order | You want “what changed?” with pagination                 |

## How Queue & activity differs from other screen families

These screens are often confused with both Everyday chrome and Automation screens, so the distinction matters:

| Family                  | What it is for                                                                      |
| ----------------------- | ----------------------------------------------------------------------------------- |
| **Everyday chrome**     | App shell surfaces like `Home`, `Search`, and `Profile`                             |
| **Queue & activity**    | Personal feeds for awareness and history                                            |
| **Automation screens**  | Action-heavy workflow surfaces such as `Work Queue`, `Decision`, and `Conversation` |
| **Operational screens** | Monitoring and runtime operations such as `Operator Console` and `Workflow Status`  |

```
My Queue = what needs me right now.
Activity = what changed recently.
Work Queue = shared ownership actions.
```

## Complete Builder Options Reference

The Queue & activity family shares the same small chrome config panel style as Everyday chrome, but the important setup extends beyond the visible fields. Entitlement, navigation, publish flow, and testing with the right user persona all matter.

### Shared chrome config fields

These concepts apply across both `My Queue` and `Activity`.

#### Screen type

**What it does:**\
The screen type determines whether the runtime loads the `My Queue` personal inbox behavior or the `Activity` timeline behavior.

**How to use it:**\
Choose the screen based on the user’s job. Pick `My Queue` for personal work awareness and pick `Activity` for chronological history. Do not choose between them based only on whichever label sounds nicer in navigation.

**Why / recommended default:**\
The screen type controls the runtime feed, so it is the most important setup decision. A common mistake is using `My Queue` when the user really needs a history feed, or using `Activity` when the user expects “what needs me now?”

#### Title and description defaults

**What it does:**\
Each screen starts with registry defaults that define its basic framing and empty-state language.

**How to use it:**\
Keep labels literal and user-facing. `My Queue` and `Activity` are usually better than branded or internal names because they teach the job directly.

**Why / recommended default:**\
These are utility surfaces. Clarity beats creativity. A common mistake is renaming the screen in a way that hides whether it is personal, historical, or action-oriented.

#### Empty state title

**What it does:**\
This is the headline users see when the feed has nothing to show.

**How to use it:**\
Use calm, plain-language copy such as `Queue is clear` or `No activity yet`. The title should help users understand that an empty feed is normal, not a failure.

**Why / recommended default:**\
Feed screens are frequently empty during setup, quiet periods, or persona testing. A common mistake is writing copy that sounds like an error instead of an expected empty state.

#### Empty state description

**What it does:**\
This tells users what kinds of items will appear in the feed when activity exists.

**How to use it:**\
Mention the kinds of content the feed is for, such as work, notifications, submits, or decisions. Keep it short enough for mobile and precise enough to reduce confusion.

**Why / recommended default:**\
This description is often the first explanation a user gets. A common mistake is describing too much product behavior in one paragraph, which makes the screen harder to scan.

#### Empty action label

**What it does:**\
Both Queue & activity screens use registry defaults for the empty-state action label, usually `Refresh`.

**How to use it:**\
Know that this label exists at runtime even if it is not exposed as an editable field in the panel. Focus first on whether the feed itself is correct, because changing the label is usually not the main lever here.

**Why / recommended default:**\
Makers often hunt for a missing text-control setting when the real issue is that no feed items exist yet. The common mistake is treating the empty-state button label as the most important part of the screen.

### Shared runtime behavior makers should understand

These are not direct panel controls, but they are part of the real setup and QA story.

#### Automation entitlement

**What it does:**\
Entitlement controls whether `My Queue` and `Activity` are available in the picker at all.

**How to use it:**\
Enable `Workflow`, `Messaging`, or `Approval Management` before you expect these cards to appear or become selectable.

**Why / recommended default:**\
If the picker group is missing or disabled, entitlement is the first thing to verify. A common mistake is assuming the screen type is unavailable because of a UI bug when the app simply lacks the required capability.

#### Edit Navigation

**What it does:**\
This determines whether the screen is reachable in the app and where it sits relative to `Home`, `Profile`, and heavier automation screens.

**How to use it:**\
Place `My Queue` near `Home` when users act from it daily. Place `Activity` slightly deeper, often under `More` or near operations surfaces, when it is more of a review tool than a starting point.

**Why / recommended default:**\
Navigation position shapes how users interpret the screen. A common mistake is putting `Activity` first when most users really need a personal inbox, or hiding `My Queue` so deeply that the “my work” model never becomes habitual.

#### Publish

**What it does:**\
Publishing makes the configured screen available in the live app.

**How to use it:**\
Publish after the empty-state copy, navigation, and upstream workflows are ready enough to generate test items.

**Why / recommended default:**\
Feed screens are hard to validate against stale published data. A common mistake is testing a new queue/history surface before the latest navigation or automation setup has gone live.

#### View as user

**What it does:**\
This lets you preview the feed as a specific persona.

**How to use it:**\
Use `View as user` whenever the items a person should see differ by role, assignment, or app access. This is especially important for `My Queue`, but also useful for `Activity`.

**Why / recommended default:**\
Queue and history screens are identity-sensitive. A common mistake is validating only as the maker and assuming every user will see the same feed.

## Choosing the right screen

| User job                                      | Best screen                                 |
| --------------------------------------------- | ------------------------------------------- |
| See only work or notifications that need me   | My Queue                                    |
| Review recent submits, decisions, and updates | Activity                                    |
| Claim or complete shared work                 | Automation **Work Queue**                   |
| Approve, reject, or request changes           | Automation **Decision**                     |
| Monitor run health or operational issues      | **Operator Console** or **Workflow Status** |
| Start the app with a main CTA                 | Everyday chrome **Home**                    |

{% hint style="success" %}
**Maker tip**\
Add `My Queue` for the people who need a personal work feed. Add `Activity` for the people who need history. If users must actively claim, complete, or decide, add the relevant Automation screens instead of trying to make these feeds do action-heavy work.
{% endhint %}

## Shared setup steps

1. Confirm `Workflow`, `Messaging`, or `Approval Management` is enabled.
2. Open **Screens → + New Screen**.
3. Pick a Notion database as the context anchor.
4. Under **Queue & activity**, select `My Queue` or `Activity`.
5. Configure the empty-state fields.
6. Place the screen in navigation.
7. Publish the app.
8. Generate realistic test items so you can validate a non-empty feed.
9. Re-test with `View as user` for each important persona.

## Safe defaults

* Keep empty copy short and reassuring.
* Put `My Queue` where daily users will find it quickly.
* Put `Activity` where supervisors or power users can review history without turning it into the home screen for everyone.
* Do not substitute `My Queue` for `Work Queue` when claim/complete actions matter.

## Related docs

* [My Queue](https://docs.notionapps.com/customize-app/types-of-screens/queue-and-activity-screens/my-queue)
* [Activity](https://docs.notionapps.com/customize-app/types-of-screens/queue-and-activity-screens/activity)
* [Everyday Chrome Screens](https://docs.notionapps.com/customize-app/types-of-screens/everyday-chrome-screens)
* [Work Queue Screen](https://docs.notionapps.com/customize-app/types-of-screens/native-automation-and-operational-screen-guides/work-queue-screen)
* [Native Automation And Operational Screen Guides](https://docs.notionapps.com/customize-app/types-of-screens/native-automation-and-operational-screen-guides)


# My Queue

**My Queue** is the Queue & activity personal inbox. It is for work and notifications that need the **current user**, not for a shared team desk and not for a full historical audit feed.

Use `My Queue` when the user’s mental model is “show me what needs me right now.” If the job is instead “show me everything that changed,” use `Activity`. If the job is “let me claim and complete shared work,” use `Work Queue`.

{% hint style="info" %}
**Who this guide is for**\
Makers who want each user to see their own queue-style items and notifications without moving them into a full automation desk. This guide explains every My Queue option in prose, including entitlement, runtime feed behavior, and how to preview the screen correctly.
{% endhint %}

## What the screen is for

### Use My Queue when

* Users need a personal inbox for work and notifications
* You want a lightweight “needs me” surface
* The main job is awareness, not complex work-claim actions

### Do not use it when

* Users must claim, release, or complete shared work: use **Work Queue**
* Users must approve or reject: use **Decision**
* Users need a full history feed: use **Activity**
* Users need a database browser: use a **List** screen

{% hint style="warning" %}
**My Queue vs Work Queue**\
`My Queue` is a personal feed. `Work Queue` is a shared operational desk. If your workflow depends on ownership actions like claim or complete, do not try to force those jobs into My Queue.
{% endhint %}

## What users see in the live app

When content exists, My Queue shows personal activity items for the current user. Under the hood, it loads activity kinds `queue` and `notification`. Each row can include a title and optional body text.

When there is nothing waiting, the user sees the empty state.

| Default            | Value                                                            |
| ------------------ | ---------------------------------------------------------------- |
| Display title      | My Queue                                                         |
| Empty title        | Queue is clear                                                   |
| Empty description  | New work and notifications appear here when something needs you. |
| Empty action label | Refresh                                                          |
| Entitlement        | Workflow, Messaging, or Approval Management                      |
| Picker group       | Queue & activity                                                 |

## Add My Queue in the builder

1. Confirm the app has `Workflow`, `Messaging`, or `Approval Management`.
2. Open **Screens → + New Screen**.
3. Choose a Notion database as the context anchor.
4. Under **Queue & activity**, select **My Queue**.
5. Click **Done**.
6. Configure the empty-state fields.
7. Place My Queue where users look for “my work.”
8. Publish, then test with real queue or notification data.

![Builder configuration for this screen](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FXbCGRio4lWm4IIs0W1vV%2Fqueue-and-activity__my-queue__00-builder-hero.jpg?alt=media)

![End-user preview of this screen](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FXXzJH6G8xE6g4BOw1yUy%2Fqueue-and-activity__my-queue__09-preview-closeup.jpg?alt=media)

## Complete Builder Options Reference

My Queue uses the same lightweight chrome config panel as the other chrome-based screens. That means the visible builder options are small, but the surrounding setup choices are still important. The key thing to remember is that My Queue is **not** a claim/complete surface.

![Annotated builder screenshot: Chrome config](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FscvklVDFSHdIZkbFbQpU%2Fqueue-and-activity__my-queue__01-section-chrome-config.jpg?alt=media)

### Screen identity

This section covers the decisions that define My Queue as a personal inbox.

#### Screen type

**What it does:**\
This identifies the screen as `My Queue` and tells the runtime to load a personal feed filtered for the current user.

**How to use it:**\
Choose `My Queue` when the user needs a personal awareness feed. If your flow requires operational actions such as claiming shared work or moving items through completion, stop here and add `Work Queue` instead.

**Why / recommended default:**\
The most common mistake is choosing My Queue because the name sounds close enough to work management. In practice, the recommendation is simple: use My Queue for awareness, not ownership actions.

#### Title and description defaults

**What it does:**\
The registry provides the default title and framing for the screen.

**How to use it:**\
Keep the navigation label literal. `My Queue` is stronger than an internal team term because it immediately tells the user this is their personal feed.

**Why / recommended default:**\
This screen succeeds when its scope is obvious. A common mistake is naming it after a department or project, which makes users wonder whether the feed is personal, shared, or role-specific.

### Empty state

My Queue will often be empty during setup or on a quiet day. Good empty-state copy is part of the product, not filler text.

#### Empty state title

![Annotated builder screenshot: Empty state title](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FwKWCK3CCe98rIldlULc5%2Fqueue-and-activity__my-queue__02-section-empty-state-title.jpg?alt=media)

**What it does:**\
This is the headline shown when the current user has no queue or notification items to show.

**How to use it:**\
Use calm wording such as `Queue is clear`. The title should reassure the user that there is nothing waiting, not imply the app failed to load.

**Why / recommended default:**\
The recommended default works well because it is short, positive, and easy to scan. A common mistake is writing something alarming like `No queue items returned`, which sounds like a technical failure.

#### Empty state description

![Annotated builder screenshot: Empty state description](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FeDCdnjqpHhCvfNNyalaa%2Fqueue-and-activity__my-queue__03-section-empty-state-description.jpg?alt=media)

**What it does:**\
This tells users what kinds of items will eventually appear on My Queue.

**How to use it:**\
Mention both work and notifications if both matter in your app. That helps the user understand why this screen exists before they ever receive the first item.

**Why / recommended default:**\
Without this explanation, users may think My Queue is only for one type of item and ignore it when the first notification appears. A common mistake is describing the feed too narrowly.

#### Empty action label

**What it does:**\
The runtime default for My Queue includes the action label `Refresh`.

**How to use it:**\
Know that this is a registry default and usually not a fully editable panel field. Spend your effort validating that the upstream workflows are producing the right personal items rather than trying to tune button text.

**Why / recommended default:**\
When makers see an empty feed, they often focus on surface copy instead of upstream data generation. The common mistake is polishing the empty state before verifying that queue and notification activity actually exists.

### Runtime feed behavior

These are not separate toggles in the panel, but they are part of the real behavior makers must understand.

#### Activity kinds: `queue` and `notification`

**What it does:**\
My Queue loads only activity items of kinds `queue` and `notification` for the current user.

**How to use it:**\
Configure and test your workflows, messages, or approvals so they emit the kinds of items My Queue is meant to display. Then validate with realistic scenarios, not just a blank screen.

**Why / recommended default:**\
This is why My Queue feels personal and actionable without becoming a full work desk. A common mistake is expecting general history items to appear here, which belongs more to `Activity`.

#### Personal scope

**What it does:**\
The feed is scoped to the current user rather than the whole team.

**How to use it:**\
Design the screen assuming one person sees their own feed. If several people need to work from the same inbox, use a shared Automation screen instead.

**Why / recommended default:**\
This personal scope is the core value of My Queue. A common mistake is assuming it can substitute for a team queue simply because the items look similar.

#### View as user

**What it does:**\
This lets you preview another user’s My Queue in builder testing.

**How to use it:**\
Use `View as user` any time you are testing multi-role apps, assignment rules, or client/staff separation. It is one of the fastest ways to confirm personal visibility.

**Why / recommended default:**\
Testing as the maker is not enough for a user-specific inbox. A common mistake is thinking the screen is empty for everyone when it is only empty for the currently previewed persona.

### Entitlement and access

These controls sit outside the small chrome config panel, but they directly affect whether My Queue is even usable.

#### Automation entitlement

**What it does:**\
This determines whether the Queue & activity picker group and the My Queue card are available.

**How to use it:**\
Enable `Workflow`, `Messaging`, or `Approval Management` before you add the screen. If the card is disabled or missing, verify entitlement first.

**Why / recommended default:**\
Entitlement is the first troubleshooting step for picker issues. The common mistake is assuming the screen type disappeared because of a builder bug.

#### Screen visibility

**What it does:**\
Like other screens, My Queue can still participate in app visibility rules.

**How to use it:**\
If only certain roles need a personal queue, combine My Queue with role-appropriate navigation or visibility choices. Keep the mental model simple: only show it to users who benefit from it.

**Why / recommended default:**\
Not every audience needs a queue feed. A common mistake is exposing My Queue to passive viewer roles who do not receive meaningful queue items.

### Related setup outside chrome config

These builder actions are essential even though they are not fields in the chrome panel.

#### Edit Navigation

**What it does:**\
This decides where My Queue appears in the app shell.

**How to use it:**\
Put My Queue near `Home` or other day-to-day work surfaces. If users should start their day there, make it easy to reach and consider exposing it as a primary screen.

**Why / recommended default:**\
Navigation position changes how users interpret the screen. A common mistake is treating My Queue like a secondary report when it should be a daily habit surface.

#### Publish

**What it does:**\
Publishing makes the configured screen available in the live app.

**How to use it:**\
Publish only after upstream flows can generate at least one realistic queue or notification item, so QA can validate both empty and non-empty states.

**Why / recommended default:**\
My Queue can look “done” in builder while still being impossible to validate live. A common mistake is shipping the shell before the data-producing workflow is ready.

#### Landing-screen eligibility through Profile

**What it does:**\
If you mark My Queue as a primary screen, users can potentially choose it as their landing screen in `Profile`.

**How to use it:**\
Offer this when users truly benefit from opening straight into their personal work feed. This is common for field teams, support staff, or approvers who live in assigned work.

**Why / recommended default:**\
This can make the app much more efficient for power users. A common mistake is exposing My Queue as a landing option before it reliably contains meaningful items.

## Recommended default setup

| Setting                 | Recommended value                                                                                      |
| ----------------------- | ------------------------------------------------------------------------------------------------------ |
| Empty state title       | Queue is clear                                                                                         |
| Empty state description | New work and notifications appear here when something needs you.                                       |
| Navigation              | A visible `my work` destination near Home                                                              |
| Pair with               | `Activity` for history and `Work Queue` or `Decision` when action-heavy workflow steps are also needed |
| Landing option          | Mark primary only if users truly benefit from starting here                                            |

## Testing checklist

* [ ] The `Queue & activity` group appears only when entitlement is enabled, because picker availability is part of the feature
* [ ] A user with no items sees the intended empty state
* [ ] A real workflow or notification creates visible items for the intended user
* [ ] A second user does **not** see the first user’s personal items
* [ ] `View as user` confirms persona-specific visibility
* [ ] Navigation placement makes sense on desktop and mobile
* [ ] If My Queue is a landing option, it appears correctly in `Profile`

## Troubleshooting

| Symptom                                          | Likely cause                                        | What to check                                                                              |
| ------------------------------------------------ | --------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| My Queue is empty for everyone                   | No queue/notification items are being generated     | Trigger a real workflow or notification and retest                                         |
| My Queue is empty for one person but not another | Personal assignment or persona context is different | Re-test with `View as user` and confirm the item targets that user                         |
| The picker card is disabled or missing           | Entitlement is off                                  | Enable `Workflow`, `Messaging`, or `Approval Management`                                   |
| Users expect claim/complete buttons              | Wrong screen type                                   | Add `Work Queue` instead of overloading My Queue                                           |
| Users confuse it with a full notification center | Surface mismatch                                    | Remember My Queue is a personal feed, not the full Automation notification product surface |

## Best practices

* Use My Queue for personal awareness and action triage, not shared team ownership.
* Keep the empty state reassuring so “nothing waiting” feels healthy.
* Pair My Queue with `Profile` when users may want it as their landing screen.


# Activity

The **Activity** screen is the Queue & activity timeline feed. It is built for users who need to answer *what changed?* across submits, decisions, comments, and updates without opening every underlying screen one by one.

Use `Activity` when history matters more than immediate action. It is especially useful for supervisors, operators, approvers, and makers who need to review flow over time rather than just the items assigned to them.

{% hint style="info" %}
**Who this guide is for**\
Makers who want an audit-style or timeline-style feed for people reviewing app activity. This guide explains every Activity option in prose, including entitlement, pagination, and how to keep it distinct from My Queue and Operator Console.
{% endhint %}

## What the screen is for

### Use Activity when

* Users need a chronological history of what happened
* Users review submits, decisions, and updates across workflows
* The feed should support `Load more` pagination for older items

### Do not use it when

* Users need a personal “needs me” inbox: use **My Queue**
* Users need a shared claim desk: use **Work Queue**
* Users need a workflow health dashboard: use **Operator Console** or **Workflow Status**
* Users need basic record browsing: use **List** or **Details**

{% hint style="warning" %}
**Activity vs My Queue vs Operator Console**\
`Activity` answers “what changed?” `My Queue` answers “what needs me?” `Operator Console` answers “is the automation system healthy?” These are different jobs, even if they all feel operational.
{% endhint %}

## What users see in the live app

When activity exists, the runtime can show:

* An item kind such as submit, decision, or update
* A title
* Optional body text
* A `Load more` button when more history exists

When there is no feed content, users see the empty state. The default empty-state action is `Refresh`.

| Default            | Value                                                      |
| ------------------ | ---------------------------------------------------------- |
| Display title      | Activity                                                   |
| Empty title        | No activity yet                                            |
| Empty description  | Submits, decisions, and updates will show up in this feed. |
| Empty action label | Refresh                                                    |
| Entitlement        | Workflow, Messaging, or Approval Management                |
| Picker group       | Queue & activity                                           |

## Add Activity in the builder

1. Confirm the app has `Workflow`, `Messaging`, or `Approval Management`.
2. Open **Screens → + New Screen**.
3. Choose a Notion database as the context anchor.
4. Under **Queue & activity**, select **Activity**.
5. Click **Done**.
6. Configure the empty-state fields.
7. Place Activity where its audience will expect a history surface.
8. Publish, then test against real events.

![Builder configuration for this screen](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F2YfRQKkrzIgMcw6G6L3A%2Fqueue-and-activity__activity__00-builder-hero.jpg?alt=media)

![End-user preview of this screen](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FzgeHtfMvPVKPn6VGR5rh%2Fqueue-and-activity__activity__09-preview-closeup.jpg?alt=media)

## Complete Builder Options Reference

Activity uses the same small chrome config panel as My Queue and Everyday chrome. The panel itself is simple, but the feed behavior is not. The most important ideas here are that Activity is read-only history, it is paginated, and it requires automation-related entitlement.

![Annotated builder screenshot: Chrome config](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fe2KKh3G7OxQroPR8DyaS%2Fqueue-and-activity__activity__01-section-chrome-config.jpg?alt=media)

### Screen identity

These settings define Activity as a timeline surface rather than a queue or desk.

#### Screen type

**What it does:**\
This identifies the screen as `Activity` and tells the runtime to load the chronological feed behavior.

**How to use it:**\
Choose `Activity` when the user’s job is review and awareness over time. If they instead need personal triage, add `My Queue`. If they need system-health status, add `Operator Console` or `Workflow Status`.

**Why / recommended default:**\
The most common mistake is using Activity as a catch-all operational screen. The recommendation is to reserve it for timeline-style review, because that is what the runtime is optimized for.

#### Title and description defaults

**What it does:**\
The registry provides default framing for the Activity screen.

**How to use it:**\
Keep the navigation label simple, usually `Activity`. The screen is a utility surface, so clarity matters more than branding.

**Why / recommended default:**\
Users should recognize immediately that this is where they review recent changes. A common mistake is renaming it to something vague like `Updates` in one part of the app and `History` somewhere else, which weakens consistency.

### Empty state

Activity is often empty in a new app or during quiet periods, so the empty-state wording matters.

#### Empty state title

![Annotated builder screenshot: Empty state title](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FOuM1rzxQWdClfXjQDxUj%2Fqueue-and-activity__activity__02-section-empty-state-title.jpg?alt=media)

**What it does:**\
This is the headline shown when the Activity feed has no items.

**How to use it:**\
Use plain wording such as `No activity yet`. The title should make the absence of events feel normal, especially in a fresh app.

**Why / recommended default:**\
The recommended default is clear and low-friction. A common mistake is writing wording that sounds like an error response, which makes users doubt the app.

#### Empty state description

![Annotated builder screenshot: Empty state description](https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F3wkTTyaRNH8dNpIir5BA%2Fqueue-and-activity__activity__03-section-empty-state-description.jpg?alt=media)

**What it does:**\
This tells the user what types of events will show up here once the app is active.

**How to use it:**\
Mention the event categories users care about, such as submits, decisions, and updates. Keep the copy short enough for mobile but concrete enough to teach the screen’s purpose.

**Why / recommended default:**\
This description is especially valuable for first-time users who do not yet know how Activity differs from My Queue. A common mistake is assuming the name alone is enough explanation.

#### Empty action label

**What it does:**\
The runtime default for the empty-state action is `Refresh`.

**How to use it:**\
Understand that this is usually a registry-driven default, not a deeply configurable panel field. The more important task is making sure the activity pipeline exists so refresh can actually produce useful results.

**Why / recommended default:**\
Makers sometimes fixate on label copy when the real issue is a lack of feed data. The common mistake is polishing the empty screen before verifying that app events are being generated.

### Runtime feed behavior

These are not distinct toggles in the builder panel, but they are critical to understanding what Activity really does.

#### Paginated activity feed

**What it does:**\
Activity loads a page of recent events and exposes `Load more` when there is additional history.

**How to use it:**\
Test both the first page and the paginated path. If your app has meaningful history, create enough events to prove the `Load more` flow works and remains understandable.

**Why / recommended default:**\
Pagination is part of the user experience, not just an implementation detail. A common mistake is validating only the newest events and missing that older history feels inaccessible or untested.

#### Mixed event kinds

**What it does:**\
Unlike My Queue, Activity is not narrowed to just `queue` and `notification`. It is designed to show broader change history such as submits, decisions, comments, and updates.

**How to use it:**\
Use Activity for audiences who benefit from context and sequence, not just immediate personal action items. Explain that difference in your training or onboarding when both My Queue and Activity exist in the same app.

**Why / recommended default:**\
This broader mix is why Activity can feel noisy for casual users but powerful for supervisors. A common mistake is surfacing Activity to every persona and then assuming the screen itself is too complex.

#### View as user

**What it does:**\
This lets you preview the activity feed as another persona.

**How to use it:**\
Use `View as user` when activity visibility differs by role or app access. It is especially helpful when supervisors, clients, and staff should not all see the same history.

**Why / recommended default:**\
History surfaces can accidentally look correct in maker preview while being overly broad or overly narrow for real users. A common mistake is shipping without persona-based QA.

### Entitlement and access

These controls live outside the small chrome config panel but directly affect whether Activity can be added and who should see it.

#### Automation entitlement

**What it does:**\
Entitlement determines whether the Queue & activity picker group, including Activity, is available.

**How to use it:**\
Enable `Workflow`, `Messaging`, or `Approval Management` before you add the screen. If Activity is unavailable in the picker, verify entitlement first.

**Why / recommended default:**\
This is the first check for missing-card issues. The common mistake is assuming the builder hid the screen by accident.

#### Screen visibility

**What it does:**\
Activity can still participate in app visibility choices just like other screens.

**How to use it:**\
Prefer exposing Activity to people who benefit from history: supervisors, operators, or advanced users. In many apps, it does not need to be a top-level surface for every end user.

**Why / recommended default:**\
Not every audience wants a mixed event timeline. A common mistake is putting Activity in front of non-technical users who really only need Home and My Queue.

### Related setup outside chrome config

These builder actions make the difference between a theoretically added Activity screen and a useful one.

#### Edit Navigation

**What it does:**\
This controls where Activity appears in the app shell.

**How to use it:**\
Put Activity near other review or operations surfaces. On mobile, it often works well under `More` rather than as the first tab, unless history is central to the user’s daily job.

**Why / recommended default:**\
Navigation placement shapes whether users interpret Activity as a primary working screen or a secondary review screen. A common mistake is putting it too prominently for audiences who do not need it.

#### Publish

**What it does:**\
Publishing makes the latest Activity configuration live.

**How to use it:**\
Publish after you have both the screen and the event-producing flows ready enough to generate test history. Then test in the live app, not just in builder preview.

**Why / recommended default:**\
Activity is difficult to evaluate against stale data or stale navigation. The common mistake is concluding the screen is empty because of a UI issue when the real problem is unpublished setup or no real events.

#### Pairing with My Queue and Operator Console

**What it does:**\
This is a design choice rather than a single field, but it matters for how the app explains itself. My Queue, Activity, and Operator Console cover different questions.

**How to use it:**\
Pair Activity with `My Queue` when users need both “what needs me?” and “what changed?” Pair it with `Operator Console` only for audiences who also need system-health context.

**Why / recommended default:**\
This keeps each screen focused. A common mistake is expecting Activity to carry both personal task triage and operations monitoring, which makes the experience noisy and ambiguous.

## Recommended default setup

| Setting                 | Recommended value                                          |
| ----------------------- | ---------------------------------------------------------- |
| Empty state title       | No activity yet                                            |
| Empty state description | Submits, decisions, and updates will show up in this feed. |
| Navigation              | Near review or ops surfaces, often under `More` on mobile  |
| Pair with               | `My Queue` for action-oriented users                       |

## Testing checklist

* [ ] The `Queue & activity` group appears only when entitlement is enabled
* [ ] A quiet app shows the intended empty state, which proves the blank history case is understandable
* [ ] A real submit creates a visible event after refresh
* [ ] Decisions, comments, or updates show readable titles and body text where expected
* [ ] `Load more` works when the app has enough history to paginate
* [ ] `View as user` confirms the right persona-specific visibility
* [ ] Mobile layout handles longer titles without making the feed hard to scan

## Troubleshooting

| Symptom                                 | Likely cause                                     | What to check                                                              |
| --------------------------------------- | ------------------------------------------------ | -------------------------------------------------------------------------- |
| Activity is always empty                | No events exist yet, or live setup is incomplete | Create a real submit or decision and retest after publish                  |
| Older items are missing                 | Pagination has not been exercised                | Use `Load more` and confirm more history exists                            |
| Users say Activity is noisy             | Wrong audience or wrong screen choice            | Consider limiting visibility or steering casual users to Home and My Queue |
| Users expect “needs me” items first     | Wrong screen expectation                         | Add or highlight `My Queue` for personal triage                            |
| Activity card is disabled in the picker | Entitlement is off                               | Enable `Workflow`, `Messaging`, or `Approval Management`                   |

## Best practices

* Treat Activity as a history surface, not a universal operations dashboard.
* Pair it with My Queue when users need both awareness and chronology.
* Limit visibility to roles that benefit from a mixed event feed.


# Customize a screen

To customize a screen on NotionApps, follow the steps below:

1. Open the app builder and select the screen that you want to customize from the app preview (in the center of the app builder).
2. The configuration section for the screen is visible on the right side of the app builder.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FaOXDtA6kUKH2bREUuCer%2Fbuilder-config-and-preview.png?alt=media&#x26;token=654b2c98-f9a7-465d-a306-20aba122c044" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
A screen can have customizations based on the type of screen. For example, list screens like View Items or Update Items have customizations for filtering, sorting, or in-app filtering items. Screens like View Single Item allow for customizations by adding different components to represent the item/page, such as text, images, or buttons.
{% endhint %}

3. In the configuration section, you can configure various options such as the layout of the screen, the visibility of fields, the display of images, and more.

{% hint style="success" %}
As you make changes, they will reflect in the mobile preview in the center of the app builder. These changes are *automatically saved* but only show up on your link after publishing the app.
{% endhint %}

Over the next pages, we will talk about specific customizations for these screens.


# View Types (List, Grid, Calendar, Board)

This page describes how to change view type amongst List, Grid, and Calendar views.

List (View Items) screens can present the same records in different layouts. Switch **View Type**, then map the fields each layout needs.

## Choose a layout

| View         | Best for                          | Required mapping focus                               | Dedicated guide                                                                                          |
| ------------ | --------------------------------- | ---------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| **List**     | Dense rows, scanning many records | Title + key properties                               | [List (View Items)](https://docs.notionapps.com/screens-and-components/types-of-screens/list-view-items) |
| **Grid**     | Image cards / catalogs            | Image + title; column size & image style             | [Grid view](https://docs.notionapps.com/screens-and-components/grid-view)                                |
| **Calendar** | Date-driven schedules             | Date field; default mode Day/Week/Month/Agenda       | [Calendar view](https://docs.notionapps.com/screens-and-components/calendar-view)                        |
| **Board**    | Status columns (Kanban)           | Group By status/select; writable group field for DnD | [Board List View](https://docs.notionapps.com/how-to-guides/board-list-view)                             |

## How to switch

1. Select the List screen in the builder.
2. Open the view / layout control.
3. Choose List, Grid, Calendar, or Board.
4. Map required fields.
5. Publish and verify on mobile width.

## Shared list power features

Available on List screens (support varies by view type):

* Filtering, sorting, grouping
* Expanded list presentation
* Multi-row update
* In-app filters
* Search and barcode/QR scan

→ [Filtering, Sorting, or Grouping Items](https://docs.notionapps.com/screens-and-components/customize-a-screen/filtering-sorting-items)

Calendar disables some grouping/sorting UI sections — see the Calendar guide.

## Related

* [Board layouts and Details polish](https://docs.notionapps.com/how-to-guides/board-layouts-and-details-polish)
* [Polish your published app look and layout](https://docs.notionapps.com/how-to-guides/polish-your-published-app-look-and-layout)


# Filtering, Sorting, or Grouping Items

Filtering, sorting, and grouping are powerful tools that help users find and organize data more efficiently.

Filtering allows users to narrow down a list of items based on specific criteria.

Sorting helps users arrange items in a specific order.

Grouping helps users visually segregate the items based on a particular property.

{% hint style="info" %}
Grouping is only available on List Screens (View Items/Update Items).
{% endhint %}

{% hint style="info" %}
This is different from Notion databases filtering, sorting, or grouping because you can create multiple apps with different filters, sorts, or groups and provide it to different groups of users.
{% endhint %}

To filter or sort items, open the app builder. Go to the desired screen through the app preview. Click on "+ Add Filtering", "+ Add Sorting", "+ Add Grouping" to add filtering or sorting.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FaTozlumRDmcm0bSeEmd8%2Ffilter-sort-1.png?alt=media&#x26;token=a5d7bab2-ad81-41f4-b725-12425cf35334" alt=""><figcaption></figcaption></figure>

### Filtering

To add filtering, click on "+ Add Filtering". This will add a default filter condition that you can customize further. You can select a database column, a filter operator, and a value to filter by. You can also apply "and" or "or" logic to the conditions to determine how these are conditions are joined together.

{% hint style="info" %}
You can create complex conditions with "and"/"or" operators. For example, *Task Status* is equal to *Done* and *Due Date* is *Today*.
{% endhint %}

### Sorting

To add sorting, click on "+ Add Sorting". This will add a default sort that you can customize further with the fields/columns to sort by. You can select the order, either ascending *(A → Z)* or descending *(Z → A)*, for each field.

{% hint style="info" %}
Keep in mind that during sorting, the first condition would be first used to sort and the second condition would be further used to sort grouped items inside the first sort result.
{% endhint %}

That's it! Now can you filter or sort your items to view them in a more efficient way.

{% hint style="info" %}
It's important to note that when filtering items, the items are sent filtered from our servers, and the users only have access to the data visible on the app.
{% endhint %}

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FlejMCM0uBi5B8h24GWGt%2Ffilter-sort-2.png?alt=media&#x26;token=dab7e50c-a411-43a7-8b5d-d2ac9af8d06c" alt=""><figcaption></figcaption></figure>

### Grouping

To add grouping, click on "+ Add Grouping". This will add a default group that you can customize further with the column/property to sort by. You can select the sort order, either ascending *(A → Z)* or descending *(Z → A)* for the grouping property.

{% hint style="info" %}
Currently only one property can be used to group items.
{% endhint %}

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FCAqM0qNao80W05FmMIpi%2FSCR-20250825-luhl.png?alt=media&#x26;token=1f238662-cdb7-498e-a8cd-7b4961ba3b5a" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Sorting and grouping work well together. The grouping takes priority and inside the groups, the items are sorted based on your sorting order.
{% endhint %}


# In-app Filtering

In-app filtering allows your app users to filter data within your app based on specific criteria. You can add different filter columns to any list.

Filter columns are database columns on whose values your users can filter data in the app. NotionApps detects the unique values when a column is selected and uses them as filters. For example, when the “Order Status” column is selected as a filter column, “Pending” and “Delivered” will be shown as filters if they are the unique values in the column.

{% hint style="info" %}
This feature is available on

* List Screens (View Items/Update Items)
* List component
* Page Selector component
  {% endhint %}

Here's a step-by-step guide.

1. Go to the list screen, i.e. List (View Items), List (Update Items) where you want to enable in-app filtering.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FXT3swTVKNWJq5qg2YdIK%2Fin-app-filter-1.png?alt=media&#x26;token=30b3cd26-7521-49ea-b6aa-9d7f547a5fca" alt=""><figcaption></figcaption></figure>

2. Click on +Add Filter Column and select the column based on whose values you'd want to filter out the items.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FUNcYSWvqEK2l5zyeZ75a%2Fin-app-filter-2.png?alt=media&#x26;token=026abaad-5eee-460c-8540-d263f99461cc" alt=""><figcaption></figcaption></figure>

That's it! Now you can click on the filter icon on your screen to filter out items/pages matching the column values.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FKDmcuRe0hWjutKLR2CaS%2Fin-app-filter-3.png?alt=media&#x26;token=f5d47e57-410c-40a7-ac9a-261d8cec5746" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FAZSuPSlpQLXzR7bU1H5X%2Fin-app-filter-4.png?alt=media&#x26;token=d01dca29-1f2a-411f-b5b5-cf3d7e1671c7" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FT5zw2FslrHqVYXdjCEEg%2Fin-app-filter-5.png?alt=media&#x26;token=0726cc9a-35b5-4356-97f2-9a8b546b7e22" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
You can also add multiple filter columns if you'd want to combine the result of different filters.
{% endhint %}

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FSwkcqCp47Wz04tfK9e3a%2Fin-app-filter-6.png?alt=media&#x26;token=14d27126-bd2f-4dee-a321-7c7d09228006" alt=""><figcaption></figcaption></figure>


# Screen Actions

## Screen Actions

Screen actions let you automate what happens after someone submits a form. They’re perfect for updating default values to properties, routing users to the next step, or sending them to an external page — all without writing any code.

**Available actions**

1. **Change Data** - Update database properties automatically when the button is pressed.

* Set text, number, toggle, relation, option properties.
* Choose whether the value should be an exact value or pulled dynamically (e.g., logged-in user).

Example: Set "Assigned To" to the logged-in user or mark a "Status" property as “Submitted”.<br>

2. **Go to Screen** - Navigate makers or end users to another screen inside the same app immediately after submit.

* Ideal for creating multi-step flows (e.g., submit → thank you screen).

3. **Open Link** - Redirect users to any external URL once the form finishes.

* Helpful for sending users to documentation, payment confirmations, or custom analytics pages.

{% hint style="info" %}
Important: If you enable either Go to Screen or Open Link, the other option is disabled.

Change Data actions can be combined with one navigation action.
{% endhint %}

**Step by Step Instructions**

To use Screen Actions, follow these simple steps:

1. Open the app builder
2. Open a "Form (Add Item)"/"Form (Update One Item)" screen
3. Click the "+ Add Action" button to add a new action. A default action is added to the screen.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FaKcNG4IG3DNU7EPQkO1V%2Fintro%20copy.png?alt=media&#x26;token=c2a593e8-26d2-4a20-b855-395a7479686f" alt=""><figcaption></figcaption></figure>

4. Select the property on which you want to set a default value
5. Select the *value type* you want to set. i.e. "Fixed Value", "Logged In User" or "Current Day" etc.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FvVDtb13XDL4puvnIpFbi%2Factions-added%20copy.png?alt=media&#x26;token=a8b5a5a5-c830-4d58-933c-04890592dbfd" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
The *value type* is different based on the kind of property. For eg, only a *Date* property has a *value type* "Current Day". While *Title and Email* properties can have a *value type* as "Logged in User".
{% endhint %}

6. And finally, publish the app.

Now, if a user saves new or updated data through the app, their email address is automatically captured under the *Email* property, and the *Due Date* is set to 7 days from the day the data was saved.

{% hint style="info" %}
It's important to note that the "Logged in User" *value type* can only be used in private apps. To learn how to make your app private, please follow this link private-apps.
{% endhint %}

Some common use cases for screen actions,

* Task Status: Set to "Not Started"
* Assigned To: Capture the logged-in user's email
* Delivery Date: Set to 7 days from the current date

### When this app needs automation

Use the normal instructions on this page when users only need to view, add, or update data. Use automation when the app needs to do something after that data changes, such as submit for approval, notify a reviewer, route work to a queue, start a conversation, update workflow status, or show a recoverable failure.

Good next steps:

* Automation Overview explains the full maker journey.
* Start From a Wizard is the safest way to create a guided workflow.
* Create your first approval workflow walks through a complete approval setup.
* Native Automation Screens explains Decision, Work Queue, Notification Center, Conversation, Workflow Status, Exception Resolution, Automation Launcher, Linked App Exchange, and Operator Console.


# Add new component to screen

Components allow you to customize the appearance and functionality of a screen in NotionApps. By adding a component, you can show or update specific fields in a more visually appealing and user-friendly way. Here's how you can add a component to a screen:

1. Go to a secondary screen, such as View Item, by clicking on a row in a List screen OR by clicking the "Go To Screen" button in the screen configuration section.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F65kyzCDgxVJJU6MQKUoX%2Fcustomize-comp-1.png?alt=media&#x26;token=e6d15cfa-da1a-4281-980b-e0bcf8d75e30" alt=""><figcaption></figcaption></figure>

2. Once you're on the secondary screen, click on the plus (+) button in the screen configuration section.

<div align="center"><figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FRSVKlAQBSajLPk24lizy%2Fcustomize-comp-2.png?alt=media&#x26;token=4f0afbde-c66a-463d-be10-6d4bba6ec134" alt=""><figcaption></figcaption></figure></div>

3. In the panel that opens up, you can either select a logic based on the field you want to show, and a default component will be added to the screen (which you can customize later). Alternatively, you can select a specific component from the "Components" section and change its field to the desired field.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FakHr2gY2wZllOH2ZpEKb%2Fcustomize-comp-3.png?alt=media&#x26;token=2d74b8ab-efa0-4d3a-880f-7ab053e8e491" alt=""><figcaption></figcaption></figure>

4. Customize the component as per your preferences. You can adjust its appearance, layout, and functionality by using the customization options available.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FCosTGdImFA3UsJJIqg92%2Fcustomize-comp-4.png?alt=media&#x26;token=b4fc9f83-dfdb-4c4f-b087-5c26954fcfb1" alt=""><figcaption></figcaption></figure>


# Screen Visibility

In some applications, you may want to show or hide screens based on who is logged in. This is where the *Screen Visibility Logic* comes in. Let's take the example of a Task management app. Suppose we want to show a screen to create a *New Task* only for managers but hide it for other employees.

{% hint style="info" %}
Before using the screen visibility, please ensure your app is private by selecting a users database. Learn how to do it here.
{% endhint %}

1. Go to the screen you want to hide. You will see a section named, *Screen Visibility Logic.* Click on the *+ Add Logic* button.
2. Further, select the *Role* column (this could be different for your app) from your Users' database.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FKBXV3epJK47xAMfOzy0B%2Fscreen-vis-1.png?alt=media&#x26;token=34d57cd9-73af-4746-a407-735bad2e5cbd" alt=""><figcaption></figcaption></figure>

3. Add a condition where the *Role* column's data is equal to *Manager*.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F7T3LBdmrblTLQzW7R8t1%2Fscreen-vis-2.png?alt=media&#x26;token=d152d27b-39e6-489a-af54-606682fee378" alt=""><figcaption></figcaption></figure>

With this, when a user logs in to the app only if their *Role* property has the value *Manager*, they can see the *New Task* screen.

### View as a specific user

To test screen visibility in the app builder, you can click the "View as" button in the top bar and select a user.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fki6ZrW8qvoaYq4NXQpG2%2FScreenshot%202024-06-07%20at%209.25.37%E2%80%AFPM.png?alt=media&#x26;token=2f3155d5-6661-4cbe-b74b-d3719277e7ba" alt=""><figcaption></figcaption></figure>

*"Any user"* means no user has been selected.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FbGVFSywNrK5B9Im0zcZX%2FScreenshot%202024-06-07%20at%209.26.47%E2%80%AFPM.png?alt=media&#x26;token=0b420f78-b4a7-4f45-ba12-367f6bea8dc0" alt=""><figcaption></figcaption></figure>

If a screen is hidden for the currently selected user, you will see a message on top of the screen.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FDZKg0yolZ4lCzJ1NEONz%2FScreenshot%202024-06-07%20at%209.34.12%E2%80%AFPM.png?alt=media&#x26;token=6f635569-ad66-4fd4-98c7-c026306e377f" alt=""><figcaption></figcaption></figure>


# Type of Components

There are different types of components that can be added to the screen.

## View Components

* Heading
* Text
* Contact Card
* Video Viewer
* Photo/Image Viewer
* Link
* Checkbox
* Location Viewer (can be used to display latitude-longitude on a map)
* Address Viewer (can be used to display a full address on a map)
* File Viewer
* Button
* View Page Blocks

## Update/Add Components

* Text Input
* Paragraph Input
* Number Input
* Date Input
* Checkbox
* Photo Uploader
* Video Uploader
* File Uploader
* Dropdown
* Multi-select
* Detect current location
* Address finder
* Comments

You could also configure the visibility of a component to show/hide it based on existing property data or user input.

## Additional components

* [Address](https://docs.notionapps.com/customize-app/type-of-components/address)
* [File upload](https://docs.notionapps.com/customize-app/type-of-components/file-upload)
* [User field](https://docs.notionapps.com/customize-app/type-of-components/user-field)


# View Data Components

These are the components available to view the property data.

* Heading
* Text
* Contact Card
* Video Viewer
* Photo/Image Viewer
* Link
* Checkbox
* Location Viewer (can be used to display latitude-longitude on a map)
* Address Viewer (can be used to display a full address on a map)
* File Viewer
* Button
* View Page Blocks


# Add/Update Data Components

These are the components available to add pages or update the property data of pages.

* Text Input
* Paragraph Input
* Number Input
* Date Input
* Checkbox
* Photo Uploader
* Video Uploader
* File Uploader
* Dropdown
* Multi-select
* Detect current location
* Address finder


# Location Viewer Component

A location viewer can be used to show the data through a column that has *Latitude/Longitude* or a *Google Maps Link*.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FFpoU95sHFwBq2In5izTq%2Flocation-viewer.png?alt=media&#x26;token=a55baf99-494e-4987-b01d-c3078bfca653" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}

1. If you have an address in text form, for example *PLG at 123 Linden Blvd*, then it's better to use the Address Viewer Component.<br>
2. For google maps links, only the following format is detected, *<https://www.google.com/maps/place/{latitude},{longitude}>*.
   {% endhint %}


# Signature Component

Signature component in NotionApps allows users to add their signature directly to the database pages/records. It is designed to be user-friendly and reliable.

{% hint style="info" %}
We have three types of Signature components:

1. Add Signature (available on add screens)
2. Update Signature (available on update screens)
3. Signature Viewer (available on update & view screens)
   {% endhint %}

{% hint style="info" %}
The result of the signature component is stored as an image in your database property.
{% endhint %}

#### How to Add the Signature Component

1. Click on the "+" (add component) button in the app builder.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fyd3caU9XNbLWcKPjaNo1%2Fadd-comp.png?alt=media&#x26;token=c7763257-29e0-4d2e-b6e3-17715de6f219" alt=""><figcaption></figcaption></figure>

2. Navigate to the "Components" section in the popup and select the Signature component.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FuBCNsWkl14zuYZp3CxYg%2Fadd-signature-comp.png?alt=media&#x26;token=5239e1f8-198d-41bc-805b-d1cd1d2c7b7f" alt=""><figcaption></figcaption></figure>

3. Select the "Files & Media" Notion database property as the property for the component.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fc6veBjrTJuxe1OW2ekyh%2Ffinal-signature-comp.png?alt=media&#x26;token=21d4e2d8-2fbc-4b6c-aefd-1a9a71ec2f44" alt=""><figcaption></figcaption></figure>

#### Conclusion

The Signature component in NotionApps can help businesses improve accountability of their operations.

* **Contract Management**: Easily collect signatures for contracts, consent forms directly via your apps.
* **Workflow Approvals**: Streamline approval processes by integrating signatures for project charters or work orders.
* **Feedback and Acknowledgments**: Capture feedback or acknowledgment from team members or clients.


# Button Component

{% hint style="warning" %}
As a third-party provider, NotionApps does not have access to the Notion "Button" database property. There are workarounds possible to trigger your Notion automation directly from NotionApps. Those workarounds involve creating a new property and changing that property from inside NotionApps. On Notion, the property change can trigger the relevant automation.
{% endhint %}

This component triggers certain actions from within your app. The current set of actions include:

1. Dial phone
2. Send email
3. Send SMS
4. Open Link
5. Go To Screen

We will support the following actions in the future:

* "Open Edit Screen" → opens an edit item screen
* "Change Data" → changes data in the current item and saves the item


# Comments

The Comments feature lets builders add moderated discussion areas to published NotionApps pages. Visitors can add comments or replies, while builders can review, approve, schedule, pin, edit, hide, or remove comments before they appear publicly.

Use comments when you want lightweight feedback, discussion, testimonials, approvals, notes, or Q\&A directly inside a published app.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fkp4B7fpRC1luyjAeQvHM%2FScreenshot%202026-06-16%20at%2010.58.23%E2%80%AFPM.png?alt=media&#x26;token=279c5923-cf86-43d8-8dd2-d41b043dfd73" alt=""><figcaption></figcaption></figure>

## What Comments Includes

Comments gives you three connected workflows:

* A **Comments component** that builders add to a screen.
* A **published app experience** where visitors add comments or replies.
* A **moderation queue** where builders review and manage submitted comments.

{% hint style="info" %}
Comments are associated with the specific screen and Comments component where they were submitted. If an app has more than one Comments component, each component has its own comment thread.
{% endhint %}

## Add a Comments Component

{% stepper %}
{% step %}

## Open your app in the NotionApps builder.

{% endstep %}

{% step %}

## Go to the screen where you want visitors to leave comments.

{% endstep %}

{% step %}

## Add a **Comments** component to the screen.

{% endstep %}

{% step %}

## Select the component to open its settings.

{% endstep %}

{% step %}

## Configure the comment behavior and display options.

{% endstep %}

{% step %}

## Save and publish the app.

{% endstep %}
{% endstepper %}

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FxA7LcAANEyL8hXOb87Df%2FScreenshot%202026-06-16%20at%2011.00.22%E2%80%AFPM.png?alt=media&#x26;token=78f65573-f3cc-4bcd-99bd-2e6d1ea79fe1" alt=""><figcaption></figcaption></figure>

## Configure Comment Behavior

When the Comments component is selected, use its settings to control how comments work in the published app.

### Core Options

* **Comments enabled**: Allows visitors to submit new comments.
* **Replies enabled**: Allows visitors to reply to approved top-level comments.
* **Allow anonymous comments**: Allows visitors who are not signed in to comment.
* **Required guest fields**: Requires guest visitors to provide a name, email, or both.
* **Maximum comment length**: Limits the number of characters allowed in each comment.
* **Sort order**: Controls how public comments are ordered.
* **Show comment count**: Displays the number of visible comments in the published app.
* **Show pending to author**: Lets a comment author see their own pending comment while it waits for approval.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FreO3k43o7Qrsf0fYmGKm%2FScreenshot%202026-06-16%20at%2011.01.51%E2%80%AFPM.png?alt=media&#x26;token=766cfff5-029d-4d99-baf2-2b0f31ea5f67" alt=""><figcaption></figcaption></figure>

### Published Display Options

Use these settings to control the published app experience:

* **Start collapsed on published app**: Opens the published page with the Comments section minimized.
* **Show add comment action**: Shows or hides the `+ Comment` action.
* **Show reply action**: Shows or hides the `+ Reply` action under approved comments.

{% hint style="success" %}
For a cleaner published page, turn on **Start collapsed on published app**. Visitors can still open the section when they want to read or add comments.
{% endhint %}

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FHOW0yOO07AC0dEmpdKKr%2FScreenshot%202026-06-16%20at%2011.03.00%E2%80%AFPM.png?alt=media&#x26;token=72db585b-6c9c-4711-97c2-0fd981d53f78" alt=""><figcaption></figcaption></figure>

## Published App Experience

When a visitor opens a published app page with comments, the Comments section may appear collapsed or expanded depending on the builder setting.

{% stepper %}
{% step %}

## Click the Comments header or **Show** control to expand it.

{% endstep %}

{% step %}

## Click `+ Comment` to open the comment form.

{% endstep %}

{% step %}

## Enter the required guest information, if configured.

{% endstep %}

{% step %}

## Submit the comment.

{% endstep %}
{% endstepper %}

After submission, comments usually enter the moderation queue before appearing publicly.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F6dY3nezJCnpX25PwIFxj%2FScreenshot%202026-06-16%20at%2011.03.56%E2%80%AFPM.png?alt=media&#x26;token=32df8bdf-8a7b-42ed-b3f2-811329fae71b" alt=""><figcaption></figcaption></figure>

## Reply to a Comment

If replies are enabled, visitors can reply to approved top-level comments.

{% stepper %}
{% step %}

## Expand the Comments section.

{% endstep %}

{% step %}

## Find the approved comment.

{% endstep %}

{% step %}

## Click `+ Reply`.

{% endstep %}

{% step %}

## Enter the reply text and any required guest fields.

{% endstep %}

{% step %}

## Submit the reply.

{% endstep %}
{% endstepper %}

Replies are also moderated before they appear publicly, unless your workflow treats them differently through moderation status.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FDFMs8yhjOcfJ7ifF9kdq%2FScreenshot%202026-06-16%20at%2011.04.37%E2%80%AFPM.png?alt=media&#x26;token=0677ffee-d01c-4dd0-b7c1-1b3c078c17a0" alt=""><figcaption></figcaption></figure>

## Moderate Comments

Builders manage submitted comments from the app Settings area.

{% stepper %}
{% step %}

## Open the app in the builder.

{% endstep %}

{% step %}

## Go to **Settings**.

{% endstep %}

{% step %}

## Open the **Comments** tool.

{% endstep %}

{% step %}

## Review comments in the moderation queue.

{% endstep %}
{% endstepper %}

The moderation queue shows the comment body, author details, status, submitted time, and context for where the comment was submitted.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FKOzAxCaoM3k4YKmkiruz%2FScreenshot%202026-06-16%20at%2011.05.27%E2%80%AFPM.png?alt=media&#x26;token=9916ec38-dccd-4fb7-bba5-afb497ad0eaf" alt=""><figcaption></figcaption></figure>

## Understand Comment Context

Each moderation row includes context fields so you can identify where the comment belongs:

* **App**: The app where the comment was submitted.
* **Screen**: The screen associated with the comment.
* **Component**: The specific Comments component associated with the comment.
* **Parent comment**: Shown when the item is a reply.

{% hint style="warning" %}
If your app has multiple Comments components, check the Screen and Component context before moderating. Comments do not automatically move between different comment sections.
{% endhint %}

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fl2a8nl7yXvgqSIUPfy77%2FScreenshot%202026-06-16%20at%2011.06.42%E2%80%AFPM.png?alt=media&#x26;token=2bfe336e-215d-4c8e-aae0-500442493b02" alt=""><figcaption></figcaption></figure>

## Filter and Search the Queue

Use the moderation toolbar to find comments quickly.

Available queue filters include:

* All
* Pending
* Approved
* Disapproved
* Hidden
* Deleted
* Scheduled
* Expired

You can also search comment text from the moderation queue.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FnQH4yHHZLQwQ9GSfbQ7C%2FScreenshot%202026-06-16%20at%2011.07.25%E2%80%AFPM.png?alt=media&#x26;token=c0bb2862-419c-44ee-bfd8-9bc883650ede" alt=""><figcaption></figcaption></figure>

## Moderate a Comment

From each comment row, builders can take several actions:

* **Approve**: Makes the comment eligible to appear publicly.
* **Disapprove**: Rejects the comment.
* **Hide**: Removes the comment from public display without deleting it.
* **Save edit**: Saves changes to the comment text.
* **Save schedule**: Saves visibility dates.
* **Pin**: Pins an approved top-level comment.
* **Unpin**: Removes pinned status.

{% hint style="info" %}
Only approved comments that are inside their visibility window appear in the published app.
{% endhint %}

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FXV4yX6VcoHrqbiJ29wPh%2FScreenshot%202026-06-16%20at%2011.08.46%E2%80%AFPM.png?alt=media&#x26;token=9ea7c023-54bb-4c9a-992f-92a720890197" alt=""><figcaption></figcaption></figure>

## Schedule Comment Visibility

Use visibility dates to control when an approved comment appears publicly.

* **Visible from**: The earliest date and time the comment can appear.
* **Visible until**: The date and time the comment stops appearing.

Leave **Visible from** empty to show the comment as soon as it is approved.

Leave **Visible until** empty to keep the comment visible forever.

{% hint style="success" %}
If there is no visibility end date, the comment remains visible indefinitely as long as it stays approved and is not hidden or deleted.
{% endhint %}

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FIszP5RGrhTAVnuLrWgXx%2FScreenshot%202026-06-16%20at%2011.09.20%E2%80%AFPM.png?alt=media&#x26;token=9f5a5f24-69ce-4d3a-b0a6-1e963dd655a2" alt=""><figcaption></figcaption></figure>

Pinned comments appear before other approved top-level comments.

Use **Pin order** when you want more control over the order of pinned comments:

* Lower numbers appear first.
* Blank pin order uses pin time after ordered pins.
* Pinning is intended for approved top-level comments, not replies.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F4HWIbwfRR36WDblZLdlK%2FScreenshot%202026-06-16%20at%2011.09.20%E2%80%AFPM.png?alt=media&#x26;token=f8204399-c2db-49be-87b5-d82e6cf1e0d9" alt=""><figcaption></figcaption></figure>

## How Published Comments Appear

A comment appears in the published app when all of the following are true:

* The comment belongs to the current app, screen, and Comments component.
* The comment status is **Approved**.
* The comment is not hidden or deleted.
* The current date is after **Visible from**, if one is set.
* The current date is before **Visible until**, if one is set.

If a comment is approved but does not appear, check the screen/component context, visibility schedule, and status.

## Best Practices

* Use one Comments component per discussion area.
* Use clear screen names so moderation context is easy to understand.
* Keep comments collapsed by default on long published pages.
* Require guest names when you need accountability.
* Use visibility windows for time-sensitive announcements or temporary feedback.
* Pin only the most important approved comments.
* Review the moderation queue regularly if comments are enabled on public apps.

## Troubleshooting

<details>

<summary>I approved a comment, but it does not show in the published app.</summary>

Check that the comment is associated with the same screen and Comments component you are viewing. Also confirm the comment is approved and inside its visibility window.

</details>

<details>

<summary>Visitors are asked for a name when replying.</summary>

The Comments component uses the same required guest fields for comments and replies. If **Name** is required, visitors must provide it before submitting either a comment or a reply.

</details>

<details>

<summary>I see an empty Comments section on one screen but comments on another.</summary>

Your app may have multiple Comments components. Each Comments component has its own thread and moderation context.

</details>

<details>

<summary>I do not want comments visible immediately when visitors land on the page.</summary>

Turn on **Start collapsed on published app** in the Comments component settings.

</details>


# Address component

Capture or display a structured **address** on Create/Update forms (and related input flows).

## When to use

* Field service / site visits
* Customer shipping or billing locations
* Any workflow where a dedicated address control beats one long text box

## Maker setup

1. Add or select an Address field/component on a Create or Update form.
2. Bind it to the Notion property you use for location text (or structured address fields, depending on your schema).
3. In Behaviour, mark **required** when submit must block empty addresses.
4. Add helper text so mobile users know what format you expect.
5. Pair with [Location Viewer](https://docs.notionapps.com/screens-and-components/type-of-components/location-viewer-component) when users must see a map pin.
6. Publish and test on mobile keyboards.

## Prefill

URL prefill works only when your Create Form prefill setup includes the address field — see [Prefill Create Forms from a URL](https://docs.notionapps.com/how-to-guides/prefill-create-forms-from-a-url).

## Tips

* Keep one clear Notion property as the source of truth for the address string.
* For field ops, combine Address + [File upload](https://docs.notionapps.com/screens-and-components/type-of-components/file-upload) + [Signature](https://docs.notionapps.com/screens-and-components/type-of-components/signature-component).
* After Notion schema changes, reload databases ([Databases → Reload and sync](https://docs.notionapps.com/databases/reload-and-sync)).

## Related

* [Type of Components](https://docs.notionapps.com/screens-and-components/type-of-components)
* Use case: [Field Operations](https://docs.notionapps.com/use-cases/field-operations)


# File upload component

Let end users attach files/images to Notion file properties from Create/Update forms (and related inputs).

## When to use

* Photos from the field
* PDFs / receipts on requests
* Any Notion **Files & media** property that operators must populate from the app

## Maker setup

1. Ensure the Notion property type is files/media (or compatible).
2. Add the **File upload** component on the form / screen.
3. Configure Behaviour (required, helper text) like other inputs.
4. Publish and test on a real phone (camera roll + file picker).

## Tips

* Large images slow lists — compress when possible (see FAQ on slow images).
* Pair with Details [Media Gallery](https://docs.notionapps.com/how-to-guides/media-gallery) when viewers need a polished gallery.
* Reload data after changing the Notion property type ([Databases → Reload and sync](https://docs.notionapps.com/databases/reload-and-sync)).
* For inspection-style “labeled photo categories,” use a related photos database + allow-add list/selector pattern (see Relations docs).

## Related

* [Address](https://docs.notionapps.com/screens-and-components/type-of-components/address)
* [Signature](https://docs.notionapps.com/screens-and-components/type-of-components/signature-component)
* [Field Operations](https://docs.notionapps.com/use-cases/field-operations)
* [Relations](https://docs.notionapps.com/screens-and-components/relations)


# User field component

Show or select people in relation to your **Users** database / people-like properties inside screens and forms.

## When to use

* Assignee / owner pickers tied to App Users
* Displaying who a record belongs to on Details
* Directory-style fields that should resolve to Users rows

## Maker setup

1. Prefer a Notion **relation** to the Users database when personalization matters.
2. Add the **User field** component and bind the property.
3. Combine with [Data Restriction](https://docs.notionapps.com/users/data-restriction) so users only see appropriate rows elsewhere.
4. For list filtering by logged-in user properties, see [Filter lists…](https://docs.notionapps.com/how-to-guides/filter-list-screens-by-logged-in-user-properties) (entitlement-gated).

## Tips

* Guest Notion users may not appear in some dropdowns — see Troubleshooting FAQ on guest users in dropdowns.
* Keep the Users database email property clean; User field UX depends on healthy App Users data.
* After Users schema changes, reload databases and re-test View as + a real login.

## Related

* [App Users](https://docs.notionapps.com/users/app-users)
* [People / status fidelity](https://docs.notionapps.com/how-to-guides/status-and-people-field-fidelity)
* [Employee Directory](https://docs.notionapps.com/use-cases/employee-directory)


# Component Visibility

In some forms, you may want to show an input or view component based on the data entered in another input. Here is an example of how you would do it on Utilize,

1. Expand the configuration of the input/logic that you want to change the visibility of.
2. Enable the "Visibility Logic" toggle.
3. Select the property and the condition based on which you'd like to show the component.

{% hint style="info" %}
On the Details (*View One Item)*/Form (*Update One Item)* screens, you can also show/hide logic based on the current item's data.
{% endhint %}

### User input vs Current row based visibility

An "Form (Update One Item)" screen can both show the current row's data and update it. This means you can configure the *component visibility* based on either data already present in the row or what the user inputs.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FOFswO6ebC9dJPPoQSP3H%2FSCR-20250409-lysu.png?alt=media&#x26;token=0d7507c7-0d44-4c79-bf33-34891cbf59d8" alt=""><figcaption><p>Same property shown in two different components</p></figcaption></figure>


# Barcode/QR Code Scanner

We have two types of code scanner available:

1. Barcode scanner
2. QR Code scanner

## Barcode Scanner

The barcode scanner feature in NotionApps allows users to scan barcodes using their device's camera without a manual input for the product ID/SKU. NotionApps provides the ability to scan barcodes through a button in the search bar on list screens (*View Items/Update Items*).

{% hint style="info" %}
The supported barcode formats are:

1\. UPC-A

2\. Code 39

3\. UPC-E

4\. Code 93

5\. EAN-8

6\. Code 128

7\. EAN-13
{% endhint %}

To enable barcode scanner in the search bar, please follow these steps:

1. Open your app in the app builder.
2. Go to the list screen where you want to add the scanner.
3. In the screen configuration section, click on the "Allow Scan" button.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FSAJH1Upu0q5rs9iKQAKb%2Fbarcode-scanner.png?alt=media&#x26;token=dbd80904-7ef6-414c-a49c-5ce0923a71cb" alt=""><figcaption></figcaption></figure>

When a user scans a barcode using the scanner in your app, the scanned data can be used for searching the database. This can be useful for tracking inventory, inputting customer information, and more.

{% hint style="warning" %}
The barcode scanner only works on mobile devices. On desktop, you will get a fixed text "ABCD123456789"
{% endhint %}

## QR Code scanner

QR code scanner works in a similar way as the barcode scanner. When you enable the *Show Scanner* toggle, you can select the type of scanner as *QR Code* to allow the scanner to scan QR codes.

{% hint style="info" %}
If you are looking for a multi-format scanner (scans both QR Code & Barcode) using a single scan, you should reach out to us on <help@notionapps.com>.
{% endhint %}


# Form Submit Redirection

## Form Submit Redirection

{% hint style="info" %}
**This feature has been moved to** screen-action&#x73;**.**
{% endhint %}

**Old Documentation**

When a user submits the form on an **Form (Add Item)** or an **Form (Update One Item)** screen, you can redirect them to an external link. This feature allows for a smoother user experience, directing users exactly where they need to go after they've completed a form.

{% hint style="info" %}
This feature is only available on paid plans.
{% endhint %}

{% hint style="info" %}
This feature can only be tested on the app and not on the app builder.
{% endhint %}

This is how you can enable redirection in your apps:

1. Open the app builder
2. Navigate to either the **Form (Add Item)** or **Form (Update One Item)** screen.
3. Switch on the toggle to enable **Redirect after save**

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fg2KvNo2BDac3adI5Z986%2FScreenshot%202024-04-10%20at%206.54.38%E2%80%AFPM.png?alt=media&#x26;token=0ef0d0a5-92c9-421a-9e51-4bdf7ccd86e3" alt=""><figcaption></figcaption></figure>

5. Enter the redirection link and publish the app.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FTIQ0HikoMzft9IvWb4cr%2FScreenshot%202024-04-10%20at%206.54.50%E2%80%AFPM.png?alt=media&#x26;token=caf31aaa-c5dd-4ee4-9673-6a2e1e970bc0" alt=""><figcaption></figcaption></figure>

Whether it's a thank-you page, a confirmation of submission, or back to the dashboard, tailoring the user's journey has never been easier.

**Popular Use Cases for Redirection After Submission**

Redirecting users after they perform an action in your app enhances the user experience by guiding them through a seamless journey. Here are some common scenarios where this feature is particularly useful:

1. **Survey Completion:** Once a user finishes a survey, redirect them to a page that thanks them for their input and possibly offers them a discount or entry into a contest as a token of appreciation.
2. **Content Submission:** For apps that allow user-generated content, redirect users to a dashboard, gallery, or portfolio page after they submit their work, showing them that their submission was successful.
3. **Membership Registration:** After a new user signs up for a service, redirect them to a welcome page that introduces them to the features of the app or directly takes them to the user app.
4. **Event Registration:** After registering for an event, users can be redirected to a page where they can download their ticket or add the event to their calendar.

### When this app needs automation

Use the normal instructions on this page when users only need to view, add, or update data. Use automation when the app needs to do something after that data changes, such as submit for approval, notify a reviewer, route work to a queue, start a conversation, update workflow status, or show a recoverable failure.

Good next steps:

* Automation Overview explains the full maker journey.
* Start From a Wizard is the safest way to create a guided workflow.
* Create your first approval workflow walks through a complete approval setup.
* Native Automation Screens explains Decision, Work Queue, Notification Center, Conversation, Workflow Status, Exception Resolution, Automation Launcher, Linked App Exchange, and Operator Console.


# Formulas & Rollups

## Lists

You can choose to show formula and rollup properties in Lists like List (*View Items) screen, List (Update Items) screen, List Component, Page Selector Component, etc.*

However, you need to be aware of a limitation:

{% hint style="warning" %}
When you choose a property to view in the lists that is a rollup or formula dependent on a rollup, and if the formula is calculated over more than 25 related pages, Notion provides ***NotionApps*** results based on only the top 25 related pages.

*For example,*

Let's say there are two databases:

* `Projects` and `Tasks`.
* `Projects` has a relation to `Tasks.`
* `Projects` has a rollup property that counts the number of `tasks` linked to a `project`.

**Incomplete Data**

If a `project`is linked to 30 `tasks (> 25),`NotionApps will only receive the property value as 25 (`incomplete value`).

**Complete Data**

If a `project` is linked to `10 tasks`, NotionApps will receive `10 (correct value)`.
{% endhint %}

## Components

Rollups & Formulas can be shown in all components.

{% hint style="success" %}
However, for properties where there might be incomplete data`(> 25 related pages)`, we suggest showing them in the Details (*View One Item)* or Form (*Update One Item)* screens.

On these screens, when using a "View Text" component to view the property, you will see a refresh button next to it.

On clicking the refresh button, we fetch the complete property data from Notion.
{% endhint %}

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FeBH7RLQckPaH30RB52me%2Fformula-view-text-comp%20copy.png?alt=media&#x26;token=45efd1c0-c595-41d3-b7bd-0b2bc8c97308" alt=""><figcaption></figcaption></figure>

We are working with Notion to make this experience better. Meanwhile, if you have questions, please reach out to us via our website chat or email us at <help@notionapps.com>.


# Relations

Relation properties can be used on NotionApps by either showing the related page data in your app configurations or using the List or Page Selector components.

{% hint style="info" %}
If you don't see Relation properties in your app builder, please click the "Reload" button.
{% endhint %}

## Showing Related Page Data

Properties from related databases could be used in multiple app configurations to show data from the related pages.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FFHY0IDv6EsK1Pjv9v9Cj%2Fdropdown-1.png?alt=media&#x26;token=39e21841-c5e4-4d58-b22a-6f0ff17d15e7" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FxunJyWpikgwjGC7rbv1b%2Fdropdown-2.png?alt=media&#x26;token=1ed6dc81-0fc9-4ba0-808e-b73db1c4d75e" alt=""><figcaption></figcaption></figure>

## List & Page Selector Components

These components can link, unlink, add, update, or delete related page items.

### List Component

A List component can display an **Inline LIST** of related page items on your form or details screens.

In addition to that, you can create new related pages, and link or unlink pages from the related database.

### Page Selector Component

A Page Selector component can open a new screen to link or unlink existing pages from the related database.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F6hhXPWS0q7qAhShoOgwT%2Fadd-comp.png?alt=media&#x26;token=8e2d43a0-30bb-4ead-80d8-b4e316702b13" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F6Ut1dAbjzWYjMseKqEsj%2Fall-comps.png?alt=media&#x26;token=03e575e5-329d-4859-b560-e21b0675ca30" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FmUEDlR8rHbU2tNxMxQom%2Fcomps-added.png?alt=media&#x26;token=5a5bc56e-85a0-4e63-a83a-8a95a2cf0731" alt=""><figcaption></figcaption></figure>

## Show Reload Button

List and page selector components provide an option to "Show Reload Button" next to the component. You should enable this option if:

You have more than 25 pages related to a single page and want to show all the related pages.

For example, a Project is linked to 50 Tasks. Without the reload button, we only show the top 25 Tasks. If you enable the reload button, we load all 50 Tasks.

{% hint style="info" %}
The same logic applies to the reload button when viewing formulas and rollups in NotionApps. If the formula or rollup is calculated over more than 25 related pages, you should enable the "Show Reload Button" option.
{% endhint %}


# Show Page Content

With the capability to show page content, you can show your blocks like headings, audio, embeds, bulleted lists, etc. directly into your apps.

### Page content versus properties

In general, **page properties** are best for capturing structured information such as a due date, a category, or a relationship to another page. The **page content** is best for looser structures or free-form content. The page content is where users compose their thoughts or tell a story. Page properties are where users capture data and build systems.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FS5zW8ezLCkkSwhve0qBO%2Fpage-content-helper-image.png?alt=media&#x26;token=24d43c8e-e6b3-413e-8455-4f10ed665e97" alt=""><figcaption><p>page properties vs page content</p></figcaption></figure>

### Adding a Show Page Content component

1. Open your app builder
2. From the app preview, open a "Details (View One Item)" or "Form (Update Item)" screen
3. From the *Logic (View)* section, add the "View Page Content" component.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FIsiWmVHUHRrs0TedKbSj%2FScreenshot%202024-07-29%20at%2012.44.09%E2%80%AFPM.png?alt=media&#x26;token=5f163799-c16c-4eb0-9bbb-829c9238fd22" alt=""><figcaption></figcaption></figure>

### **Block Limits**

Based on the account's subscription plan, we load only limited blocks into the apps. These limits are on the top-level blocks.

| Subscription Plan | Blocks Limit |
| ----------------- | ------------ |
| FREE              | 5            |
| PLUS              | 20           |
| PRO               | 50           |
| PREMIUM           | 200          |

In the image below, Block 1, Block 2, and Block 4 are top-level blocks while the others are not.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FgKLa8PjY3QJ3BFP9g8Un%2FScreenshot%202023-10-09%20at%2010.30.09%20PM.png?alt=media&#x26;token=1ad3cf9c-1327-4ab6-9205-537a1aa6cb99" alt=""><figcaption></figcaption></figure>

### **Unsupported Blocks**

Some blocks are not yet supported or only partially supported by the system. We are working on supporting all types of blocks.

1. Page Link (partially supported, use Notion's mention block to mention the page)
2. External Page Link (unsupported)
3. Equation (partially supported)
4. Google Maps (unsupported)
5. Google Drive (unsupported)
6. Figma (unsupported)
7. Tweet (unsupported)
8. Synced Block (unsupported)
9. Database (unsupported, please use a screen to display the database data instead)
10. Button (unsupported)

{% hint style="info" %}
Please note that page blocks are view-only and can't be edited.
{% endhint %}

If you need support for some unsupported blocks, please email us at <help@notionapps.com>.


# Desktop View

NotionApps provides a full-width desktop experience on larger devices such as laptops, monitors, etc.

## Switch between mobile and desktop app previews

In the app builder, you can switch between mobile, desktop, and expanded previews for your application.

{% hint style="success" %}
Tip: Use shortcut keys to open previews quickly:\
m → mobile view

d → desktop view

e -> open expanded view/close expanded view
{% endhint %}

<div data-full-width="true"><figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FXx9rZ33YaSGnFCzbjvYK%2FScreenshot%202024-06-08%20at%208.30.46%E2%80%AFAM.png?alt=media&#x26;token=6916d007-7c16-4757-b11c-fede4b7941fd" alt=""><figcaption><p>Mobile view</p></figcaption></figure></div>

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F5cbpsH84KoTnirOEmsST%2FScreenshot%202024-06-08%20at%208.32.09%E2%80%AFAM.png?alt=media&#x26;token=23c7f083-697b-44f7-bea3-0d2f4bbda91b" alt=""><figcaption><p>Desktop view</p></figcaption></figure>

<div data-full-width="false"><figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F0nm0lHY8ltJTD3v45K4C%2FScreenshot%202024-06-08%20at%208.33.24%E2%80%AFAM.png?alt=media&#x26;token=aa8f8867-4b37-48e0-a823-746c69bdd038" alt=""><figcaption><p>Click to expand to full-width</p></figcaption></figure></div>

<div data-full-width="true"><figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FdGGlDhTMPZ5tlTXNjIrk%2FScreenshot%202024-06-08%20at%208.33.37%E2%80%AFAM.png?alt=media&#x26;token=63ddb8f7-c583-4afd-b7e1-8285373fe15c" alt=""><figcaption><p>Full width view</p></figcaption></figure></div>

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FJ2hFIdCFak55BxHg3toy%2FScreenshot%202024-06-08%20at%208.38.21%E2%80%AFAM.png?alt=media&#x26;token=9991d2d3-7ffe-42b2-b71a-5f52937f493c" alt=""><figcaption><p>Close expanded view</p></figcaption></figure>

## Show mobile view on desktop devices

While the full-width desktop view is the default experience on larger devices, you can configure the app to show a mobile view on these devices. This can be useful for applications that are primarily mobile-only. Please follow this step-by-step guide to enable this behaviour:

1. Go to the app builder
2. Go to the settings of the app
3. Enable "*Show mobile view on desktop"*

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FAwrKKu7ZUJE9FZkUabJt%2FScreenshot%202024-06-08%20at%208.50.07%E2%80%AFAM.png?alt=media&#x26;token=adf291e1-b5dc-4a32-b154-4701d100fbbe" alt=""><figcaption><p>Show mobile view on desktop</p></figcaption></figure>

4. Publish your application

Now, you will see a mobile view if you open your application on a laptop or any other larger device.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F6uNg4RaOkBArkGu0VkOc%2FScreenshot%202024-06-08%20at%208.56.06%E2%80%AFAM.png?alt=media&#x26;token=0df4f8f6-7f51-48ab-80df-20b2b54868a0" alt=""><figcaption></figcaption></figure>


# Calendar view

Show **List (View Items)** records on a calendar when you bind a **date** property.

## When to use Calendar

* Schedules, bookings, due dates, opening dates
* Users think in weeks/months rather than long lists

## Setup

1. Open a **List (View Items)** screen (or create one).
2. Set **View Type** to **Calendar** (List / Grid / Calendar / Board).
3. Bind the calendar to a Notion **date** field.
4. Choose **Default Mode**: Day / Week / Month / Agenda.
5. Optionally enable **Allow Mode Change** so end users can switch modes.
6. Keep an open action to Details (or Update) so tapping an event is useful.
7. Publish and verify empty days vs days with events on phone width.

## Options makers care about

| Topic                 | Guidance                                                                                    |
| --------------------- | ------------------------------------------------------------------------------------------- |
| Date field            | Must be a Notion date (or date-like) property                                               |
| Default Mode          | Month is the usual default; Agenda helps dense schedules                                    |
| Allow Mode Change     | On when users need Day/Week/Month toggles                                                   |
| Filters               | Calendar respects list filters where supported                                              |
| Grouping / sorting UI | Calendar disables some linked-sheet grouping/sorting sections — configure filters carefully |
| Empty calendar        | Wrong date field, filters excluding rows, or no records in range                            |

## QA checklist

1. Correct view type selected and published
2. Date field mapped
3. Open action reaches Details
4. Filters do not hide all rows
5. Phone-width layout checked once

## Related

* [View Types](https://docs.notionapps.com/screens-and-components/customize-a-screen/view-types-list-grid-calendar-board)
* [Grid view](/screens-and-components/grid-view)
* [Board List View](https://docs.notionapps.com/how-to-guides/board-list-view)
* [List (View Items)](https://docs.notionapps.com/screens-and-components/types-of-screens/list-view-items)
* [Filtering, Sorting, or Grouping Items](https://docs.notionapps.com/screens-and-components/customize-a-screen/filtering-sorting-items)


# Grid view

Grid presents **List (View Items)** records as visual cards — ideal when images matter.

## When to use Grid

* Catalogs, portfolios, property listings, menus, directories with photos

## Setup

1. Open a **List (View Items)** screen.
2. Set **View Type** to **Grid**.
3. Map **Title**, optional description/body fields, and an **Image** / cover property.
4. Tune layout density:
   * **Grid Column Size** — Large or Small (one vs two column density)
   * **Grid Image Style** — Rectangle (Horizontal or Vertical) or Square
5. Confirm open action to Details (or Update).
6. Publish and check crop on mobile.

## Card vs gallery style

Product supports denser card layouts and more gallery-like image-forward layouts via column size + image style. Prefer:

* **Square / consistent ratios** for catalogs
* **Horizontal rectangle** for wide covers
* **Vertical rectangle** for posters / tall media

Keep ratios consistent across rows so the grid aligns.

## Image guidance

* Practical starting point: **square to \~4:3** covers; extreme panoramas crop awkwardly
* FAQ: [What's the ideal aspect ratio of images in the GRID view?](https://docs.notionapps.com/troubleshooting/whats-the-ideal-aspect-ratio-of-images-in-the-grid-view)
* Compress large Notion images when lists feel slow

## Other list controls that still matter

These are configured on the List screen (not only in Grid mode):

* Filters / sort / group-by (where supported)
* Expanded list options
* Multi-row update (when editing many rows)
* In-app filters
* Search + barcode/QR scan (when enabled on the list)

See [Filtering, Sorting, or Grouping Items](https://docs.notionapps.com/screens-and-components/customize-a-screen/filtering-sorting-items) and [Barcode/QR Code Scanner](https://docs.notionapps.com/screens-and-components/barcode-qr-code-scanner).

## QA checklist

1. View type Grid published
2. Image property mapped
3. Open action reaches Details
4. Column size + image style checked on phone
5. Filters do not hide all rows

## Related

* [View Types](https://docs.notionapps.com/screens-and-components/customize-a-screen/view-types-list-grid-calendar-board)
* [Calendar view](/screens-and-components/calendar-view)
* [Board List View](https://docs.notionapps.com/how-to-guides/board-list-view)
* [Media Gallery](https://docs.notionapps.com/how-to-guides/media-gallery) (Details polish)


# Databases

The builder **Databases** rail is where makers manage which Notion databases are linked to the app, reload schema/records, and open recovery tools.

This section mirrors the product rail. Detailed reload FAQs also live under [Workspace & account](https://docs.notionapps.com/workspace-and-account) — those pages stay as full references.

## What you do here

| Job                               | Start here                                                                             |
| --------------------------------- | -------------------------------------------------------------------------------------- |
| See / manage linked databases     | Manage linked databases                                                                |
| Pull latest Notion schema & data  | Reload and sync                                                                        |
| Automatic sync & end-user refresh | [Settings → Data](https://docs.notionapps.com/settings/data)                           |
| Draft/builder snapshots           | [Recovery History](https://docs.notionapps.com/workspace-and-account/recovery-history) |
| Published version revert          | [Settings → Version History](https://docs.notionapps.com/settings/version-history)     |

## When Databases vs Settings → Data

* **Databases rail** — link/unlink databases, inspect what the app uses, trigger reloads from the data workspace
* **Settings → Data** — app-wide automatic sync and end-user refresh toggles

## Related

* [Builder map](https://docs.notionapps.com/builder)
* [Find your way around the builder nav rail](https://docs.notionapps.com/how-to-guides/find-your-way-around-the-builder-nav-rail)
* Troubleshooting: [My data has stopped syncing](https://docs.notionapps.com/troubleshooting/my-data-has-stopped-syncing.-what-could-be-the-issue) · [I can't see my databases/pages](https://docs.notionapps.com/troubleshooting/i-cant-see-my-databases-pages-inside-notionapps.-how-do-i-resolve-it)


# Manage linked databases

Control which Notion databases your app can read and write.

## Open Databases

1. Open the app in the builder.
2. Click **Databases** in the left rail (not Settings).
3. Review the list of linked databases and their status.

## Typical maker tasks

* **Confirm the right databases are linked** after you connect Notion or switch workspaces
* **Link an additional database** when you add a new screen that needs a new Notion source
* **Understand why a property is missing** — often the database is not linked, or schema has not been reloaded after a Notion change

## Manage databases entry points

The Databases workspace includes manage/link controls (product copy may say **Manage databases**). Use them when:

* You created a new database in Notion for this app
* A relation points at a database the app cannot see yet
* You need to reconnect after workspace permission changes

## After linking

1. [Reload and sync](/databases/reload-and-sync) so schema and records appear in Screens
2. Map fields on List / Details / Forms
3. If the app is Private, revisit [Data Restriction](https://docs.notionapps.com/users/data-restriction) when personalization properties changed

## Related

* [Connect Notion](https://docs.notionapps.com/get-started/connect-notion)
* [Reload Data (from app builder)](https://docs.notionapps.com/workspace-and-account/reload-data-from-app-builder)
* [Databases overview](/databases)


# Reload and sync

Keep Notion schema and records fresh in the builder and published app.

## Manual reload (builder)

Use when you changed Notion structure or data looks stale:

1. Open **Databases** (or use the builder reload control in the top bar when available).
2. Run **Reload** / reload databases for the app.
3. Re-open the screen that looked wrong and confirm properties appear.

Full walkthroughs (kept as canonical how-tos):

* [Reload Data (from app builder)](https://docs.notionapps.com/workspace-and-account/reload-data-from-app-builder)
* [Reload Data (from app)](https://docs.notionapps.com/workspace-and-account/reload-data-from-app)
* [Automatic Reload Data](https://docs.notionapps.com/workspace-and-account/automatic-reload-data)

## Automatic sync & end-user refresh

App-wide toggles live in **Settings → Data** (paid automatic sync; end-user refresh on Private apps):

→ [Settings → Data](https://docs.notionapps.com/settings/data)

## When to reload

* Added, renamed, or removed a Notion property
* Status / select options or colors changed
* Relation or rollup looks wrong in the builder
* Users database schema changed (login / personalization)
* New database linked under Databases

## Tips

* After reload, re-check list filters, Data Restriction mappings, and form field bindings — renames can break mappings until you reopen config.
* Rollups/formulas calculate in Notion first; brand-new assigned rows can lag briefly when matching on those properties (see [Data Restriction](https://docs.notionapps.com/users/data-restriction)).

## Troubleshooting

* [My data has stopped syncing](https://docs.notionapps.com/troubleshooting/my-data-has-stopped-syncing.-what-could-be-the-issue)
* [I can't see my databases/pages](https://docs.notionapps.com/troubleshooting/i-cant-see-my-databases-pages-inside-notionapps.-how-do-i-resolve-it)


# Users overview

Everything under the builder **Users** rail: privacy, login, App Users, Data Restriction, and signup.

## Start here

| Goal                                         | Page                                                                               |
| -------------------------------------------- | ---------------------------------------------------------------------------------- |
| Understand public vs private + login methods | Auth and access                                                                    |
| Turn on Private and link a Users database    | Private apps                                                                       |
| Create the Notion Users database             | [Create Users Database](https://docs.notionapps.com/users/create-users-database)   |
| Manage who can sign in                       | App Users · [Add/Remove users](https://docs.notionapps.com/users/add-remove-users) |
| Limit which rows each user sees              | [Data Restriction](https://docs.notionapps.com/users/data-restriction)             |
| Allow self-serve join                        | [Sign up](https://docs.notionapps.com/users/sign-up)                               |
| Different menus per audience                 | Roles and navigation                                                               |
| Preview as a specific user                   | View as any user                                                                   |
| Invite makers who edit the app               | Collaborators                                                                      |

## Typical private-app path

1. Private apps → Users database → App Users
2. Data Restriction on each personalized database
3. Screen Visibility Logic for audience-specific navigation
4. View as + a real published login test


# Private apps

A **Private** app requires sign-in before protected screens and personalized data are available.

## When to use Private

* Client or employee portals
* Each user should only see their own rows ([Data Restriction](https://docs.notionapps.com/users/data-restriction))
* Any app where the share link alone is not enough

## Setup checklist

1. Open **Users** in the builder left rail.
2. Set the app to **Private** (**Is the app public or private?**).
3. Link or create a **Users** database ([Create Users Database](https://docs.notionapps.com/users/create-users-database)).
4. Map **User Name** and **Email Address** properties.
5. Choose **Email Address + Login Code** (the shipping Login Method). Optionally enable **Allow Google login** on a paid plan.
6. Add at least one test App User.
7. Configure Data Restriction on databases that must be personalized.
8. **Publish**, then open the live URL signed out — the login step should appear.
9. Complete a real OTP (or Google) login; also spot-check with View as.

## Login methods (shipping vs not)

| Available today                            | Not available / not ready                    |
| ------------------------------------------ | -------------------------------------------- |
| Email OTP (**Email Address + Login Code**) | Email + password (Coming soon in UI)         |
| Google login (paid; Integrations)          | Phone OTP in the current Login Method picker |
|                                            | Enterprise SSO (Okta / Auth0)                |
|                                            | Microsoft login                              |

Details: Auth and access.

## Allow users to sign up

Private apps can enable **Allow users to sign up** and optionally restrict **Allowed domains**. Empty domains = any email domain. See [Sign up](https://docs.notionapps.com/users/sign-up).

## Mixed public + private

Keep a public landing (often a Content Page) and require login for the rest:

* [Build a mixed public–private portal](https://docs.notionapps.com/guides/build-a-mixed-public-private-portal)
* [Per-screen public access](https://docs.notionapps.com/guides/per-screen-public-access)

## Related

* App Users
* [Google Login](https://docs.notionapps.com/integrations/google-login)
* [Video: Private apps](https://docs.notionapps.com/video-tutorials/private-apps)


# Create Users Database

A Users database in NotionApps is a database with two columns, namely Name and Email. To configure a Users database, please follow the steps below:

1. Create a database like below on Notion.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F29g0iYpGCBpdwr0Ty36P%2FScreenshot%202023-06-09%20at%206.27.15%20PM.png?alt=media&#x26;token=4bea706f-883d-4633-b54f-9f11b07b227a" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
If you created the Users database inside a Page that NotionApps already has access to, then you can skip steps 2-3.
{% endhint %}

2. Go to your app builder's database settings.
3. Click on "Manage Databases" and authorize NotionApps to the newly created Users database.
4. Link the newly created database to the application.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FNpf0EMz7G56vtvUVfjql%2FScreenshot%202023-06-09%20at%206.30.29%20PM.png?alt=media&#x26;token=5b4000a5-ffde-4d97-96ce-26d867c456dd" alt=""><figcaption></figcaption></figure>

5. Go to the "Users" tab in the left sidebar of the app settings.
6. Click on the "Select Users Database" button and configure your Users settings.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FeZwsGqYcHVsuhszcdtwP%2FScreenshot%202023-06-09%20at%206.34.42%20PM.png?alt=media&#x26;token=56f364d6-e4d1-4eb7-8934-60a87d610e15" alt=""><figcaption></figcaption></figure>

7. Press "Confirm"
8. Publish your application and all the email addresses in the Users database can access the application.

{% hint style="info" %}
The free plan is limited to only 2 users.
{% endhint %}


# Add/Remove users

You can add users to your application in one of two ways:

## #1 Add users from the app builder

To add users from the app builder, please follow these steps:

1. Navigate to your desired application's app builder
2. Click on the "Users" tab from the left sidebar
3. Click on the "+ Add User" button

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FvbMV48FImbH5jjHlWeI3%2FScreenshot%202024-07-31%20at%203.52.47%E2%80%AFPM.png?alt=media&#x26;token=388dca4e-078a-480c-8b26-e19f3b778757" alt=""><figcaption></figcaption></figure>

4. Enter the name and email address of the user
5. Click "Confirm"

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FPAuRxGclIiH5BvVA5rLt%2FScreenshot%202024-07-31%20at%203.53.14%E2%80%AFPM.png?alt=media&#x26;token=42f23b28-4ba2-431e-91d7-230cff7a96a1" alt=""><figcaption></figcaption></figure>

## #2 Modify users directly in the database

1. Open your application's users' database on Notion.
2. Add a new page/item with the user's name and email address.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F29g0iYpGCBpdwr0Ty36P%2FScreenshot%202023-06-09%20at%206.27.15%20PM.png?alt=media&#x26;token=4bea706f-883d-4633-b54f-9f11b07b227a" alt=""><figcaption></figcaption></figure>

3. Navigate back to NotionApps and click on the "Reload" button in the top bar.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FFCrarU33djJ500XNYdJ7%2FScreenshot%202023-06-09%20at%206.24.31%20PM.png?alt=media&#x26;token=3116b1bf-1d98-4ee9-87f8-29d20efdd70e" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Similarly to remove a user, you can remove them from your users' database and then click on "Reload".
{% endhint %}

Read more about how "Reload data" works →

To learn how to create a Users database for NotionApps, refer to the page below.


# App Users

**App Users** are people allowed to **sign in to a Private published app**. They are rows in the linked Notion **Users** database (plus the builder Users list) — not the same as maker collaborators.

## What makers do here

* See who can authenticate
* **+ Add User** (or add rows in Notion)
* Map name / email properties used for login and personalization
* Power [Data Restriction](https://docs.notionapps.com/users/data-restriction) and Pro+ user-property list filters
* Feed **View as** previews

## Add users

1. Connect a Users database ([Create Users Database](https://docs.notionapps.com/users/create-users-database)).
2. Add a row with a valid **email** matching your Login Method (email OTP and/or Google).
3. Confirm the person appears under **Users** in the builder (**+ Add User** if you add from the builder).
4. Publish if needed, then test login on the live URL.

Also see [Add/Remove users](https://docs.notionapps.com/users/add-remove-users).

## Remove users

Remove or stop listing the user so they can no longer authenticate. Revoking access does **not** delete their other Notion content rows.

## App Users vs collaborators

|                 | App Users           | Collaborators                    |
| --------------- | ------------------- | -------------------------------- |
| Surface         | Published app login | Builder / My Apps                |
| Purpose         | End-user access     | Edit screens, publish, configure |
| Source of truth | Users database      | NotionApps account / team access |

Canonical collaborator guide: Collaborators.

## Personalization

User properties power:

* [Data Restriction](https://docs.notionapps.com/users/data-restriction)
* [Filter lists by logged-in user properties](https://docs.notionapps.com/guides/filter-list-screens-by-logged-in-user-properties) (dynamic user filter entitlement / Pro+)
* Audience menus via Roles and navigation (Screen Visibility Logic)

## Tips

* Keep one clear email property — mismatched emails are the #1 login failure.
* After schema changes to the Users database, reload data from [Settings → Data](https://docs.notionapps.com/settings/data).
* Empty App Users list → fix Users database linking before debugging OTP.

## Related

* Auth and access
* View as any user
* [Sign up](https://docs.notionapps.com/users/sign-up)


# Data Restriction

Limit which Notion rows a signed-in user can access. Example: User A only sees items assigned to them.

## Quick summary

1. App must be **Private** with a linked Users database — [Private apps](https://docs.notionapps.com/users/private-apps).
2. Under **Users → Data Restriction**, **Add Restriction** on each database to personalize.
3. Prefer **Match Relation to Users Database**; alternatively **Match Property to Users Database** (Data Restriction Property = Logged-in User Property).
4. Publish, then verify with [View as](https://docs.notionapps.com/users/https://docs.notionapps.com/users/view-as-any-user) and a real login.
5. Optionally disable restriction on specific screens/components when a screen must show everyone (dangerous — that screen receives all rows).

## Detailed steps (with screenshots)

This document details how to manage your database restriction so that you can control what pages/items a logged-in user can access. For example, User A would see only the items they are assigned to and not anyone else's items.

{% embed url="<https://www.youtube.com/watch?v=ScfGGLRtxgc>" %}

To limit data based on a logged-in user, you need to first make the app private. Check out how to do so here, private-apps.

Once your app is private, please follow these steps:

1. Go to the "Users" tab in the left sidebar of your app builder.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FzpLAI3I5C3Frh3GEJwbT%2Fusers-tab%20copy.png?alt=media&#x26;token=c5974a58-88e6-460d-9a3b-5ce72c85b09a" alt=""><figcaption></figcaption></figure>

2. Under the "Data Restriction" section, click on "Add Restriction" next to the database whose data you want to limit.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F45N8Bt1lL2RLwzfnlJRs%2Fusers-tab-details%20copy.png?alt=media&#x26;token=a952db54-de0f-4a27-811b-fff75ba54146" alt=""><figcaption></figcaption></figure>

3. In the "Add Restriction" popup, select the "Restriction Method" from either a "Match Relation to Users Database" (a relation linked to your Users' database) or "Match Property to Users Database".
4. Select the property based on whose data you'd like to match with the logged-in user.

{% hint style="info" %}
It's preferred to filter data using the "Match Relation to Users Database" restriction method.
{% endhint %}

{% hint style="info" %}
If you select a rollup or formula property under the "Match Property to Users Database"" restriction method, newly added data assigned to the **logged-in user** will only reflect after 5 seconds in the application.\
This is because rollups and formulas are calculated on **Notion** and only after the calculation does our system get to know about the data inside those dynamic Notion properties.
{% endhint %}

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FdVoS5zjonbxopvF8qoto%2Fuser-relation%20copy.png?alt=media&#x26;token=ac0709ac-d34e-4bf6-b576-50eb8206e6ea" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FOoU8pRU0tsAhV0fNesoE%2FSCR-20241202-nvvs-5.png?alt=media&#x26;token=befd2fa4-7cff-44d6-bd23-0a27d822db01" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
When using the "Match Property to Users Database" method, think of the comparison to be like the example described below:\
I want my users to see only Projects where Projects.Role (Data Restriction Property) = User.Role (Logged-in User Property).
{% endhint %}

5. Click on "Confirm"
6. Publish the app

Now when a user logs in to the app, they will see only those pages/items of the database where their data restriction property matches OR their data is linked in the user relation property.

### Disable Data Restriction on Selected Screens/Components

Data Restriction works on a database level for the whole application. However, there are use cases where you'd want to disable the data restriction on certain screens or components.\
\
For example, in a Project Tracker app, your Users database might be restricted to ensure every user can see only their profile. However, the users should be able to see the name/details of the other users on the Projects screen.

To selectively disable data restriction on some screens/components,

1. Locate the "Data Restriction" section on your list screen or list components.
2. Disable the "Enabled for this screen/list" toggle.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FWN6be6VfkyaYMSST3csF%2FSCR-20250226-oace.png?alt=media&#x26;token=bc8b2ac7-6458-470e-8abb-14d2198f1d38" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FBfczYM5AX4RGhkJz2HDu%2FSCR-20250226-oany.png?alt=media&#x26;token=13c759ad-852e-4232-b325-bb821809acdd" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Similar option to disable data restriction is available in List and Page Selector components.
{% endhint %}

{% hint style="danger" %}
When you disable the data restriction for a particular screen/component, the application will receive all the data/rows corresponding to the database.
{% endhint %}

### When this app needs automation

Use the normal instructions on this page when users only need to view, add, or update data. Use automation when the app needs to do something after that data changes, such as submit for approval, notify a reviewer, route work to a queue, start a conversation, update workflow status, or show a recoverable failure.

Good next steps:

* Automation Overview explains the full maker journey.
* Start From a Wizard is the safest way to create a guided workflow.
* Create your first approval workflow walks through a complete approval setup.
* Native Automation Screens explains Decision, Work Queue, Notification Center, Conversation, Workflow Status, Exception Resolution, Automation Launcher, Linked App Exchange, and Operator Console.


# Sign up

For users to log in to your application, their email addresses must be part of the Users database. But for use cases like communities or in the case of very large organizations, adding every user's email address up front is difficult.

To solve this, you can enable the "Sign up" option for your apps. This way users whose email addresses are not in the Users database can also log in.

Follow these steps to enable "Sign up" for your apps:

1. Go to your app builder and click on the "Users" tab in the left sidebar.
2. In the Users tab, click on the "Change App Privacy" button.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2F5Qt2cIZYuK6u1PSf92ZO%2Fsignup-1.png?alt=media&#x26;token=c8e84955-dd4f-41cc-9bde-7c53eb64e24d" alt=""><figcaption></figcaption></figure>

3. Enable the "Allow users to sign up" toggle.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FRnE3Zhj6YBAnCZbdTukN%2Fsignup-2.png?alt=media&#x26;token=876367e4-2f0e-4b62-b6a2-423a0ffdf1f1" alt=""><figcaption></figcaption></figure>

4. (Optional step) Configure the email domains allowed to sign up to the app.

{% hint style="info" %}
Only users with an email domain matching one of the allowed domains are permitted to sign up.

For example, if your allowed domain is myorg.com, a user with the email <adam@myorg.com> can sign up, while a user with the email <adam@gmail.com> cannot.

When no allowed domains are specified, users with any email domain can sign up.
{% endhint %}

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FVtOgejv4NxRsS5eB5pTL%2Fsignup-allowed-domains.png?alt=media&#x26;token=182a8fd2-dfc4-4945-88d7-59dbe1c902c8" alt=""><figcaption></figcaption></figure>

5. Confirm your changes by clicking on the "Yes, go ahead" option of the confirmation popup.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FL2APisMsZYwINmOV5oLy%2Fsignup-confirm.png?alt=media&#x26;token=14d28333-16a0-4a46-8585-cd522ae3879a" alt=""><figcaption></figcaption></figure>

6. And finally, Publish your app to see the "Sign Up" option in your apps.

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2Fr78kOwyFIFh0blKeAJCd%2Fsignup-publish.png?alt=media&#x26;token=38e7403c-39bf-481d-b430-d128ae0e563c" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4233028229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5ZqDXcVVffWUqEIZVhmn%2Fuploads%2FwALjO41UeOejMfpf94zr%2FScreenshot%202024-07-19%20at%2012.05.47%E2%80%AFAM.png?alt=media&#x26;token=c9466021-0630-4909-9372-648795941f45" alt=""><figcaption></figcaption></figure>

This is our first step towards giving more ways for end-users to use NotionApps. If you have more requirements related to sign up or log in, please reach out to <help@notionapps.com> with your query.


# Auth and access

How people open your app — and which login methods actually ship today.

## Public vs Private

| Mode        | Who can open the link                             | Typical use                                           |
| ----------- | ------------------------------------------------- | ----------------------------------------------------- |
| **Public**  | Anyone with the URL                               | Marketing pages, open catalogs, Content Page landings |
| **Private** | Signed-in users only (for protected screens/data) | Client portals, internal tools, personalized data     |

Configure under **Users** in the builder (**Is the app public or private?**). Full checklist: Private apps.

## Login methods (shipping truth)

Configured when the app is Private. In the Users linking UI, **Login Method** currently offers:

| Method (builder label)                     | Status                                 | Notes                                                              |
| ------------------------------------------ | -------------------------------------- | ------------------------------------------------------------------ |
| **Email Address + Login Code** (email OTP) | Available                              | Primary supported passwordless login                               |
| **Email Address + Password**               | Coming soon                            | Visible in the picker but not selectable for production use yet    |
| **Allow Google login** (additional auth)   | Available on paid plans                | Toggle under privacy / OAuth config; Free plan blocks integrations |
| Phone OTP                                  | Not in the current Login Method picker | Exists in older types/docs — do not plan apps around it today      |
| Enterprise SSO (Okta / Auth0)              | Not available                          | Empty Integrations stubs are unpublished; do not expect SSO        |
| Microsoft login                            | Not available                          | —                                                                  |

Always treat Crisp / Intercom / SSO stubs as **not available**. See [Integrations](https://docs.notionapps.com/integrations/introduction) and [Google Login](https://docs.notionapps.com/integrations/google-login).

## Guests vs signed-in navigation

Screens can show or hide based on whether the visitor is signed in:

* **Show in navigation for guests**
* **Show in navigation when signed in**
* [Screen Navigation Visibility](https://docs.notionapps.com/basics/screen-navigation-visibility) / visibility logic on logged-in user fields

Mixed portals: [Build a mixed public–private portal](https://docs.notionapps.com/guides/build-a-mixed-public-private-portal) · [Per-screen public access](https://docs.notionapps.com/guides/per-screen-public-access).

## Users database fields makers map

When linking a Users database you typically map:

* **Users Database**
* **Login Method**
* **User Name Property**
* **Email Address Property** (for email OTP / Google)

## Personalization stack

Private apps usually need:

1. Users database — [Create Users Database](https://docs.notionapps.com/users/create-users-database)
2. App Users
3. [Data Restriction](https://docs.notionapps.com/users/data-restriction)
4. Optional [Sign up](https://docs.notionapps.com/users/sign-up) + allowed domains
5. Optional audience menus via Roles and navigation
6. Verify with View as any user **and** a real published login

## Related

* Private apps
* Collaborators (makers who edit — not end users)
* [Plans and entitlements](https://docs.notionapps.com/plans-and-entitlements) (Google login / paid gates)


# Roles and navigation

Give different signed-in people different menus — without maintaining separate apps.

NotionApps does **not** ship a separate “multi-role navigation editor” with many named role trees. Audience menus are built from **navigation visibility** and **Screen Visibility Logic** on logged-in user fields (for example a **Role** property on the Users database).

## When you need this

* Managers see Approvals; staff see Submit forms
* Clients see a portal subset; internals see Operator tools
* One app URL, multiple audiences

## Typical setup

1. Add a property on the Users database that distinguishes audiences (commonly `Role`, `Type`, or `Plan`).
2. Ensure every App User has the correct value.
3. For each screen, configure visibility:
   * Guest vs signed-in navigation toggles
   * **Screen Visibility Logic** using logged-in user fields (example: Role is Manager)
4. Optionally organize desktop items with [Navigation Groups](https://docs.notionapps.com/customize-app/navigation-groups) and [App Navigation](https://docs.notionapps.com/customize-app/app-navigation).
5. Publish, then verify with View as any user **and** a real login for each audience.

## Screen Navigation Visibility

Deep reference: [Screen Navigation Visibility](https://docs.notionapps.com/basics/screen-navigation-visibility).

## Automation “Role” fields

Approval / Messaging wizards may ask for a **Role** field on the Users sheet for routing audiences. That is an Automation configuration concern — related, but not the same control as app chrome visibility. See [Automation](https://docs.notionapps.com/automation) and [Configure app audience and notification prefs](https://docs.notionapps.com/guides/configure-app-audience-and-notification-prefs).

## Related

* App Users
* Auth and access
* [Per-screen public access](https://docs.notionapps.com/guides/per-screen-public-access)


# View as any user

**View as** (builder top bar) lets makers preview the app as a specific App User without signing out of the builder.

## Where to find it

Builder top bar, near **Publish**. Default state is effectively **Any user** / maker view until you pick someone.

## Requirements

* App must be **Private**
* Target person must exist as an App User
* Personalized data / visibility only refreshes usefully after Users + Data Restriction are configured

## What it is for

* Confirm Screen Visibility Logic / audience menus
* Confirm [Data Restriction](https://docs.notionapps.com/users/data-restriction) row filtering
* Spot-check Pro+ logged-in user property list filters
* Sanity-check private screens a user should not see

## Steps

1. Open **View as** and search for the App User.
2. Use phone + desktop preview to click navigation and open records.
3. Switch back to maker / any-user view when finished.
4. Still run one **real published login** before handing the app to customers — View as is a preview, not a full auth substitute.

## Tips

* Empty picker → fix Users database linking / App Users first.
* If records look wrong, reload data ([Settings → Data](https://docs.notionapps.com/settings/data)) then try View as again.
* Combine with Roles and navigation.

## Related

* Private apps
* App Users


# Collaborators (edit the app)

Collaborators are people who can **open the app in the builder** and edit it. They are **not** App Users.

## App Users vs collaborators

|                 | App Users                   | Collaborators                              |
| --------------- | --------------------------- | ------------------------------------------ |
| Where they work | Published app               | Builder / My Apps                          |
| Purpose         | Sign in as end users        | Design screens, publish, configure Users   |
| Configured via  | Users database / Users rail | NotionApps account / workspace team access |

## How maker access works today

The builder **Share** control primarily copies/opens the **published app URL** for end users — it is not an “invite editor” dialog.

To let another maker edit:

1. They need a NotionApps maker login.
2. Grant them access to the workspace/app through your NotionApps team / account collaboration model (as available on your plan).
3. Have them open **My Apps** and confirm the app appears.
4. Agree who publishes — simultaneous publishes can hit version conflicts.

If an older FAQ still answers “How can I add collaborators…?”, prefer this page as the canonical explanation: [FAQ entry](https://docs.notionapps.com/frequently-asked-questions/how-can-i-add-collaborators-to-edit-the-apps).

## Related

* App Users
* [Manage Workspaces](https://docs.notionapps.com/basics/manage-workspaces)
* [Publish & share](https://docs.notionapps.com/publish-and-share)


# Settings

Open **Settings** in the builder left rail to configure the app as a whole (not a single screen).

| Pane                                         | What it controls                                 |
| -------------------------------------------- | ------------------------------------------------ |
| [General](/settings/general)                 | Name, description, URI, workspace, custom domain |
| [Appearance](/settings/appearance)           | Theme, icon, fonts, custom CSS/JS                |
| [Comments](/settings/comments)               | Moderation queue and pinned comments             |
| [Version History](/settings/version-history) | Published versions and revert                    |
| [Data](/settings/data)                       | Automatic sync and end-user refresh              |
| [Advanced](/settings/advanced)               | Search engine indexing and mobile-on-desktop     |

Most Settings changes need **Publish** before end users see them.


# Settings → General

App identity and hosting — product pane in the Settings container.

## Controls

| Control       | Purpose                                            |
| ------------- | -------------------------------------------------- |
| App name      | Label in the builder and often in published chrome |
| Description   | Optional app summary                               |
| App URI       | `*.notionapps.com` subdomain users open            |
| Workspace     | Notion workspace / connection context              |
| Custom domain | Map your own domain (**paid**)                     |

## Maker checklist

1. Pick a stable URI before you share widely — changing it breaks old links.
2. For customer-facing brands, configure custom domain DNS per [Custom Domain](https://docs.notionapps.com/screens-and-components/custom-domain).
3. Confirm the correct Notion workspace is linked ([Manage Workspaces](https://docs.notionapps.com/workspace-and-account/manage-workspaces)).
4. Publish after URI or domain changes; test in an incognito window.

## Related

* [Publish & share](https://docs.notionapps.com/publish-and-share)
* [App Icon, Colour, URL](https://docs.notionapps.com/screens-and-components/app-icon-colour-url)
* [Plans and entitlements](https://docs.notionapps.com/plans-and-entitlements)
* Troubleshooting: [too many redirects](https://docs.notionapps.com/troubleshooting/i-am-using-a-custom-domain-but-i-see-a-too-many-redirects-error.-how-can-i-resolve-it)


# Settings → Appearance

Theme, icon, fonts, and code — product subtitle: **Theme, icon, fonts, and code**.

## Controls

| Area                          | What you can set                           |
| ----------------------------- | ------------------------------------------ |
| Primary color / theme presets | Brand color used across chrome and accents |
| App icon                      | Builder + PWA / home-screen installs       |
| Custom Font                   | When entitlement allows                    |
| Custom CSS                    | Advanced styling (entitlement-gated)       |
| Custom JavaScript             | Advanced behavior (entitlement-gated)      |

## Plan / entitlement notes

Custom Font / CSS / JS require **custom code entitlement** or Premium+ fallback. See [Plans and entitlements](https://docs.notionapps.com/plans-and-entitlements).

If the controls are missing or show an upgrade prompt, confirm entitlement before assuming a builder bug.

## Related guides

* [Polish your published app look and layout](https://docs.notionapps.com/how-to-guides/polish-your-published-app-look-and-layout)
* [Custom CSS Guide](https://docs.notionapps.com/how-to-guides/custom-css-guide)
* [Custom Font Guide](https://docs.notionapps.com/how-to-guides/custom-font-guide)
* [Custom Javascript Guide](https://docs.notionapps.com/how-to-guides/custom-javascript-guide)
* [Add to Home Screen](https://docs.notionapps.com/workspace-and-account/add-to-home-screen)

## Tip

Change theme + icon first; add CSS/JS only after the default chrome is close. Publish and hard-refresh the live app when validating CSS.


# Settings → Comments

Moderate end-user comments — product subtitle: **Moderation queue and pinned comments**.

## What you do here

* Filter comments by status: `pending`, `approved`, `disapproved`, `hidden`, `deleted` (plus schedule filters when used)
* Actions: **approve**, **disapprove**, **hide**, **edit**, **schedule**, **pin**, **unpin**
* Pin up to **three** top-level **approved** comments (pinned order appears before other approved comments)

## Screen setup vs Settings

1. Add the **Comments** component on a Details (or similar) screen.
2. Configure Behaviour (allow comments/replies/anonymous, guest name/email, max length 1–5000, sort, collapsed start, show pending to author, etc.).
3. Publish so end users can post.
4. Moderate here in **Settings → Comments**.

Component reference: [Comments](https://docs.notionapps.com/screens-and-components/type-of-components/comments).

## Tips

* Moderation does not replace publishing after you add the component.
* Pair “show users their own pending comments” with a clear moderation SLA.
* Visibility windows (schedule) hide comments outside the window without deleting them.


# Settings → Version History

Published versions and revert — product subtitle: **Published versions and revert**.

## What you can do

* See recent **published** versions
* Revert the live app to an older published version (plan-gated; product copy: Pro / Premium / Enterprise)
* Distinguish from builder **Recovery History** (draft/builder snapshots under Databases / Workspace docs) — different tool

## When to revert

* A publish shipped broken navigation or screens
* You need the last known-good customer URL quickly

## After revert

1. Open the live URL and verify.
2. Reconcile the builder with the restored publish (builder draft may still contain newer edits).
3. Publish again when ready.

## Related

* [Revert Version History](https://docs.notionapps.com/workspace-and-account/revert-version-history)
* [Recovery History](https://docs.notionapps.com/workspace-and-account/recovery-history)
* [Plans and entitlements](https://docs.notionapps.com/plans-and-entitlements)


# Settings → Data

Sync and reload controls — product subtitle: **Sync and reload controls**.

## Controls in this pane

| Control                     | Purpose                                                           |
| --------------------------- | ----------------------------------------------------------------- |
| **Automatic sync**          | Keep Notion data fresher without a manual reload (**paid**)       |
| **End-user refresh button** | Let signed-in users refresh from the published app (Private apps) |

## Databases rail vs Settings → Data

For linking databases and manual reload workflows, use the **Databases** rail docs:

* [Databases](https://docs.notionapps.com/databases)
* [Reload and sync](https://docs.notionapps.com/databases/reload-and-sync)

Canonical reload how-tos (full detail kept):

* [Reload Data (from app builder)](https://docs.notionapps.com/workspace-and-account/reload-data-from-app-builder)
* [Reload Data (from app)](https://docs.notionapps.com/workspace-and-account/reload-data-from-app)
* [Automatic Reload Data](https://docs.notionapps.com/workspace-and-account/automatic-reload-data)

## When to reload manually

* Added or renamed a Notion property
* Status / select options or colors changed
* Relation or rollup looks stale
* Users database schema changed

## Troubleshooting

* [My data has stopped syncing](https://docs.notionapps.com/troubleshooting/my-data-has-stopped-syncing.-what-could-be-the-issue)
* [I can't see my databases/pages](https://docs.notionapps.com/troubleshooting/i-cant-see-my-databases-pages-inside-notionapps.-how-do-i-resolve-it)


# Settings → Advanced

Search and device behavior — product subtitle: **Search and device behavior**.

## Controls

| Control                                                             | Purpose                                                                |
| ------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| **Search Engine Indexing**                                          | Allow or discourage public search-engine indexing of the published app |
| **Show mobile view on desktop** (enforce mobile on large viewports) | Prefer the mobile shell even on desktop widths                         |

## When to change these

* **Indexing off** for internal tools that are public at the URL layer by accident
* **Mobile on desktop** when your primary UX is phone-first and the desktop shell confuses demos

## Related

* [Types of Screens](https://docs.notionapps.com/screens-and-components/types-of-screens) (Search / chrome)
* [Desktop View](https://docs.notionapps.com/screens-and-components/desktop-view)

## Tip

Change one Advanced toggle at a time, publish, and verify — these settings affect the whole app shell.


# Automation

## Automation

### Automation

#### Automation

Automation turns a normal NotionApps app into a working business process. A user can submit a request, route it to the right person, notify a team, collect a decision, start a conversation, update a status, send work to another app, and recover from failures without asking an administrator to inspect hidden records.

The most important idea is this: automation is not finished when a workflow exists. Automation is finished when a real user can start it, the right recipient can see it, the app explains what happened, and the maker can test and repair the setup from visible screens.

![Automation Home showing wizard cards for approvals, messaging, routing, recovery, and readiness.](https://content.gitbook.com/content/5ZqDXcVVffWUqEIZVhmn/blobs/DxhQc0b6wKhbev9QV4Ax/assets/automation-wizard-e2e/00-automation-home-wizard-catalog.png)

Latest builder behavior: outcome-first automation

Automation now starts from the maker's business outcome instead of asking the maker to choose low-level workflow or messaging objects first.

A maker can begin with a sentence such as:

```
When an employee submits a timecard, route it to their supervisor, open a private conversation, and notify payroll after approval.
```

NotionApps then helps the maker move through the setup in plain language:

1. **Describe the result.** The maker writes what should happen in normal business language.
2. **Use app-aware suggestions.** The builder suggests screens, forms, controls, workflows, channels, data sources, and other objects from the current application.
3. **Review what NotionApps will build.** The builder explains whether the result will use Workflow, Messaging, Approval Management, or a combination.
4. **Prove the setup.** Proof steps show whether the recipe is saved, previewed, generated, and visible in Activity.
5. **Fix the next blocker.** If something is missing, the builder points the maker to the next action, such as fixing access, completing setup, running preview, or opening Activity.

The important product promise is:

```
Maker describes the business outcome.
NotionApps assembles the engine.
Maker reviews, tests, and publishes.
```

Advanced objects still exist because they make the app supportable. Channels, contracts, workflow steps, publishers, subscribers, approval routes, and activity logs remain available for advanced makers and support teams. The difference is that normal makers no longer need to start there.*Start on Automation Home. Pick the business outcome first, then let the wizard connect the trigger, recipient, destination, message, and validation path.*

**The recommended learning path**

Read the automation docs in this order when you are new or when you are handing the app to a customer:

1. Automation Overview - learn what automation does and how the pieces fit together.
2. Automation Glossary - learn the words used in the builder, in plain language.
3. Start From a Wizard - use guided setup instead of wiring every piece by hand.
4. Create your first approval workflow - build one complete approval process from a normal data page.
5. Builder Controls Visual Guide - match each visible control to what it does.
6. Approval Workflows - build supervisor, finance, manager, or policy approval flows.
7. Messaging and Notifications - send useful messages and alerts as part of the process.
8. Native Automation Screens - choose the screen users and makers need to see work, status, messages, or failures.
9. Testing, Preflight, and Repair - prove the process before publishing.
10. Troubleshooting Automation - diagnose the common failure cases from the user interface.
11. Security and Permissions - make sure each role can see only what it should see.

**The five pieces every automation needs**

Every working automation has five visible pieces:

| Piece         | Plain-language meaning                                                              | Example                                                                                                          |
| ------------- | ----------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| Trigger       | The thing that starts the automation. The builder may label this When this happens. | A user clicks Submit on a purchase request.                                                                      |
| Source record | The record the automation is about.                                                 | The purchase request with amount, vendor, requester, and reason.                                                 |
| Recipient     | The person, role, or team that receives the work or message.                        | Supervisor, Finance approver, Technician, Request owner.                                                         |
| Destination   | The screen or delivery place where the result appears.                              | Decision, Work Queue, Conversation, Notification Center, Workflow Status.                                        |
| Proof         | The visible result that tells you it worked.                                        | The item appears for the reviewer, a status changes, a message is delivered, or an exception appears with a fix. |

If one of those pieces is missing, the workflow may technically exist, but users will experience it as broken.

**Pick the right automation path**

| If you need to...                          | Start here                          | User-facing screen to expect                        |
| ------------------------------------------ | ----------------------------------- | --------------------------------------------------- |
| Ask someone to approve or reject a request | Create your first approval workflow | Decision, optionally Work Queue and Workflow Status |
| Send a message, reminder, or announcement  | Messaging and Notifications         | Notification Center or Conversation                 |
| Assign operational work to a team          | Native Automation Screens           | Work Queue                                          |
| Show a requester what happened             | Native Automation Screens           | Workflow Status or source record status             |
| Let users intentionally start a process    | Start From a Wizard                 | Automation Launcher                                 |
| Send data to another app                   | Webhooks and Integrations           | Linked App Exchange or webhook delivery status      |
| Find and repair failures                   | Testing, Preflight, and Repair      | Exception Resolution and validation results         |

**Important naming note**

You may hear people say review queue. In the builder, the real native automation screen names are the nine screen types documented in Automation Screens. For approvals, the inbox experience is usually made from a Decision screen, a Work Queue when a team handles many requests, and Workflow Status so the requester can see progress. Use those actual screen names when configuring or troubleshooting.

**Definition of done**

A customer-ready automation passes this test: a normal user can start it from the app, the correct recipient can find and act on it, the requester can see the result, validation is clean, and failures appear in Exception Resolution with a clear next step.

### Latest builder behavior: outcome-first automation

Automation now starts with the maker's intended business outcome. The maker can describe the result they want, and NotionApps guides them through the objects needed to make it real: workflow routes, messaging routes, approval routes, screen bindings, proof steps, and repair checks.

Example outcome:

> When an employee submits a timecard, route it to their supervisor, open a private conversation, and notify payroll after approval.

Use this pattern when building new automation:

1. Describe the result in plain language.
2. Use app-aware suggestions for screens, forms, controls, users, roles, channels, and payload values.
3. Review what NotionApps will build.
4. Save or generate the route.
5. Run preview, preflight, or guided testing.
6. Fix the next blocker shown by the builder.
7. Publish only after the flow works for the real personas.

The goal is simple: the maker describes the business outcome, NotionApps assembles the engine, and the maker proves the result from the app experience.


# Automation Overview

## Automation Overview

### Automation Overview

Automation is the part of NotionApps that moves work forward after a user takes an action. It connects data pages, buttons, roles, messages, status changes, and native automation screens into one business process.

A data page answers: what records can users view, add, or edit? Automation answers: what should happen next?

![Automation Home with guided setup cards.](https://content.gitbook.com/content/5ZqDXcVVffWUqEIZVhmn/blobs/DxhQc0b6wKhbev9QV4Ax/assets/automation-wizard-e2e/00-automation-home-wizard-catalog.png)

*Automation Home is the safest starting point because each wizard is organized around a business outcome.*

#### What automation can do

Automation can help you build processes such as:

* Purchase approvals where an employee submits a request and a supervisor makes a decision.
* Timecard approvals where an employee submits hours and a manager approves or requests changes.
* Inventory exception handling where a count issue routes to an operations queue.
* Customer service handoffs where a new request creates work, sends a message, and tracks status.
* Notifications where users receive updates when a record changes.
* Linked app handoffs where one app sends approved work to another app.

#### How the pieces fit together

Think of automation as a sentence:

When this happens, use this record, send this work to this person, show it on this screen, send this message, update this status, and show this failure if something goes wrong.

In builder language, that sentence becomes:

| Builder concept              | Plain-language meaning                                                                                                                     |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| Trigger or When this happens | The exact user action or data event that starts the process.                                                                               |
| Workflow                     | The saved route that decides what happens after the trigger.                                                                               |
| Recipient                    | The role, team, owner, requester, reviewer, or field value that receives work or a message.                                                |
| Destination                  | The screen or external place where the result appears.                                                                                     |
| Message                      | The words the user or recipient sees. Good messages explain the business event, not the internal workflow.                                 |
| Validation                   | A check that tells the maker whether required pieces are connected.                                                                        |
| Repair                       | A guided fix for missing generated pieces. Repair should never replace business choices like reviewer or status without the maker knowing. |
| Exception                    | A visible failure record that explains what needs attention.                                                                               |

#### The maker journey

A maker usually builds automation in this order:

1. Prepare the data page. Make sure the app has the fields users and reviewers need.
2. Decide the starting event. For approvals, this is usually Submit, not a manual database edit.
3. Choose a wizard. Use the wizard that matches the business outcome.
4. Choose the recipient. Prefer roles or teams over one named person.
5. Choose the destination screen. Use the actual native screen name: Decision, Work Queue, Conversation, Notification Center, Workflow Status, Exception Resolution, Automation Launcher, Linked App Exchange, or Operator Console.
6. Write the messages. The recipient should know what happened and what to do.
7. Run validation.
8. Create a test request or preview the real user action.
9. Test as each role.
10. Publish only after the visible app result works.

#### What good automation feels like

Good automation does not require a maker to explain hidden behavior. The app itself should show what happened. A requester sees Submitted or Waiting for review. A reviewer sees the item on a Decision screen. A team sees work in a Work Queue. A user receives a Notification Center item or Conversation message. A maker sees failed routes in Exception Resolution.

If the only proof is a backend record, the setup is not self-service yet.

#### Next step

If this is your first automation, read Automation Glossary, then build Create your first approval workflow\.Outcome-first builder model

The current Automation builder is designed so a maker can begin with a business outcome instead of a technical object. A maker should be able to say something like:

> When a stock count is submitted below the expected quantity, alert operations, create an exception review, and let the team discuss the issue.

NotionApps then helps assemble the working pieces behind that outcome. The maker still reviews and publishes the result, but the first experience should feel like guided setup, not like configuring infrastructure.

A good automation setup follows this path:

1. Describe the business outcome.
2. Choose the source screen, form, role, or data object from app-aware suggestions.
3. Review what NotionApps will build: workflow route, message route, approval route, screen binding, or guided test.
4. Save the generated setup.
5. Run the preview or guided test.
6. Fix the next visible blocker if readiness is not green.
7. Publish only after the user journey works for the right persona.

For makers, the important promise is simple: describe what should happen, let NotionApps assemble the engine, then test the result from the app experience.Outcome-first builder model

The current Automation builder is designed so a maker can begin with a business outcome instead of a technical object. A maker should be able to say something like:

> When a stock count is submitted below the expected quantity, alert operations, create an exception review, and let the team discuss the issue.

NotionApps then helps assemble the working pieces behind that outcome. The maker still reviews and publishes the result, but the first experience should feel like guided setup, not like configuring infrastructure.

A good automation setup follows this path:

1. Describe the business outcome.
2. Choose the source screen, form, role, or data object from app-aware suggestions.
3. Review what NotionApps will build: workflow route, message route, approval route, screen binding, or guided test.
4. Save the generated setup.
5. Run the preview or guided test.
6. Fix the next visible blocker if readiness is not green.
7. Publish only after the user journey works for the right persona.

For makers, the important promise is simple: describe what should happen, let NotionApps assemble the engine, then test the result from the app experience.

### Outcome-first builder model

The current Automation builder is designed so a maker can begin with a business outcome instead of a technical object. A maker should be able to say something like:

> When a stock count is submitted below the expected quantity, alert operations, create an exception review, and let the team discuss the issue.

NotionApps then helps assemble the working pieces behind that outcome. The maker still reviews and publishes the result, but the first experience should feel like guided setup, not like configuring infrastructure.

A good automation setup follows this path:

1. Describe the business outcome.
2. Choose the source screen, form, role, or data object from app-aware suggestions.
3. Review what NotionApps will build: workflow route, message route, approval route, screen binding, or guided test.
4. Save the generated setup.
5. Run the preview or guided test.
6. Fix the next visible blocker if readiness is not green.
7. Publish only after the user journey works for the right persona.

For makers, the important promise is simple: describe what should happen, let NotionApps assemble the engine, then test the result from the app experience.


# Automation hub map

When your plan includes Workflow, Messaging, and/or Approval entitlements, the builder left rail shows **one Automation entry** — not separate Workflows / Messaging icons.

Click **Automation** to open the Automation hub. Inside the hub, makers typically move between these areas:

| Hub area      | What makers do there                              |
| ------------- | ------------------------------------------------- |
| **Home**      | Orientation and entry points into automation work |
| **Recipes**   | Start from guided templates / wizards             |
| **Workflows** | Build and edit workflow definitions               |
| **Messaging** | Routes, notifications, messaging configuration    |
| **Route map** | See how work moves across routes / audiences      |
| **Debugging** | Inspect failures and repair paths                 |
| **Access**    | Who can operate automation surfaces               |

Exact labels can evolve; if an area is missing, check [Plans and entitlements](https://docs.notionapps.com/plans-and-entitlements) before assuming a product bug.

## Rail truth (important)

| What you may have read                                 | Product truth                                                                                          |
| ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ |
| “Automation / Workflows / Messaging icons on the rail” | **One Automation rail item** when any automation entitlement is builder-enabled                        |
| “Approval on ⇒ Decision + Work Queue screens”          | **Not sufficient** — Decision needs `decision_screens_enabled`; Work Queue needs `work_queues_enabled` |
| My Queue / Activity always available                   | Require an automation entitlement (Workflow, Messaging, or Approval)                                   |

## Canonical maker path

1. [Automation Overview](https://docs.notionapps.com/automation/automation-overview)
2. [Start From a Wizard](https://docs.notionapps.com/automation/start-from-a-wizard) / Recipes
3. Build Workflows / Messaging as needed
4. Add native screens from [Native Automation screens index](https://docs.notionapps.com/automation/native-automation-screens-index) (screen reference lives under Screens → Types of Screens)
5. [Testing, Preflight, and Repair](https://docs.notionapps.com/automation/testing-preflight-and-repair)
6. [Troubleshooting Automation](https://docs.notionapps.com/automation/troubleshooting-automation)

## Related

* [Find your way around the builder nav rail](https://docs.notionapps.com/how-to-guides/find-your-way-around-the-builder-nav-rail)
* [Builder → Automate](https://docs.notionapps.com/builder/automate)


# Automation Glossary

## Automation Glossary

### Automation Glossary

This glossary explains the words you will see in automation setup. Use it when a builder control or validation message feels technical.

#### Action

An action is something the app does. Examples are send a message, route a request, update a status, create work for a reviewer, or send data to another app.

#### Automation

Automation is the overall feature that makes the app do work after something happens. It is the bridge between a user action and the visible result.

#### Automation Launcher

Automation Launcher is a native screen type. Use it when users should intentionally start a process, such as Start onboarding, Request approval, Send to finance, or Escalate issue.

#### Conversation

Conversation is a native screen type for discussion around work. Use it when users need to ask questions, request clarification, or keep a message thread attached to the process.

#### Decision

Decision is a native screen type for reviewing one item and choosing an outcome. Use it when someone must approve, reject, request changes, escalate, or complete a review.

#### Destination

Destination means where the result appears. A destination can be a Decision screen, Work Queue, Conversation, Notification Center, Workflow Status screen, Linked App Exchange, webhook delivery, or another user-facing place.

#### Exception

An exception is a visible failure that needs attention. Examples include missing reviewer, missing required field, failed message delivery, permission problem, or webhook failure. Exception Resolution is the screen where makers and operators should diagnose and fix these problems.

#### Notification Center

Notification Center is a native screen type that shows alerts, reminders, announcements, or status updates. Use it when users need to be told something happened but do not need a full conversation.

#### Preflight

Preflight is the final readiness check before publishing or demoing. It should answer: can a real user start this, can the right person see it, can the maker diagnose it, and can failures be repaired?

#### Recipient

A recipient is the person, role, team, or field-selected user that receives work or a message. Use roles and teams when possible. Named people are harder to maintain when a customer adds or removes staff.

#### Repair

Repair is a guided fix for generated setup that is missing or disconnected. Repair is useful for reconnecting a generated screen, message route, approval route, or exception path. Repair is not a substitute for choosing the right business trigger, reviewer, status, or message.

#### Submit button

A submit button is the user-facing button that starts many workflows. It must be connected to the trigger. If the button only saves the record and the workflow listens for something else, the user will think automation is broken.

#### Trigger / When this happens

A trigger is the exact event that starts automation. The builder may label it When this happens. Examples are button click, form submission, status change, manual launcher action, incoming webhook, or scheduled event.

#### Validation

Validation checks whether the setup is connected. A blocker means do not publish. A warning means read the message, decide whether it matters, then test the visible result.

#### Work Queue

Work Queue is a native screen type for lists of work that need to be claimed, assigned, prioritized, or completed. Use it when a team handles multiple items, not just one reviewer making one decision.

#### Workflow

A workflow is the saved route. It connects the trigger to actions, recipients, messages, destinations, status updates, and exception handling.


# Start From a Wizard

## Start From a Wizard

### Start From a Wizard

Use a wizard when you know the business result you want but do not want to assemble every workflow piece by hand. Wizards are the recommended starting point for most makers because they keep the trigger, recipient, destination screen, message, validation, and exception path together.

![Approval workflow wizard card.](https://content.gitbook.com/content/5ZqDXcVVffWUqEIZVhmn/blobs/onRLcwcwMS5FgTSUGvNN/assets/automation-wizard-e2e/02-approval-workflow-card.png)

*Choose the card by business outcome. For approvals, the outcome is that someone can review and decide.*

#### Why wizards matter

Many automation problems happen because one piece is created without the others. A maker creates a workflow but not a visible screen. A button saves a record but does not start the route. A message is sent but does not link to the item. A reviewer exists but does not have permission. A wizard prevents that by asking for the pieces together.

#### Choose the right wizard

| Business situation                               | Wizard to start with                | Expected screen or result                        |
| ------------------------------------------------ | ----------------------------------- | ------------------------------------------------ |
| Someone must approve, reject, or request changes | Approval workflow                   | Decision, plus Workflow Status for the requester |
| A team needs to claim or complete work           | Queue or dispatch workflow          | Work Queue                                       |
| A user needs a notification or reminder          | Notification route                  | Notification Center                              |
| Two people need to discuss a record              | Conversation or clarification route | Conversation                                     |
| A user needs to manually start a process         | Launcher workflow                   | Automation Launcher                              |
| Work must move to another app                    | Linked app handoff or webhook route | Linked App Exchange or webhook delivery result   |
| A route can fail and needs recovery              | Exception recovery                  | Exception Resolution                             |
| You are preparing to publish                     | Readiness and repair                | Validation and preflight results                 |

#### Step-by-step setup

1. Open the app in the builder.
2. Open Automation from the builder navigation.
3. Read the wizard card titles as business outcomes, not technical objects.
4. Choose the wizard that matches what the user expects to happen.
5. Fill in When this happens. This must be the exact button, form, status change, launcher, or webhook the user will use.
6. Choose the source page or source record type.
7. Choose the recipient. Prefer role, team, owner, requester, reviewer, or a selected user field instead of one hard-coded person.
8. Choose the destination. Use the actual screen name from the builder: Decision, Work Queue, Conversation, Notification Center, Workflow Status, Exception Resolution, Automation Launcher, Linked App Exchange, or Operator Console.
9. Write the recipient message in business language.
10. Write the requester result in business language.
11. Save the wizard.
12. Run validation.
13. Fix blockers.
14. Create a test request or preview the real user action.
15. Confirm the result appears on the destination screen.

![Approval workflow setup destination controls.](https://content.gitbook.com/content/5ZqDXcVVffWUqEIZVhmn/blobs/rejdqrxvGQLyYof5HL31/assets/automation-wizard-e2e/02-approval-workflow-destination.png)

*The setup screen should make the trigger, destination, recipient, and visible result clear before you save.*

#### How to know the wizard worked

A wizard worked when the app has visible proof. For approvals, the reviewer can open a Decision screen and act on the request. For queues, the item appears in Work Queue. For notifications, the recipient sees the message in Notification Center. For conversations, the thread appears. For failures, Exception Resolution explains what needs attention.

#### Common wizard mistakes

| Mistake                                                | What the user sees                                  | Fix                                                                   |
| ------------------------------------------------------ | --------------------------------------------------- | --------------------------------------------------------------------- |
| Choosing a status value but not the real submit button | Submit saves the record, but nothing routes.        | Reopen When this happens and choose the actual user action.           |
| Choosing a named recipient who later leaves            | Requests stop routing or route to the wrong person. | Use a role, team, owner, requester, reviewer, or selected user field. |
| Skipping the destination screen                        | The workflow runs but nobody can find the work.     | Generate or select the right native automation screen.                |
| Testing only as owner                                  | Owner sees everything; customer roles see nothing.  | Preview as requester and recipient.                                   |
| Running repair without retesting                       | Setup says repaired, but the demo still fails.      | Always create a fresh test request after repair.                      |

#### Next step

Build Create your first approval workflow if you want a complete example from data page to working review\.Current wizard behavior: NotionApps assembles the route

The wizard is now designed to feel like a guided conversation with the maker. The maker should not need to know whether the final setup requires a workflow, a message route, an approval route, a publisher, a subscriber, a contract, or a notification screen before they begin.

Use the wizard this way:

1. **Tell NotionApps what should happen.** Start with the business result, such as "notify the right person," "request approval," "broadcast an announcement," or "start a conversation around this record."
2. **Answer the numbered questions.** The wizard asks for the source, destination, audience, data, timing, or recipient only when those details are needed.
3. **Use context-aware choices.** When a field asks for a screen, form, workflow, data source, or channel, start typing the friendly name. The builder uses the current application context instead of asking the maker to remember raw IDs.
4. **Review the route explanation.** The wizard explains what NotionApps will build in plain language before advanced objects are generated.
5. **Build and preview.** NotionApps creates the recipe or route objects, then asks the maker to run preview or guided testing before publishing live.
6. **Verify Activity.** After the maker tests as a real app user, Activity should show the accepted message, workflow run, waiting approval, delivered announcement, or setup blocker.

A good wizard result should answer four questions for the maker:

| Question                 | What the maker should see                                                                        |
| ------------------------ | ------------------------------------------------------------------------------------------------ |
| What starts this?        | The selected screen, form, button, workflow event, message, or external trigger.                 |
| Who receives it?         | The reviewer, role, user, app audience, webhook, workflow, screen, or linked app.                |
| What will happen?        | The plain-language action NotionApps will perform.                                               |
| How do I know it worked? | A proof step in Activity, a visible screen update, a delivered message, or a guided test result. |

If the wizard shows a blocker, follow the **Fix this next** action first. It is intentionally ordered so makers solve setup problems before they publish.Current wizard behavior: NotionApps assembles the route

The wizard is designed to behave like a guided conversation. The maker should not need to remember IDs, channels, screen names, workflow names, or payload paths before they can begin.

Use the wizard this way:

1. Tell NotionApps what business outcome you want.
2. Answer the numbered questions one at a time.
3. Use context-aware choices for screens, forms, controls, roles, people, channels, and app objects.
4. Review the route explanation before creating anything.
5. Build the route when the explanation matches the process you expect.
6. Run the guided proof steps so the maker knows the setup works.

The wizard should feel simple on purpose. It asks business questions and creates the technical objects behind the scenes.

| Wizard question          | What it means                                                                                        |
| ------------------------ | ---------------------------------------------------------------------------------------------------- |
| What starts this?        | The user action, form submission, screen event, or data change that begins the process.              |
| Who receives it?         | The person, role, team, app owner, requester, reviewer, or fallback audience.                        |
| What should happen?      | The notification, approval, workflow step, message route, or screen action NotionApps should create. |
| How do I know it worked? | The Activity, notification, screen result, or test step the maker should verify.                     |

If a route is incomplete, use the visible fix action rather than editing raw JSON first.

### Current wizard behavior: NotionApps assembles the route

The wizard is designed to behave like a guided conversation. The maker should not need to remember IDs, channels, screen names, workflow names, or payload paths before they can begin.

Use the wizard this way:

1. Tell NotionApps what business outcome you want.
2. Answer the numbered questions one at a time.
3. Use context-aware choices for screens, forms, controls, roles, people, channels, and app objects.
4. Review the route explanation before creating anything.
5. Build the route when the explanation matches the process you expect.
6. Run the guided proof steps so the maker knows the setup works.

The wizard should feel simple on purpose. It asks business questions and creates the technical objects behind the scenes.

| Wizard question          | What it means                                                                                        |
| ------------------------ | ---------------------------------------------------------------------------------------------------- |
| What starts this?        | The user action, form submission, screen event, or data change that begins the process.              |
| Who receives it?         | The person, role, team, app owner, requester, reviewer, or fallback audience.                        |
| What should happen?      | The notification, approval, workflow step, message route, or screen action NotionApps should create. |
| How do I know it worked? | The Activity, notification, screen result, or test step the maker should verify.                     |

If a route is incomplete, use the visible fix action rather than editing raw JSON first.


# Create your first approval workflow

## Create your first approval workflow

### Create your first approval workflow

#### Create your first approval workflow

**Create your first approval workflow**

**Create your first approval workflow**

**Create your first approval workflow**

This guide walks through one complete approval workflow from a normal data page to a working reviewer experience. Use it when you want a self-service path that does not require backend inspection, manual database edits, or someone explaining hidden setup.

The example is a purchase request. An employee creates a purchase request, clicks Submit, a reviewer sees the request on a Decision screen, the reviewer approves or rejects it, and the requester can see the final status.

![Purchase Requests list used as the source data page.](https://content.gitbook.com/content/5ZqDXcVVffWUqEIZVhmn/blobs/TPnKnb1KBF1SpUpl5Mmn/assets/approval-management/procurement-approval-desk/07-purchase-requests-list.jpg)

*Start with a normal data page. Automation begins from a real user action on real records.*

**Before you start**

You need one data page with enough fields for a reviewer to make a decision.

Use these fields for the first build:

| Field          | Type                | Why it matters                                                                    |
| -------------- | ------------------- | --------------------------------------------------------------------------------- |
| Request title  | Text                | Appears in screens and messages.                                                  |
| Requester      | User or email       | Tells the workflow who started the request.                                       |
| Department     | Select              | Gives business context.                                                           |
| Vendor         | Text                | Helps the reviewer understand the purchase.                                       |
| Amount         | Number or currency  | Often controls review priority.                                                   |
| Reason         | Long text           | Explains why approval is needed.                                                  |
| Needed by      | Date                | Helps the reviewer prioritize.                                                    |
| Reviewer       | User, role, or team | Tells the workflow who should decide.                                             |
| Status         | Select              | Shows Draft, Submitted, Waiting for review, Approved, Rejected, or Needs changes. |
| Decision notes | Long text           | Records why the reviewer decided.                                                 |

**Step 1: Confirm the user can create a request**

Open the request page and make sure users can add a new item. A workflow cannot save a bad form. The user should know what to fill out, which fields are required, and what happens after Submit.

![Purchase request form with the fields reviewers need.](https://content.gitbook.com/content/5ZqDXcVVffWUqEIZVhmn/blobs/ahcWj3VTBrYy2kd32oGn/assets/approval-management/procurement-approval-desk/08-purchase-requests-new-request-form.jpg)

*Collect enough context so the reviewer can decide without asking the maker what the record means.*

**Step 2: Add the submit behavior**

The submit action should do two things:

1. Save the request.
2. mark the request as Submitted or Waiting for review.

Write down the exact status value the button writes. Submitted and Waiting for review are different values. If the workflow listens for one value and the app writes another, the workflow will not start.

**Step 3: Start the approval wizard**

This step creates the approval route. It does not replace the need to add the reviewer screens in the next step. The wizard tells NotionApps what should happen; the Automation screens give reviewers a place to do the work.

1. Open **Automation** from the builder rail.
2. Choose **Approval workflow**.
3. Set **When this happens** to the real submit action on the Purchase Requests page.
4. Choose the submitted status value that the app actually writes. For example, choose **Submitted** only if the button writes **Submitted**. Choose **Waiting for review** only if the button writes **Waiting for review**.
5. Choose the reviewer. For the first build, use the **Reviewer** field, a specific approver role, or a real reviewer user.
6. Choose **Decision** as the reviewer destination. This means the approval should be decided on a Decision screen. You will create or confirm that Decision screen in Step 4.
7. Choose **Work Queue** if reviewers need an inbox of requests to review. For most real apps, this is recommended because reviewers usually need a list, not only a direct link to one request. You will create or confirm that Work Queue screen in Step 4.
8. Add **Workflow Status** if the requester should track progress from a separate status screen. This is optional for the first build.
9. Write the reviewer message: Purchase request {{Request title}} for {{Amount}} is waiting for your review.
10. Write the requester message: Your purchase request was submitted and is waiting for review.
11. Map **Approve** to the final status **Approved**.
12. Map **Reject** to the final status **Rejected**.
13. Decide what **Request changes** should do. A simple first build can set the record to **Needs changes** and notify the requester.
14. Add exception handling for missing reviewer, missing amount, missing reason, failed message, and permission issue.
15. Save the approval setup.

![Approval workflow setup with trigger, destination, message, validation, and test controls.](https://content.gitbook.com/content/5ZqDXcVVffWUqEIZVhmn/blobs/kPhC9GrOLlzI30v2hkd5/assets/approval-management/maker-builder/03-procurement-approval-desk-approval-workflow-setup.jpg)

*The critical controls are When this happens, submitted status, reviewer, destination screen, messages, validation, repair, and test request.*

**Step 4: Create the approval inbox**

Do this before validation and before the first live test. If the inbox does not exist, reviewers will not have a clear place to find approval work.

Create this screen from **Screens -> New Screen -> Automation**:

| Screen to create        | Screen group | Screen type | Who uses it                                       | Why it exists                                   |
| ----------------------- | ------------ | ----------- | ------------------------------------------------- | ----------------------------------------------- |
| Purchase Approval Inbox | Automation   | Work Queue  | Reviewer, manager, procurement approver, or admin | Shows all approval requests waiting for review. |

Create the approval inbox:

1. Open **Screens** in the builder.
2. Select **New Screen**.
3. Choose the **Automation** screen group.
4. Select **Work Queue**.
5. Name the screen **Purchase Approval Inbox**.
6. Open **Source binding**.
7. Choose **Specific workflow** when this inbox should only show purchase approvals.
8. Search for the purchase approval workflow by friendly name and select it.
9. Open **Visibility**, **Permissions**, or the screen access settings.
10. Make the screen visible to the reviewer role, such as **Manager**, **Procurement Approver**, or **Admin**.
11. Hide the screen from requesters if requesters should only submit requests and view their own status.
12. Add the screen to the reviewer navigation menu so reviewers can find it without knowing a direct link.

The Work Queue answers: **What approval requests are waiting for me?**

**Step 5: Create the Decision screen**

This step is required. The approval workflow can route a request, and the Work Queue can list the request, but the reviewer still needs a Decision screen to approve, reject, or request changes. Do not move to validation or live testing until this screen exists.

Create this screen from **Screens -> New Screen -> Automation**:

| Screen to create           | Screen group | Screen type | Who uses it                                  | Why it exists                                                        |
| -------------------------- | ------------ | ----------- | -------------------------------------------- | -------------------------------------------------------------------- |
| Purchase Approval Decision | Automation   | Decision    | The reviewer who opens or claims one request | Shows one request with Approve, Reject, and Request changes actions. |

Create the Decision screen:

1. Open **Screens** in the builder.
2. Select **New Screen**.
3. Choose the **Automation** screen group.
4. Select **Decision**.
5. Name the screen **Purchase Approval Decision**.
6. Open **Source binding**.
7. Choose **Specific workflow**.
8. Select the same purchase approval workflow used by the inbox.
9. Configure the decision summary so the reviewer sees the fields needed to make a decision: requester, vendor, amount, department, business reason, needed-by date, status, and any attachments or supporting notes.
10. Confirm the available actions are clear: **Approve**, **Reject**, and **Request changes**.
11. If more than one reviewer can see the same request, enable claim-before-action so two reviewers cannot decide the same request at the same time.
12. Save the screen.

The Decision screen answers: **What am I approving, and what action should I take?**

**Step 6: Connect the approval screens to the workflow**

1. Open **Automation -> Workflows**.
2. Select the purchase approval workflow.
3. Confirm the workflow creates a review item or decision item for the reviewer.
4. Confirm the review item opens **Purchase Approval Decision**, or confirm the Decision screen is bound to the same workflow.
5. Confirm the Work Queue screen is bound to the same workflow so new requests appear in **Purchase Approval Inbox**.
6. Save the workflow draft.

At this point, the workflow has an engine and a user interface. The requester submits from the data screen. The reviewer finds work in the Work Queue. The reviewer decides one request on the Decision screen.

**Step 7: Validate after the screens exist**

Run Validate only after the workflow and approval screens have been created or confirmed. Treat blockers as publish blockers. Do not assume a manual test will solve a validation blocker.

A ready approval workflow should confirm:

* The trigger is connected to the real submit action.
* The submitted status matches what the app writes.
* A reviewer can be resolved.
* The Work Queue screen exists and is bound to the approval workflow.
* The Decision screen exists and is bound to the approval workflow.
* The requester can see a status or message.
* Messages have useful business language.
* Exceptions have somewhere visible to appear.

![Validation ready state for an approval workflow.](https://content.gitbook.com/content/5ZqDXcVVffWUqEIZVhmn/blobs/J4yDDbTlZPwWWYg09Of3/assets/approval-management/maker-builder/04-procurement-approval-desk-validation-ready.jpg)

*Validation should make the setup understandable before a customer sees it.*

**Step 8: Run a live test as both people**

Use this test request:

* Request title: Laptop replacement for field team
* Vendor: Approved vendor
* Amount: 500
* Reason: Existing field laptop is failing and blocks customer visits.
* Reviewer: the Supervisor role or a real reviewer user
* Status before submit: Draft

Now test it:

1. Preview as the requester.
2. Create the request.
3. Click **Submit**.
4. Confirm the source record shows **Submitted** or **Waiting for review**.
5. Switch preview to the reviewer.
6. Open **Purchase Approval Inbox** from the reviewer navigation menu.
7. Confirm the submitted request appears in the inbox. If it does not appear, stop and check the workflow trigger, submitted status value, reviewer mapping, and Work Queue source binding.
8. Open the request from the inbox.
9. Confirm **Purchase Approval Decision** opens for that request.
10. Confirm the reviewer can understand the request without reading raw JSON. The screen should show amount, reason, vendor, requester, needed-by date, and any other decision context.
11. Click **Approve**.
12. Switch back to the requester.
13. Confirm the request is **Approved**.
14. Open **Automation -> Activity** and confirm the workflow followed the approved path.
15. Open **Exception Resolution**.
16. Confirm there are no unexpected failures.
17. Repeat the test with **Reject** and **Request changes** before using the workflow with real users.

![Submitted purchase request state.](https://content.gitbook.com/content/5ZqDXcVVffWUqEIZVhmn/blobs/9kTTAksELrXcFcxvTwCj/assets/approval-management/procurement-approval-desk/10-purchase-requests-submitted-state.jpg)

*The requester should see a visible submitted or waiting state immediately after Submit.*

![Reviewer request detail with decision context.](https://content.gitbook.com/content/5ZqDXcVVffWUqEIZVhmn/blobs/XliweGY8zGVBlyfbNYId/assets/approval-management/procurement-approval-desk/12-approval-inbox-request-detail.jpg)

*The reviewer should see enough business context to decide confidently.*

**If it does not work**

| Symptom                                        | Most likely cause                                                        | What to check                                                                                |
| ---------------------------------------------- | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------- |
| Submit saves the request but nothing routes    | Trigger is not connected to the submit action.                           | Open When this happens and select the real button or form submission.                        |
| Manual status change works but Submit does not | Workflow listens to status only; user button does not write that status. | Confirm the button writes the exact submitted status.                                        |
| Reviewer does not see the item                 | Recipient, scope, or permission issue.                                   | Check reviewer field, role membership, Decision screen access, and source record visibility. |
| Reviewer can see but cannot decide             | Decision actions are missing or blocked.                                 | Check approve/reject mappings and field permissions.                                         |
| Requester never sees result                    | Outcome is not mapped back to status or message.                         | Map Approved, Rejected, and Needs changes back to the source record.                         |
| A failure is invisible                         | Exception Resolution is missing or not connected.                        | Add Exception Resolution and retest.                                                         |

**Definition of done**

The first approval workflow is done when the requester can submit from the app, the reviewer can decide from a Decision screen, the requester sees the result, validation is clean, and the maker can explain the whole flow from visible screens.Wizard-first approval path

The easiest approval workflow starts from the outcome, not from raw workflow settings. Use this pattern when training a new maker.

1. Open **Automation**.
2. Choose the approval or outcome-guided setup path.
3. Describe the desired result in plain language. Example: “When an employee submits a purchase request, send it to the selected reviewer and show the requester the decision.”
4. Select the source form or screen. Use the friendly screen name from the suggestions.
5. Select who should decide. This can be a role, selected person, manager field, or other app-aware recipient, depending on the app setup.
6. Confirm what the approver should see. Include the record fields that help the approver decide.
7. Confirm what happens after approval, rejection, or changes requested.
8. Let NotionApps create the route.
9. Save the route and run validation.
10. Test as the requester and as the approver.

The maker should not need to understand raw route IDs for the first setup. Advanced settings remain available, but the normal path should answer business questions: who starts it, who decides, what they see, what happens next, and how everyone knows the result.Wizard-first approval path

The easiest approval workflow starts from the outcome, not from raw workflow settings. Use this pattern when training a new maker.

1. Open **Automation**.
2. Choose the approval or outcome-guided setup path.
3. Describe the desired result in plain language. Example: “When an employee submits a purchase request, send it to the selected reviewer and show the requester the decision.”
4. Select the source form or screen. Use the friendly screen name from the suggestions.
5. Select who should decide. This can be a role, selected person, manager field, or other app-aware recipient, depending on the app setup.
6. Confirm what the approver should see. Include the record fields that help the approver decide.
7. Confirm what happens after approval, rejection, or changes requested.
8. Let NotionApps create the route.
9. Save the route and run validation.
10. Test as the requester and as the approver.

The maker should not need to understand raw route IDs for the first setup. Advanced settings remain available, but the normal path should answer business questions: who starts it, who decides, what they see, what happens next, and how everyone knows the result.

**Wizard-first approval path**

The easiest approval workflow starts from the outcome, not from raw workflow settings. Use this pattern when training a new maker.

1. Open **Automation**.
2. Choose the approval or outcome-guided setup path.
3. Describe the desired result in plain language. Example: “When an employee submits a purchase request, send it to the selected reviewer and show the requester the decision.”
4. Select the source form or screen. Use the friendly screen name from the suggestions.
5. Select who should decide. This can be a role, selected person, manager field, or other app-aware recipient, depending on the app setup.
6. Confirm what the approver should see. Include the record fields that help the approver decide.
7. Confirm what happens after approval, rejection, or changes requested.
8. Let NotionApps create the route.
9. Save the route and run validation.
10. Test as the requester and as the approver.

The maker should not need to understand raw route IDs for the first setup. Advanced settings remain available, but the normal path should answer business questions: who starts it, who decides, what they see, what happens next, and how everyone knows the result.




---

[Next Page](/llms-full.txt/1)

