A loyalty platform rebuilt. WordPress bottlenecks eliminated.

We rebuilt a utility company's WordPress-based loyalty platform on Sanity headless CMS and Gatsby, eliminating plugin conflicts and developer bottlenecks so the marketing team can update content without raising a ticket.

See all work

This project

Result 01

increase in user engagement projected

40%

Result 02

faster page load times expected

3x
4.9 / 5 on ClutchSee all work
Platform
Web App
Duration
12 weeks
Industry
MarTech
Read time
5 min

The short answer

RaftLabs rebuilt an Irish utility company's customer loyalty platform from WordPress PHP to Sanity headless CMS and Gatsby JS, eliminating plugin compatibility issues, slow page load times, and the developer bottleneck that prevented the marketing team from updating content independently. The rebuild is projected to deliver 3x faster page load times, a 40% increase in user engagement, and a 60% reduction in content update time. The headless CMS architecture means all content (rewards, promotions, campaigns) can be updated in real time by non-technical staff without raising a development ticket. The project was delivered in 12 weeks.

The loyalty platform worked. The problem was everything that touching it required.

Built on WordPress PHP, the platform had accumulated years of plugin dependencies. Every update risked a compatibility conflict. Slow page load times had become a standing complaint. When the marketing team wanted to update a reward or run a campaign, they raised a ticket and waited for a developer to make the change.

A loyalty program that cannot be updated quickly is a loyalty program that loses relevance. The company needed the platform rebuilt on a foundation where content updates were the marketing team's job, not an engineering task.

We rebuilt the platform on Sanity headless CMS and Gatsby in 12 weeks. The Sanity backend gives the marketing team full control over rewards, promotions, and content without touching code. Gatsby generates static pages that load in a fraction of the time the WordPress site took. No plugin conflicts, no developer bottleneck for content changes.

Headless CMS loyalty platform rebuild for Irish utility company

before & after

What changed

Before
  • WordPress platform accumulated plugin dependencies that created recurring compatibility conflicts
  • Page load times were slow, frustrating customers and reducing engagement before they reached the rewards
  • Every content update (a new reward, a seasonal promotion, a campaign banner) required raising a developer ticket
  • No reliable way to push content changes quickly during active campaigns
  • UI felt outdated and did not match the modern brand the company had built in other channels
  • Technical debt made every change slower and riskier than it should have been
After
  • Sanity headless CMS gives the marketing team a clean interface for updating rewards, promotions, and content in real time
  • Gatsby static site generation produces pages that load significantly faster than the old WordPress setup
  • No developer involvement required for content changes: the marketing team operates independently
  • Seasonal campaigns and new rewards go live without a ticket queue
  • Modern responsive design matches the utility company's current brand standards across all devices
  • Architecture is built to extend with new features without accumulating the technical debt that slowed the old platform

What we had to solve

  • 01

    Migrating content from WordPress without disrupting an active loyalty program

    The platform was live and being used by customers throughout the rebuild. Content (rewards, member tiers, campaign history) had to be mapped from WordPress's database structure into Sanity's schema without data loss or downtime. Every field in the old system had to find a clean equivalent in the new one, and the cutover had to happen without customers seeing an incomplete or broken reward catalog.

  • 02

    Designing a Sanity schema the marketing team could actually use

    A headless CMS is only useful if non-technical users can operate it confidently. We had to design the Sanity content schema so that the marketing team could create a new reward, update campaign details, and change seasonal content without accidentally breaking a page layout or needing to understand JSON. That meant structured document types with validation rules, clear field labels, and previews, not just an empty content editor that exposes too much of the system's internals.

outcomes

What we achieved

3x
faster page load times projected
Previously

WordPress PHP with plugin overhead produced slow page load times that drove customers away from the rewards catalog before they had a chance to engage with it.

40%
increase in user engagement projected
Previously

Poor performance and a dated interface reduced the platform's ability to keep customers returning between utility service interactions.

60%
reduction in content update time anticipated
Previously

Every reward update and campaign change required a developer ticket. The marketing team had no independent control over the content they were responsible for managing.

Your loyalty platform is too slow and rigid to keep up with your growing customer base?

the build

What we built

The rebuild separates the content management layer from the presentation layer entirely. The marketing team works in Sanity; customers see a fast, statically generated site built by Gatsby.

01

Marketers publish rewards and campaigns without raising a ticket

The Sanity schema is structured around the objects the marketing team actually manages: rewards, member tiers, campaigns, and promotional banners. Each document type has validation rules and a live preview so editors can see how their content will appear before publishing. A non-technical marketer can create a new reward, set its point cost and expiry date, and publish it to the live site without raising a ticket.

Sanity CMS content management for non-technical marketing team
02

Customer pages load immediately, no database query on each request

Gatsby builds every page at deploy time from the content in Sanity. The result is pre-rendered HTML that loads immediately, with no database query on each page request. The rewards catalog, membership dashboard, and campaign pages all load significantly faster than the previous WordPress setup, without any infrastructure scaling required.

Fast Gatsby static site generation
03

Content publishes to the live site in minutes, no deployment step for the team

When a marketer publishes a change in Sanity, a Vercel build trigger fires automatically. Gatsby rebuilds the affected pages and the updated content is live in minutes. The marketing team never has to think about deployments, and there is no manual step between publishing content and customers seeing it.

Automated deployment pipeline Vercel Gatsby Sanity
04

Members manage their account from any device without UI degradation

The rebuilt platform uses a clean, mobile-first design that reflects the utility company's current brand standards. Customers can browse rewards, check their point balance, and manage their membership from any device without the UI degradation that characterised the old WordPress theme.

Modern responsive loyalty platform design

Engagement

How we worked together

  1. 01Weeks 1–2

    Discovery and scoping

    We map the problem before writing code. Two weeks of technical audit, stakeholder interviews, and prototype — so both teams align on scope and risk before sprint one.
  2. 02Ongoing

    Two-week Agile sprints

    Each sprint ends with working software, not a status update. You review a real build, request changes, and approve before we move forward. No surprises at handover.
  3. 03Ongoing

    Daily async updates

    Slack for daily progress, Asana for task visibility, weekly video calls for decisions. You have full visibility without needing to attend every meeting.
  4. 04Final

    Handover and warranty

    Full code handover with deployment runbooks and documentation. Thirty-day warranty period for production issues at no extra cost.

Still curious?

A headless CMS manages content (rewards, campaigns, member tiers) separately from the front-end presentation. The marketing team works in a structured content editor. The website is built by a framework like Gatsby that pulls from that content. The result is that content updates do not require developer work, and the front-end can be rebuilt or redesigned without touching the content structure. For a loyalty platform that needs to update promotions frequently and maintain fast performance, that separation is the difference between a platform the marketing team controls and one they depend on developers to manage.

WordPress performance problems at scale come from the PHP rendering model: every page request hits the database and builds the HTML on the server. Plugins add overhead and create compatibility risks. These are architectural constraints, not configuration problems. Migrating to a headless architecture built on static site generation removes the root cause rather than patching around it.

Yes, with the right Sanity schema design. The key is building document types that match how the marketing team thinks about content (reward records with point costs, campaign objects with start and end dates, promotional banners with image and copy fields) rather than exposing generic page builders or raw JSON editors. With the right structure and validation rules in place, a marketer can publish a new reward or campaign in minutes with no technical knowledge required.

For a platform of this scope (live content migration, Sanity schema design, Gatsby frontend build, and Vercel deployment pipeline) 12 weeks is the typical timeline with a focused team. The most time-consuming part is usually the content mapping: understanding all the content types in the old system and designing the right Sanity schema to replace them cleanly.

Yes. The architecture (Sanity for content management, Gatsby or Next.js for the front end, Vercel for deployment) applies to any loyalty program where the marketing team needs content independence and the platform needs performance at scale. We have used it for retail, hospitality, and financial services programs. The specific schema design changes by industry, but the approach transfers.

Next step

Recognise this problem in your business?

Tell us what's broken. We'll diagnose it and show you where the leverage is before you commit to anything.

  • Scope and cost agreed before work starts. No surprises. No obligation.
  • Working prototype within 3 weeks of kickoff.
  • Pay by milestone. You see progress before each invoice.
  • 60-day post-launch warranty. Bug fixes, UI tweaks, and deployment support. No retainer.
  • All conversations are NDA-protected.

Trusted by

VodafoneAldiCalorgasEnergia RewardsErisPSiBrandfireWorxsquadCentusSponzee