Salesforce to Salesloft, one connected architecture: leads route themselves, reports compile themselves, and every team reads the same clean numbers.
By 2023, PingPong's marketing had real demand and real tools. Salesforce, HubSpot, a Webflow site, ads humming. What it didn't have was connective tissue. Every tool was an island, and the bridges between them were people doing manual work.
The symptoms were everywhere once you looked. A supplier filled out a form and the record sat for ~12 hours before a human noticed it, qualified it by eye, and forwarded it to a rep, long enough for a competitor to call first. At month-end, someone spent one to two hours exporting CSVs from half a dozen systems and pasting them into a report whose numbers never quite matched the last one. Ask two teams for lead volume and you got two answers, both defended with screenshots.
Outbound had the same shape from the other direction. Every rep worked their own list, built their own sequence, and wrote their own messages, so coverage tracked whoever happened to be diligent that month and nothing anyone learned survived past the person who learned it.
Nobody had decided it should work this way. It had just accreted, tool by tool, hire by hire. My job was to take the stack the company already owned and turn both motions into one system: one CRM architecture, one definition of a qualified lead, one dataset everything reports from, and a target list that marketing owns rather than each rep improvising.
I started where the money leaked fastest: the path from form-fill to rep. I rebuilt the CRM architecture across Salesforce and HubSpot, one object model, one lifecycle, one definition of a qualified lead, then automated the entire path on top of it: capture normalized at the form, enrichment from ZoomInfo and intent from 6sense scored on arrival, routing rules that put the right lead in front of the right rep with context attached, and Salesloft cadences triggered the moment the record lands.
The full inbound chain runs from that one architecture. A conversion writes to the CRM and syncs both ways with HubSpot and Salesloft. Salesforce handles normalization, enrichment and the round-robin assignment. HubSpot picks up retargeting and the standard nurture cadences. The record then drops into the Salesloft cadence that matches its state, so the sequence is already running by the time a rep sees the name and their job narrows to making the call.
I want to be straight about the headline number here. Cutting hand-off from about 12 hours to a minute or two reads well, and by current standards it is table stakes rather than an achievement. It is also only the top layer. What mattered was that the 200+ workflows underneath it share one architecture, so every new workflow inherits the same definitions instead of inventing its own. That is what let the count grow without the chaos growing with it.
Lead handoff ~12 hours → 1–2 minutes · 200+ automated workflows on one shared object modelOutbound was where the systems thinking paid off most, because there was no system at all. I moved the top of it to marketing and organized it by vertical. We pull the target set from ZoomInfo against the qualified profile, and for the cross-border side we work Panjiva, the import and export trade database, so a supplier that actually ships goods shows up as a real trade record rather than a firmographic guess. Each rep gets a per-vertical report rather than a database login, so they load a list someone has already filtered instead of spending their morning building one.
The messaging is customized to the company rather than a merge field, and I run the A/B tests on it so what works becomes shared practice instead of one rep's private folklore. Then the signal loop closes: ZoomInfo's visitor intelligence tells us which target companies are on the site, I review that weekly, and the visit signals push into a Slack channel as they happen so a rep can act while the interest is still warm.
On top of that sits a standing account report: who clicked, who engaged, who signed up, who downloaded, who came back to the site. It writes automatically into Salesforce, so prioritization lives where reps already work rather than in a document they have to remember to open. Marketing's job in outbound became supplying visibility, and that is the step that turned a list of names into account-based selling.
Reps stop guessing who to call. The list, the message, the test result and the intent signal all arrive in the tools they already have openThe monthly report was the second bottleneck: one to two hours of exporting, pasting and reconciling, every single month, with a fresh chance to introduce an error each time. I rebuilt it as a pipeline instead of a chore, sources pull automatically from the CRM, GA4 and the ad platforms, transformations run on a schedule, and the numbers land formatted, in the same shape, every time.
Compile time dropped from 1–2 hours to under five minutes, and the cadence flipped from monthly to on-demand: daily snapshots became available because refreshing cost nothing. Anyone who wanted the numbers could open them, rather than wait for someone to assemble a copy.
Monthly report 1–2 hours → under 5 minutes, compiled automaticallyAutomated reporting is only as good as the data it drinks. So the third build went underneath: a master dataset with standing hygiene rules, deduplication, field normalization, UTM discipline, cross-system sync between Salesforce and HubSpot, so that cleaning happens once, at the source, instead of eight times in eight spreadsheets.
That single cleaned dataset now feeds eight different reports covering channel, lifecycle, pipeline and campaign views, and they agree with each other by construction. The two-answers problem died here: when every report is a projection of the same table, there's nothing left to argue about except what to do next.
8 reports generated from one cleaned dataset · no reconciliation stepThe last build made the whole thing durable. I took ownership of the GTM stack end to end. Salesforce, HubSpot, Webflow, 6sense, Zapier, ZoomInfo, Salesloft, GA4 and GTM, and governed it like infrastructure: documented integrations, a tracking plan that decides what gets measured before anything ships, naming conventions enforced at the template level, and a rule that no new tool or workflow lands without a place in the architecture.
Governance sounds slow; it's the opposite. Because every connection was documented and every definition was shared, new campaigns launched onto rails that already existed. The stack ran quietly enough that most of the team never had to think about it.
Full GTM stack · Salesforce → GTM · connected, documented, governedArchitecture before automation.
200+ workflows on a shared object model is a system; 200+ workflows without one is a haunted house. The definitions came first, the count came free.
Clean once, at the source.
Hygiene is a standing rule on write. That's why one dataset can feed eight reports that agree by construction.
If a human is the bridge, that's a bug.
Every manual hand-off is latency plus error plus a person who can't take vacation. The ~12-hour lead wait was missing architecture.
One connected architecture across the full GTM stack. Every number traceable to a build.
Lead handoff compressed from ~12 hours to 1–2 minutes, automated end to end across 200+ workflows, so speed-to-lead became the default behavior of the system.
The monthly report dropped from 1–2 hours of manual compilation to under 5 minutes, and a single cleaned dataset now feeds 8 reports that agree with each other. One number, every team.
CRM architecture, routing, reporting, governance, connected end to end.