# Measuring

Source: /ux/foundations/how-we-measure.md

- Summary: How clicks, inputs and rows are counted, the four tasks per entity, the Pass line every rule carries, and a template to copy.
- Status: Adopted, since 2026-10-02
- Principles: Fewest steps, Fewest scroll, Fewest inputs, Maximum intuition, One way
- Surfaces: Screen, Form

## When to use

Use it whenever you count the clicks, inputs or visible rows of a screen or form, and whenever you write the Pass line of a rule. To write a measurement, copy the [template](#template).

## When not to use

Emails and documents have no counting protocol yet. Their rules still carry a Pass line, written as a check two people would answer the same way.

## How it works

### Count every pointer action as a click

A click is every pointer action, including field focus and the saved completion. Keyboard shortcuts do not count, so each route is the one a person walks with a mouse.

Pass: the count for a task lists each pointer action by name, from the first click to the saved result.

### Count each field as one input

An input is a field or a value the person enters. The number of characters typed into it does not count.

Pass: the count for a task names each field the person typed into or picked from.

### Count only enabled fields in a create form

A create form is measured by the fields the person can fill. Defaults and conditional controls are noted beside the count, never added to it.

Pass: the form's count states its required fields, its optional fields, and the defaults and conditional controls it showed.

### Measure density at 1180 x 757

Density is the number of full rows visible at 1180 x 757 pixels, at 100% zoom, with zero scroll. A row cut by the bottom edge does not count.

Pass: the screen was measured at 1180 x 757, 100%, without scrolling, and only full rows were counted.

### Count the confirmation in a delete

The clicks of a delete confirmation count toward the delete. An irreversible step needs approval before anyone runs it in a test.

Pass: the delete count includes the confirmation, and no irreversible step ran without approval.

### Rank the best result with ties included

Fewer clicks win, fewer required inputs win, and more optional fields win. Products that tie on the best result all share it.

Pass: every product that reaches the best value for a measure is marked best.

### Time the same four tasks for every entity

Each entity is measured on four tasks: open a record, create a record with a name, edit the name, and delete the record.

Pass: every entity in a comparison has all four counts, or says why one is missing.

| Task | Starts at | Ends at |
|---|---|---|
| Open | The entity's main list | The record's detail is showing |
| Named create | The entity's main entry | A new record with a name is saved |
| Edit name | The record's detail or row | The changed name is saved |
| Delete | The record's detail or row | The record is gone, confirmation included |

### Give every rule a Pass line

Every rule states a Pass condition. When a reference product has been measured, the condition is a number taken from that measure, as in "Pass: 15 full rows fit". When no measure exists, the Pass line states a check that two people would answer the same way.

Pass: every rule heading in the guide is followed by a Pass line, and the line holds a number wherever a measured reference exists.

Replace this: Pass: the form is short.
With this: Pass: save a named person in 3 clicks or fewer with 1 typed field.

## A worked example

The Person section of the reviewer's comparison, with its numbers as measured (comparison, lines 11 to 42). A measurement document repeats this shape for every entity: the entity and the human job, the verdict, the comparison table, the Fix list with a Pass line per item, notes on what was not verified, and the screens measured.

Person. Core. Identify and manage a person.

Verdict: Fix. Main form and named creation need fewer steps.

| Person | Ours | Attio | folk |
| :---- | :---: | :---: | :---: |
| Default layout | Cards | Table | Kanban |
| Open · clicks | 1 | 1 | 1 |
| Named create · clicks | 4 | 4 | 3 |
| Edit name · clicks | 2 | 2 | 2 |
| Delete · clicks | 3 | 3 | Approval needed |
| Create form required | 4 | 0 | 1 |
| Create form optional | 7 | 14 | 3 |
| Typed fields · tested route | 1 | 2 | 1 |
| Selections used | 0 | 0 | 0 |
| Required defaults used · Not verified | 0 | 0 | 0 |

Fix:

- Make the default People view a table. Copy Attio; keep Cards as an optional view.
- Make Name optional. Copy Attio.
- Make Company optional. Copy Attio and folk.
- Make Email optional. Copy Attio and folk.
- Make Phone optional. Copy Attio and folk.
- Autofocus Name in the main form. Copy folk. Pass: save an identifiable person in 3 clicks or fewer with 1 typed field.

How to read it. The best value in a row is the lowest click or required count and the highest optional count, and products that tie share it: folk wins named create with 3, Attio wins required fields with 0 and optional fields with 14. "Approval needed" means the step was not run because it is irreversible. "Not verified" marks a row measured without a second check. The comparison colours the best cells green; in Markdown, name the winner in a sentence under the table.

What the example does not decide. Four of the six fixes conflict with our model: Name is a formula, and Email, Company and Phone live in Core, not on the relationship. The measurement stays valid as a measurement. Whether a fix is applied, sent to a model decision or declined is the job of the triage, not of this page.

## Template

Copy this block for each entity you measure. Keep the row names so documents can be compared.

```markdown
# <Entity>

<Domain>. <The human job, in five words.>

Verdict: <Pass | Fix | Not scored>. <One sentence saying why.>

| <Entity> | Ours | <Reference 1> | <Reference 2> | <Reference 3> |
| :---- | :---: | :---: | :---: | :---: |
| Default layout | | | | |
| Open · clicks | | | | |
| Named create · clicks | | | | |
| Edit name · clicks | | | | |
| Delete · clicks | | | | |
| Create form required | | | | |
| Create form optional | | | | |
| Typed fields · tested route | | | | |
| Selections used | | | | |
| Required defaults used | | | | |

Best: <who wins each row, ties included>.

## Fix

- [ ] <Imperative change>. Copy <reference>. Pass: <measurable condition>.

## Notes

- <What was not verified, what needed approval, what the route assumed.>

Sources: <one link per screen measured, ours first>
```

## Research

The protocol is copied from the reviewer's CRM usability comparison (2026-09-29/30), from its "How to read the comparison" table (comparison, lines 2353 to 2370). That table defines a click as "Every pointer action, including field focus and saved completion", inputs as "Fields or values, not arbitrary test-name characters", density as "Fully visible records at 1180 × 757, 100%, zero scroll", creation fields as "Enabled fields only; defaults and conditional controls noted" and deletion as "Confirmation clicks count; irreversible steps require approval". It excludes keyboard shortcuts from the pointer routes. Its best result "includes ties: lower clicks/required input; higher optional-field counts".

The four tasks are the rows the comparison measures for each entity: Open, Tested named create, Edit name and Delete (comparison, lines 17 to 28).

The Pass line copies the comparison's own phrasing, as in "Pass: 15 full rows fit at the same screen size when the view has enough records." (comparison, line 615) and "Pass: no owner entry is needed." (comparison, line 662). The comparison is internal and has no URL. Every rule in the guide now carries a Pass line. Where no measure exists, the line states a check two people would answer the same way, and it gains a number once a reference is measured.
