Push to Git.
Live in 300 cities.
Your repository, connected to Cloudflare Pages. Every push builds and goes live on Cloudflare's network, every branch gets its own preview URL, and the last release is one click away.
Repository to domain. Set up once.
The Starter package covers one site, one domain, production and preview, up to 25 redirect rules and two rounds of changes after you review the preview. More sites and environments are quoted in writing, and the add-ons below are priced on their own.
Setup from £59.
Setup is a one-time price. After setup, the Cloudflare Pages hosting plan is £79 a year. Workers, D1 and KV, and R2 are add-ons. Cloudflare's own usage is billed to your account, and its entry plan costs nothing.
Four steps. One switch.
The current site keeps serving visitors until DNS moves. The scope puts a date on each step.
Repository
Your Git repository connected to a Pages project in your Cloudflare account.
Build pipeline
Build command, environment variables and output set. The site builds and runs on a pages.dev address.
Domain and DNS
DNS records copied, custom domain attached, SSL issued, redirects tested. Then the switch.
Monitoring
Deployment alerts set, rollback shown, runbook handed over.
The old site stays up.
Until DNS points at the new one.
Proved on a preview URL
The site builds and runs on a pages.dev address before the domain moves.
One click back
Cloudflare keeps every deployment. Returning to the previous one is a single click in the dashboard.
A failed build changes nothing
If a build breaks, the live site keeps serving the last good deployment.
Your account, your repository
The project sits in a Cloudflare account in your name, connected to a repository you own.
Scope in writing
Sites, environments, domains and redirects are listed before work starts. A change is priced before it is made.
Bugs fixed
Anything in the delivered scope that does not work as agreed is fixed as part of the setup.
Sites in Git. Shipped often.
If the second list sounds closer, start with the page it names.
Cloudflare Pages fits
- 01A static or Jamstack site
React, Next.js, Astro, Vue, Svelte or plain HTML, served from Cloudflare's network, with edge code, a database or storage added when needed.
- 02A team that reviews before it ships
Every pull request gets its own URL to open on a phone before it merges.
- 03A site still uploaded by hand
FTP uploads and manual SSL renewals, replaced by a push to Git.
- 04A launch that cannot go dark
Deploys with no maintenance window, and a way back if one goes wrong.
Start somewhere else
- 01There is no site yet
Website Development builds it on React, Next.js, Astro or TanStack Start, and deploys it as part of the build.
- 02A WordPress or PHP site
Pages serves built files, not PHP. Linux & WordPress Hosting is the better home.
- 03A Shopify store
Shopify hosts Liquid themes itself. See Shopify Theme Development.
Checked. Then switched.
Each one is checked before the domain moves.
Builds from a clean clone
The build runs from the repository alone, with a pinned Node version and a lockfile.
HTTPS on one host
HTTP redirects to HTTPS, and www and the bare domain resolve to one canonical address.
No secrets in Git
Keys and tokens live as encrypted environment variables in Cloudflare, never in the repository.
Preview kept apart
Preview and production use separate variables, and preview URLs are kept out of search results.
Redirects tested
Every old URL on the redirect list returns a 301 to a live page, checked before and after the switch.
Runbook in the repository
Deploy, preview, rollback and domain steps written in the README, next to the code.
Before the first push.
Your repository.
Live.
A 30-minute call about the site and where it runs today. A written scope after it.