# Introduction to Fields

The Buzzy Framework provides a standard pattern to build and deploy websites and apps. The framework acts as a structure that keeps code simple and consistent. Essential to this framework are Datatable and their field types.

All fields have a Name and optional Help Text that is displayed beneath the field. Specific parameters will vary depending on the field type - for instance default values or formatting options.

## Field Naming Best Practices

When naming fields in Buzzy, follow these guidelines for optimal performance and compatibility:

* **Avoid reserved words**: Certain field names are reserved for system use (see below)
* **Avoid dots (.) in field names**: Using dots can cause issues with JSONata formulas and data access
* **Use camelCase**: This naming convention (e.g., `firstName`, `orderTotal`) makes fields easier to reference
* **For JSONata formulas**: When referencing fields with special characters or spaces, use backticks (\`) to enclose the field name, not single quotes (') which are used for strings

### Reserved Field Names

The following field names are reserved for system metadata and should not be used when defining your own fields:

* **\_id**: The current row's unique ID
* **\_currentUrl**: Gets the current URL from the browser (only works in forms in "insert/capture" mode)
* **\_contextRow**: Provides access to context row fields
* **userID**: The user ID of the creator
* **\_currentUserID**: The user ID of the currently logged in user
* **viewers**: Array of additional user IDs who can view the row
* **isLocked**: Indicates if the row has been locked
* **submitted**: Epoch date time value of when the server created the record
* **deviceID**: The device ID for debugging purposes
* **appVersion**: App version when the row was created
* **hasConflict**: Array of conflicts
* **clientCounter**: For debugging client-server record synchronization
* **clientSubmitted**: Epoch time when client submitted the record

## Field Configuration

**Field modes** include 'Read' (readonly value), 'Summary' (formatted value), 'Insert' (create), and 'Edit'. 'Value' was added as an extra option that doesn't use the any Buzzy rendering or formatting, it just pulls out the raw value. There's also differences across the different field types, for instance with a date field you can add params to format the date string when it's in Value or Read mode, but not Summary mode (since that comes already formatted). 'Filter' and 'Image' are special field types that apply only to those components.

**Field permissions** control who can view and edit a field after the user is already allowed to view the row. Field edit should be the same as Field view or more restrictive. For example, if Field view is restricted to Admins, Authors, and Creators, Field edit should not be set to Anyone.

**Private Data** marks fields that contain personal, sensitive, regulated, or confidential information. Basic Private Data is masked or redacted by the server. Sensitive Private Data is hidden by default, can be revealed only by permitted users, and records audit entries. See [Private Data](/the-building-blocks/datatables-fields-and-data/private-data.md) for configuration steps.

**Field visibility** in the Buzzy Workspace summary table can be enabled or disabled.

**Field validation** can be customized using JSONata. For more information see [Formula language](/the-building-blocks/datatables-fields-and-data/formulas.md)

A Display Rule provides a mechanism to dynamically alter the visibility of a field. [Displaying a field based on the values of other fields](/the-building-blocks/datatables-fields-and-data/displaying-a-field-based-on-the-values-of-other-fields.md) provides more information for using this capability.

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.buzzy.buzz/the-building-blocks/datatables-fields-and-data/introduction-to-fields.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
