# Read a sync result

This page explains every part of the screen, top to bottom.

## The summary cards

Five cards sit above the table. **They follow your filters** — change the time
range or pick one connector, and the cards recalculate for that selection.

{/* ---------------------------------------------------------------------------
     SYNTHETIC SCREENSHOT DATA — NOT A RAW CAPTURE, AND NOT CUSTOMER DATA.

     The screenshots below show the REAL product UI (layout, columns, badges,
     tooltips and every product string are exactly as they ship) populated with
     EXAMPLE data. Before each capture, tenant-identifying values were replaced:

       - connector names  -> Okta, Microsoft Entra ID, Workday, ServiceNow CMDB,
                             Salesforce, Google Workspace, Active Directory,
                             TriNet, Jira
       - every UUID       -> deterministic example ids, generated from a hash so
                             one connector keeps one id across all images
       - account name     -> an example name
       - stat-card totals -> example figures, consistent with the product's own
                             success-rate formula

     No real connector name, tenant identifier, account name or configuration
     UUID appears in any image. Verified per capture by scanning the rendered
     page, and the ids are reproducible from the generator.

     Full substitution record: internal-notes/screenshot-provenance/data-source-syncs.md
     (deliberately outside docs/ and static/, so it is never published).
--------------------------------------------------------------------------- */}

![The five summary cards: Sync events, Success rate, Records synced, Partial syncs and Failed syncs](/img/admin-guide/data-source-syncs/02-summary-cards.png)

| Card | What it counts |
| --- | --- |
| **Sync events** | Runs in the current selection |
| **Success rate** | Share of those runs that did not fail. A partial run counts toward it |
| **Records synced** | Items collected across those runs |
| **Partial syncs** | Runs that collected some of their data but not all |
| **Failed syncs** | Runs that collected none |

**Success rate** is colored: green at 50% or above, amber between 25% and 49%,
red below 25%.

> **note**
The rate counts runs that **failed**. A partial run collected data, so it does
not lower the rate. 100% means nothing failed outright — read **Partial syncs**
alongside it to see whether everything was complete.

> **tip**
A partial run collected most of your data. A failed run collected none. They
are different events, so they get their own cards — a connector with partial
runs is not the same as a connector that is down.

## The table

{/* Synthetic data — see the note above the first screenshot in this file. */}
![The runs table with its column headers: Time, Sync ID, Source, Sync type, Trigger, Items, Duration and Status](/img/admin-guide/data-source-syncs/03-table.png)

| Column | What it shows |
| --- | --- |
| **Time** | When the run started. Shown in UTC or your own timezone, whichever your tenant is set to — the zone is written next to the time |
| **Sync ID** | Identifier for this run — quote it when you contact support |
| **Source** | The connector name you gave it, and its identifier |
| **Sync type** | **Full**, **Incremental**, or **Other** |
| **Trigger** | Whether the run was started manually or on a schedule |
| **Items** | How many records the run attempted, succeeded and failed |
| **Duration** | How long the run took |
| **Status** | The outcome |

Select the arrow at the start of any row to expand it.

## Statuses

| Status | Meaning | Your action |
| --- | --- | --- |
| **Success** | Everything the run set out to collect arrived | None |
| **Partial** | Some of the data arrived, some did not | [Check what was missed](./troubleshoot-a-sync.mdx#a-partial-run) |
| **Failed** | The run collected nothing | [Find the reason](./troubleshoot-a-sync.mdx#a-failed-run) |
| **In progress** | The run has started and has not finished | Wait |
| **Completed** | The run finished without reporting a per-category outcome | None |
| **Interrupted** | The run started, never reported a finish, and is now more than 24 hours old | [Re-run it](./troubleshoot-a-sync.mdx#a-run-that-never-finishes) |

> **note**
Each row keeps the outcome that run had at the time it ran. Mesh does not
recalculate it later, so an old run keeps its original status even after the
cause is fixed. Only runs that start after the fix show the new behavior.

> **note**
**Failed** means Mesh tried and could not collect. **Interrupted** means Mesh
never heard how the run ended — most often because the service restarted while
it was running. The data it collected before that point is kept.

## Item counts

The **Items** column reports up to three numbers for a run:

| Number | Meaning |
| --- | --- |
| **Attempted** | How many records the source said it had |
| **Succeeded** | How many records reached Mesh |
| **Failed** | The difference between the two |

{/* Synthetic data — see the note above the first screenshot in this file. */}
![The Item counts panel showing a reported Succeeded count of 212 between an unreported Attempted dash and an unreported Failed dash](/img/admin-guide/data-source-syncs/04-item-counts.png)

### A dash is not a zero

Some connectors report all three numbers. Most report only **Succeeded**,
because their source never states an intended total.

Where a number is not reported, the screen shows a dash:

> Not reported by this connector type — it does not provide this number, so the
> field is left blank rather than shown as 0.

**A dash means "unknown", not "none".** A run showing `— / 1,204 / —` collected
1,204 records successfully. It does not tell you that nothing failed — this
connector reported neither **Attempted** nor **Failed**, so both are unknown.

A real zero is still shown as `0`. If a connector reports that 40 records
failed, you see `40`.

## Filters

{/* Synthetic data — see the note above the first screenshot in this file. */}
![The filter row: search box, sync type, status and time range, with a Clear link](/img/admin-guide/data-source-syncs/05-filters.png)

| Filter | Options |
| --- | --- |
| **Search** | Match on source or identifier |
| **Sync type** | All sync types, Full, Incremental, Other |
| **Status** | All statuses, Success, Partial, Failed, In progress |
| **Time range** | Last 24 hours, 7 days, 30 days, 90 days |

The table and the summary cards both follow the filters.

## The expanded row

Expanding a row shows what the run did in detail:

- **Item counts** for the run, with the dash explained on hover.
- **Data synced** — the categories of data the run collected.
- **Failure detail**, for a run that failed or partly failed. You can search,
  sort and page through the individual failures behind a single run.

{/* Synthetic data — see the note above the first screenshot in this file. */}
![An expanded row showing event metadata, item counts, the categories under Data synced, per-category outcomes under Collection details, and the error categories](/img/admin-guide/data-source-syncs/06-expanded-row.png)

## Export

Select the download icon to export to CSV.

The export covers **every row matching your current filters**, not just the
page on screen. A notification confirms how many events were exported.

Times in the export are always UTC, even when the screen is showing your own
timezone.

> **note**
The button is disabled while an export runs, so you cannot start a duplicate by
accident.
