# Controls

Source: /ux/product-and-ui/controls.md

- Summary: Put create, filters, assignee, date shortcuts, done and stage where the products people already use put them.
- Status: Adopted, since 2026-10-02
- Principles: Fewest steps, Fewest inputs, Maximum intuition
- Surfaces: Screen, Form, Document

## When to use

Use it on every list, board and form where the person creates a record, narrows rows, sets a next action or moves a stage.

## When not to use

Intake steps live in grid views and follow [intake views](/ux/product-and-ui/intake-views.md). Where to open a create form from is covered in [creating records](/ux/product-and-ui/creating-records.md).

## How it works

### Put the create button at the top right

The button that creates a record sits at the top right of the page or panel that lists those records.

Pass: on every list page, the create button is the rightmost control in the top bar.

The create action on a dashboard.

Do: Stripe puts its + create button at the top right.
Image: /ux/sources/stripe-sidebar-nav.webp

Don't: AirOps puts Add Row at the bottom of the grid, below the last row.
Image: /ux/sources/dont-airops-add-row-bottom.webp

### Put the filters above the records

Filters sit in one bar directly above the rows they narrow. The order of that bar is set in [filters](/ux/product-and-ui/filters.md).

Pass: on every list page, the filter bar sits between the page title and the first row.

Filters on a contacts list.

Do: Quick filters sit in one bar above the table.

Don't: Salesforce opens its filters in a side panel, away from the rows.
Image: /ux/sources/dont-salesforce-filter-panel.webp

### Start the assignee of a next action as the signed-in user

A new task or next action arrives with the person creating it as its assignee. They change it only when the work goes to someone else.

Pass: create a next action from any entry point; no owner entry is needed.

The assignee on a new task.

Do: Assigned to starts filled with the signed-in user.

Don't: hilos opens New task with Assignee set to Unassigned.
Image: /ux/sources/dont-hilos-task-unassigned.webp

The owner when a record joins a list.

Do: Attio fills Owner with Alex Smith and Stage with Prospecting.
Image: /ux/sources/attio-add-to-list-prefilled.webp

Don't: The same form with Owner and Stage blank.

### Put Tomorrow beside Today and show the date each shortcut resolves to

The date picker offers Tomorrow next to Today. Every relative shortcut shows the date it will set, so the person checks it without opening a calendar.

Pass: set the next day with one choice, and every relative shortcut shows its resolved date beside its label.

A relative due date on a new task.

Do: In 3 business days shows the day it lands on, Wednesday.

Don't: Unify lists Today, Tomorrow, This week and Next week with no date beside them.
Image: /ux/sources/dont-unify-due-date-shortcuts.webp

Replace this: In 1 week
With this: In 1 week (Aug 11)

### Mark done with a separate control that keeps the record

Done is its own control, a checkbox on the row. Marking a task done keeps the record and moves it to the completed group.

Pass: mark a next action done in 2 clicks or fewer, and the record is still there afterwards.

Finishing a task in a task list.

Do: Attio puts a checkbox on each task and keeps finished ones under Completed, behind Show completed tasks.
Image: /ux/sources/attio-tasks-done-checkbox.webp

Don't: The same list where finishing a task means deleting it.

### Leave repeat and reminders off by default

A new task does not repeat and sends no reminder until the person turns one on. Both controls sit on the create form, so the person can set them before saving.

Pass: a new next action saves with repeat off and no reminder, and the person can choose a cadence before saving.

Repeat on a new task.

Do: Set to repeat starts unchecked, and Reminder is a select.

Don't: The same panel with Set to repeat checked on every new task.

### Save a stage change as soon as it is made

Picking a new stage saves it. There is no save button for a stage.

Pass: change a stage and reload; the new stage is there without any other click.

### Give anything meant to be copied a copy button

A code block, a template or an id that exists to be pasted somewhere else carries a Copy button at its top right. Selecting the text by hand is three actions: drag, right click, Copy.

Pass: copy a code block or template in 1 click, and the button says Copied for a moment afterwards.

## Research

The first two rules come from the reviewer's CRM usability comparison (2026-09-29/30). Its familiar controls table marks Create at top right and Filters above records Yes for our CRM, Attio and folk alike (comparison, lines 642 to 660). The Stripe dashboard confirms the first: its + create button sits at the top right.

The assignee rule copies Attio's Add to list form, which fills Owner and Stage. The comparison asks to "Add a next-action assignee that starts as the signed-in user, copying all three tools." with "Pass: no owner entry is needed." (comparison, line 662). It notes that this assignee is separate from the relationship Owner.

The date rule comes from the comparison. It asks to "Add Tomorrow beside Today in the date picker" with "Pass: set the next day with one choice." (comparison, line 663). Its date shortcut table finds Tomorrow in Attio and folk, and it asks to "Show the resolved CRM date beside each relative shortcut." (comparison, lines 883 to 903).

The done rule copies Attio's tasks list, which has a checkbox per task and a Completed group. The comparison asks for "a separate Done control for next actions" that keeps the record (comparison, line 664).

Repeat and reminders rest on the comparison. It asks for "repeat controls with repeating off by default" (comparison, line 666) and a reminder picker (comparison, line 665). No screenshot shows a reminder's default state, so "no reminder by default" rests on the comparison alone.

The stage rule has no screenshot. It comes from the comparison's Stage autosaves row, Yes in all four products (comparison, line 658).

The copy button is copied from the code blocks of Stripe's documentation (https://docs.stripe.com) and of GitHub (https://github.com), which put a Copy control at the top right of every block. The reviewer's comparison does not measure it; the rule comes from the self-audit of this guide, where copying the measurement template took 6 scrolls and 3 clicks. No Mobbin screenshot yet.

### Sources

- [Stripe Dashboard, sidebar](https://mobbin.com/screens/e56b763c-5f8a-4002-bfa1-05f9b0341f38)
- [Attio add to list, prefilled owner and stage](https://mobbin.com/screens/797ff398-0d2b-4b7c-8ff7-560ac3d2bf84)
- [Attio tasks, done checkbox](https://mobbin.com/screens/5dab796d-b81b-4ac4-aa3a-f382b1682cb4)
- [AirOps grid, Add Row at the bottom](https://mobbin.com/screens/793db717-91d3-46b7-b4ba-72752e67f18a)
- [Salesforce contacts, filters in a side panel](https://mobbin.com/screens/997d99a7-ecc4-42a1-8c4b-14ef454a6c59)
- [hilos new task, Assignee unassigned](https://mobbin.com/screens/9d658a08-fb3e-44d7-946a-5a57ef4c920d)
- [Unify tasks, due date shortcuts](https://mobbin.com/screens/0f730906-ce1c-4379-9915-3833d4710b6b)
