HubSpot property CSV checker
Paste or upload the CSV you plan to use to create HubSpot properties in bulk, and see what is wrong with it before you import it: internal names, type and field type pairs, dropdown options and the other columns. It runs in your browser: your file is not uploaded or sent anywhere.
Result
What it checks
The rules are the ones the Bulk Property Import & Export app applies when you import a CSV, so the page and the app give the same errors.
- Columns.
object,name,label,type,field_type,group,group_label,description,options,options_modeandaction. Anobjectcolumn is required, and so is anameorlabelcolumn. Unknown columns are ignored, and a column that appears twice is an error. - Object.
contacts,companies,dealsortickets. - Internal names. Lower-case letters, numbers and underscores, starting with a letter, up to 100 characters, and not starting with
hs_, which HubSpot reserves. A name in upper case is changed to lower case. Group names follow the same rule. - Type and field type pairs.
stringwithtext,textarea,html,phonenumberorfile;numberwithnumber;dateordatetimewithdate;enumerationwithselect,radio,checkboxorbooleancheckbox;boolwithbooleancheckbox. Friendly names such as dropdown, checkbox or single checkbox also work. Calculation properties cannot be created by import. - Options. One option per line in a cell, or separated by semicolons, written as
Label|internal_value. Without a value, the label is used as the value. Empty values, duplicate values or labels, options over 3,000 characters, more than 5,000 options or 512,000 bytes per property are errors. A dropdown, radio or checkbox property needs at least one option. - The other columns.
options_modeismergeorreplace;actioniscreate,update,upsertorskip; yes/no columns,display_orderandnumber_formatmust hold valid values; two rows for one property must not disagree.
What it cannot know. The page does not see your HubSpot account, so it cannot tell whether a property already exists, whether a label is taken by a property that is not in the file, whether a group exists, or whether your plan allows it. A missing label or type is a warning on an upsert row (it only matters when the property is new) and an error on a create row. Custom objects are not checked here. The app's preview checks all of this against your real account before it writes anything.
Start from a template
Three ready-made CSV files are in a free GitHub repository, each with an example of options written as Label|internal_value. Open one, change the names and labels, and paste it above.
- Contact lead source: lead source detail, campaign and preferred language.
- Company account fields: account tier, renewal date and customer health.
- Deal qualification: budget, decision maker, timeline and lost reason.
Then import it
HubSpot has no built-in button that creates properties from a CSV; the options are in the guides: how to bulk create custom properties in HubSpot from a CSV or spreadsheet, and how to bulk add dropdown options. Full disclosure: this checker is made by Kayabyte, and so is the Bulk Property Import & Export app in the HubSpot Marketplace, which reads exactly this CSV format, shows a preview of every change and writes nothing until you apply it. The app has a free plan. The checker is free, works without the app, and does not need an account.
FAQ
Is my CSV uploaded anywhere? No. The file is read in your browser and checked by a script on this page. There is no upload and no account, and you can confirm that in your browser's network tab.
What format does a HubSpot property CSV need? A header row and one row per property, with the columns object, name, label, type, field_type, group, group_label, description, options, options_mode and action. Dropdown options go in the options column, one per line, written as Label|internal_value.
What are the valid type and field_type pairs in HubSpot? String with text, textarea, html, phonenumber or file; number with number; date and datetime with date; enumeration with select, radio, checkbox or booleancheckbox; bool with booleancheckbox.
What can an internal property name contain? Lower-case letters, numbers and underscores, starting with a letter. HubSpot reserves names that start with hs_, and a property's internal name cannot be changed after it is created.
Does a clean result mean the import will work? It means the file passes the app's format checks. Whether a property already exists, whether a label clashes with another property and what your plan allows can only be checked against your account, which the app does in its preview before anything is written.
Do I need the app to use this page? No. The checker is free and stands alone. The app is optional and is ours.
By Kayabyte. HubSpot is a registered trademark of HubSpot, Inc. Kayabyte is an independent developer and is not affiliated with or endorsed by HubSpot.