WordPress to Cloudflare Pages
Replace paid WordPress hosting with a free, faster Cloudflare Pages site.
By James Schramko
Most founders are paying $200 to $400 a month to host a WordPress site that could run for free on Cloudflare Pages. This playbook shows you how to replace it using Claude Code and GitHub.
Why do this
You eliminate hosting fees, plugin updates, security patches, and backups in one move. The site loads faster. Your team spends less time on maintenance. All future site updates can be made with a text prompt to Claude Code, including from a mobile phone. That time returns to higher value work.
What you need before you start
A Cloudflare account (free). A GitHub account (free). Claude Code installed via the Code tab in the Claude desktop app. Screaming Frog installed (free up to 500 URLs). WordPress admin access to your site. A folder on your desktop for site files.
Step 1: Check PageSpeed before you start
Run PageSpeed Insights on your current site at pagespeed.web.dev. Record the desktop and mobile scores. You will run this again after the build to confirm improvement.
Step 2: Crawl the site externally with Screaming Frog
Run Screaming Frog on your WordPress site URL. This maps every publicly visible page. Export the full URL list as a CSV when complete.
Step 3: Crawl from the inside using Chrome MCP
Log into WordPress as admin in your browser. Then open Claude chat and use Chrome MCP to navigate the WordPress admin area. This picks up pages that are not publicly linked, draft pages, password-protected pages, and any content the external crawl missed. Add any new URLs found to the CSV from Step 2.
Step 4: Build the page inventory CSV
Using the combined Screaming Frog and Chrome MCP export, create a CSV with these columns:
Old URL, New URL, Action, Notes
Actions are: Keep, Redirect, Remove.
Keep: pages worth rebuilding on the new site. Redirect: pages moving to a new URL or being replaced by another page. Remove: pages that no longer need to exist.
For blog posts and content pages, check your analytics before deciding. Only keep posts with high traffic or proven conversion. Low traffic posts with no conversion history do not need to be rebuilt.
Mark private pages in the Notes column. Thank you pages, private member pages, and admin pages should be excluded from sitemap.xml.
Step 5: Create a private GitHub repository
Go to github.com and create a new repository. Set it to Private. Name it after your site, for example yoursite-pages.
Step 6: Open Claude Code and build the site
Open the Code tab in the Claude desktop app. Create a folder on your desktop for the site files and point Claude Code at it. Give it your page inventory CSV and this instruction, customised for your site:
I want to migrate my WordPress site at yoursite.com to a static HTML site. Use the attached CSV as the page inventory. Rebuild all Keep pages as clean mobile-responsive HTML. Set up 301 redirects for all Redirect rows. Exclude private pages from sitemap.xml. Include sitemap.xml, robots.txt, and JSON-LD schema. Commit to my GitHub repo at [your repo URL].
If you get stuck at any point, open a Claude chat conversation and describe the problem. Claude can diagnose issues and give you the next step to paste back into Claude Code.
Step 7: Connect GitHub to Cloudflare Pages
Go to dash.cloudflare.com. Workers and Pages, then Create, then Connect to Git. Select your GitHub repo. Leave build settings blank. Deploy. Cloudflare gives you a staging URL ending in pages.dev.
Step 8: Check Screaming Frog on the staging site
Before touching your live domain, run Screaming Frog again on the staging URL. Look for broken links, missing redirects, and pages that should not be indexed. Fix anything before going live.
Step 9: Review the staging site
Check every page on desktop and mobile. Check all links. Fix anything that looks wrong by telling Claude Code what to change. Do not point your domain until this step is done.
Step 10: Point your domain
In Cloudflare Pages go to Custom Domains and add your domain. If your domain is already on Cloudflare, DNS configures automatically. If it is on another registrar, Cloudflare gives you the records to add manually. SSL activates automatically within a few minutes. Add both the root domain and www.
Step 11: Confirm email routing
Before cancelling your old hosting, confirm your email is routing correctly. Most business email runs through Google Workspace and is independent of your hosting. Verify it is still working after the DNS change. If you do not have Google Workspace, Cloudflare Email Routing handles forwarding for free. Do not cancel old hosting until this is confirmed.
Step 12: Check PageSpeed after launch
Run PageSpeed Insights again on the live site. Compare desktop and mobile scores against Step 1. You should see a significant improvement.
Step 13: Confirm everything is working
Check the live site on desktop and mobile. Confirm all forms are submitting. Confirm tracking is firing in GA4. Check redirects from old URLs using the CSV as your reference.
Step 14: Cancel your old hosting
Only cancel after everything above is confirmed live and working. This is the one mistake that causes pain.
What you save
Hosting fees gone from day one. No more security plugins, backup plugins, or update maintenance. All site changes from this point forward are a text prompt to Claude Code, including from your phone. Your team member returns to higher value work.
Note on forms and checkout pages
If you use Ontraport, Stripe, or another platform for checkout, those pages stay where they are. They are not part of this migration. Only your static content pages move to Cloudflare.