# Klaviyo's data model

Learn about Klaviyo's data model, including Metrics, Profiles, Catalogs, and Feeds objects.

## Primary data objects

When syncing data to Klaviyo, it helps to have an understanding of our underlying data model. Klaviyo considers the following objects to be primary data types, since Klaviyo is designed to natively handle these forms of data. This is a non-exhaustive list of data types in Klaviyo:

* **Profiles**
* **Metrics and Events**
* **Catalogs**
* **Web feeds**

Klaviyo’s Event and Profile APIs feed directly into the Events and Profiles objects, respectively.

Catalogs are supported through native integrations (Shopify, WooCommerce, Magento, SFCC, etc.), our Catalogs API, or via a JSON feed.

Web feeds are supported either through a JSON or XML endpoint.

The table below provides more detail on supported data types.

| Data object            | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Resources                                                                                                                                                                                                                                                                                                                                   |
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Profiles               | Profiles represent people, using either an email (`$email`) or a specified customer ID (`$id`) as a primary identifier. Klaviyo supports custom profile properties with the following data types: strings, integers, floats, dates, booleans, arrays/lists, or JSON.                                                                                                                                                                                                                                                                                            | <ul><li><a href="https://help.klaviyo.com/hc/en-us/sections/14508656438555" target="_blank">Profiles</a> (Help Center articles)</li><li>[Profiles API](https://developers.klaviyo.com/en/reference/get_profiles) (API reference)</li></ul>                                                                                                                                          |
| Metrics and Events     | Events are the actions undertaken by Profiles represented as timestamped records with JSON-formatted payloads. Metrics are the groupings for Events of the same name. An Event contains a quantity of attribute-value pairs and arrays, optionally including a nesting structure.</br></br>The Event object is extremely versatile, since it can be used to record any type of timestamped action whether originating client-side (such as *Viewed Product* or *Added to Cart*) or server-side (such as *Placed Order*) and can include associated information. | <ul><li>[Klaviyo onsite tracking](https://developers.klaviyo.com/en/docs/javascript_api)</a> (JavaScript API guide)</li><li>[Sample ecommerce events](https://developers.klaviyo.com/en/docs/guide_to_integrating_a_platform_without_a_pre_built_klaviyo_integration) (Integration guide)</li><li>[Events API](https://developers.klaviyo.com/en/reference/create_event) (API reference)</li><li>[Metrics API](https://developers.klaviyo.com/en/reference/get_metrics) (API reference)</li></ul> |
| Catalogs and Web feeds | Catalogs are used to represent products (or product-like records, such as physical stores) that can be referenced in message templates.</br></br>Catalog items can be synced automatically via a native integration, via a JSON web feed, or via our Catalogs API.                                                                                                                                                                                                                                                                                              | <ul><li>[Sync a custom catalog feed to Klaviyo](https://developers.klaviyo.com/en/docs/guide_to_syncing_a_custom_catalog_feed_to_klaviyo) (Developer guide)</li><li>[Catalogs API](https://developers.klaviyo.com/en/reference/get_catalog_items) (API reference)</li></ul>                                                                                                                                            |

## Other data objects

Klaviyo has other supported data objects such as Lists and Campaigns. These data objects can be created in the Klaviyo app, or utilized programmatically via API.

[block:parameters]
{
  "data": {
    "h-0": "Data object",
    "h-1": "Description",
    "h-2": "Resources",
    "0-0": "Lists and Segments",
    "0-1": "Klaviyo allows you to organize profiles into static lists and dynamic segments.</br></br>Profiles may optionally be assigned membership of multiple lists (or no lists) and may be added to lists automatically by filling out a form, programmatically via API, or manually by CSV upload.</br></br>Profiles will be programmatically added or removed from segments as they meet or fail to meet the segment criteria.",
    "0-2": "<ul><li>[Lists API ](https://developers.klaviyo.com/en/reference/get_lists)(API reference)</li>  \n<li>[Segments API](https://developers.klaviyo.com/en/reference/segments) (API reference)</li></ul>",
    "1-0": "Campaigns",
    "1-1": "Klaviyo allows you to create and execute messaging campaigns that are sent to a target audience defined as a list or segment. Campaigns are can be created in the UI or via API.",
    "1-2": "<ul><li>[Campaigns API](https://developers.klaviyo.com/en/reference/get_campaigns) (API reference)</li></ul>",
    "2-0": "Templates",
    "2-1": "The content and design of a messaging campaign is stored in a template. Templates can contain HTML, CSS, and dynamic tags or logic that utilize Django syntax.",
    "2-2": "<ul><li>[Templates API](https://developers.klaviyo.com/en/reference/get_templates) (API reference)</li><li>[Django tags & templating](https://developers.klaviyo.com/en/docs/django_message_design) (Developer guide)</li></ul>"
  },
  "cols": 3,
  "rows": 3,
  "align": [
    null,
    null,
    null
  ]
}
[/block]