Hubspot

HubSpot Contacts Export Sample CSV (Dirty + Clean)

A realistic HubSpot contact export (8,500 rows) covering data quality issues that break CRM migrations and warehouse schemas. The HubSpot-specific quirk: multi-select custom properties and system fields (like Lead Status) are exported as semicolon-separated strings (e.g., 'New;Qualified;SQL'). Data engineers unfamiliar with this will split fields incorrectly, destroying the taxonomy. The 'dirty' version includes semicolon strings, emails with trailing whitespace (causing duplicate re-imports), and inconsistent company casing breaking ABM segmentation. Ideal for testing CRM migrations (to Salesforce), Reverse-ETL dry runs, and building Dim_Contacts schemas. All cleaning happens locally — your contact database stays private.

Live Interactive Preview

Live Data Preview

See how this messy hubspot data looks before downloading. All processing happens locally in your browser.

💡 Pro Tip: HubSpot just created 890 duplicate contacts because of trailing spaces in your import file. Hit this CSV with CSV Deduplicator to fuzzy-match on email, trim whitespace, and merge the richest row.

⚡ Next Step: Semicolons in Lead Status breaking your ETL? Run it through Format Cleaner to normalize multi-select fields and make it warehouse-ready.

Data Schema Definition

ColumnTypeDescription
Contact IDintegerHubSpot internal VID. Immutable; use as primary key for upserts. Not sequential due to soft deletes.
First NamestringGiven name. May be blank for form-less API imports; always COALESCE with default in personalization.
Last NamestringFamily name. Required for most CRM syncs; validate non-null before migration.
Emailstring⚠️ TRAP: Frequently contains trailing/leading whitespace. Causes duplicate creation on re-import. Always TRIM() before dedup.
Lead Statusstring⚠️ TRAP: Semicolon-delimited multi-select (e.g., 'New;Qualified;SQL'). Do NOT split on comma; use ';' as delimiter.
Lifecycle StagestringEnum: subscriber | lead | mql | sql | opportunity | customer. Blank if contact bypassed form submission.
Associated CompanystringCompany name. Inconsistent casing ('acme inc' vs 'Acme Inc.') breaks ABM tier grouping. Normalize before JOIN.
Phone NumberstringMixed international formats. No E.164 enforcement; validate before SMS campaign sync.
CitystringFree-text city name. Misspellings and abbreviations (NYC vs New York) common; use lookup table for geo analytics.
Created DatetimestampContact creation time. Format varies by export method (ISO 8601 vs MM/DD/YYYY); detect dynamically.

⚠️ Highlighted rows contain known data traps. Review descriptions before building ETL pipelines.