Skip to content

Fitment mapping & synonyms

There is one file, so the Action column determines what we do: replace or add.

  • Add (synonyms)
  • Replace (mapping)

It is connected through vehicle_mapping in the sources.

We can apply the fitments of one vehicle to another vehicle.

In this example, J-4000 will be compatible with all the same products as the vehicles on the left (J-4500/4600/4700).

The same thing, but the vehicle on the left is replaced by the vehicle on the right:

The year cannot be mapped to a different year. There is no YearFrom / YearTo. Use YearRange only, as the match key for which years the row applies to.

* in a FieldFrom cell and in YearRange means “match any value at this position”. An empty From cell is not a wildcard - it matches only an empty / Universal value.

From / YearRangeMatches
*Any fitment value for that field (or any year, for YearRange)
Empty FieldFromOnly a blank / Universal value - not “any”
Concrete valueThat value only

YearRange accepts * for any year, or a normal year range such as 2020-2021. A row with an empty YearRange is skipped.

After a row matches, FieldTo decides the output:

FieldFromFieldToResult
*EmptyLeave the current value
*PopulatedOverwrite with FieldTo
EmptyPopulatedFieldTo
EmptyEmptyEmpty string
PopulatedEmptyUniversal
PopulatedPopulatedFieldTo

* in a To cell also leaves the current field value (the original, or whatever a previous mapping in the same pass already wrote).

In layman’s terms, for a specific field such as Submodel:

  • * => empty = leave it as-is on every matching vehicle
  • * => a value = set that value on every matching vehicle
  • Empty => a value = only blank/Universal submodels become that value
  • Empty => empty = force blank
  • A value => empty = that specific submodel becomes Universal
  • A value => another value = swap one specific submodel for another

Each row is matched using that row’s From columns. You do not have to fill every column.

  • Without *, a shorter row still applies to more specific vehicles. A Make-only row matches every model of that make.
  • With *, filled cells must match the vehicle exactly; * matches any value in that column.

If several rows match the same vehicle, the most specific ones are used (more filled-in From values beat more *s). If they are equally specific, all of them are applied, one after another.

That lets a mapping collapse onto wildcard rows instead of listing every year and model. For example a RideType cleanup can be one row (YearRange=*, RideTypeFrom=Street Motorcycle, RideTypeTo=Street, * in the other From/To fields) rather than a row per year/model.

The mapped values are applied at index time. After changing vehicle_mapping, reindex the store.