# Schema Config

**URL:** <https://speciforum.org/t/schema-config/535>\
**Category:** Configuration & Installation\
**Tags:** Specify-7, Members-only\
**Created:** [July 12, 2022, 3:16am UTC](https://speciforum.org/t/schema-config/535 "2022-07-12T03:16:13Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Grant](https://yyz1.discourse-cdn.com/flex029/user_avatar/speciforum.org/grant/32/4255_2.png) [@Grant](https://speciforum.org/u/Grant)\
**Post date:** [July 12, 2022, 3:16am UTC](https://speciforum.org/t/schema-config/535/1 "2022-07-12T03:16:13Z")

</div>

> 📖 This guide describes how to use the **Schema Config** tool to customize the fields, captions, descriptions, and field functionality in your database.

**Schema Config** lets you customize how Specify names, describes, displays, and validates tables and fields for a discipline. Use it to set captions, hide unused fields, choose formats and pick lists, and configure related rules.

This **does not modify the underlying [database schema](https://en.wikipedia.org/wiki/Database_schema)**, only the captions, descriptions, and behavior seen in the application itself.

 ![Schema Config Interface](https://canada1.discourse-cdn.com/flex029/uploads/specifysoftware/original/2X/9/95ae0250a65ae2625e5b36833040c72488f4b975.webp)

## Who do changes affect?

Schema Config settings belong to a **discipline**. Changes to a table or field can affect every collection in that discipline, so review shared workflows before saving. See [Specify Institutional Scopings](https://speciforum.org/t/specify-institutional-scopings/1046).

Captions and descriptions are stored by language. Each user’s **Schema Config language** preference determines which of those texts they see.

Settings such as hiding a field, marking it required, or assigning a pick list are shared across the discipline regardless of the user’s selected language.

Please note, **pick list assignment has two levels:**

- Schema Config assigns a _pick list name_ to the field for the discipline, **while each collection has its own pick list and values**. Assigning a pick list **does not create it in the other collections**.
- If the field should use that pick list throughout the discipline, make sure each collection has a pick list with the same name.

## Open Schema Config

1. Select your username in Specify’s navigation bar to open **User Tools**.

2. Under **Customization** , select **Schema Config**.

3. Choose the language you want to configure. See [Additional Schema Config Languages](https://speciforum.org/t/schema-config-7-12-2/4346#p-8099-additional-schema-config-languages-8) for more information.

4. Select a table from the **Tables** list.

Your ability to edit settings depends on your Schema Config permissions. The editor may open in read-only mode if you cannot make changes.

## Find your way around the editor

On a wide screen, Schema Config is arranged as a table list followed by three working areas:

| Tables | Table | Fields | Selected field |
| --- | --- | --- | --- |
| Search for and switch between tables. | Edit the table caption, description, display formats, and visibility. | Browse the table’s literal fields and relationships. | Edit the selected field’s caption, description, visibility, required status, and format. |

The **Fields** area shows the field’s database name, its current caption, and whether it is visible. Select a row to open its settings. Literal fields and relationships appear in separate groups. You can sort the list by name, caption, or visibility.

> [!tip]  
> Use the search box in **Tables** to find a table quickly. You can search either the data model name or caption assigned to that table. **Show All Tables** reveals tables omitted from the shorter list, including hidden tables.

## Configure a table

 ![Schema Config Table sections](https://canada1.discourse-cdn.com/flex029/uploads/specifysoftware/original/2X/0/0fcc53beac2b1a7498f995db109f77866c7a0c20.jpeg)

Select a table, then use the **Table** area:

| Setting | What it changes |
| --- | --- |
| **Caption** | The table’s display name in places that use Schema Config captions. |
| **Description** | Explanatory text about the table. |
| **Table Format** | This controls which fields are shown (and in what order) for a specific table in query results, exports, and query combo boxes. See [Editing Table Formats and Aggregations](https://speciforum.org/t/editing-table-formats-and-aggregations/1558). |
| **Table Aggregation** | This controls how multiple related records are combined into a single string. See [Editing Table Formats and Aggregations](https://speciforum.org/t/editing-table-formats-and-aggregations/1558). |
| **Uniqueness Rules** | Opens a separate editor for rules that prevent duplicate combinations of values. See [Configuring Uniqueness Rules](https://speciforum.org/t/configuring-uniqueness-rules/1487). |
| **Hide Table** | Hides the table from general table choices in Specify. It remains available in Schema Config. |

The **Table Format** and **Table Aggregation** selectors include controls to create or edit their definitions. For worked examples, see [Editing Table Formats and Aggregations](https://speciforum.org/t/editing-table-formats-and-aggregations/).

## Configure a field or relationship

 ![Fields list](https://canada1.discourse-cdn.com/flex029/uploads/specifysoftware/original/2X/e/ef4bc51f99831b44ff228c51c97089a864394689.jpeg)

Select a row in **Fields** to open its details.

| Setting | What it changes |
| --- | --- |
| **Caption** | The field’s human-readable label. |
| **Description** | A usage note that helps explain what belongs in the field. |
| **Character Limit** and **Type** | Read-only information about the field. Schema Config does not change these database properties. |
| **Hide Field** | Marks the field as hidden in parts of Specify that use schema visibility. |
| **Required** | Requires a value where this setting is supported. This control is unavailable for relationships and fields already required by the data model. |
| **Field Format** | Assigns a formatter, web link, or pick list to the field. |

The **Field Format** choices are:

- **None:** No specific format, web link, or pick list is assigned here.

- **Formatted:** Select a field format for a given field. Before you do, read [How to Change or Add a Field Format](https://speciforum.org/t/how-to-change-or-add-a-field-format/3063).

- **Web Link:** Select a configured web link. This allows users to link directly to external resources or information relevant to the record (via URLs). See [Editing Web Links in Specify](https://speciforum.org/t/editing-web-links-in-specify-7/1559).

- **Pick List:** Select a system or user-defined pick list. This limits a field to a predefined set of choices, which can support either read-only options or support adding additional choices during data entry. See [Creating & Using Pick Lists](https://speciforum.org/t/creating-using-pick-lists/1161).

> [!tip]  
> Once you select a field, you can also use the **arrow keys** to move between fields without clicking. You can also click any field and use [typeahead](https://en.wikipedia.org/wiki/Typeahead) to jump to your desired field by typing its first few letters. For example, in the Collection Object table, selecting any field then typing `cata` will move your focus to `catalogNumber`.

> [!warning]  
> **Hide Field** is a _schema visibility setting_, not a form editor. It does not remove a field from a form definition. To change the fields displayed on a data entry form, edit that form’s definition.

### Example: give a field a useful name

Suppose your collection uses `text1` for condition notes.

1. Open the relevant table in Schema Config.

2. Select `text1` in **Fields**.

3. Change its **Caption** to **Object Condition**.

4. Add a **Description** that tells staff what information to enter. _This can be seen when hovering a cursor over the text on the data entry form!_

5. Select Save.

The field is still `text1` in the data model. If it is absent from the data entry form, add it through the [form definition](https://speciforum.org/t/editing-forms-in-specify/1557).

## Save and review changes

Select Save in the header when you finish. An asterisk beside a table in the **Tables** list indicates unsaved changes. You can edit more than one table before saving; **Save** applies the pending changes. After saving, check the places where you expect the new caption, format, or visibility setting to appear.

## Export or Import a Schema Config

 ![Export or Import Schema Config](https://canada1.discourse-cdn.com/flex029/uploads/specifysoftware/original/2X/3/390cdc5d09eeb6587ae30df4959d0030f4d0f0dc.png)

The header also offers **Export** and, when you have permission, **Import**. Export downloads the selected language’s Schema Config as a JSON file.

> [!warning]  
> Import overwrites the current configuration and cannot be undone from the editor. **Export a backup first.** The imported file must match the language you are configuring. Pick lists, field formats, and web links in the file are assigned only when those definitions already exist.

## Additional Schema Config Languages

If you would like to add an additional language to Schema Config, you can select **Add Language** after navigating to it in the User Tools menu.

 ![Schema Config Language Chooser](https://canada1.discourse-cdn.com/flex029/uploads/specifysoftware/original/2X/6/6fd3498e3f77b2e9d61fc735c80c2ac06461f551.jpeg)

Enter a two-letter language code, such as `es`, and optionally a two-letter country code, such as `MX`. Select **Add** , then edit the captions and descriptions you need and select Save.

The Schema Config language shown to a user is controlled in **[User Preferences](https://speciforum.org/t/user-preferences/3283) → Forms → Schema Config → Language**. This preference controls table captions, field captions, and usage notes; it is separate from the language of Specify’s menus. Changing the preference requires a page reload.

If you would like to set a default Schema Config language for all users, see [Setting Default User Preferences](https://speciforum.org/t/setting-default-user-preferences/1447).

 ![User Preferences Schema Config language selector](https://canada1.discourse-cdn.com/flex029/uploads/specifysoftware/original/2X/7/7ae3541499d9a54321d55ed814a5aaab50ed7ff4.png)

Remember that some changes (such as hiding a field, marking it required, or assigning a pick list) are shared across all language configurations.

If a caption or description is missing in the selected language, Specify looks for a version without the country code, then for English. If none exists, it falls back to the underlying table or field name.

## Related guides

- [Editing Forms in Specify](https://speciforum.org/t/editing-forms-in-specify/1557) — choose and arrange fields on data entry forms.
- [Editing Table Formats and Aggregations](https://speciforum.org/t/editing-table-formats-and-aggregations/) — define how records and groups of records appear as text.
- [Edit a Field Caption or Description](https://speciforum.org/t/edit-a-field-caption-or-description/661) — a focused walkthrough for labels and usage notes.
- [Configuring Uniqueness Rules](https://speciforum.org/t/configuring-uniqueness-rules/) — prevent duplicate values or combinations.

> [!question] Adding a field to the form?  
> **Schema Config does not decide which fields appear on a data entry form or where they appear.** View definitions control the form’s fields and layout independently. If you want to add a field to a form, remove one, or move it to a different position, follow [Editing Forms in Specify](https://speciforum.org/t/editing-forms-in-specify/1557).
> 
> | Your goal | Where to make the change |
> | --- | --- |
> | Rename `text1` to a meaningful caption, such as “Object Condition” | **Schema Config** |
> | Mark a configurable field as required | **Schema Config** |
> | Choose a pick list or field format | **Schema Config** |
> | Add “Object Condition” to the Collection Object form | **View definition** |
> | Move that field beside another field on the form | **View definition** |

---

<div class="post-metadata">

**Author:** ![Grant](https://yyz1.discourse-cdn.com/flex029/user_avatar/speciforum.org/grant/32/4255_2.png) [@Grant](https://speciforum.org/u/Grant)\
**Post date:** [April 8, 2026, 5:34pm UTC](https://speciforum.org/t/schema-config/535/2 "2026-04-08T17:34:15Z")

</div>

Split this topic on April 8, 2026, 5:34pm UTC

A post was split to a new topic: [Where is the schema in the database?](https://speciforum.org/t/where-is-the-schema-in-the-database/3508)
