Data model

At the core of Attio is our powerful and flexible data model, which allows you to define custom objects and lists with a wide array of attribute types.

Objects and records can be used to model your domain entities, while lists can be used to aggregate them together and model business processes. However, both objects and lists can have their own attributes. For example, you might be using the deal object to keep track of the various deals you have in progress, but you could also create a list of deals with some additional attributes only relevant to a deal in that list.


Objects are the data types used to store facts about your customer. By themselves, they contain little information other than a name, but records and attributes are scoped to a single object. Attio comes with two objects enabled by default, people and companies, and three optional objects: deal, user and workspace.

In relational database terms, objects are roughly tables. In object-orientated terms, they are analogous to classes.
Note that an instance of an object is called a record (see below).


Records are an instantiation of an object, e.g. a specific person or a specific company. In relational database terms, a record is roughly a row in a table. In object-orientated terms, they are analogous to an object (an instantiated class).


Attributes sit on objects and lists and describe what data we can store. Some attributes, such as the name on a erson, are system defined. Others, you define yourself, either in Attio’s UI or over the API. Attributes are one of many types such as text, number, select, or currency. In relational database terms, an attribute is roughly a column in a table.

Lists & entries

Lists are composed of multiple rows, known as "entries", each of which corresponds to a single record. Entries are created by adding a record to a list. Lists can be used to model a particular process. For example, you might have a "Sales" list that contains the companies that you have relationships with.