Why we stopped hard-coding affiliate links and built a publishing system instead
Most affiliate websites start the same way.
Every review contains a button.
That button contains an affiliate link.
Simple.
Until you have fifty reviews.
Then one hundred.
Then comparisons.
Then category pages.
Then "Best AI Tools."
Then brand pages.
Then enterprise guides.
Eventually you discover that changing one affiliate URL means editing dozens—or hundreds—of pages.
We realised early that this approach wouldn't scale.
So instead of building pages around affiliate links, we built affiliate links around the platform.
The Problem
Imagine an affiliate partner changes networks.
Yesterday:
PartnerStack
Today:
Rakuten
Every CTA now needs updating.
If you've hard-coded links throughout your content, that's painful.
If you miss one page, you lose revenue without noticing.
Multiply that by dozens of software companies.
Now imagine adding deep links for:
- Pricing
- Enterprise
- Business
- Download
- Free Trial The maintenance burden grows exponentially.
The Decision
Instead of storing affiliate URLs inside pages, we created a central registry.
Every brand has a single source of truth.
Conceptually it looks like this:
brand
↓
affiliate registry
↓
CTA engine
↓
every page
The content never knows the destination URL.
It simply requests:
"Give me the correct CTA for this brand."
The platform decides the rest.
Why This Matters
Changing a link now means updating one record.
Immediately:
- Reviews update.
- Brand pages update.
- Comparisons update.
- Best-of pages update.
- Future pages update. No content editing required. The publishing system handles the routing automatically.
Then We Built an Audit
A central registry is only useful if it stays correct.
So we added an affiliate audit.
Every release checks for things like:
- Broken affiliate links
- Missing CTA destinations
- Incorrect tracking
- Missing rel="sponsored"
- Pages bypassing the CTA engine Instead of discovering broken links months later, they're caught before deployment. That has already prevented several issues reaching production.
Affiliate Links Aren't Really the Interesting Part
The surprising thing wasn't the affiliate engine.
It was everything that came after.
Once the platform knew relationships between:
- brands
- reviews
- comparisons
- categories it became possible to automate much more. Internal linking. SEO validation. Orphan detection. Content quality. Publication checks. The affiliate engine became the foundation for a broader publishing platform.
Publishing as Software
Many content sites still treat every article as an isolated document.
We started treating every page as structured data.
A review isn't just text.
It's connected to:
- competitors
- categories
- brands
- comparison pages
- buying intent
- affiliate configuration
- internal links
- schema
- quality checks That makes scaling far easier than managing hundreds of independent articles.
The Lesson
The biggest challenge wasn't building an affiliate website.
It was building a system that could continue growing without becoming increasingly difficult to maintain.
Good architecture compounds.
Every new feature becomes easier because the foundations are already there.
That's true whether you're writing software—or publishing content.
If you're interested...
We've been documenting this journey while building The Tool Money Lab, where we're creating an engineering-first platform for software reviews, comparisons, and buying guides.
Rather than treating SEO, affiliate management, internal linking, and quality assurance as separate problems, we're building systems that allow them to work together.
If that intersection of software engineering and publishing interests you, you can follow the project here:
https://thetoolmoneylab.com
Top comments (1)
Happy to answer questions about the architecture or hear how others have approached large-scale publishing systems. This is still evolving, and I'm always interested in better patterns.