Skip to main content
Case Study · Multi-Market Fintech Website

A fintech marketing site for ten markets, built on a deadline.

Plum was scaling across Europe. We built the public website and a custom block-based CMS that lets one marketing team launch and localize every page — across ten markets and seven languages — and ship it all as blazing-fast static HTML.

Client
Plum
Engagement
Web + Custom CMS Build
Scope
Website · Multi-Market CMS
Timeline
6 weeks
THE PROBLEM

One team, every market.

Plum — the European savings and investing app — was expanding fast. Each new country meant a fully localized marketing site: its own language, currency, pricing, legal pages, menus, and promotions.

A small marketing team had to launch and maintain all of it. Without the right tooling, every page change, every new market, every translation would route back through engineering — turning marketing into a ticket queue.

And it all had to land in time for Plum's rebrand launch — a fixed, immovable date — with the SEO and page speed a consumer fintech lives or dies by.

Ten markets. Seven languages. One marketing team. And a rebrand launch date that wasn't moving.

The challenge
10

markets to launch and localize — each with its own language, currency, and content

Per-Market Content
Currency · Pricing · Legal · Menus
Seven Languages
EN · GR · FR · NL · ES · IT · PT
SEO & Speed
Every locale · Every page

Every market shares one codebase — but renders its own language, currency, theme, and pages.

WHAT WE BUILT

A website, and the CMS behind it.

We built two things at once: a fast, SEO-first public website rendered as static HTML for every market — and a custom page-builder on top of PayloadCMS that hands the marketing team full control over content, layout, languages, and per-market visibility.

01
For visitors in every market
Plum public marketing website homepage rendered for a European market

Public Website

A localized marketing site for each of Plum's ten markets — homepage, pricing, features, press, legal. Geo-routed to the visitor's market and served as pre-rendered static HTML for instant loads and clean SEO.

02
For the marketing team
Custom PayloadCMS page builder showing a stack of content blocks with a market and language switcher

Page Builder CMS

A block-based editor where marketers compose any page from 24 reusable blocks, translate it into seven languages, restrict sections per market, and preview drafts live — then publish with a redeploy. No engineering in the loop.

PLATFORM SERVICES

Behind the two surfaces, the system that keeps ten markets in sync.

Static Generation

Every page × every locale pre-rendered at build time. Marketing publishes by redeploying — the whole site ships as static HTML to the edge.

Geo Middleware

Edge middleware reads the visitor's country and routes them to their market — respecting any manual locale override they've chosen.

UNDER THE HOOD

How it's put together.

A single Next.js codebase backed by PayloadCMS. One catch-all route renders every page in every locale, a prebuild step pulls the market map from the CMS, and the whole site compiles to static HTML behind Vercel's edge.

USERS
Visitor
Geo-routed to market
Marketing Editor
Block page builder
Search Engines
Per-locale SEO
EDGE
Vercel + Geo Middleware
Routing & delivery
FRONTEND
Static Pages
Next.js App Router
Localized Routes
next-intl · [locale]/[[...path]]
BACKEND
Admin & Auth
Payload admin
PayloadCMS
Headless CMS · Page builder
Prebuild
Market config → static
DATA & STORAGE
PostgreSQL
Pages · Markets · Translations
Google Cloud Storage
Media · Files · CDN
Languages
TypeScript
Frontend
Next.js
React
Tailwind
CMS
Payload CMS
Lexical
i18n
next-intl
Database
PostgreSQL
Cloud
Google Cloud
Vercel
HIGHLIGHTS

The details that matter.

Block-based page builder with 24 reusable content blocks — heroes, carousels, pricing tables, an ETF calculator, testimonials, accordions — that marketers stack to build any page.

Data-driven markets each with its own currency, supported languages, menus, footer, banner, and theme variables — new markets are configured, not coded.

Seven languages English, Greek, French, Dutch, Spanish, Italian and Portuguese — with the schema built to add more without a migration headache.

Full static pre-rendering every page in every locale generated at build time, so loads are instant and SEO is baked into the HTML.

Geo-aware routing edge middleware sends each visitor to their market's homepage, while respecting a manual locale override.

Per-market content control any block or section can be shown or hidden per market — one page, many regional variations.

SEO done right per-page metadata via Payload's SEO plugin, correct hreflang language tags, and pre-rendered HTML for crawlers.

Live draft preview a secure draft-mode endpoint lets marketers preview unpublished changes in context before they ship.

Cloud-native media images and downloads served from Google Cloud Storage, deployed on Vercel's edge network.

Press & legal built in a dedicated press-release collection and localized legal pages, all rendered through the same static pipeline.

THE MULTI-MARKET ENGINE

Built once. shipped everywhere.

The hard part of a multi-market site isn't translating words — it's keeping ten markets, seven languages, and dozens of pages coherent, fast, and self-serve.

So we made markets and languages data, not code. The marketing team composes a page once, and the build pipeline renders a static version for every locale it applies to.

10
Markets
7
Languages
Languages live
EnglishGreekFrenchDutchSpanishItalianPortuguese

From edit to live

01
Compose
A marketer builds a page from blocks, translates it, and sets which markets it appears in — all in the CMS.
02
Prebuild
A build step pulls the live market map from PayloadCMS and resolves every active language–market locale.
03
Generate
Next.js statically renders that page for each locale it targets — one catch-all route, every market.
04
Ship
The whole site deploys as static HTML to Vercel's edge — instant loads, crawler-friendly, no servers in the request path.
A page that once needed an engineer now ships in a marketing redeploy — across ten markets at once.
WHAT CHANGED FOR THE TEAM

For everyone shipping pages.

For marketing

Full control. Build pages from blocks, translate them, target markets, preview drafts, and publish — without filing a single engineering ticket.

For each market

A site that feels local: right language, right currency, right pricing, right promotions — all from one shared system.

For engineering

New markets and pages are content, not deploys of bespoke code. The team builds capabilities, not one-off pages.

For growth & SEO

Pre-rendered HTML, correct hreflang, per-page metadata, and edge delivery — the speed and crawlability a consumer fintech depends on.

Tell us about
your project

Let's Talk!

We're excited to hear about your project! Whether it's a new website, mobile app, e-commerce or any other custom solution, we're here to bring your vision to life. Click the button below to get started and let us know how we can help you achieve your goals.