Headless Builds
The best tool for each piece, stitched together.
Headless builds assemble best-of-breed SaaS pieces — auth, CMS, payments, search, email, analytics — into a custom stack glued by a Next.js or Nuxt frontend. You get category leaders at each layer instead of monolithic compromise.
Assembling stack · your-product.ie
0 / 6 wired
Next.js frontend · React 19 · deployed to Vercel edge
The glue. Calls each service below via typed client.
Auth
Clerk
User accounts + SSO + RBAC
Content
Sanity
Structured content studio
Payments
Stripe
Cards + subs + 3DS
Search
Algolia
Instant search + filters
Email
Resend
Transactional + marketing
Analytics
PostHog
Events + replay + feature flags
Not a "product" but an architecture. Each layer swappable. No vendor owning all your data.
The fit
When headless builds outperform WordPress.
Performance is a competitive edge
Core Web Vitals score = SEO position + conversion rate. Headless + Vercel edge delivery vs WordPress hosting isn't close.
Design demands don't fit templates
Animations, transitions, custom components, interaction designs. Developer freedom > template constraints.
Team wants modern DX
TypeScript, git-flow, preview deploys per branch, type-safe APIs. Developer recruiting + retention is easier than PHP maintainers.
Multi-channel content
Same content feeds web + mobile + email + digital signage. Headless CMS is category-defining for this.
Security + compliance posture
Each vendor handles their domain (Clerk = auth, Stripe = payments). Surface area smaller than a sprawling WP site with 30 plugins.
You scale
Traffic 10× doesn't mean hosting 10×. Serverless + CDN absorb spikes without provisioning. WordPress's LAMP stack struggles here.
Layer by layer
Typical headless stack, with honest alternatives per layer.
Auth
Default
Clerk
Alternatives
Auth0, Supabase Auth, NextAuth.js, Ory
How to pick
Clerk for best DX + pre-built UI; NextAuth for full-open-source; Supabase if you're already using it as DB.
Content (CMS)
Default
Sanity
Alternatives
Contentful, Strapi, Storyblok, Payload
How to pick
Sanity for devs who want full schema control; Storyblok for marketing teams wanting visual preview.
Database
Default
Postgres on Supabase
Alternatives
Neon, PlanetScale (MySQL), Xata, Turso (SQLite edge)
How to pick
Supabase for everything-included; Neon for serverless branching; Turso if edge latency is critical.
Payments
Default
Stripe
Alternatives
Paddle, Lemon Squeezy (MoR), Polar
How to pick
Stripe for max flexibility; Paddle/Lemon if you want them to handle VAT/sales tax globally.
Search
Default
Algolia
Alternatives
Typesense, Meilisearch (self-host), Pinecone (vector)
How to pick
Algolia for SaaS + support; Typesense/Meilisearch for budget; Pinecone for vector/semantic.
Email
Default
Resend
Alternatives
Postmark, SendGrid, Mailgun, Loops (for product emails)
How to pick
Resend for modern DX + React email templates; Postmark for deliverability focus.
Analytics
Default
PostHog
Alternatives
Plausible, Fathom, Mixpanel, Amplitude + GA4
How to pick
PostHog for product analytics + feature flags + replay; Plausible if simple + EU-compliant is key.
Hosting
Default
Vercel
Alternatives
Cloudflare Pages, Netlify, Fly.io, self-hosted
How to pick
Vercel for Next.js; Cloudflare for cost-sensitive high-traffic; Fly.io for long-running processes.
The glue layer
What actually ties the pieces together.
A headless build needs disciplined glue. Without it, 6 best-of-breed services becomes 6 things that don't know about each other. Type-safe wrappers, shared client, proper error handling — this is what we invest in.
Typed API client
One file per service with typed methods wrapping SDK calls. Consumers of services get autocomplete; refactors catch breakage.
Unified error model
Every service's errors map to our own error types. Stripe's error + Algolia's error + Clerk's error all become AppError internally.
Central event bus
User signs up in Clerk → creates Stripe customer + Sanity author profile + PostHog user. One event, fan-out to systems.
Shared environment config
Zod-validated env vars. Missing API key at build time, not at 3am in production.
Feature flag layer
PostHog feature flags wrap new integrations. Roll out Stripe subscriptions to 10% first; revert without deploy.
Observability from day 1
Every service call logged with request_id. Traces span from frontend → API → Stripe → back. Incident debugging halves.
Not the answer for everything
When a headless build is overkill.
Simple brochure site (<20 pages)
6 SaaS subscriptions + dev team to ship a 10-page site is absurd. WordPress, Webflow, Squarespace all fit. Save headless for when it pays back.
Non-technical editor-only workflows
If no one on your team can touch code and you need daily content changes, WordPress's content-editor comfort beats headless DX wins.
Budget under €25k project
Headless builds genuinely need 10-16+ weeks dev time + ongoing SaaS fees. Below that budget, simpler platforms fit better. Don't force-fit.
Monthly SaaS fees bother you
Realistic stack runs €200-800/mo in SaaS fees as you grow. WordPress hosting €30/mo does more for less — if you're OK with the tradeoffs.
You don't have dev resource long-term
Headless sites need updates when services change their APIs or you add features. If there's no dev relationship after launch, WordPress survives better.
Compliance requires on-premises
Some regulated industries can't use US SaaS at all. Self-hosted stacks exist but that's a different architecture discussion.
Frequently asked
Headless build questions.
Build cost typically €35k–€95k vs €10k–€35k for WordPress equivalent. Monthly fees €200–€800 (vs €30–€150 WordPress hosting). Payback is performance, flexibility, security; not cost.
Related
Related approaches
Does a headless build actually fit you?
Free 45-minute architecture call. We walk through your requirements, sketch a tentative stack, give a realistic budget/timeline range. Honest answer, not a sales pitch.
