> For the complete documentation index, see [llms.txt](https://docs.notionapps.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.notionapps.com/screens-and-components/type-of-components/add-update-data-components.md).

# Add/Update data components

Canonical family page for every **input** component on Create Form, Update Form, and Update List. View-only blocks are on [View data components](/screens-and-components/type-of-components/view-data-components.md). Address, file, user, location, and signature also have focused pages; those stay as extra depth and must not contradict this table.

## What this is / when to use it

Use an input when the user should **write** a writable Notion property. If the property is formula, rollup, created\_time, last\_edited\_time, created\_by, or last\_edited\_by, use a view component instead.

## Before you start

1. The property is in [NotionFieldsWithReadWriteAccess](https://docs.notionapps.com/databases/notion-property-types#read-vs-write) (or you are collecting a value that only lives in the app, which is rare).
2. You know create vs update: create uses `*_FOR_CREATE` types; update uses `*_FOR_UPDATE`. The builder shows one palette per screen.
3. Validation, required, and prefill rules are decided. See the shared controls on [Type of Components](https://docs.notionapps.com/screens-and-components/type-of-components).

## Build it

1. Add the input.
2. Bind the property.
3. Set required, default (`NONE` / `EXACT` / `DYNAMIC`), disable editing (update only), visibility, and optional URL prefill name (create only).
4. Set the type-specific enum in the table.
5. Preview empty, invalid, and filled. Publish.

## Every control

| Input                | Create / update enums              | Notion types                                                            | Type-specific controls                                                                                                                             |
| -------------------- | ---------------------------------- | ----------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Text                 | `INPUT_TEXT_FOR_CREATE` / `UPDATE` | title, rich\_text, email, phone, unique\_id (as text), people (as text) | Validate email/phone; max length                                                                                                                   |
| Long text            | `INPUT_LONGTEXT_FOR_*`             | rich\_text                                                              | Rows, validate email/phone                                                                                                                         |
| Number               | `INPUT_NUMBER_FOR_*`               | number                                                                  | `STEP` vs `SIMPLE` (`NumberComponentStepType`)                                                                                                     |
| Date                 | `DATE_PICKER_FOR_*`                | date                                                                    | `DATE` / `TIME` / `DATE_TIME`                                                                                                                      |
| Toggle               | `INPUT_TOGGLE_FOR_*`               | checkbox                                                                | On/off labels                                                                                                                                      |
| Options              | `SELECT_OPTIONS_FOR_*`             | select, status                                                          | `DROPDOWN` vs `RADIO` (`OptionsComponentStyle`)                                                                                                    |
| Multi-select         | `MULTI_SELECT_FOR_*`               | multi\_select                                                           | Chips; allow add-tag depends on Notion                                                                                                             |
| Special multi-select | same family                        | people-as-text or custom multi                                          | Only when the builder offers the special variant                                                                                                   |
| Image                | `UPLOAD_IMAGE_FOR_*`               | files                                                                   | `CAMERA` vs `ALL` (`MediaCaptureSource`); `NONE` vs `MAX` compression                                                                              |
| Video                | `UPLOAD_VIDEO_FOR_*`               | files                                                                   | Same capture + compression                                                                                                                         |
| File                 | `FILE_UPLOAD_FOR_*`                | files                                                                   | Capture source; size limits on plan                                                                                                                |
| User                 | `INPUT_USER_FOR_*`                 | people-as-text or users db                                              | Picks an app user, not a raw Notion people widget                                                                                                  |
| Address              | `INPUT_ADDRESS_FOR_*`              | text / address mapping                                                  | Structured fields                                                                                                                                  |
| Location             | `INPUT_LOCATION_FOR_*`             | location                                                                | `LocationMapType`, `LocationOutputType`                                                                                                            |
| Signature            | `INPUT_SIGNATURE_FOR_*`            | files / signature                                                       | Required means they must sign                                                                                                                      |
| Reference            | `SELECT_DATA` / update data        | relation                                                                | `NONE` / `DIRECT` / `SELECTION` — Selection opens [Select Items](https://docs.notionapps.com/screens-and-components/types-of-screens/select-items) |

Related focused pages: [Address](/screens-and-components/type-of-components/address.md), [File upload](/screens-and-components/type-of-components/file-upload.md), [User field](/screens-and-components/type-of-components/user-field.md), [Location viewer](/screens-and-components/type-of-components/location-viewer-component.md) (view), [Signature](/screens-and-components/type-of-components/signature-component.md).

### Number `STEP` vs `SIMPLE`

* `SIMPLE` — type a number.
* `STEP` — plus/minus stepper. Use for quantities.

### Date visibility

* `DATE` — calendar date only.
* `TIME` — time only.
* `DATE_TIME` — both. Match how the Notion property is used.

### Media

* `CAMERA` — camera only (phones).
* `ALL` — camera + library + files.
* Compression `MAX` reduces upload size and quality. `NONE` keeps the original within plan upload limits.

## What users see

A labeled control. Required fields show an error on submit (and often on blur). Format validation shows “Please enter a valid email address” / “valid phone number” without blocking empty optional fields. Submit writes writable properties and then runs [form submit actions](https://docs.notionapps.com/screens-and-components/form-submit-redirection-and-other-submit-actions).

## Limits and plans

* People / created\_by / last\_edited\_by are **text** in the field map. A User input is the supported way to assign an app user.
* Files are **URL** in the field map. Uploads still go through NotionApps file storage and then Notion. Plan **file upload** meters apply. See [Plans](https://docs.notionapps.com/plans-and-entitlements).
* Unique id is text. Do not offer it as an editor unless you know what you are doing; use the chip to display it.
* Adding select options from the app depends on Notion permissions and the troubleshooting guide for new tags.
* URL prefill is Create Form only.

## Example

**Add inspection**: Text title (required), Date `DATE_TIME` for Scheduled, Options radio for Severity, Image `CAMERA` + `MAX` compression, Reference `SELECTION` → Select Items on Sites, Toggle for “Client may see photos.”

## Fix problems

| Symptom                    | Likely cause                                  | What to do                                                                                                            |
| -------------------------- | --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| Cannot bind formula        | Read-only                                     | Use a view component.                                                                                                 |
| Camera missing on desktop  | `CAMERA` only                                 | Use `ALL` if desktop must upload.                                                                                     |
| User picker empty          | Users database not linked, or guests excluded | [Create Users Database](https://docs.notionapps.com/users/create-users-database). See guest dropdown troubleshooting. |
| Relation disabled in logic | Nested relation / projection                  | [Relations](https://docs.notionapps.com/screens-and-components/relations) and the logic-picker troubleshooting page.  |

## Related

Shared controls: [Type of Components](https://docs.notionapps.com/screens-and-components/type-of-components). After submit: [Form submit redirection](https://docs.notionapps.com/screens-and-components/form-submit-redirection-and-other-submit-actions). Field map: [Notion property types](https://docs.notionapps.com/databases/notion-property-types).
