> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getkato.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Design useful attributes

> Give every detail a name and a type that matches the way you use it.

export const DocImage = ({src, alt, caption, kind = "workspace", thumbnail = false, natural = false}) => {
  const paths = {
    objects: "m12 3 9 4.5v9L12 21l-9-4.5v-9L12 3Z M3 7.5l9 4.5 9-4.5 M12 12v9",
    attributes: "M4 5h16 M4 12h16 M4 19h16 M8 3v4 M16 10v4 M10 17v4",
    records: "M5 3h14v18H5z M8 7h8 M8 11h8 M8 15h5",
    relationships: "M8 8H4v8h4 M16 8h4v8h-4 M8 12h8 M10 10l-2 2 2 2 M14 10l2 2-2 2",
    views: "M3 4h18v16H3z M3 9h18 M9 9v11 M15 9v11",
    importing: "M12 3v12 M8 11l4 4 4-4 M4 16v5h16v-5",
    workspace: "M4 4h16v16H4z M4 9h16 M9 9v11",
    navigation: "m5 5 14 5-6 3-3 6-5-14Z",
    team: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2 M16 4a4 4 0 0 1 0 8 M22 21v-2a4 4 0 0 0-3-3.87 M13 7a4 4 0 1 1-8 0 4 4 0 0 1 8 0Z",
    tasks: "M9 6h11 M9 12h11 M9 18h11 M3 6l1 1 2-2 M3 12l1 1 2-2 M3 18l1 1 2-2",
    meetings: "M4 5h16v15H4z M4 10h16 M8 3v4 M16 3v4 M8 14h3 M8 17h6",
    ai: "m12 3 2.5 6.5L21 12l-6.5 2.5L12 21l-2.5-6.5L3 12l6.5-2.5L12 3Z",
    automation: "M9 3h6v6H9z M3 16h6v5H3z M15 16h6v5h-6z M12 9v4 M6 16v-3h12v3"
  };
  return <figure className={["kato-visual", thumbnail ? "kato-visual--thumbnail" : ""].filter(Boolean).join(" ")}>
    {src ? <div className={["kato-visual-frame", natural ? "kato-visual-frame--natural" : ""].filter(Boolean).join(" ")}>
        {thumbnail ? <img src={src} alt={alt || ""} loading="lazy" decoding="async" /> : <a className="kato-visual-fullsize" href={src} target="_blank" rel="noreferrer" aria-label={`Open full-size image: ${alt || caption || "Kato guide"}`}>
            <img src={src} alt={alt || ""} loading="lazy" decoding="async" />
          </a>}
      </div> : <div className="kato-visual-frame kato-placeholder" role={thumbnail ? undefined : "img"} aria-label={thumbnail ? undefined : `Image placeholder: ${alt || caption || "Kato workspace"}`} aria-hidden={thumbnail ? "true" : undefined}>
        <span className="kato-orbit kato-orbit--outer" />
        <span className="kato-orbit kato-orbit--inner" />
        <span className="kato-visual-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true"><path d={paths[kind] || paths.workspace} /></svg></span>
        {!thumbnail && <span className="kato-placeholder-label">Image placeholder</span>}
      </div>}
    {caption && !thumbnail && <figcaption>{caption}{src && <span className="kato-visual-hint">Select the image to view it full size.</span>}</figcaption>}
  </figure>;
};

Attributes define the details an object stores. A project might have a name,
status, budget, and target date. Each project record supplies its own values for
those attributes.

<DocImage kind="attributes" alt="Attribute names and types in an object's settings" caption="A small set of clear attributes makes records easier to maintain." />

## Choose the right type

| Information                    | Attribute type         | Example                   |
| ------------------------------ | ---------------------- | ------------------------- |
| A name or short description    | Text                   | Website refresh           |
| A count or measurement         | Number                 | 12 deliverables           |
| A monetary amount              | Currency               | A project budget          |
| A deadline                     | Date or Date & Time    | The target launch date    |
| One stage or category          | Select                 | Planned, Active, Complete |
| Several categories             | Multi-Select           | Design and Development    |
| A yes-or-no detail             | Checkbox               | Brief approved            |
| Contact details                | Email, Phone, or URL   | A client’s website        |
| Another item in your workspace | Record or Relationship | The project’s client      |

Kato also supports types such as Location, Rating, Personal Name, and Formula.
Use the options that fit your workflow; you do not need every type in every object.

## Add an attribute

In the object's **Attributes** settings, choose **Create attribute**. Give it a
clear name, select its type, and configure the options the type requires. For
select attributes, use a short set of choices that the team understands.

An attribute definition applies to the object. Its value belongs to an individual
record. Adding a Budget attribute creates a place to store each project's budget;
it does not assign the same budget to every project.

## Example: add a project status

Use this example only if your object does not already have an attribute for the
same purpose. The option names below are a suggested workflow, not required Kato defaults.

1. Open the object's **Attributes** settings and choose **Create attribute**.
2. Set **Attribute Type** to **Select** and **Name** to **Delivery status**.
3. Add a description explaining how your team uses it, such as “The current
   stage of delivery, updated by the project lead.”
4. Under **Options**, add **Planned**, **Active**, and **Complete**. Give each a
   clear meaning before your team starts using it.
5. Review any **Required** setting. Require a value only if the person creating
   a record can reasonably supply it at that time.
6. Save the attribute. Open a project record and select **Active**.
7. Show the attribute in a view and confirm the value appears on the intended record.

Use **Multi-Select** when several options can apply at once, such as Design and
Development services. A single current stage is usually easier to interpret as
**Select**, where one option applies.

## Configure values for the work you do

For a budget, choose **Currency** and review the currency and decimal-place
settings. A text field containing “five thousand” cannot serve the same purpose
as a monetary value when you need consistent comparisons.

For a date, distinguish a day-level target from a precise appointment. Use a date
for “due on Friday” and a date/time value when a specific time is part of the fact.

For a related client, use a link field instead of copying the client's name into
text. A text value may describe a client but does not establish a relationship
with that client's record.

## Troubleshoot an attribute

| Problem                                        | What to check                                                                       |
| ---------------------------------------------- | ----------------------------------------------------------------------------------- |
| The field exists but is not visible in a table | Add it to that view's visible attributes.                                           |
| You cannot choose the value you want           | Check the type and configured select options.                                       |
| A record form requires a value too early       | Review the attribute's Required setting with whoever owns the object.               |
| A system field cannot be edited                | It may be managed by Kato; use a suitable custom attribute for a different purpose. |

Changing the schema affects more than one record. Before removing an attribute,
check which views and workflows use it and review the confirmation carefully.

## Keep the structure understandable

Use specific labels such as **Target date** instead of **Date 2**. Check whether an
existing attribute already covers the information before adding another.

Some system attributes are managed by Kato and cannot be edited or reordered like
custom attributes. Automatically populated attributes may also be read-only.

<Tip>
  API guides use the term **field** for an attribute. The field definition tells
  your integration which values it accepts and whether it is writable.
</Tip>

<Card title="Work with records" icon="file-lines" href="/documentation/data/records">
  Put those attributes to use on a real item.
</Card>


## Related topics

- [Choose what to track](/documentation/data/objects.md)
- [Build a project pipeline](/recipes/project-pipeline.md)
- [Work with records](/documentation/data/records.md)
- [Introduction](/documentation/introduction.md)
- [Onboard a new client](/recipes/onboard-client.md)
