I replaced a manual GTM back office with 200+ automated workflows, and the count grew without the chaos growing with it
Salesforce to Salesloft, one connected architecture: leads route themselves, reports compile themselves, and every team reads the same clean numbers.
A growth engine held together by copy-paste
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 marketing owns, so no rep has to improvise one.
Five builds, in order
Make the hand-off a system behavior
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 I automated the path on top of it. Forms normalize capture, ZoomInfo enrichment and 6sense intent score on arrival, routing rules hand the right rep the lead with context attached, and Salesloft cadences fire 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 and does not invent its own. Each one has a named owner and a documented trigger. That is what let the count grow from the seventy-odd I had built on the payments line without the chaos growing with it.
Lead handoff ~12 hours → 1–2 minutes · 200+ automated workflows on one shared object modelStop each rep building their own list
Outbound 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 trade record, not a firmographic guess. Each rep opens a per-vertical report, not a database, and loads a list someone has already filtered. Nobody spends the morning building one.
The messaging is written to the company, down past the 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, and I review that weekly. 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 reps prioritize where they already work, not in a document they have to remember to open. In outbound, marketing supplies the visibility. That is what 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 openReports that compile themselves
The 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 just open them.
Monthly report 1–2 hours → under 5 minutes, compiled automaticallyOne cleaned dataset, eight reports
Automated reporting is only as good as the data it drinks. So the fourth 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 stepOwn the stack, or the stack owns you
The last build made the whole thing durable. I took ownership of the GTM stack end to end. Salesforce, HubSpot, Webflow, 6sense, Zapier, ZoomInfo, Salesloft, and GA4 with Tag Manager. I governed it like infrastructure: documented integrations, and a tracking plan that decides what gets measured before anything ships. Naming conventions are enforced at the template level, and no new tool or workflow lands without a place in the architecture.
Every connection was documented and every definition was shared, so 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, governedThree rules behind the 200+ workflows
Architecture 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.
What the ops layer produced
One connected architecture across the full GTM stack. Every number traceable to a build.
Speed
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.
Clarity
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.
Need your stack turned into a system?
CRM architecture, routing, reporting, governance, connected end to end.


