I built this at PingPong, as Senior Digital Marketing Manager from 2023 to 2025, for a marketing team of seven or eight taking requests from four or five departments. The process went live in the second half of 2023 and was still running when I left in October 2025. The team was shipping. Campaigns went out, the website got updated, data requests got answered. And still, everything felt harder than it should: attention split across a half-dozen request channels, email threads that grew and never closed, and the same decisions coming back week after week. Everyone executed well. None of us had built a system underneath it.
I realized the fix once I stopped treating the symptoms separately. Email campaigns, website updates, and data requests shared one problem: ad-hoc intake. Every request arrived as an interruption, and switching between them ate the week. So I built an intake process for each surface. My first attempt at each one failed. Usefully. And that's most of what this post is about.
Website ops: ship in sprints
Our site runs on Webflow, and website requests used to arrive the way all requests arrived, urgently, from anywhere. The fix I landed on was three questions, asked in order, before any work started.
Who owns the decision?
First: does marketing alone own this change, or does it need compliance, legal, and product sign-off? Answer that, and the workflow follows. An approval that surfaces after the page is built costs a launch date.
What's the real scope?
Second: does this fit an existing template, or does it need new design work? That answer sets the timeline and who staffs it. A templated page and a net-new design are different projects.
When does it ship?
Third: I stopped launching continuously and moved us to bi-weekly website sprints. Page and email requests ran roughly 10 to 20 a week, and a sprint shipped three to five pages. Pages enter a queue and ship together after a pre-launch review. The first sprint slipped, and it slipped for exactly the reason the three questions exist: I let a “quick” page in mid-sprint without classifying it, it turned out to need compliance sign-off, and the whole release moved with it. The rule I set after that was blunt. Anything that jumps the queue displaces something else, visibly, with the requester's name next to the trade. Queue-jumping got rare fast once it had a price tag.
After each launch, I send an internal update explaining what changed and why, so stakeholders hear it from us before they find it themselves. I also set up rotating internal reviews: team members walk the site and flag issues without the fire drill. Findings go into a backlog I prioritize on a schedule.
Email ops: intake before send
Email had the same disease in a different body. Requests came in from compliance, product, and other departments, each in its own format, each on its own clock. My first cure failed too: I wrote a spec template and emailed it around. Almost nobody used it. People route around a template they have to remember. What stuck was a request form I built on an Asana board, one door for everything, and I answered every side-channel request with a link to the form and no lecture. The form asks for four things:
- The list, in a defined structure. Email address plus required columns for first name, last name, and source, plus any attributes the dynamic content needs.
- A naming convention. Picked from the set we already maintain.
- A timeline, a send window with a date on it.
- The approver, whoever signs off before this goes out.
Only then does a request enter the queue. Before any send I verify the list in NeverBounce, because bad data keeps taxing every campaign that comes after it. I review every campaign internally before stakeholders see it, so what stakeholders approve is already sound.
The quieter win: stakeholders learned what “ready” means, and marketing could forecast workload. And after each campaign, I send a 24-hour performance summary back to the requester.
The answer changed from “no” to “yes, through a system.”
Data requests: one visible backlog
I moved data requests onto the same board: every request visible in a backlog, I rank them in the open, and nobody interrupts analysis time. The answer people got was yes, through a system that let them see where their request stood and let us do the work without breaking focus. The tell that it worked: the “any update?” pings stopped.
This is the unglamorous end of marketing ops, and it's the part that made the glamorous part possible. I automated on top of the same intake and the same queue, and lead handoff went from roughly 12 hours to 1–2 minutes, running across the 200+ automated workflows I built. None of that works when the process lives in email threads. You can't automate what you can't see.
If you're building this from zero
Build the intake form first, ahead of the sprint cadence and the review rotation. On the email side I got there the slow way, through a spec template nobody used. Expect people to route around the form for the first few weeks; answer every workaround with the form link, and don't take it personally. The sprint cadence comes second, once the queue is real enough to schedule against, and the 24-hour performance summary comes last.
The compliance and legal sign-off layer is specific to a regulated industry, and the rest of it transfers. None of this is sophisticated. That's the point. The form and the board hold the process, so nobody has to remember it.