Work · Marketing ops · PingPong, 2023–2025

I replaced a manual GTM back office with 200+ automated workflows, and lead handoff went from ~12 hours to 1–2 minutes

Salesforce to Salesloft, one connected architecture: leads route themselves, reports compile themselves, and every team reads the same clean numbers.

200+workflows in production
~12h → 1–2 minlead handoff
8 reportsone cleaned dataset
What I walked into

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 that marketing owns rather than each rep improvising.

How I built it

Five builds, in order

Build 01 · CRM & routing architecture

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 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 model
Lead routing path
Form captured · normalized0:00
Enriched · intent-scored · qualified0:38
Routed to rep · cadence triggered1:24
Build 02 · Outbound as a marketing-run motion

Stop 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 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 open
Outbound, as a system
Target set pulled by verticalZoomInfo
Per-vertical report to each repmarketing-run
Company-specific messagingA/B tested
Sequences loadedSalesloft
Site-visit signals→ Slack, live
Engagement report→ Salesforce, auto
Build 03 · Reporting automation

Reports 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 open them, rather than wait for someone to assemble a copy.

Monthly report 1–2 hours → under 5 minutes, compiled automatically
Monthly report
<5 min was 1–2 hours of copy-paste
Sources pulled · CRM, GA4, ad platformsauto
Cleaned · reconciled · formattedauto
Build 04 · Master data & hygiene

One cleaned dataset, eight reports

Automated 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 step
Master dataset
Dedupe · normalize · UTM disciplineon write
Salesforce ⇄ HubSpot synccontinuous
8 reports, one source of truthconsistent
Build 05 · Stack governance

Own 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, 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, governed
GTM stack, governed
SalesforceHubSpotWebflow
6senseZapierZoomInfo
SalesloftGA4GTM
Operating principles

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.
Result

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.

“Always open to new workflows or how to improve existing ones, he brings a collaborative and enthusiastic approach to operational initiatives.”
Christine M. Porretta
Christine M. PorrettaSenior Manager, Intl. Marketing · Gusto
“He took over all of Marketing for PingPong for over 6 months and has ensured there was no interruption to the business with minimal support.”
Tijana Sijanic
Tijana SijanicDirector of HR · PingPong
“Daniel is one of those wonderful people who combines professionalism and expertise with kindness, collaboration, and a commitment to a positive working environment. He is an asset to any team!”
Ginger Sumner
Ginger SumnerSenior Project Manager · Method Q
I was constantly amazed not only by his technical project management skills, but also by his ability to keep the team motivated through the inevitable challenges.
Michael Divins Michael DivinsSales Director
Jeeves
More work

Need your stack turned into a system?

CRM architecture, routing, reporting, governance, connected end to end.