BuddyDevsStart a project→
← All workCase study 07 · Headless WordPress · 2026

BuddyDevs

The site you are on: a Next.js front end reading from a headless WordPress back end. The team edits pages, case studies, reviews and settings in WordPress, and the site updates without a code change or a deploy.

ClientBuddyDevs
SectorAgency · web development
EngagementIn-house build
TeamIn-house team
Site architectureLive
ContentWordPress + ACFEditable
APIWPGraphQLRead-only
Front endNext.jsLive
EnquiriesREST → private leadsSaved + emailed
Outcome
HeadlessWordPress as the CMS, Next.js as the front end
GraphQLAll site content delivered through WPGraphQL
0 deploysTo change copy, case studies or settings
100%Of enquiries saved as leads in wp-admin

The problem

We build and fix WordPress sites for clients, so our own site had to practise what we recommend. It needed to be edited by the whole team, not only a developer.

A traditional theme would have tied design and content together and made every copy change a developer task. We wanted a fast front end with a content model that stays tidy as the site grows.

It also had to do real work: take enquiries, keep every lead, and make sure nothing sat unseen in an inbox.

What we built

Four parts · one CMS
01

A structured content model

Case studies, testimonials, team, services and engagement models are custom post types with ACF fields. Page copy and site settings (contact details, menus, lead recipients) are editable in wp-admin.

02

A Next.js front end

Pages render from WPGraphQL data. Rank Math supplies titles, descriptions and social metadata, and the site is rebuilt for visitors when content changes.

03

A lead pipeline that does not lose enquiries

The contact form posts to a narrow REST endpoint with a honeypot and minimum fill time. Each enquiry is saved as a private lead with every field, and emailed to the addresses set in Site Settings.

04

Locked down by default

Leads are never exposed to GraphQL or public REST. Cross-origin access is limited to the front end origins, and the only public write is the contact route.

Stack
WordPressWPGraphQLACF ProNext.jsReactRank Math SEOREST API
Next case study
→

Got a WordPress site that fights your team every day?

Start a conversation →