Let's talk
All posts
Marketing Ops

Marketing Ops 101: The Stack That Scales Past $5M

2025-01-28·7 min read read

There’s a specific kind of pain that hits businesses somewhere between $2M and $5M in revenue. It shows up right around the point where nobody can hold the whole system in their head anymore. The marketing that got you here stops working as well as it used to. Your leads-to-close ratio is inconsistent. You’re not sure which channel is actually driving growth. The CRM is a mess because three different people set it up three different ways. Your email automation exists but nobody really trusts what it’s doing. You get the picture.

And this isn’t just a marketing problem. It’s an operations and systems problem. And it’s extremely common for growing small businesses.

Here’s what the right foundation looks like, and how to get there without throwing everything out and starting from scratch.

Why the accidental stack breaks

Most marketing stacks at this revenue level weren’t designed but rather they accumulated overtime and across multiple people. Someone might have added Mailchimp because it was free, but then a new sales hire brought their HubSpot preference and got a licence. Then someone connected the two with a Zapier workflow that nobody documented, and when the workflow breaks, nobody knows how to troubleshoot. And then these types of things continue to cascade with no solution in site.

The result is a system where:

The answer isn’t usually to rip everything out. It’s to audit what you have, designate a system of record for each data type, and build the integrations that make the whole thing coherent.

The stack that works

There’s no universal right answer, but there’s a pattern that works for most businesses facing these issues:

CRM: your single source of truth

A CRM is the one place your customer data is supposed to live, contacts, companies, and deals, so that when two systems disagree, the CRM wins. That’s the whole job: everything else in the stack reads from and writes to it. Which CRM you pick matters far less than the discipline around it. Everyone has to use the same one, and the rules for keeping it clean have to be written down and enforced. A clean, boring CRM beats a messy, expensive one every time.

HubSpot is a fine default, its free tier is functional and the Starter tier adds reporting worth paying for at this stage, but the tool isn’t the point. A well-run Salesforce, Pipedrive, or even a disciplined database can be your source of truth just as well. The failure mode is never “we picked the wrong CRM.” It’s “three people set it up three different ways and nobody owns it.” With no ownership, and three competing ideas of how the CRM should operate, trouble is on the horizon.

Email / Automation: triggered sequences, and someone who owns them

Email automation runs on three parts. A trigger is the specific event that starts things off — someone fills out your quote form, a deal changes stage, three days pass with no reply. A workflow is the set of rules that decides what happens next: which email goes out, to whom, after how long, and under what conditions. The email is just the output — the thing that actually lands in an inbox. Done right, the workflow handles the repetitive follow-up so your team doesn’t have to. Done wrong, it’s the most dangerous part of the stack: a workflow a contractor built two years ago is still firing emails at real people, and nobody remembers what rules it’s running on or whether they’re still correct.

The fix is ownership, not a better tool. Every active workflow needs one person who can say what it does, when it fires, and why, and who keeps the SOP (Standard Operating Procedure) updated as the workflow changes, because a documented process that has quietly drifted out of date is almost worse than none. Audit what’s live at least quarterly.

On tools, match the complexity to what you actually run, because every extra feature is one more thing to keep correct. For a modest list that’s mostly broadcasts, something lightweight like Mailchimp or MailerLite is plenty. For e-commerce, Klaviyo (or Omnisend) earns the step up because its segmentation and revenue tracking are built around store data. For B2B, an all-in-one like HubSpot or ActiveCampaign keeps email, automation, and the CRM in one place. At the heavy end, Marketo and Salesforce Marketing Cloud add deep automation most businesses this size don’t need yet. Start at the lightest tier that covers your use case and move up only when a real limit forces it.

Website Analytics: measure actions, not just visits

Modern analytics is built on events, not just pageviews. In GA4, every interaction, including a pageview, is just an “event”, which is a real shift from the old “how many people hit this page” mindset. A pageview on its own doesn’t tell you whether the page worked. You have to decide which actions actually matter, form submissions, CTA clicks, scroll depth, add-to-carts, a Calendly modal opening, and set them up before you need the data, not after.

Once you’re measuring actions, the numbers start diagnosing pages for you. A blog post should show deep scroll depth; if it doesn’t, people aren’t reading it. A homepage is the opposite: you’d rather someone find what they need and click through than scroll the whole thing, so key-page clicks tell you more than scroll depth there. GA4 is the practical default since it’s free and where the ecosystem moved, but the discipline, decide what an action is and then track it, is what makes any analytics tool useful.

Attribution: know what actually gets the credit

When someone becomes a customer after seeing an ad, reading a blog post, and clicking an email, attribution decides which of those gets the credit. Start with two models that answer opposite questions: first-touch gives all the credit to the first interaction, so it tells you which channel discovers you; last-touch gives it all to the last interaction before the sale, so it tells you which channel closes. Each is an oversimplification (first-touch ignores what persuaded the buyer, last-touch ignores what created the interest), so you run both and read the gap: the channels that start relationships often aren’t the ones that finish them.

How does a tool know any of this? A cookie. The first time someone lands through a tagged link (UTM parameters, the source/medium/campaign tags on your links), a small file in their browser records where they came from; when they later fill out a form or buy, that stored source is attached to the sale. The catch is that a cookie lives in one browser on one device. Someone who sees you on social on their phone and buys from their laptop never carries that first touch across, so it shows up as “direct.” It holds within one browser (find your blog in search, come back later, convert), and tools narrow the gap through identity: once someone gives you an email or logs in, their visits can be stitched together. It’s never airtight, so treat attribution as a strong signal, not a verdict.

None of this needs a specific tool. Tag traffic consistently, store the source on the contact, and you can do first- and last-touch in almost any CRM or a spreadsheet; GA4 does it free for web channels. A tool like HubSpot (higher tiers) or a dedicated attribution platform earns its place only when you want to spread credit across the whole journey (multi-touch), and even then, only if your tracking is already clean.

Reporting: get the numbers in front of decisions (a dashboard is optional)

Reporting is just making the numbers that matter reach a decision reliably, without someone dreading a manual pull every Monday. The common mistake is treating a dashboard tool as the requirement. Whether you need one comes down to how many sources you’re combining: if it’s one or two, the native reports in GA4, HubSpot, or your ad platform (or a quick export to a spreadsheet) are enough, and less to maintain.

A dashboard tool earns its place when you’re pulling several sources into one view (ad spend next to web behavior next to CRM revenue) and want it to refresh automatically for people who’d rather open a live link than wait on a rebuilt deck. When that’s you, Looker Studio is a common start because it’s free and strong in the Google stack, but it’s not the only one: Power BI and Tableau are paid tools with deeper modeling, and plenty of teams never outgrow HubSpot or GA4’s built-in dashboards. Pick based on where your data lives, not on which tool sounds impressive.

One area that Pachet Digital is exploring in regards to reporting is using Claude Code and Google Analytics for MCP so that we can get Claude Code to pull reports and also do analysis based on questions that we have. Stay tuned for more on this.

Social: the report nobody remembers to pull

Looker Studio pulls your paid numbers in for you, but organic social usually sits outside it, in each platform’s native analytics, where nobody logs in to look. If you’re serious about growing a channel, “it felt like that post did well” isn’t something you can act on. The data exists. It just never reaches a decision.

The fix isn’t a fancier dashboard, it’s removing the human step that keeps failing. Every major platform exposes its analytics through an API, which means a simple scheduled workflow can pull the numbers, format them, and land them in an inbox without anyone touching a thing. With this setup, whoever owns social can get that digest on a set cadence, weekly or monthly: reach, engagement, follower growth, your top few posts, or whatever matters most to your business’ goals. It’s a clean thing to automate, and it earns its keep two ways. It keeps whoever runs social honest about what’s actually working, and it hands you a ready-made input for the wider marketing report instead of a scramble the day it’s due.

Before, social was a black box you checked when you happened to remember. Now it shows up on schedule whether anyone remembers or not.

What a messy stack is actually costing you

Some stack problems announce themselves. These three don’t. They’re foundational, and foundations stay quiet until something built on them cracks, which is why they run for years and cost the most. They also build on each other: clean data feeds good segments, and good segments are what your automation acts on.

Your CRM data can’t be trusted

Everything else here depends on the data being right, and in many stacks it quietly isn’t. Duplicate records are the usual culprit. The same person in your CRM twice means your records contradict each other, you may pay to reach them more than once, and any segment or report built on top is already wrong. Some CRMs have a built-in deduplication tool, like HubSpot. If yours doesn’t, you can export your contacts and dedupe them in a spreadsheet with a formula or a short script, or run them through a dedicated dedup app, then add a rule to stop new duplicates forming. Duplicates are only the visible version of the bigger problem, though. Stale fields, blank fields, and records nobody owns turn every segment and every report into a guess, and without clean tracking underneath, your attribution is a guess too.

The fix is ownership. One person owns data hygiene, the rules for entering and maintaining records are written down, and cleanup is a standing task, not a scramble before a big campaign.

You send everyone the same message

With clean data you can finally segment your messaging, and if you don’t, you leave most of the value on the table. Untagged, unsegmented contacts all get the same email. That feels efficient… but it isn’t. A message written for everyone speaks to no one, so opens and clicks slide, and the contacts who never engage drag down how mailbox providers treat the ones who would. Engagement is part of how providers like Gmail decide whether you land in the inbox or the spam folder, so a stale, untargeted list slowly makes even your good sends land worse. Segmented campaigns consistently see higher open and click rates for the opposite reason: the message fits the person, engagement climbs, deliverability improves, and the next send starts from a better place.

The fix is boring and durable. A tag is just a label that sorts a contact into a group (by source, interest, or lifecycle stage) so you can talk to that group differently from the rest later. The names vary by platform, but the idea is the same. Tag contacts as they come in. You can do it by hand, but most of it should run automatically: tag by the source someone arrived from, or turn the interests they select on a form into tags without anyone touching it. Then segment on the few dimensions that actually change what you’d say. You don’t need dozens of segments, just the three or four that map to a genuinely different message.

You’re not actually using your automation

This is the one that turns clean, segmented data into money, or reduces operational costs, which is why you could make the case that it matters most. But it goes wrong in three ways.

First, the follow-up that depends on a person remembering. A new lead comes in and sits while someone gets to it, and a lead answered in minutes is far more likely to connect and qualify than one answered hours later. If a new lead doesn’t get an automatic first response the moment their message arrives, you’re losing out on deals. This is where speed to lead comes in. At a baseline, an automatic reply or a thank-you page confirms you got their message the moment they submit. The stronger version goes further: an automated system, usually an AI voice agent, calls the lead back within about a minute, answers their basic questions, and books or routes them straight into your existing CRM and calendar. Even if you never automate the call, the rule holds: the sooner a real conversation starts, the more of those leads you keep.

Second, the work a system should do that a person still does by hand: the report pulled every Monday, the same three emails retyped. That is salary spent on something a workflow does essentially for free, and it’s the step that gets skipped when things get busy. Automating it does two things: it buys back the time, and it keeps the work happening on your busiest weeks, exactly when the manual version would fall through.

Third, automation running with nobody watching it, a workflow built two years ago still firing at real contacts, doing who knows what. That is the dangerous kind. You don’t know exactly what it’s sending, whether it still works, or even how to adjust or shut it off, and the whole time it’s touching real customers.

The fix is a short, regular audit plus one addition. Once a quarter, list what’s live and confirm each workflow still does what you think. Make sure a new lead gets an instant, useful response without anyone lifting a finger. Then look at the manual work in your week and ask which piece a system should be handling. The goal isn’t more automation. It’s automation you trust, aimed at the moments that decide whether a lead becomes a customer.

Where to start

If your marketing stack is a mess, the priority order is:

  1. CRM hygiene first. Deduplicate, tag, and segment your existing contacts. Clean data is the foundation everything else depends on.
  2. Event tracking. Get GA4 events configured properly. You need this data before you need reporting.
  3. UTM discipline. Standardize before you run your next paid campaign.
  4. Audit active automation. Document what’s running and verify it’s doing what you think.
  5. Build the reporting layer last. Good reporting on bad data is worse than no reporting — it creates false confidence.

The goal is a stack you actually trust. Where you can look at a number and know where it came from. Where a new team member can understand how everything connects. Where your decisions are based on data rather than hunches.

That’s not a luxury — at the revenue stage most of my clients are at, it’s the difference between growth that compounds and growth that plateaus.


If you’re not sure where your stack breaks down, a 30-minute call is enough to identify the two or three highest-leverage fixes. That’s usually where we start with new clients.

If this resonated, let's talk.

30 minutes.
No pitch.

An honest conversation about what you're building and whether we can help.