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 Type | Purpose | Required Columns (see details below) |
|---|---|---|
| Items | Product catalog | item_id, code, ... |
| Users | User account info | user_id, email, ... |
| Interactions | User-product interactions | user_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:
| field | type | required | description |
|---|---|---|---|
| item_id | string | yes | Unique product identifier |
| code | string | no | Internal SKU or reference code |
| mpn | string | no | Manufacturer part numbers (pipe-separated) |
| ean | string | no | EAN codes (pipe-separated) |
| name | string | yes | Product title or name |
| description | string | no | Detailed product description |
| brand_id | string | yes | Brand identifier |
| brand_name | string | yes | Brand display name |
| price | float | yes | Original price in EUR (decimal, no thousand separator) |
| market_price | float | yes | Sale/market price in EUR; if not discounted, use the same value as price |
| discount | number | yes | Discount percentage (integer or decimal) |
| page_ids | string | yes | Category or page IDs (pipe-separated) |
| page_names | string | yes | Category or page names (pipe-separated) |
| page_urls | string | yes | Category or page URLs (pipe-separated) |
| url | string | yes | Product detail page URL |
| images | string | yes | Image URLs (pipe-separated) |
| stock | integer | yes | Available stock quantity (0 = not published) |
| gender | string | no | Target gender: "Man", "Woman", or "Unisex" |
| tags | string | no | Tags or keywords (pipe-separated) |
| attributes | JSON | no | Additional attributes as a JSON object (string-encoded) |
| translations | JSON | no | JSON 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:
| field | type | required | description |
|---|---|---|---|
| user_id | string | yes | Unique user identifier |
| string | no | Email address | |
| name | string | no | Given/first name |
| surname | string | no | Family/last name |
| address | string | no | Postal address |
| city | string | no | City |
| zip | string | no | Postal/ZIP code |
| state | string | no | State or region |
| country | string | no | Country (ISO 3166-1 alpha-2, e.g., US) |
| sex | string | no | Sex/gender |
| birthday | date | no | Date of birth |
| createdDate | datetime | yes | Account 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:
| field | type | required | description |
|---|---|---|---|
| user_id | string | yes | User identifier (matches user_id in Users file) |
| item_id | string | yes | Item identifier (matches item_id in Items file) |
| action | string | yes | Event type: purchase or cart |
| price | float | yes | Item price at the time of the event (EUR) |
| quantity | integer | yes | Number of units in the event |
| createdDate | datetime | yes | Event 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.