Product Data Integration

There are two methods to integrate your product data with RMC:


Sub-categories which placed under main categories have to have different category code. Categories name can be same. Category tree can be; woman>woman_dress>woman_shoes, man>man_dress>man_shoes.





On this page:



1. Using CSV without headers

If you offer different product variations (such as size, color, material, etc) than your integration will slightly be different, please follow the guidelines on the Product Variant page.


You must comply with the following rules to ensure successful product.csv integration:


  1. The file must be accessible through HTTP.
  2. The file must be zip compressed.
  3. The file must be updated at least once a day.
  4. There must not be a header in the first line.
  5. The file must be UTF-8 encoded without BOM (byte order mark).
  6. Use semicolon to separate columns.
  7. If a product goes out of stock, stock column must be declared as 0 (zero) or the entire line must be removed from the file.
  8. If there is no discounted price, the original price must be written in the discounted price column as well, ensuring that both columns contain the same value.
  9. All product codes must be unique. 
  10. A product can have only 1 category. If a product is linked to multiple categories use only the default category.
  11. Product codes you sent from web site or mobile app must be the same as product codes in the Product Feed.


Click here to download and view a sample CSV file.


Columns must be ordered in the following way:

All columns must be defined with a value. If a column does not have a value, it must be defined with a blank value.



ColumnDescriptionExample
1.Product Code

2.Product Name

3.Category Codein hierarchical orderELECT>CELLPHN>SMRTPDH
4.Category Namein hierarchical orderElectronics>Cell Phones>Smart Phones
5.Brand

6.Is Active0 or 1
7.Inventorytotal quantity in stock
8.Original Price

9.Discounted Price

10.Product URL
http://www.website.com/productURL.html
11.Small Image URL
http://www.website.com/productImage.jpg
12.Medium Image URL

13.Large Image URL

14.RatingUser Ratings
15.Original Price Currency
USD
16.Discount Price Currency
USD
17.Same Day Delivery0 or 1
18.Free Delivery0 or 1
19.Number of Comments

20.Discount Ratio

21.Attribute 1

22.Attribute 2

23.Attribute 3

24.Attribute 4

25.Attribute 5

26.Color

27.Material

28.ItemGroupID

29.Gender

Gender Information

Use M for Male, F for Female, NULL for empty columns


30.Age Group

31.Commentator

32.Comment

33.Gifts

34.Attribute 6

35.Attribute 7

36.Attribute 8

37.Attribute 9

38.Attribute 10


First 20 columns are mandatory. Even if you are not going to use them you have to include semicolons for the first 20 columns. Columns after the Discount Rate column are optional.


The following columns can not be left blank: Product Code, Category Code, Category Name, Inventory, Original Price, Discounted Price, Product URL, Original Price Currency.


At least one of the following columns must contain a valid URL of the product image: Small Image URL, Medium Image URL, and Large Image URL.


Once you have prepared the required file based on the rules and standards mentioned above, follow these steps below to validate it and schedule an automatic upload:

  1. Go to  Personalize > Settings > Product Integration.

  2. Enter the URL for the CSV file you have created. 

  3. Click “Test URL” to validate the URL and file.

  4. If you have no error in your Test Detail, click “Save URL”. 

  5. Click “Add Trigger” to schedule product data uploads. We also recommend that you synchronize the product data generation and upload frequency.




2. Using XML

If you wish to send your product information to RMC using Google Product Feed XML, you have to follow Google standards. 


Following tags have to be inside the <item> or <product> tags to run RMC Segment Reporting properly.


Click here to download and view a sample XML file.


TagsDescription

<product_code>


<product_name>
<category_code>
<category_name>
<brand>
<is_active>
<inventory>
<original_price>
<discounted_price>
<product_url>
<small_image>

<medium_image>


<large_image>
<rating>
<original_price_currency>
<discount_price_currency>
<same_day_delivery>0 or 1
<free_delivery>  0 or 1
<number_of_comments>
<discount_ratio>between 0 and 100
<attribute1>
<attribute2>
<attribute3>
<attribute4>
<attribute5>
<color>
<material>
<itemgroupid>
<gender>

Gender Information

Use M for Male, F for Female, NULL for empty columns

<agegroup>
<commentator>
<comment>
<gifts>
<attribute6>
<attribute7>
<attribute8>
<attribute9>
<attribute10>


Uploading and Validating the Data 

To verify your product file format and content, you can use the Product File Integrator.

Choose; Cog Icon > Personalization Center > Recommendation > Product Integration



  1. On the Product Integration page enter your product file’s url or ftp address and schedule the integration just a few minutes later than the current time you are in.

  2. Wait until your scheduled time and refresh the page to see the integration result.

  3. Click on Log Detail to see if there are any errors in your product file.



You can go to Recommend > Product Catalog from the menu on top to see the uploaded products.



3. Product Integration for Multi-Language, Multi-Currency and Location 

3.1. By Using CSV;

In this section, you can find the rules to be followed in product integration in order for the products recommended in the widgets of RMC Recommend to work responsively with websites that support multi-language and multi-currency.


Visilabs CSV product integration service has a structure that does not have header information, and fixed column order in CSV. Additions have been made to the existing integration file standards so that the products to be proposed in widgets on sites that support multi-language and multi-currency can be displayed in the language and currency preferred by the visitor.

The changes are briefly as follows:

  1. Including header information in CSV product integration file is mandatory for multi-language support. Details are explained in the "CSV File Header Information" section.
  2. The site's localization options (currency, product availability and language) and standard product information should be  provided.In other words, it is necessary to provide the correspondence of the standard columns according to the supported location options. Details are explained in the "Customizing Product Data" section.
  3. Consistency must be maintained in the product information, provided for localization. Details are explained in the "Consistency in Localized Product Information" section.



In order for widgets to work with sites that support multi-language / multi-currency, all guidelines under Product Data integration must be followed. Some columns in the product information will be customized with currency, some columns with the availability of the product (location) and some columns with language.


In this section, you can only find information about product integrations made with CSV.



CSV File Header Information:


ProductCode;ProductName;CategoryCode;CategoryName;Brand;IsActive;Inventory;OriginalPrice;DiscountedPrice;TargetURL;SmallImageURL;MediumImageURL;LargeImageURL;Rating;OriginalPriceCurrency;

DiscountPriceCurrency;ShippingOnSameDay;FreeShipping;CommentCount;DiscountRatio


Attribute1;Attribute2;Attribute3;Attribute4;Attribute5;Color;Material;ItemGroupID;Gender;AgeGroup;Commentator;Comment;Attribute6;Attribute7;Attribute8;Attribute9;Attribute10


";" (semicolon) must be used as the column separator.


Standard for column naming to be used for customizing data:

New title names to be added for localization should be generated, beginning with the original column name followed by the '_ ' character, by combining a language, currency or location code suffix due to the area to be customized. The details of the columns that can be customized according to language, currency, location will be mentioned in the next section.



Customizing Product Data


We mentioned that product information can be customized on the basis of language, currency and availability (location) in the “CSV File Header Information” section above.


Product information that can be customized with language:


Column naming to be used in the data to be customized with the language should be done as follows: the ' ' character and the 2-character ISO 639-1 code should be added after the original name of the related field.


Example of 2 digit ISO 639-1 language codes

English

en

German

de

French

fr

Spanish

es

Russian

ru



The columns of the CSV product integration file that can be customized to the language are as follows:

Original Column Name

Customized Column Format

Data Type

Example(Sample)

CategoryName

CategoryName_[language]

string

CategoryName_en,CategoryName_de,CategoryName_fr

ProductName

ProductName_[language]

string

ProductName_en,ProductName_de,ProductName_fr

TargetURL

TargetURL_[language]

string

TargetURL_en,TargetURL_de,TargetURL_fr

SmallImageURL

SmallImageURL_[language]

string

SmallImageURL_en,SmallImageURL_de,SmallImageURL_fr

MediumImageURL

MediumImageURL_[language]

string

MediumImageURL_en,MediumImageURL_de,MediumImageURL_fr

LargeImageURL

LargeImageURL_[language]

string

LargeImageURL_en,LargeImageURL_de,LargeImageURL_fr

Rating

Rating_[language]

string

Rating_en,Rating_de,Rating_fr

CommentCount

CommentCount_[language]

int

CommentCount_en,CommentCount_de,CommentCount_fr

Color

Color_[language]

string

Color_en,Color_de,Color_fr

Material

Material_[language]

string

Material_en,Material_de,Material_fr

Gender

Gender_[language]

string

Gender_en,Gender_de,Gender_fr

AgeGroup

AgeGroup_[language]

string

AgeGroup_en,AgeGroup_de,AgeGroup_fr

Attribute1

Attribute1_[language]

string

Attribute1_en,Attribute1_de,Attribute1_fr

Attribute2

Attribute2_[language]

string

Attribute2_en,Attribute2_de,Attribute2_fr

Attribute3

Attribute3_[language]

string

Attribute3_en,Attribute3_de,Attribute3_fr

Attribute4

Attribute4_[language]

string

Attribute4_en,Attribute4_de,Attribute4_fr

Attribute5

Attribute5_[language]

string

Attribute5_en,Attribute5_de,Attribute5_fr

Commentator

Commentator_[language]

string

Commentator_en,Commentator_de,Commentator_fr

Comment

Comment_[language]

string

Comment_en,Comment_de,Comment_fr



Product information that can be customized with currency:


Column naming to be used in the data to be customized with the currency should be done as follows: the ' ' character and the 3-character ISO-4217 code should be added after the original name of the related field.



Example of 3 digit ISO-4217 currency codes

Turkish Lira

TRY

Euro

EUR

United States Dollar

USD

Russian Ruble

RUB

British Pound

GBP



The columns of the CSV product integration file that can be customized to the currency are as follows:


Original Column Name

Customized Column Format

Data Type

Example(Sample)

OriginalPrice

OriginalPrice_[currencycode]

money

OriginalPrice_USD,OriginalPrice_GBP,OriginalPrice_EUR

DiscountedPrice

DiscountedPrice_[currencycode]

money

DiscountedPrice_USD,DiscountedPrice_GBP,DiscountedPrice_EUR

OriginalPriceCurrency

Currency_[currencycode]

string

Currency_USD,Currency_GBP,Currency_EUR

DiscountRatio

DiscountRatio_[currencycode]

float

DiscountRate_USD,DiscountRate_GBP,DiscountRate_EUR

DiscountPriceCurrency

DiscountCurrency_[currencycode]

string

DiscountedPriceCurrency_USD,DiscountedPriceCurrency_GBP,DiscountedPriceCurrency_EUR



Product information that can be customized with location:


Column naming to be used in the data to be customized with the currency should be done as follows: the ' ' character and the 2-character ISO 3166-1 code should be added after the original name of the related field.



Example of 2 digit ISO 3166-1 location codes

Turkey

TR

Germany

DE

United States of America

US

Russia

RU

France

FR

United Kingdom GB



The columns of the CSV product integration file that can be customized to the location are as follows:


Original Column Name

Customized Column Format

Data Type

Example(Sample)

Inventory

Inventory_[location]

int

Inventory_US,Inventory_UK,Inventory_DE

FreeShipping

FreeShipping_[location]

bit

FreeShipping_US,FreeShipping_UK,FreeShipping_DE

ShippingOnSameDay

ShippingOnSameDay_[location]

bit

ShippingOnSameDay_US,ShippingOnSameDay_UK,ShippingOnSameDay_DE



Consistency in Localized Product Information


In order for widgets to be displayed on the site, the visilabs JavaScript library must be placed on all pages to be displayed.  This library sends some of the information that the visitor obtains during their browsing while requesting suggestions from visilabs internet services. At the same time, due to the implementation to be made on the site, some knowledge other than this information can be sent by the site coders on the related pages through some methods in the library. 

For multi-language and multi-currency support, 3 parameters must be added to the parameter array collected by the visilabs library, before the desired method is called.

These parameters are: OM.p_lng, OM.p_loc, OM.p_dc


OM.p_lngThe parameter containing the language in which the user views the site should be the 2 character ISO 639-1 language code
OM.p_locThe parameter containing the location information of the user must be the 2 character ISO 3166-1 country code.
OM.p_dcThe parameter containing the user's preferred currency information should be the 3 character ISO-4217 currency code.


In the light of this information, while the visilabs suggestion service is sending the recommended products, the service provides the delivery of the entire information that can be used in the design compatible to the user's localization settings.

At this point, to avoid undesirable situations, the information that is used for localization should be compatible.


For example, when requesting a suggestion for a visitor, let the submitted parameter value be:

OM.p_lng = de

OM.p_loc = DE

OM.p_dc = EUR


Let the fields localized for the product "ABC" in the product file be as follows:

Inventory_DE  = 1

Let originalPrice_EUR = empty or "". In this case, if the suggested product is "ABC", the price information that can be used while creating the widget on the site will not be sent and will be displayed as 0.

The same can be true for the product view link (TargetUrl). If "TargetUrl_de" is not sent or if it is sent blank while Inventory_DE = 1 is submitted,  there will be no link that can be accessed because the product is clicked on the widget.

Based on this, in order for the widgets to work in harmony in a site that supports 3 languages, 3 currencies and 3 locations, while the widgets are rendered besides the standard fields, the customized columns of the most required fields should be sent in the product integration.


These fields are as follows:

ProductName, TargetURL,  (SmallImageURL veya MediumImageURL veya LargeImageURL) en az bir tanesi, OriginalPrice, Currency, DiscountedPrice, DiscountCurrency ,Inventory


In this case, the number of columns that should be in the product file:

  • Standard number of column: 20
  • Number of customized field: ProductName_[language]  * 3 + TargetURL_[language]  *3 + MediumImageURL_[language] *3 + OriginalPrice_[currency] * 3 + OriginalPriceCurrency_[currency] * 3 + DiscountedPrice_[currency] * 3 + DiscountPriceCurrency_[currency] * 3 + Inventory_[location] * 3 = 24
  • There should be minimum of 44 (20 + 24) columns in total.



3.2. By Using Single XML

You can find the rules to follow for the product integration to allow the widgets in the RMC Product Recommend product to run smoothly on the websites that support multi-language and multi-currency.

3.2.1. Product information customizable with LANGUAGE

The naming of the colons to be used on the data to be customized with language should be done accordingly: The character “_” and the 2-character ISO 639-1 code should be entered at the end of the original name of the relevant field.

 

2-character ISO 639-1 language codes

English

en

German

de

French

fr

Espanol

es

Russian

ru

Following are the XML product integration file colons that can be customized with language.


Tags

Customized Tags

Data Type

Example

<category_name>

<category_name_[language]>

string

<category_name_en></category_name_en>

<category_name_fr></category_name_fr>

<product_name>

<product_name_[language]>

string

<product_name_en></product_name_en>

<product_name_fr></product_name_fr>

<target_url>

<target_url_[language]>

string

<target_url_en></target_url_en>

<target_url_fr></target_url_fr>

<small_image_url>

<small_image_url_[language]>

string

<small_image_en></small_image_en>

<small_image_fr></small_image_fr>

<medium_image_url>

<medium_image_url_[language]>

string

<medium_image_en></medium_image_en>

<medium_image_fr></medium_image_fr>

<medium_image_url>

<large_image_url_[language]>

string

<large_image_en></large_image_en>

<large_image_fr></large_image_fr>

<rating>

<rating_[language]>

string

<rating_en></rating_en>

<rating_fr></rating_fr>

<comment_count>

<comment_count_[language]>

int

<comment_count_en></comment_count_en>

<comment_count_fr></comment_count_fr>

<color>

<color_[language]>

string

<color_en></color_en>

<color_fr></color_fr>

<material>

<material_[language]>

string

<material_en></material_en>

<material_fr></material_fr>

<gender>

<gender_[language]>

string

<gender_en></gender_en>

<gender_fr></gender_fr>

<agegroup>

<agegroup>

string

<agegroup_en></agegroup_en>

<agegroup_fr></agegroup_fr>

<attribute1>

<attribute1_[language]>

string

<attribute1_en></attribute1_en>

<attribute1_fr></attribute1_fr>

<attribute2>

<attribute2_[language]>

string

<attribute2_en></attribute2_en>

<attribute2_fr></attribute2_fr>

<attribute3>

<attribute3_[language]>

string

<attribute3_en></attribute3_en>

<attribute3_fr></attribute3_fr>

<attribute4>

<attribute4_[language]>

string

<attribute4_en></attribute4_en>

<attribute4_fr></attribute4_fr>

<attribute5>

<attribute5_[language]>

string

<attribute5_en></attribute5_en>

<attribute5_fr></attribute5_fr>

<commentator>

<commentator_[language]>

string

<commentator_en></commentator_en>

<commentator_fr></commentator_fr>

<comment>

<comment_[language]>

string

<comment_en></comment_en>

<comment_fr></comment_fr>



3.2.2. Product information customizable with CURRENCY

The naming of the colons to be used on the data to be customized with currency should be done accordingly: The character “_” and the 3-character ISO-4217 code should be entered at the end of the original name of the relevant field.

 

 

3-character ISO-4217 currency code examples

Turkish lira

TRY

Euro

EUR

American Dollar

USD

Russian

RUB

English Pound

GBP


Following are the XML product integration file colons that can be customized with currency.

Tags

Özelleştirilmiş Tag Formatı

Veri Tipi

Örnek

<original_price>

<original_price_[currencycode]>

money

<original_price_EUR></original_price_EUR>

<original_price_USD></original_price_USD>

<discounted_price>

<discounted_price_[currencycode]>

money

<discount_price_currency_EUR></discount_price_currency_EUR>

<discount_price_currency_USD></discount_price_currency_USD>

<original_price_currency>

<currency_[currencycode]>

string

<currency_EUR></currency_EUR>

<currency_USD></currency_USD>

<discount_ratio>

<discount_ratio_[currencycode]>

float

<discounted_rate_EUR></discounted_rate_EUR>

<discounted_rate_USD></discounted_rate_USD>

<discount_price_currency>

<discount_currency_[currencycode]>

string

<discount_price_currency_EUR></discount_price_currency_EUR>

<discount_price_currency_USD></discount_price_currency_USD>

3.2.3. Product information customizable with LOCATION 

The naming of the colons to be used on the data to be customized with location should be done accordingly: The character “_” and the 2-character ISO 3166-1 country code should be entered at the end of the original name of the relevant field.

 

2-character ISO 3166-1 country codes examples

Turkey

TR

Germany

DE

United States of America

US

Russian Federation

RU

France

FR

Great Britain

GB

Following are the XML product integration file colons that can be customized with location:

Tags

Customized Tag Format

Data Type

Example

<inventory>

<inventory_[location]>

int

<inventory_US></inventory_US>

<inventory_EUR></inventory_EUR>

<free_shipping>

<free_shipping_[location]>

bit

<free_shipping_US>

<free_shipping_EUR>

<shipping_on_same_day>

<shipping_on_same_day_[location]>

bit

<shipping_on_same_day_US>

<shipping_on_same_day_EUR>

 


3.3. By Using Multiple XML


For products to be integrated sent in multiple XML files with multiple languages and currency info, the XML files should be created according to the following rules:


  1. Xmls should be structured like <products><product>…</product><product>…</product></products>, meaning that products should be defined within <product> tags under <products> tag. 

  2. Tags should be the same in each xml file, without using extensions like _en, _tr, etc.

    Xml example for https://mysite.com/products.xml?language=tr&currency=tl

    <?xml version="1.0" encoding="UTF-8"?>

    <products>

    <product>
    <product_code><![CDATA[190406310]]></product_code>

    <product_name><![CDATA[Elbise-190406310]]></product_name>

    <category_code><![CDATA[ctgcode]]></category_code>

    <category_name><![CDATA[ctgname-tr]]></category_name>

    <brand><![CDATA[mysite]]></brand>

    <is_active><![CDATA[1]]></is_active>

    <inventory><![CDATA[11]]></inventory>

    <product_url><![CDATA[https://www.mysite.com/tr/190406310]]></product_url>

    <small_image><![CDATA[https://www.mysite.com/tr/190406310-small.jpg]]></small_image>

    <medium_image><![CDATA[https://www.mysite.com/tr/190406310-medium.jpg]]></medium_image>

    <large_image><![CDATA[https://www.mysite.com/tr/190406310-large.jpg]]></large_image>

    <discount_rate><![CDATA[70]]></discount_rate>

    <original_price><![CDATA[800.00]]></original_price>

    <discounted_price><![CDATA[500.00]]></discounted_price>

    <original_price_currency><![CDATA[TL]]></original_price_currency>

    <discount_price_currency><![CDATA[TL]]></discount_price_currency>

    <gender><![CDATA[]]></gender>

    <same_day_delivery><![CDATA[0]]></same_day_delivery>

    <free_delivery><![CDATA[0]]></free_delivery>

    <number_of_comments><![CDATA[]]></number_of_comments>

    <rating_en><![CDATA[]]></rating_en>

    </product>

    </products>

Xml example for https://mysite.com/products.xml?language=en&currency=eur 

<?xml version="1.0" encoding="UTF-8"?>
<products>
<product>
<product_code><![CDATA[190406310]]></product_code>
<product_name><![CDATA[Dress-190406310]]></product_name>
<category_code><![CDATA[ctgcode]]></category_code>
<category_name><![CDATA[ctgname-en]]></category_name>
<brand><![CDATA[KNITSS]]></brand>
<is_active><![CDATA[1]]></is_active>
<inventory><![CDATA[11]]></inventory>
<product_url><![CDATA[https://www.mysite.com/en/190406310]]</product_url>>
<small_image><![CDATA[https://www.mysite.com/en/190406310-small.jpg]]</small_image>>
<medium_image><![CDATA[https://www.mysite.com/en/190406310-medium.jpg]]</medium_image>>
<large_image><![CDATA[https://www.mysite.com/en/190406310-large.jpg]]</large_image>>
<discount_rate><![CDATA[70]]></discount_rate>
<original_price><![CDATA[90.00]]></original_price>
<discounted_price><![CDATA[64.00]]></discounted_price>
<original_price_currency><![CDATA[EUR]]></original_price_currency>
<discount_price_currency><![CDATA[EUR]]></discount_price_currency>
<gender><![CDATA[]]></gender>
<same_day_delivery><![CDATA[0]]></same_day_delivery>
<free_delivery><![CDATA[0]]></free_delivery>
<number_of_comments><![CDATA[]]></number_of_comments>
<rating_en><![CDATA[]]></rating_en>
</product>
</products>


Xml example for https://mysite.com/products.xml?language=en&currency=usd 

<?xml version="1.0" encoding="UTF-8"?>

<products>

<product>
<product_code><![CDATA[190406310]]></product_code>

<product_name><![CDATA[Dress-190406310]]></product_name>

<category_code><![CDATA[ctgcode]]></category_code>

<category_name><![CDATA[ctgname-en]]></category_name>

<brand><![CDATA[mysite]]></brand>

<is_active><![CDATA[1]]></is_active>

<inventory><![CDATA[11]]></inventory>

<product_url><![CDATA[https://www.mysite.com/en/190406310]]></product_url>

<small_image><![CDATA[https://www.mysite.com/en/190406310-small.jpg]]></small_image>

<medium_image><![CDATA[https://www.mysite.com/en/190406310-medium.jpg]]></medium_image>

<large_image><![CDATA[https://www.mysite.com/en/190406310-large.jpg]]></large_image>

<discount_rate><![CDATA[70]]></discount_rate>

<original_price><![CDATA[100.00]]></original_price>

<discounted_price><![CDATA[70.00]]></discounted_price>

<original_price_currency><![CDATA[USD]]></original_price_currency>

<discount_price_currency><![CDATA[USD]]></discount_price_currency>

<gender><![CDATA[]]></gender>

<same_day_delivery><![CDATA[0]]></same_day_delivery>

<free_delivery><![CDATA[0]]></free_delivery>

<number_of_comments><![CDATA[]]></number_of_comments>

<rating_en><![CDATA[]]></rating_en>

</product>

</products>



Parent Topic: Sending Data to RMC