Importing custom prices for your products
You can import a CSV file to quickly update product prices.
Overview
Price book imports use a CSV file with a model column that tells Quotivity how each row should be priced: fixed overrides, percentage adjustments, volume tiers, or pricing tables (enum and range). This is the same layout Quotivity writes when you Export CSV from a price book.
Exported files also include productName and productSku columns so you can identify products while editing in a spreadsheet. Import reads productId only—name and SKU are ignored, so you can edit or clear those columns without affecting pricing.
If you have spreadsheets from the previous import layout—currency columns only, with no model column—they still upload successfully today. That older format is legacy and will be retired in a future release. We recommend moving existing files to the current layout when you next update them.
How to import
- Open Pricing → Price Books in Quotivity Studio.
- Click Import CSV on the price book list or inside a price book.
- Upload your CSV file.
- Check your email when processing finishes. Quotivity sends a summary and, ifany rows were rejected, a link to download a feedback file listing the row number, field, and reason. The download link expires after seven days.
Accepted rows are applied in the background. Rejected rows are skipped; they do not block other valid rows in the same file.
File columns
Every import file uses the same header. Columns you do not need for a particular row can be left blank.
|
Column |
Required |
Description |
|---|---|---|
|
priceBookId |
Yes |
Price book ID from the end of the price book URL in Quotivity Studio. |
|
productId |
Yes |
HubSpot record ID for the product. |
|
productName |
No |
Product name from HubSpot. Included on export for reference; ignored on import. |
|
productSku |
No |
Product SKU ( |
|
operation |
Yes |
|
|
model |
Yes |
Pricing type for the row: |
|
property |
For |
HubSpot product property the pricing table reads (for example, |
|
value |
For |
The exact property value this row prices (for example, |
|
start |
For |
Lower bound of the tier or range. |
|
end |
For |
Upper bound. Leave blank on the top volume tier for an open-ended band. Required for |
|
Currency columns |
Per enabled currency |
One column per portal currency ( |
Use a period as the decimal separator. Currency symbols are not required. Negative values are not supported.
Important: Only include columns for currencies enabled in your HubSpot portal.
Reference columns (export only)
productName and productSku appear on every row in an exported file, including when a product has multiple volume, range, or enum rows. They repeat the HubSpot product name and SKU (hs_sku) at export time.
On import, these columns are optional. You may include them, leave them blank, or remove them entirely. Quotivity never updates product name or SKU from an import file, and mismatched values do not cause row errors.
Models and example rows
Override (fixed price)
One row per product. Leave property, value, start, and end blank.
priceBookId,productId,productName,productSku,operation,model,property,value,start,end,USD,EUR 8266b657-ee1a-44ba-bb7a-9e826c4d7862,12345,Widget Pro,WGT-001,upsert,override,,,,,100,85
Percent (adjust standard price)
One row per product. Enter a decimal multiplier of the standard price in each currency column—for example, 1.1 for 110% of standard price, or 0.8 for 80%.
If you are converting a legacy spreadsheet, note that the previous format expressed percentages relative to 100% with a % suffix (for example, 110%). In the current format, use the multiplier directly.
priceBookId,productId,productName,productSku,operation,model,property,value,start,end,USD 8266b657-ee1a-44ba-bb7a-9e826c4d7862,12345,Widget Pro,WGT-001,upsert,percent,,,,,0.9
Volume (Enterprise)
Volume pricing requires an Enterprise plan.
One row per quantity tier for the same product. Use the same model on every tier row. Leave property and value blank.
priceBookId,productId,productName,productSku,operation,model,property,value,start,end,USD 8266b657-ee1a-44ba-bb7a-9e826c4d7862,12345,Widget Pro,WGT-001,upsert,volume,,,1,9,50 8266b657-ee1a-44ba-bb7a-9e826c4d7862,12345,Widget Pro,WGT-001,upsert,volume,,,10,49,45 8266b657-ee1a-44ba-bb7a-9e826c4d7862,12345,Widget Pro,WGT-001,upsert,volume,,,50,,40
The last row has a blank end value, so the tier applies to every quantity from 50 upward.
Range pricing table (Enterprise)
Pricing tables require an Enterprise plan.
One row per numeric band. property must match the product property the table uses. Both start and end are required on every row.
priceBookId,productId,productName,productSku,operation,model,property,value,start,end,USD 8266b657-ee1a-44ba-bb7a-9e826c4d7862,12345,Widget Pro,WGT-001,upsert,range,weight,,0,5,20 8266b657-ee1a-44ba-bb7a-9e826c4d7862,12345,Widget Pro,WGT-001,upsert,range,weight,,5,10,30
Enum pricing table (Enterprise)
One row per allowed property value. property and value identify the option; currency columns hold the unit price for that option.
priceBookId,productId,productName,productSku,operation,model,property,value,start,end,USD 8266b657-ee1a-44ba-bb7a-9e826c4d7862,12345,Widget Pro,WGT-001,upsert,enum,color,red,,,10 8266b657-ee1a-44ba-bb7a-9e826c4d7862,12345,Widget Pro,WGT-001,upsert,enum,color,blue,,,12Validation rules
Quotivity validates your file before applying changes.
Whole-file checks (the import fails entirely):
- A currency column is included for a currency not enabled in your portal.
- A numeric cell uses a comma as the decimal separator.
- A numeric cell contains a negative value.
Row-level checks (invalid rows are skipped; others still import):
- Unknown priceBookId or productId is missing.
- Unknown model value.
- A product declares more than one model in the same price book (for example, mixing
overrideandvolumeon the same product). - Duplicate tier or enum value rows for the same product.
- volume row missing start; range row missing start or end; enum row missing value; range or enum row missing property.
Skipped rows appear in the feedback CSV attached to your completion email.
Legacy import format
The previous import layout omits the model column and supports override and percent adjustments only. Files without a model column are still accepted, but this layout will be retired in a future release.
When you are ready to migrate:
-
Add model, productName, and productSku columns (name and SKU are optional on import but help when reviewing the file).
-
Set each row's model to
overrideorpercent. -
For override rows, leave property, value, start, and end blank.
-
For percent rows, convert
%values to decimal multipliers (for example, change110%to1.1). -
Or export the price book from Quotivity Studio and use that file as your starting point—it already follows the current layout, including product name and SKU.
What bulk import does not include
- Product variant pricing is not included in price book export or bulk import. Configure variant pricing separately in Quotivity Studio or through the product variant pricing upload flow.
- A single product cannot use more than one model within the same price book in one import.
Tips
- Start from Export CSV when editing an existing price book—the exported file already uses the current column layout, including productName and productSku.
- Use name and SKU columns to sort or filter in your spreadsheet; only productId determines which product receives the price.
- Keep a copy of your file before importing so you can revert if needed.
- If many rows fail, fix the feedback file and import again rather than editing rows one at a time in Studio.
- Plan to move legacy spreadsheets to the current format before the older layout is retired.