> ## Documentation Index
> Fetch the complete documentation index at: https://product-discovery.developer.voyado.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Storing presentational information

> Store UI-only data in Elevate without indexing it, using customJson on products and variants and customData on landing pages and navigation nodes.

Presentational information is data that isn't intended to be used in search, filters, or facets — for example, data that is used by the frontend code to render a part of a page.

The recommendation is to keep this kind of data out of Elevate since it increases the response size and might cause strange search hits. However, it might not always be possible to omit this kind of information because of the difficulty of getting data from other systems.

## Products and variants

If this type of data needs to be stored in products or variants in Elevate, it should be stored as a JSON blob, as it will **not** be indexed. Group related data together in an attribute to minimize the number of attributes and store only the necessary information. The JSON blob should be stored as a custom attribute in Admin v3 or as a custom JSON field in Admin v4.

The custom attribute or custom JSON field will be returned in a product-page request and can be included in listings via `presentCustom` or by using a template that includes that attribute or field.

### Example

The following examples show a variable that controls the UI on a product page, `showPDPBanner`, and also an `internalId` that shouldn't be searchable.

If `internalId` was stored as a regular custom attribute and another custom attribute contained a value with `cm`, for example `55 cm`, a search for `15 cm` would result in the product being listed.

<Tabs>
  <Tab title="Admin v4">
    ```json title="on ProductData and VariantData" icon="code" theme={null}
    {
        "customJson": {
            "displayInformation": {
                "showPDPBanner": true,
                "internalId": 15
            }
        }
    }
    ```
  </Tab>

  <Tab title="Admin v3">
    ```xml title="on product or variant" icon="code" theme={null}
    <custom_attributes>
        <display_information>{"showPDPBanner": true, "internalId": 15}</display_information>
    </custom_attributes>
    ```
  </Tab>
</Tabs>

## Landing pages

If there is presentational information related to a category, it can be saved on the field `customData` for each locale on a page.

The `customData` field will be returned on landing-page requests.

### Example

```jsonc title="Page import with presentational data" icon="code" expandable theme={null}
{
    "market": "se",
    "type": "FULL",
    "addOrUpdate": [ {
        "id": "/women/shirts",
        "customData": {
            "en-GB": {
                "showBanner": true,
                "showBannerExpanded": true,
                "bannerImage": "/assets/banners/sale_01.jpg"
            },
            "sv-SE": {
                "showBanner": true,
                "showBannerExpanded": false,
                "bannerImage": "/assets/banners/sale_01.jpg"
            }
        }
  } ]
  //.. omitted for brevity
}
```

## Navigation

If the nodes in the navigation require presentational information it can be stored on the field `customData`. The `customData` field will be returned on landing-page requests as well as requests to the navigation tree.

### Example

```jsonc title="Navigation import with presentational data" icon="code" expandable theme={null}
{
  "locale": "sv-SE",
  "market": "se",
  "type": "FULL",
  "addOrUpdate": [ {
    "id": "/women/shirts",
    "title": "Shirts",
    "type": "PAGE",
    "customData": {
      "highlight": "true",
      "viewableFrom": "2010-10-20 00:00:00"
    }
    //.. omitted for brevity
  } ]
}
```
