---
updatedAt: 2025-07-15T05:47:23.000Z
agentTools:
  projectIndex: https://mcm-docs.moloco.com/v1.1/llms.txt
---

# Third party catalog feeds

A merchant or product catalog feed contains a list of products for retailers to upload and manage on different platforms. This feed typically includes attributes like product ID, title, description, price, and other relevant details. Third-party feeds can be used to integrate product catalogs into your MCM platform by mapping them to Moloco's catalog specifications.

# Google Merchant feed

For the official Google Merchant feed specification, please refer to <https://support.google.com/merchants/answer/7052112?hl=en>

## Recommendations

We recommend using your Google Merchant feed with our [MSPI Multiple Sellers per Item](https://mcm-docs.moloco.com/docs/mspi-catalog-feed-specification) catalog specification to reduce the need for complex feed file customization. You can simply create an additional ‘[Seller catalog feed](https://mcm-docs.moloco.com/docs/mspi-catalog-feed-specification#seller-catalog-feed)’ without changing your existing Google Merchant feed.

For more information on selecting the correct MCM catalog format, please see: [Catalog Feed Specifications](https://mcm-docs.moloco.com/docs/catalog-feed#catalog-feed-specifications)

## Requirements

> 👍 Ensure your catalog feed meets Moloco's requirements by using our online Catalog Feed Validator, accessible [here](https://mcm-docs.moloco.com/docs/catalog-feed-validator#/).

### MSPI (Multiple Sellers Per Item)(Recommended)

When using MSPI, the original Google Merchant feed file remains unchanged; you should create an additional file called ‘[Seller catalog feed](https://mcm-docs.moloco.com/docs/mspi-catalog-feed-specification#seller-catalog-feed)’ to comply with the [MSPI Catalog feed specification](https://mcm-docs.moloco.com/docs/mspi-catalog-feed-specification).

### SSPI (Single Seller Per Item)(Not Recommended)

We strongly advise using our [MSPI](https://mcm-docs.moloco.com/docs/mspi-catalog-feed-specification) catalog specification instead of SSPI (Single Seller Per Item). MSPI allows you to use your Google Merchant feed file as is, while SSPI requires transformation to append new columns and populate them with the appropriate catalog information.

> 🚧 These fields must be appended to the existing GMC feed.
>
> Add the following to the Catalog Specs as required fields:
>
> **seller\_id** (Required): Unique identifier for the seller. Must be included in every catalog entry.
>
> **seller\_title** (Required): Display name of the seller. Used for ad rendering and reporting purposes.

<br />

> 🚧
>
> When converting the Google Merchant feed to the [SSPI Catalog feed specification](https://mcm-docs.moloco.com/docs/sspi-catalog-feed-specification), if the **sale\_price** field is empty or null, **price** will be mapped to **sale\_price**.
>
> The **price** and **sale\_price** fields in the Google Merchant feed file are formatted as a numeric value followed by the currency code (e.g., "15.00 USD"). Only the numeric value is stored when using SSPI.

### Currency

> 🚧
>
> The default currency is set at the platform level during onboarding and should match the currency stored in the Google Merchant feed. You must convert all price fields to match the currency set on your platform, do not mix currencies.

## Transformation Rules

The Google Merchant feed is automatically transformed into the canonical format listed in the tables below. The transformation rule indicates how Moloco transforms fields found in the Google Merchant feed into our specification.

### Google Merchant Feed Mappings

> 📘 The expected encoding for string data types is UTF-8.

<Table align={["left","left","left","left"]}>
  <thead>
    <tr>
      <th>
        Field
      </th>

      <th>
        Type
      </th>

      <th>
        Validation
      </th>

      <th>
        Canonical Format Mapping
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        id
      </td>

      <td>
        String
      </td>

      <td>
        Max 50 characters
      </td>

      <td>
        id
      </td>
    </tr>

    <tr>
      <td>
        title
      </td>

      <td>
        String
      </td>

      <td>
        Max 200 characters
      </td>

      <td>
        title
      </td>
    </tr>

    <tr>
      <td>
        image\_link
      </td>

      <td>
        String
      </td>

      <td>
        Max 200 characters
      </td>

      <td>
        image\_link
      </td>
    </tr>

    <tr>
      <td>
        seller\_id
      </td>

      <td>
        String
      </td>

      <td>
        Max 200 characters
      </td>

      <td>
        seller\_id
        seller\_title
      </td>
    </tr>
  </tbody>
</Table>

> ✏️ seller\_id field requirements
>
> The **seller\_id** is required for [Single Seller Per Item](https://mcm-docs.moloco.com/docs/sspi-catalog-feed-specification) (SSPI) Catalog Feeds. The **seller\_id** is a virtual column which is not supported by the Google Merchant feed format; you must include this field to meet the SSPI specification.
>
> The **seller\_id** is not required for Multiple Sellers per Item (MSPI) Catalog Feeds.

<Table align={["left","left","left","left"]}>
  <thead>
    <tr>
      <th>
        Field
      </th>

      <th>
        Type
      </th>

      <th>
        Validation
      </th>

      <th>
        Canonical Format Mapping
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        price
      </td>

      <td>
        Float
      </td>

      <td>
        Cannot be negative
      </td>

      <td>
        price
        sale\_price
        (Note: `sale_price` is used if `price` is not provided)
      </td>
    </tr>

    <tr>
      <td>
        sale\_price
      </td>

      <td>
        Float
      </td>

      <td>
        Cannot be negative
      </td>

      <td>
        sale\_price
      </td>
    </tr>
  </tbody>
</Table>

> ✏️ currency requirements
>
> Price fields such as **price** and **sale\_price** found in the Google Merchant feed are represented as Numeric + ISO 4217. Moloco uses the numeric section of this field along with the currency code set at the platform level. You must ensure the currency used in the catalog feed matches the currency set on the platform.

<Table align={["left","left","left","left","left"]}>
  <thead>
    <tr>
      <th>
        Field
      </th>

      <th>
        Type
      </th>

      <th>
        Validation
      </th>

      <th>
        Canonical Format Mapping
      </th>

      <th>
        Transformation Rule
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        product\_type
      </td>

      <td>
        String
      </td>

      <td>
        Max 750 characters
      </td>

      <td>
        category

        For more information please see [Google Merchant product type](https://support.google.com/merchants/answer/6324406?sjid=835354792302535912-NC) documentation
      </td>

      <td>
        **product\_type** is used to fill the internal category field.

        If **product\_type** is not provided, Moloco will fallback to google\_product\_category to fill the internal category field.
      </td>
    </tr>

    <tr>
      <td>
        google\_product\_category
      </td>

      <td>
        String
      </td>

      <td>
        Max 750 characters
      </td>

      <td>
        google\_product\_category
      </td>

      <td>
        Moloco will accept both the full path of the product category or the numerical category ID.

        If **product\_type** is not provided, google\_product\_category will be used instead. In this case, we highly recommend using the full category path which provides better ML performance when compared to the numerical  ID
      </td>
    </tr>

    <tr>
      <td>
        brand
      </td>

      <td>
        String
      </td>

      <td>
        Max 70 characters
      </td>

      <td>
        brand
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        gtin
      </td>

      <td>
        String
      </td>

      <td>
        Max 200 characters
      </td>

      <td>
        gtin
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        condition
      </td>

      <td>
        String (multi-value)
      </td>

      <td>
        ENUM:\
        new, refurbished, used
      </td>

      <td>
        condition
      </td>

      <td>
        ENUM:\
        `new, refurbished, used`
      </td>
    </tr>

    <tr>
      <td>
        adult
      </td>

      <td>
        String
      </td>

      <td>
        ENUM:\
        yes, no
      </td>

      <td>
        adult
      </td>

      <td>
        yes = y\
        no = n
      </td>
    </tr>

    <tr>
      <td>
        description
      </td>

      <td>
        String
      </td>

      <td>
        Max 5000 characters
      </td>

      <td>
        description
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        is\_bundle
      </td>

      <td>
        String
      </td>

      <td>
        ENUM:\
        yes, no
      </td>

      <td>
        is\_bundle
      </td>

      <td>
        yes = y\
        no = n
      </td>
    </tr>

    <tr>
      <td>
        age\_group
      </td>

      <td>
        String (multi-value)
      </td>

      <td>
        ENUM:\
        newborn, infant, toddler, kids, adult
      </td>

      <td>
        age\_group
      </td>

      <td>
        ENUM:\
        `newborn, infant, toddler, kids, teen, adult, all`
      </td>
    </tr>

    <tr>
      <td>
        color
      </td>

      <td>
        String (multi-value)
      </td>

      <td>
        Max 100 alphanumeric characters
      </td>

      <td>
        color
      </td>

      <td>
        Example: `red;blue`
      </td>
    </tr>

    <tr>
      <td>
        gender
      </td>

      <td>
        String (multi-value)
      </td>

      <td>
        ENUM:\
        male, female, unisex
      </td>

      <td>
        gender
      </td>

      <td>
        ENUM:\
        `male, female, unisex`
      </td>
    </tr>

    <tr>
      <td>
        material
      </td>

      <td>
        String (multi-value)
      </td>

      <td>
        Max 200 characters
      </td>

      <td>
        material
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        pattern
      </td>

      <td>
        String (multi-value)
      </td>

      <td>
        Max 100 characters
      </td>

      <td>
        pattern
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        size
      </td>

      <td>
        String (multi-value)
      </td>

      <td>
        Max 100 characters
      </td>

      <td>
        size
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        item\_group\_id
      </td>

      <td>
        String
      </td>

      <td>
        Max 50 alphanumeric characters
      </td>

      <td>
        item\_group\_id
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        availability
      </td>

      <td>
        String
      </td>

      <td>
        ENUM:\
        In\_stock, out\_of\_stock, preorder, backorder
      </td>

      <td>
        availability
      </td>

      <td>
        ENUM:\
        `In_stock, out_of_stock, preorder, backorder`
      </td>
    </tr>

    <tr>
      <td>
        link
      </td>

      <td>
        String
      </td>

      <td>
        Max 2000 Characters
      </td>

      <td>
        link
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        mobile\_link
      </td>

      <td>
        String
      </td>

      <td>
        Max 2000 characters
      </td>

      <td>
        mobile\_link
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        additional\_image\_link
      </td>

      <td>
        String
      </td>

      <td>
        Max 2000 characters
      </td>

      <td>
        additional\_image\_link
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        custom\_label\_0
      </td>

      <td>
        String
      </td>

      <td>
        Max 200 characters
      </td>

      <td>
        custom\_label\_0
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        custom\_label\_1
      </td>

      <td>
        String
      </td>

      <td>
        Max 200 characters
      </td>

      <td>
        custom\_label\_1
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        custom\_label\_2
      </td>

      <td>
        String
      </td>

      <td>
        Max 200 characters
      </td>

      <td>
        custom\_label\_2
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        custom\_label\_3
      </td>

      <td>
        String
      </td>

      <td>
        Max 200 characters
      </td>

      <td>
        custom\_label\_3
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        custom\_label\_4
      </td>

      <td>
        String
      </td>

      <td>
        Max 200 characters
      </td>

      <td>
        custom\_label\_4
      </td>

      <td>

      </td>
    </tr>
  </tbody>
</Table>

> 🚧
>
> Fields marked with (multi-value) accept a list of values separated by a semicolon (;).\
> While Google Merchant feed format uses / as a delimiter, we currently only support ;.

***

# Naver EP

For the official Naver EP feed specification, please refer to: <https://join.shopping.naver.com/misc/download/ep_guide.nhn>

## Limitations

> 🚧
>
> The Naver EP feed file supports conversion only to the [SSPI (Single Seller Per Item)](https://mcm-docs.moloco.com/docs/sspi-catalog-feed-specification) Catalog specification. MSPI (Multiple Sellers per Item) is *not* supported.

For more information on selecting the correct MCM catalog format, please see: [Catalog Feed Specifications](https://mcm-docs.moloco.com/docs/catalog-feed#catalog-feed-specifications)

## Requirements

When converting the Naver EP feed to the SSPI Catalog feed specification, please note the following field mappings:

* `normal_price` will be mapped to `price`.\ <br />
* `price_pc` will be mapped to `sale_price`.

Note: If **normal\_price** is empty / null, **price\_pc** will also be mapped to **price**.

> 👍 Ensure your catalog feed meets Moloco's requirements by using our online Catalog Feed Validator, accessible [here](https://mcm-docs.moloco.com/docs/catalog-feed-validator#/).

### Shipping Fields

> 🚧
>
> When using the **shipping** field a value of **-1** indicates pay on delivery, which is not unsupported by Moloco. If the **shipping** field is set to **-1** the field will be converted into an empty string in the SSPI catalog feed.
>
> Positive numerical values will be converted and used for the **shipping\_charge**. Do not include any negative values.

### Currency

> 🚧
>
> The default currency is set at the platform level during onboarding and should match the currency stored in the Naver EP feed file. You must convert all price fields to match the currency set on your platform, do not mix currencies.

## Transformation Rules

The Naver EP feed is automatically transformed into the canonical format listed in the tables below. The transformation rule indicates how Moloco transforms fields found in the Naver EP feed into our specification.

### Naver EP Catalog Mappings

> 📘 The expected encoding for string data types is UTF-8.

<Table align={["left","left","left","left","left"]}>
  <thead>
    <tr>
      <th>
        Field
      </th>

      <th>
        Type
      </th>

      <th>
        Validation
      </th>

      <th>
        Canonical Format Mapping
      </th>

      <th>
        Transformation Rule
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        id
      </td>

      <td>
        String
      </td>

      <td>

      </td>

      <td>
        id
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        title
      </td>

      <td>
        String
      </td>

      <td>

      </td>

      <td>
        title
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        image\_link
      </td>

      <td>
        String
      </td>

      <td>

      </td>

      <td>
        image\_link
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        seller\_id
      </td>

      <td>
        String
      </td>

      <td>

      </td>

      <td>
        seller\_id
        seller\_title
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        normal\_price
      </td>

      <td>
        Float
      </td>

      <td>

      </td>

      <td>
        price
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        price\_pc
      </td>

      <td>
        Float
      </td>

      <td>

      </td>

      <td>
        sale\_price
        price
        (Note: **normal\_price** is used if **price** is not provided)
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        category\_name1
      </td>

      <td>
        String
      </td>

      <td>

      </td>

      <td>
        category (first level in the category)
      </td>

      <td>
        See notes below
      </td>
    </tr>

    <tr>
      <td>
        category\_name2
      </td>

      <td>
        String
      </td>

      <td>

      </td>

      <td>
        category (second level in the category)
      </td>

      <td>
        See notes below
      </td>
    </tr>

    <tr>
      <td>
        category\_name3
      </td>

      <td>
        String
      </td>

      <td>

      </td>

      <td>
        category (third level in the category)
      </td>

      <td>
        See notes below
      </td>
    </tr>

    <tr>
      <td>
        category\_name4
      </td>

      <td>
        String
      </td>

      <td>

      </td>

      <td>
        category (fourth level in the category)
      </td>

      <td>
        See notes below
      </td>
    </tr>
  </tbody>
</Table>

> ✏️ category\_name# transformation rules
>
> category\_name# fields will be transformed internally into a hierarchical structure with the category\_name# fields separated with a greater than sign **>** as follows:
>
> `category_name1>category_name2>category_name3>category_name4`

<Table align={["left","left","left","left","left"]}>
  <thead>
    <tr>
      <th>
        Field
      </th>

      <th>
        Type
      </th>

      <th>
        Validation
      </th>

      <th>
        Canonical Format Mapping
      </th>

      <th>
        Transformation Rule
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        review\_count
      </td>

      <td>
        Int
      </td>

      <td>

      </td>

      <td>
        review\_count
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        brand
      </td>

      <td>
        String
      </td>

      <td>

      </td>

      <td>
        brand
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        adult
      </td>

      <td>
        String
      </td>

      <td>

      </td>

      <td>
        adult
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        update\_time
      </td>

      <td>
        String
      </td>

      <td>

      </td>

      <td>
        updated\_time
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        link
      </td>

      <td>
        String
      </td>

      <td>

      </td>

      <td>
        link
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        mobile\_link
      </td>

      <td>
        String
      </td>

      <td>

      </td>

      <td>
        mobile\_link
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        add\_image\_link
      </td>

      <td>
        String
      </td>

      <td>

      </td>

      <td>
        additional\_image\_link
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        shipping
      </td>

      <td>
        Float
      </td>

      <td>

      </td>

      <td>
        shipping\_charge
      </td>

      <td>
        `-1` represents pay on delivery. Moloco does not support this feature, if the shipping field is set to `-1` the field will be converted into null (empty) string. Positive numerical values will be converted and used for the `shipping_charge` . **Do not include negative values.**
      </td>
    </tr>

    <tr>
      <td>
        point
      </td>

      <td>
        String
      </td>

      <td>

      </td>

      <td>
        reward\_point
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        gender
      </td>

      <td>
        String (multi-value)
      </td>

      <td>
        ENUM:
        남자
        여자
        남녀공용
      </td>

      <td>
        gender
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        group\_id
      </td>

      <td>
        String
      </td>

      <td>

      </td>

      <td>
        item\_group\_id
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        condition
      </td>

      <td>
        String (multi-value)
      </td>

      <td>
        ENUM:
        신상품
        중고
      </td>

      <td>
        condition
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        age\_group
      </td>

      <td>
        String (multi-value)
      </td>

      <td>
        ENUM:
        유아
        아동
        청소년
        성인
      </td>

      <td>
        age\_group
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        class
      </td>

      <td>
        String
      </td>

      <td>

      </td>

      <td>
        class
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        seller\_title
      </td>

      <td>
        String
      </td>

      <td>

      </td>

      <td>
        seller\_title
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        availability
      </td>

      <td>
        String
      </td>

      <td>

      </td>

      <td>
        availability
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        blocked
      </td>

      <td>
        String
      </td>

      <td>

      </td>

      <td>
        blocked\_reason
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        rating
      </td>

      <td>
        Float
      </td>

      <td>

      </td>

      <td>
        rating
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        category
      </td>

      <td>
        String
      </td>

      <td>

      </td>

      <td>
        categories
      </td>

      <td>
        If this field is present, we will map this to categories and ignore the category\_name\_1/2/3/4
      </td>
    </tr>
  </tbody>
</Table>

> 🚧
>
> Fields marked with (multi-value) accept a list of values separated by a semicolon (;).\
> While Naver EP feed format uses | as a delimiter, we currently only support ;.