Late-stageData & Developer Infrastructure

An automated ABM engine: batch enrollment, generated personalization, and the guardrails that stop a bad send

Workflow success rate materially improved and was measurable

HubSpotSalesforceLeanData
Play leadSolangeMarketing Ops team · LeanScale

The problem

Marketing ran account-based campaigns in which an internally built research process generated a personalized briefing for each contact, which was then delivered through a sequencing tool and landed on a personalized page. The marketing platform was the enrollment engine. Three things kept breaking. Batch enrollments failed silently at scale, with no way to tell which contacts had actually received email one.

The play

  1. 1
    Map the flow before scoping the tool

    The first deliverables were a documented end-to-end system flow and an agreed tech stack, followed by a scoped build against that flow rather than against the sequencing tool's feature list. Enrollment trigger criteria were explicitly revisited rather than inherited.

  2. 2
    Find the batch ceiling instead of guessing it

    The core scaling question was how large a batch could be enrolled before the marketing-platform workflow and the external research process created race conditions with each other. Roughly two thousand at a time held up for high-quality contacts. Success was defined narrowly enough to be testable: the contact receives email one.

  3. 3
    A per-record result field and a standing failures list

    Every enrolled contact gets a workflow-result value stamped on it, backed by a saved list of workflow failures. Failure analysis became a query rather than an investigation, and the same field became the measurement instrument for whether an optimization had worked.

  4. 4
    Gate the send on copy readiness

    The nurture workflow originally assumed that emails two, three and four had copy ready by the time a contact reached them. Sometimes they did not.

  5. 5
    Skip logic for the time-sensitive step

    One mid-sequence email carried dated content that needed refreshing periodically. Rather than pausing the whole program every cycle, built a path that skips that single step while its copy is being updated, so the rest of the sequence keeps running.

  6. 6
    Fix the attribution that account hierarchies were breaking

    Marketing reported campaign impact using opportunity fields that referenced the account on the opportunity. Engagement recorded against child accounts never reached the parent's opportunities, so indirect-sourced reporting systematically undercounted.

  7. 7
    Give the engagement data a home that scales with campaign count

    As campaign generations accumulated, ABM engagement fields cluttered the account detail page to the point of being unusable. Created a dedicated ABM tab on the CRM account layout with one section per campaign generation.

What it moved

Workflow success rate materially improved and was measurable

The client's own analysis of the workflow-result field after the batch-flow optimization pass showed materially higher success rates than the previous run, and, more importantly, the number existed at all, per record, on demand.

From a LeanScale case studyRead the full case study →

More from Solange