Skip to main content

CSV Files

Visidea accepts three CSV files for importing data. Each CSV must use the same formatting rules described below.

  • Items file — product catalog (one product per row).
  • Users file — user account records (one user per row).
  • Interactions file — user events such as purchases or cart adds (one event per row).

File format requirements:

  • UTF-8 encoding
  • Rows separated by a newline (\n)
  • Fields delimited by a semicolon (;)
  • Text fields wrapped in double quotes (")
  • Double quotes inside text fields must be escaped with a backslash (e.g. \")
  • The first row must contain column names

Summary Table

File TypePurposeRequired Columns (see details below)
ItemsProduct catalogitem_id, code, ...
UsersUser account infouser_id, email, ...
InteractionsUser-product interactionsuser_id, item_id, ...

1. Items File

Purpose: Describes each product in your catalog. Each row represents a single product and its metadata.

Header (columns):

item_id;code;mpn;ean;name;description;brand_id;brand_name;price;market_price;discount;page_ids;page_names;url;images;stock;gender;tags;attributes;translations

Column Descriptions:

fieldtyperequireddescription
item_idstringyesUnique product identifier
codestringnoInternal SKU or reference code
mpnstringnoManufacturer part numbers (pipe-separated)
eanstringnoEAN codes (pipe-separated)
namestringyesProduct title or name
descriptionstringnoDetailed product description
brand_idstringyesBrand identifier
brand_namestringyesBrand display name
pricefloatyesOriginal price in EUR (decimal, no thousand separator)
market_pricefloatyesSale/market price in EUR; if not discounted, use the same value as price
discountnumberyesDiscount percentage (integer or decimal)
page_idsstringyesCategory or page IDs (pipe-separated)
page_namesstringyesCategory or page names (pipe-separated)
page_urlsstringyesCategory or page URLs (pipe-separated)
urlstringyesProduct detail page URL
imagesstringyesImage URLs (pipe-separated)
stockintegeryesAvailable stock quantity (0 = not published)
genderstringnoTarget gender: "Man", "Woman", or "Unisex"
tagsstringnoTags or keywords (pipe-separated)
attributesJSONnoAdditional attributes as a JSON object (string-encoded)
translationsJSONnoJSON array (string-encoded) of translation objects. Each object must include language and any translated fields (name, description, page_names, page_urls, url). Escape inner quotes with \\.

Example:

item_id;code;mpn;ean;name;description;brand_id;brand_name;price;market_price;discount;page_ids;page_names;page_urls;url;images;stock;gender;tags;attributes;translations
"123";"SKU123";"MPN1|MPN2";"1234567890123";"T-shirt";"A cool t-shirt";"1";"BrandX";"29.99";"19.99";"33";"cat1|cat2";"Shirts|Summer";"/cat1|/cat2";"/product/123";"/img/1.jpg|/img/2.jpg";"10";"Unisex";"summer|sale";"{\"color\":\"blue\",\"size\":\"M\"}";"[{\"language\":\"it\",\"name\":\"Maglietta\"},{\"language\":\"it\",\"url\":\"https://...\"}]"

2. Users File

Purpose: Describes each user in your system. Each row represents one user record.

Header (columns):

user_id;email;name;surname;address;city;zip;state;country;sex;birthday;createdDate

Column Descriptions:

fieldtyperequireddescription
user_idstringyesUnique user identifier
emailstringnoEmail address
namestringnoGiven/first name
surnamestringnoFamily/last name
addressstringnoPostal address
citystringnoCity
zipstringnoPostal/ZIP code
statestringnoState or region
countrystringnoCountry (ISO 3166-1 alpha-2, e.g., US)
sexstringnoSex/gender
birthdaydatenoDate of birth
createdDatedatetimeyesAccount creation timestamp (ISO 8601, e.g., 2022-03-22T09:27Z)

Example:

user_id;email;name;surname;address;city;zip;state;country;sex;birthday;createdDate
"1";"[email protected]";"John";"Doe";"123 Main St";"New York";"10001";"NY";"US";"M";"1990-01-01";"2022-03-22T09:27Z"

3. Interactions File

Purpose: Records user actions on products (for example: purchases, cart additions). Each row is a single event.

Header (columns):

user_id;item_id;action;price;quantity;createdDate

Column Descriptions:

fieldtyperequireddescription
user_idstringyesUser identifier (matches user_id in Users file)
item_idstringyesItem identifier (matches item_id in Items file)
actionstringyesEvent type: purchase or cart
pricefloatyesItem price at the time of the event (EUR)
quantityintegeryesNumber of units in the event
createdDatedatetimeyesEvent timestamp (ISO 8601, e.g., 2022-03-22T09:27Z)

Example:

user_id;item_id;action;price;quantity;createdDate
"1";"123";"purchase";20.50;2;"2022-03-22T09:27Z"
"1";"124";"cart";1030.00;1;"2022-03-23T10:00Z"

Notes

  • If a value is not available, leave the field empty but keep delimiters (for example: ;;).
  • Ensure all files use the same formatting rules to avoid import errors.
  • For support, contact the Visidea team.