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

# Data Quality

> Monitor the health of your tracking pipeline and attribution data.

The Data Quality Console gives you real-time visibility into whether your tracking pipeline is working correctly. If attribution, events, or metrics aren't flowing, this is where you'll see it.

Navigate to **Integrations → Data Quality** (available in dev mode) or check the Data Quality Card on your dashboard.

## Freshness

Freshness shows how recently each data source reported. WisePilot collects data on different schedules depending on the source — some arrive in real-time, others are imported nightly. See [Automation & Data Freshness](/optimization/automation) for the complete schedule.

If a source goes stale, it means data has stopped flowing:

| Source                | How It Arrives             | Healthy | Warning | Action if Stale                                                                                                          |
| --------------------- | -------------------------- | ------- | ------- | ------------------------------------------------------------------------------------------------------------------------ |
| **GTM events**        | Real-time (as events fire) | \< 24h  | > 48h   | Check GTM container deployment, verify attribution script is loaded                                                      |
| **HighLevel webhook** | Real-time (webhook)        | \< 24h  | > 48h   | Verify webhook is enabled in HighLevel, check webhook URL and secret                                                     |
| **GA4 snapshots**     | Daily automated import     | \< 24h  | > 48h   | Check Google Analytics connection, verify property access                                                                |
| **GSC snapshots**     | Daily automated import     | \< 24h  | > 48h   | Check Search Console connection, verify site ownership                                                                   |
| **Daily rollup**      | Nightly aggregation        | \< 24h  | > 48h   | Check [Automation & Data Freshness](/optimization/automation#troubleshooting-automation) — this is the most common issue |

<Warning>If the daily rollup is stale, optimization scores stop updating — even if events are flowing correctly. This is the most common cause of "scores not changing."</Warning>

## Join Coverage

Join coverage is the most important data quality metric. It measures what percentage of events successfully link across the attribution pipeline.

### Coverage Tiles

| Tile                               | What It Measures                                              | Target |
| ---------------------------------- | ------------------------------------------------------------- | ------ |
| **CTA clicks with attribution**    | % of CTA clicks that carry a valid `cr_attrib`                | > 90%  |
| **Form submits with attribution**  | % of form submissions that include a `cr_attrib`              | > 60%  |
| **Form submits tied to CTA click** | % of attributed form submissions that match a prior CTA click | > 50%  |
| **Form submits tied to asset**     | % of form submissions linked to a specific content asset      | > 40%  |

### Interpreting Low Coverage

**CTA clicks with attribution is low (\< 80%):**

* The attribution script may not be deployed on all pages
* Check that `window.getAttributionId()` returns a value on your website
* Verify the script is loaded before GTM fires CTA events

**Form submits with attribution is low (\< 40%):**

* The HighLevel `cr_attrib` custom field may be missing or misconfigured
* Some forms may arrive from sources other than your CTAs (direct HighLevel links, chatbots)
* Check the "Form Submits (No Prior CTA Click)" tile — some leakage is normal

**Form submits tied to asset is low (\< 30%):**

* Content assets may be missing `canonical_path` values
* The page paths in events may not match the `canonical_path` in WisePilot
* Check that published assets have their URL path set correctly

## Coverage By Source

This breakdown shows exactly where in the pipeline attribution is leaking:

* **High CTA coverage + low form coverage** → Problem is on the form/HighLevel side. Check the `cr_attrib` custom field.
* **Low CTA coverage** → Problem is on the website/script side. Check attribution script deployment.
* **High form coverage + low asset coverage** → Problem is in asset resolution. Check `canonical_path` settings on your content assets.

## When to Check

* **After initial setup** — Verify all connections work end-to-end
* **When optimization scores drop unexpectedly** — Stale data or broken connections
* **When confidence tiers downgrade** — Low join coverage directly reduces confidence
* **Weekly as a health check** — Catch issues before they impact scoring

See [Troubleshooting](/optimization/troubleshooting) for step-by-step solutions to common data quality issues, and [Automation & Data Freshness](/optimization/automation) for the full schedule of when each data source refreshes.
