Late-stageLegal Technology

Replatforming a decade-old marketing automation estate: the audit is the project

A full estate audit delivered in three review-ready workbooks

MarketoHubSpotSalesforceDatabricks6sense
Play leadRaphaelRevOps team · LeanScale

The problem

More than a decade of marketing automation had accumulated into an estate nobody could describe: roughly 15,000 programs, tens of thousands of smart campaigns, ~2,300 lead fields, ~600 forms, hundreds of email templates and thousands of lists, sitting on ~2.5M contacts with roughly 400k duplicates in them. The signed scope named a handful of integrations.

The play

  1. 1
    Audit for the live surface, not the inventory

    The first pass counted everything and reported the number that mattered: a few hundred active smart campaigns out of roughly fifteen thousand. The stated principle was that auditing all fifteen thousand programs row by row is wasted hours.

  2. 2
    Work around what the platform API will not tell you

    The legacy platform's REST API does not expose the integration registry or the webhook list, and does not return smart-list criteria, flow steps, or campaign run results. The live footprint had to be reconstructed from the activity-type catalog, the full lead-field schema, and the custom objects, with webhooks read out of the admin UI by hand.

  3. 3
    Treat field mapping as the thing that prevents silent loss

    Every lead field was inventoried and flagged for CRM origin using the custom-field API naming convention: roughly 1,600 of ~2,300 fields came from the CRM. Each row carries data type, length, read-only state and an explicit migrate-or-not decision.

  4. 4
    Rebuild the CRM sync as per-property rules, not one global lever

    The legacy platform's only real control was a per-field 'block updates' switch inside a bidirectional sync. The new platform allows a per-property rule: two-way, one-way in either direction, or don't sync at all.

  5. 5
    Collapse the scoring model instead of porting it

    Behavioural and demographic scoring lived across dozens of separate scoring campaigns feeding grade thresholds. In the new platform, one rule-based score property replaces dozens of campaigns.

  6. 6
    Translate asset types honestly, and name the ones with no equivalent

    Dynamic lists become active lists; static lists move as-is; segmentations have no direct equivalent and get rebuilt as single-select properties rather than as lists. Trigger campaigns become workflows with enrollment triggers; batch campaigns become scheduled or list-enrolled workflows.

  7. 7
    Split the work 80/20 by risk, not by volume

    Email, webinar and nurture programs are roughly 80% of the volume and the low-risk part; they migrate in waves with a QA gate at the end of each. The remaining 20% is the high-risk tail: campaigns with custom scripting (over a hundred scripted assets, a couple of dozen genuinely complex) and campaigns that fire external API calls.

What it moved

A full estate audit delivered in three review-ready workbooks

Activities (roughly 2,500 live automations out of ~54,000 smart campaigns, ~85 activity types, ~29 channels, ~30 segmentations); Objects and Fields (~2,300 fields, ~1,600 of CRM origin, ~870 flagged unused); Other Assets (~600 forms, ~300 email templates, ~390 snippets, the scripted-campaign tail, ~50 integrations and ~16 webhooks).

From a LeanScale case studyRead the full case study →

More from Raphael