## Product Mapping Resolution

The m3ter Connector for Salesforce managed package offers the _Product Mapping Resolution_ capability, which supports mapping the same Salesforce Product to different m3ter Plans or Plan Templates, depending on Billing Frequency and/or Currency Code. This topic introduces Product Mapping Resolution and explains how to work with it:

- [Mapping Resolution Additional Dimensions](https://docs.m3ter.com/guides/m3ter-connector-for-salesforce/product-mapping-resolution#mapping-resolution-additional-dimensions)
- [Billing Frequency](https://docs.m3ter.com/guides/m3ter-connector-for-salesforce/product-mapping-resolution#billing-frequency)
- [Currency Code](https://docs.m3ter.com/guides/m3ter-connector-for-salesforce/product-mapping-resolution#currency-code)
- [How Mapping Resolution Cascades](https://docs.m3ter.com/guides/m3ter-connector-for-salesforce/product-mapping-resolution#how-mapping-resolution-cascades)

**Important!**

- **Check Version**. The Product Mapping Resolution feature described in this topic is only available in **v1.1** and above of the m3ter Connector for Salesforce. See [m3ter Connector for Salesforce - Changelog](https://docs.m3ter.com/guides/m3ter-connector-for-salesforce/m3ter-connector-for-salesforce-changelog) for details on how to check your current installed version.

## Mapping Resolution Additional Dimensions

The Product-to-Plan mapping engine can now resolve mappings using two additional dimensions — **billing frequency** and **currency code** — in addition to the existing Product match. Both additional dimensions are optional and only take effect when configured. For example:

**Important!** If you are upgrading to **v1.1** of the m3ter Connector for Salesforce, you must first add the **Billing Frequency** and **Currency Code** fields to the **SyncConfig CMDT layouts** in your Org.

## Billing Frequency

This allows a single Product to resolve to different m3ter Plans depending on the source record’s billing frequency - for example, Monthly vs. Annual. **Setup (SyncConfig):**

- Set **Product Mapping Billing Frequency Key** to the field path where the billing frequency lives on the source object — a direct field (such as `Description`) or a parent path (such as `Opportunity.Description`)

**Mapping records:**

- Set the new **Billing Frequency** field on each m3ter Mapping to the value that mapping applies to.
- Leave it blank to act as the generic fallback for that Product.

**Notes:**

- Values are matched after trim and case normalization, so minor casing/white space differences still match.
- Leave the **SyncConfig** key blank to keep the existing Product-only behavior.

## Currency Code

This allows a single Product to resolve to different m3ter Plans depending on the record’s currency — useful for multi-currency Orgs where each currency has its own Plan. **Setup (SyncConfig):**

- Set **Product Mapping Currency Code Key** to the field path where the currency lives (such as `CurrencyIsoCode`), or a parent path (such as `Opportunity.CurrencyIsoCode`)

**Mapping records:**

- Set the new **Currency Code** field on each m3ter Mapping (such as USD, EUR, GBP).
- Leave it blank for a generic fallback mapping.

**Notes:**

- Values are matched after trim and uppercase normalization, in line with ISO currency codes.

## How Mapping Resolution Cascades

When both dimensions are configured, Product Mapping Resolution tries the most specific match first and falls back progressively:

- Product + Billing Frequency + Currency Code
- then Product + Billing Frequency
- then Product + Currency Code
- then Product only
