CleanSmart Attribution Readiness Checker™

Find out if your CRM can support attribution. Drop an export from HubSpot, Salesforce, Klaviyo, Mailchimp, or Shopify and get your score in under a minute.

Runs entirely in your browser. Your file is never uploaded — close the tab and it's gone.

Drop a CSV export here or click to choose a file
Which checks each platform's export supports
The Attribution Readiness Checker scoring a HubSpot export: an overall score with seven sub-scores, a headline, and the top fixes

What attribution readiness means

Attribution readiness is how well your CRM data can support attribution: whether each record carries a source, a first touch, and consistent UTMs, and whether duplicates have split one person's history across several records. Attribution tools can only report what the CRM underneath them holds, so a gap here becomes a wrong channel number there.

How the score works

Coverage checks score the share of records that are filled in. Problem checks start at 100 and lose points at a multiple of the share of affected records, so 25% catch-all values scores 50. The overall score is the weighted average of the checks your export supports. It needs a source column and at least three checks to score at all.

CheckWhat it measuresWeightPenalty
Source coverageShare of records with a source value. A blank source means the record never shows up in channel reports.20coverage
Catch-all shareShare of sourced records parked in catch-alls like Offline Sources or Direct Traffic, or junk like “unknown”. Inflated catch-alls hide which channels work.152× share
First-touch completenessAverage fill of the first-touch fields (first page seen, first referring site, first conversion) plus create date. Attribution models need them to place the opening touch.15coverage
UTM coverageShare of paid, social, and email-sourced records that carry every UTM column. Without UTMs there's no campaign-level credit.15coverage
UTM consistencyShare of UTM values spelled differently from their channel's most common spelling (LinkedIn, linkedin, li). Variants split one channel into several report rows.102× share
Split-history duplicatesShare of records in email-matched duplicate groups that disagree on source or first touch. The true first touch is scattered across them.154× share
Timestamp sanityShare of dated records created after their first conversion, dated in the future, or created in the same minute as a bulk-import block. Imports often reset source data.102× share

Why duplicates break first touch

When one person exists as two records, each record holds part of their history: the paid click on one, the webinar signup on the other. A merge that simply keeps the winning record discards the rest. SmartMatch finds the duplicates exact matching misses, and CleanSmart's merges keep the original source fields and write cleaned values to new fields in your export, so the first touch survives the cleanup.

What the checker can't see

It matches duplicates on email, so the same person under two addresses isn't counted. Treat the split-history number as a floor. It only sees the columns in your export: if your source or UTM properties weren't exported, add them and check again. Dates are read month-first unless you switch the date format under Columns used, and the timestamp check always says which it used.

Re-check after cleaning

Your last result stays in this browser. Clean the data, with CleanSmart or by hand, export again, and drop the new file here. The score shows the change, and the printable report carries the before and after.

Frequently asked questions

Is my export uploaded anywhere?

No. The checker reads your file inside this browser tab and scores it there, and the file never leaves it. We count usage (which tool, the platform you picked, a rough row count, and the score band), never your data. The score summary is saved only in this browser, so the printable report and your next re-check can use it. “Clear saved result” removes it.

Which exports does it work with?

Contact, lead, profile, and customer exports from HubSpot, Salesforce, Klaviyo, Mailchimp, and Shopify. It finds the standard source, first-touch, date, and UTM columns automatically. If yours are custom fields (a Salesforce UTM_Source__c, say), point it at them under Columns used. Checks your export has no columns for show as “Not in this export” instead of counting against you. Standard Mailchimp and Shopify exports don’t include source data, so they usually can’t be scored on their own. Field maps last checked 2026-10-21.

How is the score calculated?

Seven checks each score 0–100: source coverage, catch-all share, first-touch completeness, UTM coverage, UTM consistency, split-history duplicates, and timestamp sanity. The overall score is their weighted average over the checks your export supports, using the weights published on this page. It needs a source column and at least three checks to score at all. The free checker reads the first 5,000 rows.