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: I automated routing and the monthly report on one cleaned dataset that every team reads.
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.
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.
The architecture came first, so the count could grow
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 enriches, 6sense scores intent, 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.
The hand-off is only the top layer. What mattered was that the 200+ workflows underneath that layer 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. Seventy-odd of them I built myself on the payments line, and the team built most of the rest to the standards I set, so the count grew 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 shows up as a trade record with real shipments behind it. Each rep opens a per-vertical report and loads a list someone has already filtered. Nobody spends the morning building one.
I write the messaging to the company, 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 inside the tool they already work in. In outbound, marketing supplies the visibility, and 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 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. 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. Anyone could pull a daily snapshot, because a refresh cost nothing.
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 that dedupe records, normalize fields, enforce UTMs and sync Salesforce with 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, every tool in it: Salesforce, HubSpot, Webflow, 6sense, Zapier, ZoomInfo, Salesloft, and GA4 with Tag Manager. I held the marketing-side admin seat, so fields, automations and routing were mine to change, while schema and IT-level changes went to IT for approval. I governed it like infrastructure: I documented the integrations and wrote a tracking plan that decides what we measure before anything ships. Templates enforce the naming conventions, and no new tool or workflow lands without a place in the architecture.
I documented every connection and shared every definition, 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.
I owned the full GTM stack, from Salesforce to Tag Manager, with every integration documentedWhat the ops layer produced
One architecture across the GTM stack. Every number below traces back to a build.
Speed
I cut lead handoff from ~12 hours to 1–2 minutes across 200+ workflows, so the system answers fast by default.
Clarity
I rebuilt the monthly report, cutting it from 1–2 hours of hand-compiling to under 5 minutes. A single cleaned dataset now feeds 8 reports that agree with each other.
Three 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.
Need your stack turned into a system?
I wire your CRM, routing and reporting into one governed stack.


