How ATP Replaced Their PHP Marketing Site Without Switching Vendors, Hosts, or Logins

Mike Kerchenski
Mike Kerchenski ·
How ATP Replaced Their PHP Marketing Site Without Switching Vendors, Hosts, or Logins

Two years after we built ATP's compliance assessment app, they came back to rebuild the marketing site. Same subscription, same team, 23 pages, $8,910 — and not one new vendor relationship.

The conventional way to think about software vendors goes like this: you have a "website agency," a "compliance app team," an IT person who handles email, and a separate hosting bill from somewhere. Each one knows their lane. None of them talk.

That model creates a tax every time you want to do something new. New project? New procurement. New SOW. New onboarding. New "let me get up to speed on your business." It's why so many small businesses just keep using bad software — the cost of switching feels worse than the cost of staying.

The "outsourced tech department" frame collapses that. One team. One subscription. One Slack channel. When you need a marketing site, you don't audition vendors. You ask the people who already know your data model.

That's what ATP got. And it's why the proposal that landed on their desk wasn't $35,000 from an agency they'd never met. It was $8,910 from us.

If that frame is new to you, our comparison of the six options for replacing legacy software lays out exactly where this fits — and where it doesn't.

The actual scope: 23 pages, six admin interfaces, one platform

The original ask was "five static pages." That's almost never what a small business actually needs, and ATP was no exception. After we reviewed their existing site and content, the real scope was 23 pages — 17 static, six dynamic with admin interfaces.

Here's what that looked like in practice:

Static pages. Homepage, Our Story, Products Overview, four individual product pages (ThriveLine, W.A.I.T., WIRED Algorithm, SafePane, WIRE Certified Training), Strategic Partners, Referral Partners, Resources, Contact, Terms, Privacy, NJ Law, Core Values. The standard B2B marketing-site surface area.

Dynamic pages with admin. State-specific compliance information (interactive U.S. map, click a state for the relevant PDF). White papers and thought leadership. External resources directory. Advisory council member profiles. Impairment-related accident reporting links. Articles. Each one needed an admin form so non-technical team members could update content without filing a ticket.

Migration plumbing. The boring parts that determine whether the project ships or not. 301 redirects from every old .php URL to its new clean URL, so SEO didn't tank on cutover. Dynamic sitemap.xml generation. Canonical URLs on every page. Google Tag Manager and reCAPTCHA v3 migrated cleanly. Azure Blob Storage configured for asset uploads. Paywall preserved on the WIRE Assessment for paying customers.

The marketing site got its own subdomain (www.advancedtrainingproducts.com), and the existing assessment app moved to its own subdomain (wiredapp.advancedtrainingproducts.com). Same App Service, same database server, dual front-ends. Auth is shared. Deployment is one workflow.

That last part is the unfair advantage. We didn't have to "integrate with their assessment app" — it was already running on infrastructure we'd built. The new marketing site shipped with shared identity, shared hosting, shared monitoring, on day one. No SSO project. No data sync layer. No three-way contract.

We've written about how this pattern shows up in our other client work — see the EZ Cell story for a different version of the same idea (one team, compounding context).

The economics: why it cost $8,910

For comparison, the budget conversations small business owners typically hear when they ask about a custom marketing site go like this:

Vendor Typical cost What you get
Mid-tier agency $25,000 – $60,000 Custom design, custom build, separate hosting, ongoing retainer
WordPress shop $5,000 – $15,000 WordPress + theme customization + plugins + ongoing plugin maintenance
No-code tool (Webflow, Framer) $300/mo subscription + $5,000 build Hosted, locked into the tool, can't be moved
Freelancer $3,000 – $10,000 One person, no continuity if they get hit by a bus

ATP's project was 99 hours at $100/hour with a 10% discount on top, for $8,910. That's well below the agency tier and competitive with WordPress. Three things made it possible:

  1. We didn't need a discovery phase. We'd been operating their assessment app for two years. We already had the database, the deployment pipeline, the auth system, and the design tokens. The marketing site reused all of it.
  2. We didn't need new infrastructure. Same Azure App Service, same SQL Server, same Blob Storage account, same domain registrar. The "DevOps work" had already happened.
  3. We didn't have to pitch ourselves. No sales overhead. No three-vendor bake-off. No "let me prepare a SOW and a statement of work." Just a proposal, a markup, a 50/25/25 milestone schedule, and a start date.

The compounding effect is real. The first project we ship for a client is always the most expensive — that's where the discovery cost lives. Every subsequent project starts from a different baseline. ATP's marketing site was the cheapest 23-page custom build they were ever going to get, and the only way to get that price was to have us build something else first.

This is what the "outsourced tech department" model looks like in practice — not just for legacy modernization, but for any net-new project a small business has on its plate.

What the migration actually involved (the boring parts)

If you're nodding along but wondering whether your situation is portable, here's the boring inventory of what shipped:

  • PHP → Blazor Server. ATP's existing site was hand-written PHP with .php extensions in URLs, a hosting setup that hadn't been updated in years, and no real CMS. We rebuilt it on .NET 10 / Blazor Server, which is the same stack that runs the assessment app. One stack, one runtime, one deploy pipeline.
  • 301 redirects, IIS-level. Every /our-products.php/products, every /wired-algorithm.php/products/wired-algorithm, mapped explicitly. SEO authority preserved. No "we'll get to redirects in phase two."
  • Sticky CTA, sticky nav. Bootstrap 5 with custom theme tokens. The old site had a ticker at the top and an "Enroll in Training" button buried in the footer. Both gone. Replaced with a single sticky "Contact Us Today" CTA that follows you down every page.
  • Custom CMS for the dynamic pages. Six admin interfaces — built using our framework's EditSection component — let ATP staff manage state PDFs, white papers, advisory council bios, and articles without filing developer tickets. This is the part WordPress people overspend on (premium plugins) and no-code people undersolve (rigid forms). Custom CMS wins when the admin shape is specific to your business, which it usually is.
  • AI-assisted content publishing. ATP's compliance team writes long PDFs as part of their normal output. We added a feature that turns those PDFs into web-ready articles in under 30 seconds — same pattern we shipped earlier in our AI document processing post. The marketing site benefits from the assessment app's AI plumbing automatically.
  • Staging slot from day one. Every change deploys to staging first, the client reviews, then we swap to production. Standard discipline, but not standard at the price point. Most $9k website projects don't ship with proper staging.

The whole thing took 99 hours over a few weeks. That's not because we're fast — it's because we'd already built the runway.

When this model doesn't fit

We're not a fit for everyone. If you don't have ongoing software needs, the subscription model is overkill — you'd pay for capacity you don't use. If you have a single static brochure site and no plans to add features, a one-time WordPress build is cheaper. If you're a Fortune 500 with an internal IT department, you don't need an outsourced tech department.

The fit looks like this: you're a small or mid-sized business owner. You have at least one piece of software that's central to your operations — a customer database, a quoting tool, a compliance system, a custom web app from a previous developer. You have ongoing change requests that pile up because you don't have anyone who can do them. Eventually you'll need a new website, or a new integration, or a new internal tool. You'd rather not run an RFP every time.

That's the shape ATP had. That's the shape EZ Cell had. That's the shape a lot of our clients have. If it sounds like yours, the Audit Call is a 30-minute conversation where we map out what your version of this would look like — no slides, no sales pitch, just a one-page plan you keep regardless of whether we work together.

What we'd do differently next time

For honesty's sake: the project wasn't perfect. The original estimate was for five static pages, and the actual scope was 23 — that's a 4x miss on intake. We absorbed it (the 10% discount on the corrected proposal). But the lesson generalizes: when an existing client asks for a "small project," do the discovery anyway. The cost of an extra 30 minutes of scoping is rounding error compared to the cost of an off-by-4x estimate.

The other lesson, which we already knew but got reminded of: the longer the relationship, the easier the next project. ATP's marketing site shipped because the boring infrastructure decisions had been made years earlier. If we'd had to negotiate hosting, set up a database, debate frameworks, and design auth from scratch, the same scope would have been a $25,000 project, easily.

That's the case for the model. It's not magic. It's just compounding.

Need help with this?

We build custom business software for $250/month with no setup fees. If this article resonated, let's talk about your situation.

Mike Kerchenski

Mike Kerchenski

Experienced full-stack developer with over 25 years of expertise in building web and mobile applications. Proficient in ASP.NET, .NET Framework, ASP.NET MVC, Web API, ASP.NET Core, and Azure. Skilled in database design, database programming, IIS, deployment, source control, dev ops, and front-end development. Passionate about the art and science of programming, constantly learning, and adhering to best practices such as source control, unit testing, and SOLID principles.