Validation errors
When uploading or overriding data, it is essential that the data conform to the platform's schema. The platform performs validation on your data to ensure it meets the required format, types, and constraints. Due to the complexity of data compliance with our schemas, it is common to encounter validation errors during upload.
These validation errors are useful for identifying which rows or columns of your data do not conform to expectations, enabling you to make the necessary corrections and resubmit your data.
Interpreting Validation Errors
If the status of the override request is error, the validationErrors field provides detailed information about what went wrong during the validation process.
The structure of this field is designed to help you quickly identify and fix issues in your data file. Each error message is crafted to be human-readable, giving clear insights into what failed and why, making debugging much more straightforward, even for those unfamiliar with the internal schema logic.
Please note that while these messages aim to be as understandable and informative as possible, they may evolve over time as the validation framework is improved or extended. It’s a good idea to treat the exact wording of error messages as subject to change.
Let's look at an example of an error response:
{
"id": "11111111-1111-1111-1111-11111111",
"collectionId": "11111111-1111-1111-1111-11111111",
"dataType": "deals",
"separator": ",",
"dumpDatetime": "2025-08-07T10:07:01.439575Z",
"status": "error",
"message": "Validation failed",
"validationErrors": [
{
"SCHEMA": {
"SERIES_CONTAINS_NULLS": [
{
"schema": "DealsDataModel",
"column": "addDatetime",
"check": "not_nullable",
"error": "non-nullable series 'addDatetime' contains null values:0 NaNName: addDatetime, dtype: object"
}
]
},
"DATA": {
"DATAFRAME_CHECK": [
{
"schema": "DealsDataModel",
"column": "addDatetime",
"check": "str_matches('re.compile('^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(?:\\\\.\\\\d{1,6})?$')')",
"error": "Column 'addDatetime' failed element-wise validator number 0: str_matches('re.compile('^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(?:\\\\.\\\\d{1,6})?$')') failure cases: 2017"
},
{
"schema": "DealsDataModel",
"column": "expectedClosureDatetime",
"check": "str_matches('re.compile('^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(?:\\\\.\\\\d{1,6})?$')')",
"error": "Column 'expectedClosureDatetime' failed element-wise validator number 0: str_matches('re.compile('^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(?:\\\\.\\\\d{1,6})?$')') failure cases: 2016s-06-16T00:00:00"
},
{
"schema": "DealsDataModel",
"column": "status",
"check": "isin(['closed_won', 'closed_lost', 'open'])",
"error": "Column 'status' failed element-wise validator number 0: isin(['closed_won', 'closed_lost', 'open']) failure cases: no"
},
{
"schema": "DealsDataModel",
"column": "value",
"check": "str_matches('re.compile('^\\\\d+(?:\\\\.\\\\d+)?$')')",
"error": "Column 'value' failed element-wise validator number 0: str_matches('re.compile('^\\\\d+(?:\\\\.\\\\d+)?$')') failure cases: asd"
},
{
"schema": "DealsDataModel",
"column": "companyNumberOfEmployees",
"check": "str_matches('re.compile('^\\\\d+$')')",
"error": "Column 'companyNumberOfEmployees' failed element-wise validator number 0: str_matches('re.compile('^\\\\d+$')') failure cases: asd"
},
{
"schema": "DealsDataModel",
"column": "accountId",
"check": "str_matches('re.compile('^\\\\d+$')')",
"error": "Column 'accountId' failed element-wise validator number 0: str_matches('re.compile('^\\\\d+$')') failure cases: asd"
},
{
"schema": "DealsDataModel",
"column": "companyIsCustomer",
"check": "boolean_string_check",
"error": "Column 'companyIsCustomer' failed element-wise validator number 0: <Check boolean_string_check> failure cases: No"
},
{
"schema": "DealsDataModel",
"column": "companyType",
"check": "isin(['public', 'private', 'public_administration'])",
"error": "Column 'companyType' failed element-wise validator number 0: isin(['public', 'private', 'public_administration']) failure cases: asd"
},
{
"schema": "DealsDataModel",
"column": "DealsDataModel",
"check": "check_add_after_creation",
"error": "DataFrameSchema 'DealsDataModel' failed element-wise validator number 0: <Check check_add_after_creation> failure cases: 1 2017-03-11T13:00:51, 2017-04-11T13:33:51"
},
{
"schema": "DealsDataModel",
"column": "DealsDataModel",
"check": "check_last_interaction_after_creation",
"error": "DataFrameSchema 'DealsDataModel' failed element-wise validator number 1: <Check check_last_interaction_after_creation> failure cases: 8, 14, 2020-06-19T14:16:48, 2017-06-29T22:01"
},
{
"schema": "DealsDataModel",
"column": "DealsDataModel",
"check": "check_last_update_after_interaction",
"error": "DataFrameSchema 'DealsDataModel' failed element-wise validator number 2: <Check check_last_update_after_interaction> failure cases: 13, 20, 2017-06-29T21:52:13, 2017-07-11T20:59:25"
},
{
"schema": "DealsDataModel",
"column": "DealsDataModel",
"check": "check_closed_after_creation",
"error": "DataFrameSchema 'DealsDataModel' failed element-wise validator number 3: <Check check_closed_after_creation> failure cases: 4, 2017-06-06T16:31:12 2020-10-07T14:54:54"
},
{
"schema": "DealsDataModel",
"column": "DealsDataModel",
"check": "check_expected_closure_after_creation",
"error": "DataFrameSchema 'DealsDataModel' failed element-wise validator number 4: <Check check_expected_closure_after_creation> failure cases: 4, 8, 2017-06-06T16:31:12, 2020-06-19T14:16:48"
},
{
"schema": "DealsDataModel",
"column": "DealsDataModel",
"check": "check_stage_start_after_creation",
"error": "DataFrameSchema 'DealsDataModel' failed element-wise validator number 5: <Check check_stage_start_after_creation> failure cases: 8, 20, 2020-06-19T14:16:48, 2017-07-11T20:59:25"
},
{
"schema": "DealsDataModel",
"column": "DealsDataModel",
"check": "check_last_update_after_stage_start",
"error": "DataFrameSchema 'DealsDataModel' failed element-wise validator number 6: <Check check_last_update_after_stage_start> failure cases: 13, 20, 2017-06-29T21:52:13, 2017-07-11T20:59:25"
},
{
"schema": "DealsDataModel",
"column": "DealsDataModel",
"check": "check_last_synced_after_last_update",
"error": "DataFrameSchema 'DealsDataModel' failed element-wise validator number 7: <Check check_last_synced_after_last_update> failure cases: 14, 2017-06-29T22:01:53 2011-04-28T15:26"
},
{
"schema": "DealsDataModel",
"column": "DealsDataModel",
"check": "check_last_synced_after_closed",
"error": "DataFrameSchema 'DealsDataModel' failed element-wise validator number 8: <Check check_last_synced_after_closed> failure cases: 14, 2017-06-29T22:01:53 2011-04-28T15:26"
},
{
"schema": "DealsDataModel",
"column": "DealsDataModel",
"check": "check_status_closed_datetime_consistency",
"error": "DataFrameSchema 'DealsDataModel' failed element-wise validator number 9: <Check check_status_closed_datetime_consistency> failure cases: 1, 15, 2017-04-11T13:33:51, 2017-07-05T09:43:50"
}
]
}
}
]
}
Here's a breakdown of the validationErrors structure:
validationErrors: This is a list containing the validation error objects.SCHEMA: This key indicates that the error is related to a schema validation failure. Other types of validation errors might appear here.SERIES_CONTAINS_NULLS: This is the specific type of schema error. In this case, it means a column that shouldn't contain null values does.- Inside this list, you'll find one or more objects, each detailing a specific instance of the error:
schema: The name of the data schema used for validation (e.g.,ContactsDataModel).column: The column in your CSV file that caused the error (e.g.,Email).check: The specific validation rule that failed (e.g.,not_nullable).error: A detailed message explaining the problem. In this example, it specifies that theEmailcolumn contains null values.
By examining this structure, you can pinpoint the exact column and issue in your data, correct it, and resubmit the override request.
In this specific case for example the Email column in the row with index 0 contains a null value, which violates the not_nullable constraint of the data model.
Summary of Validation Errors in the Example
The table below summarizes all the validation errors included in the example response above:
| Column | Check Type | Failing Check | Invalid Example | Expected Format/Values |
|---|---|---|---|---|
| addDatetime | SCHEMA | not_nullable | NaN | Non-null datetime string in ISO format |
| addDatetime | DATA | str_matches ISO datetime regex | 2017 | ISO datetime string (YYYY-MM-DDTHH:MM:SS(.ffffff)) |
| expectedClosureDatetime | DATA | str_matches ISO datetime regex | 2016s-06-16T00:00:00 | ISO datetime string |
| status | DATA | isin(['closed_won', 'closed_lost', 'open']) | no | 'closed_won', 'closed_lost', 'open' |
| value | DATA | str_matches decimal regex | asd | Numeric values (e.g., 1000.00) |
| companyNumberOfEmployees | DATA | str_matches digits regex | asd | Integer values as string (e.g., '100') |
| accountId | DATA | str_matches digits regex | asd | Integer values as string (e.g., '100') |
| companyIsCustomer | DATA | boolean_string_check | No | "true" or "false" |
| companyType | DATA | isin(['public', 'private', 'public_administration']) | asd | 'public', 'private', 'public_administration' |
| DealsDataModel | DATA | check_add_after_creation | 2017-03-11T13:00:51 | 'addDatetime' must be after creation datetime |
| DealsDataModel | DATA | check_last_interaction_after_creation | 2020-06-19T14:16:48 | 'lastInteractionDatetime' must be after creation |
| DealsDataModel | DATA | check_last_update_after_interaction | 2017-07-11T20:59:25 | 'lastUpdateDatetime' must be after last interaction |
| DealsDataModel | DATA | check_closed_after_creation | 2020-10-07T14:54:54 | 'closedDatetime' must be after creation |
| DealsDataModel | DATA | check_expected_closure_after_creation | 2020-06-19T14:16:48 | 'expectedClosureDatetime' must be after creation |
| DealsDataModel | DATA | check_stage_start_after_creation | 2020-06-19T14:16:48 | 'stageStartDatetime' must be after creation |
| DealsDataModel | DATA | check_last_update_after_stage_start | 2017-07-11T20:59:25 | 'lastUpdateDatetime' must be after stage start |
| DealsDataModel | DATA | check_last_synced_after_last_update | 2011-04-28T15:27:26 | 'lastSyncedDatetime' must be after last update |
| DealsDataModel | DATA | check_last_synced_after_closed | 2011-04-28T15:27:26 | 'lastSyncedDatetime' must be after closed datetime |
| DealsDataModel | DATA | check_status_closed_datetime_consistency | 2017-07-05T09:43:50 | 'status' and 'closedDatetime' must be consistent |