It's useful to think of Custom Fields (sometimes referred to as Fields) as labels that can be added to different parts of Canopy.
For instance, your initial set up of Canopy may not include some information that's important to your business. Let's say you want to add an emergency phone number for each location where you own kiosks. You can add the emergency phone numbers by adding a Field.
Because Canopy is tracking Locations as part of the initial set up, you would likely want to add a Field to your Locations entity. After adding the Field, you would then enter a support phone number for each Location.
Fields can contain information that you manually type in (such as our support phone numbers) or they can contain data that's coming from Canopy itself. For example, if you wanted to know the date and time of the most recent software update on a kiosk, a Field can be used to display that data in Canopy.
Besides Locations, Fields can be used to display information and data on other top-level entities, such as Devices, Customers or Transactions. The great thing is that Fields are highly-customizable, so you can create and assign them as you see fit.
To help explain how they work, we'll walk step-by-step through the example of adding a support phone number to our Locations.
1. Click on the gear icon in the upper right and then click Settings

2. On the Settings page, look for the Fields item in the left side menu.

3. To add an attribute to Locations, select Locations from the App drop down.

4. To add a new Field, click the plus (+) button at the top of the General Info tab.

5. In the Select Field Type modal, we will select Text to hold our phone number.

6. In the new, unnamed Field form, fill in all of the appropriate boxes such as the Title, Category and Super Category.
7. In the table below will be a list of options. Here are the available options and a description of each one:
| Option | Description |
|---|---|
| Event | If you want to use Event data to fill in the field, you can use this field to set the Event data. Click the Add Event button and then choose the appropriate Type, Subtype and Detail to use (see more about using Events in the How To Add Dynamic Data to Fields section below. |
| Hint | Adds a short description below the input field. |
| Tooltip | Adds a detailed description on mouse hover. |
| Cascade Hierarchy | Enable this option to display this field at sub-organization levels in the hierarchy. |
| Creatable | Enable this option if you want this field to be displayed when the user creates a new entity (such as a device or location). Some fields are only used by Canopy so it may not need to be displayed to the user when creating an entity. |
| Updatable | Enable this option if you want the field to be able to be updated by users. If not enabled, the field will be grayed out and only updated by Canopy itself. |
| Hidden | Enable this option to prevent the field from being shown to users. For example, if the field contains sensitive data that's only used as part of an Action in Canopy, you might not want to display that data to a user. |
| Searchable in UI | Enable this option to have the field displayed in the list of filter options on the main grid page. |
| Grid Default | Enable this option if you wan the field to be displayed by default in the grid. In other words, when the user resets the options in the main grid page, the field will be shown by default. |
| Sortable in Grid | Enable this option if the column that contains this field in the main grid should be sortable. |
| Visibility Conditions | If you only want this field displayed when certain conditions are met, you can add the conditions here as part of this option. For example, if this field should only be shown for Windows devices, you an add those conditions here. |
8. Click Save Changes to finish creating the Field.
9. To view the new Field, navigate to a Location Details page and see the new Field in the General Info tab.

10. To edit the Field, click into the field and type the new information (the support phone number) and then click on the Save button on the right side of the General Info box.
![A detailed view of the "Banyan Office" location page showing the complete interface after navigating from the Fields creation process. The page displays a map of the southeastern United States with a location marker, and below it shows multiple tabs including "General Info", "All MDM Devices", "iOS Devices", "Android Devices", "Buildings", "Devices", and "Customers". The General Info tab is currently active and shows a comprehensive form with location details including fields like "Device Created By" (Banyan Office), "Support Phone" (2025557878), "Organization" (Banyan Labs), "Status" (Open [Installed]), and various address fields. On the right side, there are additional fields showing contact information including "Contact Email", "Contact Phone Number", and other location-specific data. There's a prominent blue "Save" button in the right corner with a red arrow pointing to it, indicating where users would save their field edits. Also visible in the middle left panel of the Canopy software are available Actions organized in sections: Device - System Actions (Reboot, Screen Shot, Service Control, Run Network Diagnosis, Query Device), MDM Service - Android General (Refresh Device, Lock Device, Replace Policy, Unenroll Device), MDM Service - Android Enterprise (Restart Device), MDM Service - General (Assign Location, Assign Device Role), MDM Service - Refresh Frequency (Update Refresh Frequency), and MDM Service - iOS General (Refresh Device Details, Refresh Device Information, Refresh Profile List).](https://aeo.press/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MzYsInB1ciI6ImJsb2JfaWQifX0=--d04351f571f303c386284d91491aed6742caab80/image007.png)
How To Add Dynamic Data to Fields
Sometimes, it's helpful to use incoming data to populate a Field automatically rather than having to type something in manually. For example, we can use a Field to automatically display the User Name of the user who added a Device to Canopy by mapping the DeviceCreate Event to the Field (more details on this below).
Other examples might include the date and time when a software installation took place on a device or the inventory status for a product. The use cases vary by set up but Canopy can accommodate lots of different scenarios for working with data in this way.
To add this type of dynamic data to a Field, you will create a Field in a similar way to how we described it above except when you get to the form used to create a new Field, you'll want to click on Add Event button. See the screenshot below:

In the modal that pops up, you'll want to define the Event data that should populate this Field. In this case, we've chosen the name of the user who created the device in the system.

After the Field Event data updates, it will display on the corresponding page. See below for our new Field displaying on a Device Details page:

How To Add a Fields Table
Fields can be used to do more than add one-time information such as a phone number. You can also use Fields to populate a table of data.
To start creating a Fields Table, navigate to the Fields page under Settings. Then, use the App dropdown to select the Entity where you want to add the table (i.e. Customers, Devices, Locations, Inventory, etc.).
After making your App selection, look for the three horizontal dots at the top of the table, just below the App selection. Click them to reveal the menu and then select Create Table:

On the next screen, give the table a Title and then select the type of data to be used to populate the Fields by clicking on the 'Add Event' button. In the below example, we want to build a table displaying information about the various peripheral hardware pieces integrated with our version of Canopy:

In the modal that pops up, choose the type of data you want to use to populate the columns in your table. In our example, we want to use a data Type of 'statistic' and the Sub Type of 'weather'. Click the 'Apply' button in the lower right of the modal to save.

After you click apply, you will have the options to Cascade Hierarchy, Hidden and Sortable in Grid. For more details on those options, please see the table above.
Next, we will need to add columns to display our data. To do that, click the Plus sign at the top to add the column information:

In the modal popup, choose the data format for the column:

With the data format chosen, you will next need to choose the data to use in the column. Click on the 'Change Event' button for the column:

The options for the data will be tied to the data Type and Sub Type chosen earlier. In our case, it's tied to the data Type of 'statistic' and the Sub Type of 'weather'. For this example, we'll choose to have the 'lowTemp' information in this column. This will give us information about how low the temperature was in the spot where this device was located and you can see an example payload of 'statistic.weather.lowTemp' in the screenshot below. Click the Apply button to save the data information:

Now, we're ready to give our column a name that will be displayed at the top of the column. Since this is displaying the 'lowTemp' information, we'll just call this column Low Temperature:

Continue building out the table with the columns of data appropriate to your set up.
Defining an optional Identifier
If you want the table to be a historical list, where each time an event is received, you write a record into the table, then you do not need to define an Identifier field. However, suppose you want the table to be a list of components or records where a primary key value exists. In that case, you should create that field first, and then return to the overall table definition and select that field as the identifier. For example, if you're monitoring hardware components or a list of installed software, you wouldn't want a new record in the table each time you received a status for the hardware or software component. Therefore, you would designate a field as the primary key or "Identifier" field.
To do this, you will want to select the columns that you have defined as the identifier for the table. Click on the edit button next to the title of your table, and you can find the identifier field. This will serve as the key against which your data will be matched.

Then, when finished, go to the module to see the table in action.
In the above case, we would continue building information about the weather and then visit the Devices page. On the Device page, we could click on any individual Device Details page to view the new Table called 'My New Table' with our Fields populated.
Below is a screenshot of a Device Details page with the weather-themed table built out to include other columns containing information on the Humidity and Low Temperatures:
