~800k contacts re-lifecycled



Hundreds of thousands of self-serve product signups poured into a HubSpot instance with no MQL or PQL definitions, no lead routing, and lifecycle stages that fit neither a self-serve nor a sales-led motion, let alone both. UTMs were not passing on form submissions, so attribution was broken at the source.
HubSpotMigrated the entire contact base onto a new nine-stage lifecycle spanning self-serve and sales-led (Self-Service → Lead → Engaged → MQL → SAL → SQL → Opportunity → Customer → Churned), deprecated the legacy HubSpot lead object, and consolidated roughly 12,000 lead records into a contact-only model.
Backed up every deal (500+ deals across 446 columns) and closed out roughly 350 stale deals from a retired product line as Closed Lost, so conversion and velocity reporting reflected the business as it actually runs.
SnowflakeRebuilt UTM and channel classification into 14 channels and 45 sub-channels, stood up a Snowflake-based attribution reconciliation engine with first-touch, last-touch and MQL-touch stamping, and built custom campaign-attribution reporting after the CRM's native campaigns object could not ingest the custom fields.
Automated renewal-opportunity creation from closed-won deals, built renewal and expansion pipelines with 90/60/30-day alerts and churn logic, and mapped the funnel into a GTM data platform with an executive daily digest.
Delivered supporting internal tools including a campaign UTM builder and a unified webinar-registration workflow that embeds tracking in the form itself, so the team stopped depending on manual link hygiene.
~800k contacts re-lifecycled
The entire contact base was migrated onto the new nine-stage lifecycle with zero contacts left on any of the 13 legacy stages.
~160k contacts attribution-backfilled. The attribution engine backfilled lead-source detail fields, up from fewer than 200 populated records, and reconciled native against warehouse attribution, parity-tested at zero mismatches across a 200-contact sample.


5 steps
Deciding which system owns the MQL, and making the number defensible
A lead count marketing reports on
Lead routing and speed to lead



+1
6 steps
From an empty CRM to enrichment, territories and a live lead-routing engine
Full account base enriched
Attribution
5 steps
Rebuilding a channel taxonomy and the MQL workflows that were never firing
Channel taxonomy rebuilt