CSV Filling Guide (for Partners)
This page provides a comprehensive reference for all columns in the partner listing CSV format. Use this guide to understand the data types, validation rules, and examples for each field.
How CSV Import Works
The CSV import system allows you to manage all your PianoHub listings efficiently using spreadsheet files:
- Export your current PianoHub listings as a CSV file to get the current data status.
- Edit or supplement the CSV file with changes, updates, or new listings.
- Important: All existing listings you want to keep must remain in the CSV. Missing listings will be marked for deletion by the import tool.
- To add new listings (e.g., via AI conversion), merge your existing data with the new listings in a single CSV file before importing.
Quick Reference
Overview of all columns in the CSV format:
| Column Name | Type | Required |
|---|---|---|
public_id | auto-assigned (read-only) | No |
summary | text | Yes |
instrument_type | predefined values | Yes |
brand | text | Yes |
model | text | No |
acquisition_type | predefined values | Yes |
currency | predefined values | No |
price_on_request | boolean | No |
price | number | No |
price_type | predefined values | No |
rent_price | number | No |
color | predefined values | Yes |
year_built | number | No |
production_country | text | No |
serial_number | text | No |
condition | predefined values | Yes |
description | text | Yes |
number_of_keys | number | Yes |
height | number | No |
width | number | No |
depth | number | No |
weight | number | No |
moderator_pedal | boolean | No |
sostenuto_pedal | boolean | No |
silent_system | boolean | No |
player_system | boolean | No |
humidity_control | boolean | No |
provider_transport | boolean | No |
transport_price_included | boolean | No |
email | email address | Yes |
image_urls | text | No |
video_urls | text | No |
Detailed Column Descriptions
public_id - ID
Required: No | Type: auto-assigned (read-only)
The listing ID. This field is automatically assigned when you create a listing and cannot be changed. Leave empty for new listings.
When updating existing listings, the CSV row must contain the public_id previously assigned by PianoHub. Listings are identified by this ID, not by the title or other fields.
Example: 12345
summary - Title
Required: Yes | Type: text
A short, descriptive title for the piano. This appears in search results and should be concise but informative.
Example: Yamaha U1 Upright Piano Black
Max length: 80 characters
instrument_type - Instrument Type
Required: Yes | Type: predefined values
The type of instrument. Must be one of the predefined values listed below.
Allowed values:
UPRIGHT_PIANO- Upright PianoGRAND_PIANO- Grand PianoDIGITAL_PIANO- Digital PianoOTHER- Other
brand - Brand
Required: Yes | Type: text
Manufacturer or brand name.
Important: If you are listing a piano from one of the particularly popular brands listed below, use the spelling documented here. Deviating spellings (e.g., "C. Bechstein" instead of "Bechstein") will cause users not to find your listing when they filter by brand using the search function on PianoHub.
- August Förster
- Baldwin
- Blüthner
- Bösendorfer
- Boston
- C. Bechstein
- Essex
- Fazioli
- Feurich
- Grotrian-Steinweg
- Haessler
- Ibach
- Irmler
- Kawai
- Mason & Hamlin
- Petrof
- Pfeiffer
- Samick
- Sauter
- Schimmel
- Seiler
- Steingraeber & Söhne
- Steinway & Sons
- W. Hoffmann
- Yamaha
- Zimmermann
Example: Yamaha
Max length: 30 characters
model - Model
Required: No | Type: text
Model designation or name. Optional field.
Example: U1
Max length: 30 characters
acquisition_type - Acquisition Type
Required: Yes | Type: predefined values
Specifies how the instrument can be acquired. Use BUY for sale only, RENT for rental only, or BOTH if the instrument can be bought or rented.
Allowed values:
BUYRENTBOTH
currency - Currency
Required: No | Type: predefined values
Currency code. Must be one of the predefined values listed below. Required when acquisition_type is BUY or BOTH and price_on_request is false, or when acquisition_type is RENT or BOTH (for the rent price). Leave empty only if acquisition_type is BUY and price_on_request is true.
Allowed values:
CHFEURGBPUSD
price_on_request - Price on Request
Required: No | Type: boolean
Indicates whether no buy price should be displayed. If true, the fields price and price_type are ignored and the listing is displayed with "Price on Request". Does not affect rent_price. Leave empty when acquisition_type is RENT (not applicable in that case).
Allowed values:
truefalse
Important: Only the exact values "true" or "false" (without quotes in the CSV) are allowed.
price - Purchase Price
Required: No | Type: number
Buy price as a number without currency symbol. Required when acquisition_type is BUY or BOTH and price_on_request is false. Leave empty if price_on_request is true or acquisition_type is RENT.
Example: 3500
Min: 0 | Max: 9999999
price_type - Price Type
Required: No | Type: predefined values
Type of price. Required when acquisition_type is BUY or BOTH and price_on_request is false. Leave empty if price_on_request is true or acquisition_type is RENT.
Allowed values:
FIXED- FixedNEGOTIABLE- Negotiable
rent_price - Minimum Monthly Rent
Required: No | Type: number
Minimum monthly rent price as a number without currency symbol. Required when acquisition_type is RENT or BOTH. Leave empty if acquisition_type is BUY.
Example: 149
Min: 0 | Max: 9999999
color - Color
Required: Yes | Type: predefined values
Primary color of the instrument. Must be one of the predefined values listed below.
Allowed values:
BLACK- BlackWHITE- WhiteWOOD- WoodOTHER- Other Color
year_built - Year Built
Required: No | Type: number
Year of manufacture. Optional field.
Example: 2005
Min: 1800 | Max: 2026
production_country - Production Country
Required: No | Type: text
Country where the instrument was manufactured. Optional field.
Example: Japan
Max length: 30 characters
serial_number - Serial Number
Required: No | Type: text
Manufacturer's serial number. Optional field.
Example: 5678901
Max length: 15 characters
condition - Condition
Required: Yes | Type: predefined values
Condition of the instrument. Must be one of the predefined values listed below.
Allowed values:
NEW- New InstrumentUSED- Used Instrument
description - Description
Required: Yes | Type: text
Detailed description of the instrument. Include important details, condition notes, and any special features.
Example: Well-maintained Yamaha U1 in excellent condition. Regular maintenance, new strings installed 2020.
Max length: 4000 characters
number_of_keys - Number of Keys
Required: Yes | Type: number
Number of keys on the instrument. Required field.
Example: 88
Min: 1 | Max: 100
height - Height
Required: No | Type: number
Height of the instrument in centimeters. Optional field.
Example: 121
Min: 1 | Max: 999
width - Width
Required: No | Type: number
Width of the instrument in centimeters. Optional field.
Example: 153
Min: 1 | Max: 999
depth - Depth
Required: No | Type: number
Depth of the instrument in centimeters. Optional field.
Example: 65
Min: 1 | Max: 999
weight - Weight
Required: No | Type: number
Weight of the instrument in kilograms. Optional field.
Example: 230
Min: 1 | Max: 9999
moderator_pedal - Moderator Pedal
Required: No | Type: boolean
Indicates whether the instrument has a moderator pedal. Optional field.
Allowed values:
truefalse
Important: Only the exact values "true" or "false" (without quotes in the CSV) are allowed.
sostenuto_pedal - Sostenuto Pedal
Required: No | Type: boolean
Indicates whether the instrument has a sostenuto pedal. Optional field.
Allowed values:
truefalse
Important: Only the exact values "true" or "false" (without quotes in the CSV) are allowed.
silent_system - Silent System
Required: No | Type: boolean
Indicates whether the instrument has a silent system. Optional field.
Allowed values:
truefalse
Important: Only the exact values "true" or "false" (without quotes in the CSV) are allowed.
player_system - Player System
Required: No | Type: boolean
Indicates whether the instrument has a player system (self-playing system). Optional field.
Allowed values:
truefalse
Important: Only the exact values "true" or "false" (without quotes in the CSV) are allowed.
humidity_control - Humidity Control System
Required: No | Type: boolean
Indicates whether the instrument has a humidity control system. Optional field.
Allowed values:
truefalse
Important: Only the exact values "true" or "false" (without quotes in the CSV) are allowed.
provider_transport - Delivery Possible (Ground Floor)
Required: No | Type: boolean
Indicates whether the seller offers a transport service for the instrument (ground floor). Optional field.
Allowed values:
truefalse
Important: Only the exact values "true" or "false" (without quotes in the CSV) are allowed.
transport_price_included - Transport Included in the Price
Required: No | Type: boolean
Indicates whether the transport price is already included in the stated price. Optional field.
Allowed values:
truefalse
Important: Only the exact values "true" or "false" (without quotes in the CSV) are allowed.
email - Email
Required: Yes | Type: email address
Contact email for inquiries about this listing. This can differ from your partner account email.
Example: partner@example.com
Max length: 255 characters
image_urls - Image URLs
Required: No | Type: text
URLs to images of the instrument. Separate multiple URLs with commas. All images must be publicly accessible. Optional field.
Reusing images from your own website:
If you already have listings on your own website and want to additionally list them on PianoHub, you can use the image URLs from your website directly. This way, you don't need to upload or store images twice.
Tip: Right-click on an image in your browser and select "Copy image address" to get the URL.
Example: https://example.com/img1.jpg,https://example.com/img2.jpg
video_urls - Video URLs
Required: No | Type: text
YouTube or Vimeo URLs for videos of the instrument. Separate multiple URLs with commas. Other video providers are not supported. Videos are embedded on the listing page with a privacy preview — the actual player only loads when the user clicks "Play". Optional field.
Example: https://www.youtube.com/watch?v=dQw4w9WgXcQ,https://vimeo.com/123456789