Pre-import validation
After you upload your file and map its columns, Qwoty validates your data before importing it. You can catch and fix errors without touching your existing data.How it works
The import wizard surfaces errors at each step:1
Upload
Drop your CSV file. Qwoty rejects files that aren’t
.csv, exceed 10 MB or 10,000 rows, have no headers, or can’t be parsed.2
Mapping
Match each header to a Qwoty field. If a required column isn’t mapped, the screen lists the missing columns and you can’t continue.
3
Confirm
Qwoty validates every row. The summary shows:
- The number of records to import
- The number of variants in the file (for products)
- The number of rows with validation errors, with a Download error rows button
4
Result
Qwoty processes the file and shows the rows imported and the rows that failed, split into validation errors and server errors (database constraints or business rules). Click Download unimported rows to get a CSV of the failures.
Error files
Both Download error rows (Confirm step) and Download unimported rows (Result step) return a CSV with your columns plus anerreur column that explains why each row failed. Fix the rows and import that file again: it contains only the failed rows.
Common error types
Duplicate identifiers
Cause: The sameproduct_id or price id appears twice in the file, or a product_api_name is already used by another product.
Fix:
- Remove or merge duplicate rows
- Change the
product_api_name, or setproduct_idto update the existing product instead
Invalid format
Cause: A value doesn’t match the expected format: invalid UUID, value outside the allowed list, percentage out of the 0–100 range, text in a number column. Fix: Edit the cell. See Field mapping for the format of each field type. Common offenders:settings[recurrence_type] = monthlyinstead ofrecurringpricing_model = Tieredinstead ofGraduated TieredorVolume Tieredamount = 1,234.00(thousands separator)percent = 0.2when you meant 20%
Missing required fields
Cause: A required column (settings[recurrence_type] for products, id and pricing_model for prices) is empty on a row, or a Volume or Graduated price has no first tier.
Fix: Fill in the value, or remove the row from your file.
Record not found
Cause: The referenced record doesn’t exist: aproduct_id or price id that isn’t in your workspace, a price key whose product, pricebook, or billing frequency doesn’t match, or a variant option that wasn’t created.
Fix:
- Create the referenced records first (see Import relations)
- Or correct the reference to match an existing record
Inconsistent values
Cause: Rows that belong to the same product carry inconsistent values (for example, a differentsettings[recurrence_type]).
Fix: Use the same values on every row of the same product.
Unknown columns
A column that matches no Qwoty field is ignored. Map it manually at the Mapping step if it should be imported.Permission errors
Cause: Your role isn’t allowed to modify a field. Fix: Ask your workspace admin to check your role permissions.Tips for fewer errors
- Start from the template or an export: it shows the exact column headers and formats
- Clean your data first: remove blank rows, fix typos, normalize enum values
- Import in the right order: catalogs and options in the app, then products, then prices
- Test with a small batch before importing thousands of rows
- Check for duplicates before uploading: sort your file by the identifier column
Related
Field mapping
Format requirements for every field type.
Uniqueness constraints
Which identifiers create or update records.
Import relations
The right import order to avoid relation errors.
Prepare your CSV
Step-by-step preparation guide.

