---
updatedAt: 2025-09-25T18:14:08.000Z
agentTools:
  projectIndex: https://docs.constructor.com/llms.txt
---

# Fitment

Enabling filtering of product results to ensure only those that "fit" are returned is easy to facilitate within the Constructor platform. The article below defines how to do so using the automotive industry as an example, however the patterns illustrated are easily extended to other applications.

For example, fitment can help users find brake pads that specifically fit a *2015 Honda Civic LX*. The part must be guaranteed to fit a specific year, make, and model of vehicle.

There are two components of a fitment search:

1. **Selecting a vehicle**\
   Typically, this involves choosing the year, then the make, and then the model of your vehicle.
2. **Requesting matching results**\
   This involves sending information about the selected vehicle with requests so Constructor only returns items that match.

# Defining a fitment attribute in a product catalog

Our recommendation is to define a set of unique attributes consisting of every type of option available to the user for selection. In the automotive industry, this is typically make, model, and year. For example, a `mmy_id` attribute could be defined with options such as `honda:civic-lx:2015`.

Once the options have been established, each item (product) or variation record is sent to Constructor with every applicable `mmy_id` assigned as an option. Please refer to the following articles or API definitions for information on defining attributes.

**CSV feed - API or FTP**

* [CSV feed format - items (products)](https://docs.constructor.com/docs/integrating-with-constructor-product-catalog-csv-csv-feed-format-items-products)
* [CSV feed format - variations](https://docs.constructor.com/docs/integrating-with-constructor-product-catalog-csv-csv-feed-format-variations)

**JSON data - REST API**

* [Create or replace Items](https://docs.constructor.com/reference/v2-items-create-or-replace-items)
* [Create or replace Variations](https://docs.constructor.com/reference/v2-variations-create-or-replace-variations)

In the CSV file format, these should be defined as a JSON array and passed as a valid JSON string.

<Image alt="Fitment facet example - `mmy_id`s" align="center" width="700px" src="https://files.readme.io/ddd4051c84866b0d08e1d453536e6bca125fc7fda98b9d72fb56a896c124892e-CleanShot_2025-05-28_at_10.52.212x.png">
  Fitment example using`mmy_id`
</Image>

## Example CSV

```xml CSV
id,item_name,url,image_url,metadata:json:mmy_id
item-1,Item 1,https://constructor.io,https://constructor.io,"[""honda:civic-lx:2015"",""honda:civic-lx:2016""]"
item-2,Item 2,https://constructor.io,https://constructor.io,"[""all""]"
item-3,Item 3,https://constructor.io,https://constructor.io,"[""all""]"
item-4,Item 4,https://constructor.io,https://constructor.io,"[""honda:civic-lx:2012"",""honda:civic-lx:2016""]"
item-5,Item 5,https://constructor.io,https://constructor.io,"[""honda:civic-lx:2012"",""all""]"
```

In summary:

* The `mmy_id` uniquely identifies every valid combination of make, model, and year.
* Every item (product) or variation with fitment includes a list of `mmy_id`s for the vehicles to which it will fit.

In certain situations, it may be preferable to return results that fit a particular vehicle as well as products that fit all vehicles (universal fit).

* In this scenario, we recommend sending these "universal fit" products with a fitment attribute option value of `all`. This pattern can be extended to any items that fit only a subset of the product catalog.
* When requesting items, a filter can be applied to only return items that match a specific vehicle as well as products that have the `all` value for the fitment field ("universal fit").

# Configure fitment facets

Once you have uploaded your product catalog, you can configure these fitment attributes as a facet (filter).

A facet will allow users to filter their search or browse results by the fitment options provided. This could be choosing to view brake pads for a specific make, model, and year option. You can also use this facet in the API as a filter.

You can configure facets using the [Constructor dashboard](https://docs.constructor.com/docs/using-the-constructor-dashboard-configuring-rules-facets-configure-global-facets) or [our API](https://docs.constructor.com/reference/configuration-facets).

## Hiding fitment facets from end users

In many cases, the fitment facet contains a large number of options, making it preferable not to display it to end users. To achieve this, you should configure the facet to be **non-countable.** This ensures the facet will not appear under API responses as a filter for your users, but it can still be used to filter down results.

You will configure facet availability when you [configure the facet](https://docs.constructor.com/docs/using-the-constructor-dashboard-configuring-rules-facets-configure-global-facets#configure-a-facet):

<Image alt="Setting visibility to hidden within Constructor customer dashboard" align="center" width="500px" border={true} src="https://files.readme.io/77691d16d1b05f0193b62ee0d8b3137a25edda7be1c13e19dc44a97acb671a91-Screenshot_2025-03-07_at_5.52.27_PM.png">
  Setting countable to false within Constructor customer dashboard
</Image>

# Requesting matching results

Once a fitment facet has been defined within the product catalog, filters can be added to requests to ensure only items that match the selected vehicle type are returned.

An example search request may resemble the following:

`https://ac.cnstrc.com/search/shirts?key=API_KEY&filters[mmy_id]=honda:civic-lx:2012`

Please refer to the [API Reference](/reference) for documentation on how to supply filters with requests to retrieve data from Constructor.