Writing · essay
Every web problem eventually becomes a systems problem
Development, marketing, analytics, infrastructure and automation are one machine. Here is the working model I use to find the real problem and fix it for good.
I have been building for the web for more than twenty years, and the most useful thing I've learned is not a language, a platform or a trick. It's this: almost every web problem that gets brought to me stops being the problem it looked like as soon as I start pulling on it.
A form problem became a CRM problem. A traffic question became an attribution problem. A slow site became an infrastructure problem. An SEO project became a content and entity problem.
None of those shifts are unusual. They are the normal shape of the work. The website, the ads, the analytics, the server, the forms, the CRM, the automations and the people reading the leads on the other end are not separate projects. They are one machine. When one part misbehaves, the symptom usually shows up somewhere else.
This is the first thing I'm publishing here, so it makes sense to start with the idea everything else sits on.
How I got here
I didn't arrive at this view from a whiteboard. I got there by working through each layer in turn.
I started in web design. Then I moved into programming and application development, because design alone kept running into walls I couldn't get past without writing code. After that I built and ran my own e-commerce company, selling products nationwide from a website I built myself. That was where I stopped thinking like a builder and started thinking like an owner: every tool costs money every month, every outage costs sales, and nobody else is going to fix it.
Later I worked with partners across the United States in the memorial services industry, where speed and precision matter and there is no room for a system that mostly works. Then I spent years in lead generation and digital strategy for legal websites in the mesothelioma space, one of the most competitive and expensive corners of Google. That work touches everything at once: SEO, content, conversion paths, forms, tracking, attribution, hosting, media and the handoff of each lead into intake.
Today I work across digital strategy and AI systems. The details are on my resume if you want them. The through-line is that each stage forced me to learn the next layer down, because the problem in front of me wouldn't stay in its lane.
What "one machine" actually means
Take a single lead on a legal website. For it to be counted, credited and acted on, a surprising number of things have to work together:
- The page has to rank or be reached from an ad, which depends on content, entity signals, site speed and the ad account.
- The page has to load quickly, which depends on hosting, caching, the CDN, and how many plugins and third-party scripts are fighting for the browser.
- The form has to render, validate and submit, which depends on the form plugin, any custom code, spam protection and the server.
- The tracking has to fire, which depends on Tag Manager, GA4 configuration, consent handling and whether identifiers like the GCLID and UTM parameters were captured and carried through.
- The lead has to land in the CRM or intake system with its source intact, which depends on the integration, whether that's a direct connection or something like Zapier or Pipedream in the middle.
- A person has to see it and respond fast, which depends on notifications, routing and whether the email even arrived, which depends on the mail setup.
If any one of those fails, someone upstream sees a symptom. "Leads are down." "Google Ads isn't working." "SEO dropped." Each of those could be true. Each could also be a broken redirect, a script conflict, a lost hidden field or an email that went to spam. You can't tell from the symptom. You can only tell by looking at the system.
The working model
Over time I've settled into a sequence I follow on nearly every engagement, big or small. It isn't complicated, but skipping steps is where most expensive mistakes come from.
- Understand the business objective. Not the requested task, the objective. "Rebuild the site" is a task. "Get more qualified consultations from the same ad spend" is an objective, and it may not need a rebuild at all.
- Inspect the existing system. Before changing anything, look at what's actually running: the hosting, the plugins, the tags, the forms, the integrations, the reports people rely on. Inspect the system before trusting the symptom.
- Map the tech, data, people and dependencies. Who touches what? Where does a lead's data go after submit? Which report does the owner trust, and where does its data come from? What breaks if this one plugin is removed?
- Choose a practical architecture. Choose the simplest architecture that will still scale. Sometimes that's WordPress with fewer plugins. Sometimes it's a lean custom build. Sometimes it's leaving the site alone and fixing the pipe behind it.
- Build or coordinate the build. Sometimes I write the code. Sometimes the right move is to direct others and keep the pieces coherent.
- Instrument it. If it isn't measured, you're guessing. Every change that matters should come with a way to see whether it worked.
- Observe and iterate. Watch real behavior, not just launch-day behavior. Most of the useful findings show up in the second and third week.
- Automate what's stable. Automate only what's stable enough to deserve it. Automating a process that still changes every week just produces faster confusion.
The order matters. Automation comes last on purpose. Instrumentation comes before iteration on purpose. Inspection comes before architecture on purpose.
Mistakes this model is designed to prevent
A few patterns show up often enough that I treat them as defaults to check for:
- Solving the symptom in the loudest department. Marketing sees a drop and buys more ads. The real issue is a form that stopped sending on mobile.
- Rebuilding when repairing would do. A redesign feels like progress, but it can wipe out tracking, redirects and content that were quietly doing the work.
- Adding tools instead of removing friction. Each new plugin or SaaS product fixes one thing and adds a recurring cost, an update cycle and another thing that can break.
- Trusting a report without knowing its plumbing. If nobody can explain where a number comes from, nobody should make a budget decision on it.
- Automating too early. A workflow that hasn't settled down will fail in ways nobody is watching for.
The website isn't the product
That's the principle I come back to most. The website isn't the product. The whole system is. The site is the part people can see, so it gets the attention and the budget. But the outcome a business actually cares about, whether that's a sale, a signed case or a booked call, depends on everything behind it working together.
That's also why I spend my own time running servers, reading mail logs, building publishing pipelines and wiring AI agents into real infrastructure with a human approving what ships. Not because every business should do all of that itself, but because understanding each layer is how you find the real problem quickly.
Most of what I'll write here comes back to this idea from different angles: search and AI visibility, analytics and attribution, infrastructure, automation, and where AI fits into real operations. If you want more background on who's writing, start with the about page.
When something breaks on your site, resist the urge to fix the part that's loudest. Follow the path the customer and the data take, one step at a time. The problem is usually somewhere along that path, and it's usually not where it first appeared.