> ## Documentation Index
> Fetch the complete documentation index at: https://docs.adriel.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Column type mismatch

> A file-based data source fails to sync, or a numeric column imports as text, because cells in a column don't share one data type.

File-based data sources — Google Sheets, CSV files, and other file imports — infer each column's data type from the values in it. When the cells in one column don't share a single type, one of two things happens: the sync stops with an error (a mapped date column contains a value that can't be parsed), or the column silently imports as text and widgets can no longer aggregate it as a metric.

## Quick checks

<Steps>
  <Step title="Check the data source for a sync error">
    An invalid date error names the column, the offending value, and the format it expected — it points at the exact cell to fix.
  </Step>

  <Step title="Scan the affected column in the source file">
    Look for stray text in a numeric column (`N/A`, notes, units), dates typed in a different format than the rest of the column, and spreadsheet error markers such as `#NUM!` or `#VALUE!`.
  </Step>

  <Step title="Fix the cells, then refresh manually">
    Correct or clear the offending cells so every cell in the column parses as the same type, then run a manual refresh from the data-source settings instead of waiting for the next scheduled sync.
  </Step>
</Steps>

## Likely causes

<AccordionGroup>
  <Accordion title="The sync fails with an invalid date error">
    When a column is mapped as the date field during setup, every cell in that column is checked against the expected date format on each refresh. A cell that does not match halts the sync, and the error reports the column, the offending value, and the format it expected. Correct that cell in the source file so it matches the format the rest of the column uses, then refresh.

    Spreadsheet error markers in the date column (`#NUM!`, `#VALUE!`) and blank cells are skipped rather than failing the sync — so a halted sync means a value that cannot be parsed at all, such as a date typed in a different format or plain text in the date column.

    → See the [Google Sheets FAQs](/data-sources/g-n/google-sheets/faqs) for Google Sheets-specific behavior.
  </Accordion>

  <Accordion title="A numeric column imported as text">
    Column typing follows the displayed value, so a single non-numeric cell types the whole column as text. Common culprits:

    | Value in the column                          | Why it breaks the typing             |
    | -------------------------------------------- | ------------------------------------ |
    | Text such as `N/A`, `TBD`, or an inline note | Does not parse as a number           |
    | A `%` symbol in the cell value               | Imports as text, not as a percentage |
    | Scientific notation such as `3.13E+10`       | Imports as text                      |

    A text-typed column cannot be aggregated as a metric — widgets that expect a number show an error or no data. Clean the column so every cell parses as a number, then refresh; the type corrects itself on the next sync.

    For percent columns on Google Sheets, set the data type to `parsedPercentage` on the data source and configure the aggregation method (for example, weighted average) — percent-type fields are not automatically aggregated across breakdowns.
  </Accordion>

  <Accordion title="The dashboard still shows the old numbers after a failed sync">
    A failed sync does not blank the dashboard. Each refresh builds the new snapshot first and swaps it in only when the sync succeeds, so a failing sync leaves the previous snapshot in place. Numbers that look frozen — unchanged for longer than the refresh schedule — are often a sync that has been failing quietly on a type error. Check the data source for an error, fix the source file, and refresh.
  </Accordion>

  <Accordion title="The source file is fixed, but the field types haven't updated">
    The cached rows and the field metadata refresh on their own schedules, so a corrected column does not re-type instantly. A manual refresh pulls the corrected rows right away; the field metadata can take longer to catch up. For the refresh schedule of the affected data source, see its data reference — for example the [Google Sheets data reference](/data-sources/g-n/google-sheets/data-reference).
  </Accordion>
</AccordionGroup>

## Still stuck?

<Card title="Contact support" icon="life-ring" href="mailto:support@adriel.com">
  Email `support@adriel.com` with the dashboard URL, the data source name, the affected column, and — for a sync error — the exact error text.
</Card>
