Uploading Your Product Data
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:
- The file must be accessible through HTTP.
- The file must be zip compressed.
- The file must be updated at least once a day.
- There must not be a header in the first line.
- The file must be UTF-8 encoded without BOM (byte order mark).
- Use semicolon to separate columns.
- 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.
- 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.
- All product codes must be unique.
- A product can have only 1 category. If a product is linked to multiple categories use only the default category.
- 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.
Column | Description | Example | |
---|---|---|---|
1. | Product Code | ||
2. | Product Name | ||
3. | Category Code | in hierarchical order | ELECT>CELLPHN>SMRTPDH |
4. | Category Name | in hierarchical order | Electronics>Cell Phones>Smart Phones |
5. | Brand | ||
6. | Is Active | 0 or 1 | |
7. | Inventory | total 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. | Rating | User Ratings | |
15. | Original Price Currency | USD | |
16. | Discount Price Currency | USD | |
17. | Same Day Delivery | 0 or 1 | |
18. | Free Delivery | 0 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:
- Go to Personalize > Settings > Product Integration.
- Enter the URL for the CSV file you have created.
- Click “Test URL” to validate the URL and file.
- If you have no error in your Test Detail, click “Save URL”.
- Click “Add Trigger” to schedule product data uploads. We also recommend that you synchronize the product data generation and upload frequency.
2. Using XML
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.
Tags | Description |
---|---|
<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
- 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.
- Wait until your scheduled time and refresh the page to see the integration result.
- 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:
- Including header information in CSV product integration file is mandatory for multi-language support. Details are explained in the "CSV File Header Information" section.
- 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.
- Consistency must be maintained in the product information, provided for localization. Details are explained in the "Consistency in Localized Product Information" section.
Note
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.
Note
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_lng | The parameter containing the language in which the user views the site should be the 2 character ISO 639-1 language code |
---|---|
OM.p_loc | The parameter containing the location information of the user must be the 2 character ISO 3166-1 country code. |
OM.p_dc | The 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:
Xmls should be structured like <products><product>…</product><product>…</product></products>, meaning that products should be defined within <product> tags under <products> tag.
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¤cy=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¤cy=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¤cy=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
Copyright 2020 Related Digital