Migrating from GoDaddy to Cloudflare Pages: A Technical Guide
A step-by-step guide to migrating a static website from GoDaddy hosting to Cloudflare Pages, including diagnosing and fixing a tricky DNS proxy issue that caused the old site to persist even after migration.
Migrating from GoDaddy to Cloudflare Pages: A Technical Guide
Overview
This guide documents a real-world migration of a production website from GoDaddy's Website Builder to Cloudflare Pages — and how we diagnosed and fixed a subtle DNS proxy issue that caused the old site to persist despite seemingly correct DNS settings.
Time to fix: ~45 minutes (including diagnosis)
Tools used: Cloudflare Dashboard, Wrangler CLI, cURL, browser automation
Result: Zero-downtime migration, GoDaddy fully retired
The Problem
After deploying a new Next.js site to Cloudflare Pages, users were still seeing the old GoDaddy Website Builder site when visiting the custom domain. The new Cloudflare Pages deployment was working correctly when accessed via the direct *.pages.dev URL, but the custom domain (rekencile.com) was still serving the old GoDaddy content.
Symptoms:
- Direct Cloudflare Pages URL (
c49e68f5.rekencile-web.pages.dev) → ✅ New site - Custom domain (
rekencile.com) → ❌ Old GoDaddy site - DNS checks showed correct Cloudflare nameservers
- Cloudflare Dashboard showed the domain as "active"
Diagnosis: The Root Cause
The issue was discovered through careful header analysis:
# Check headers from the custom domain
curl -sI https://rekencile.com
# Response showed:
server: cloudflare
x-siteid: us-west-2
The server: cloudflare header confirmed traffic was hitting Cloudflare. However, the HTML content still showed:
<meta name="generator" content="Starfield Technologies; Go Daddy Website Builder 8.0.0000"/>
Root cause: When the domain was originally pointed to Cloudflare, it was set up as a DNS proxy to GoDaddy's origin server — not as a Cloudflare Pages custom domain. Cloudflare was proxying requests through to GoDaddy's servers, which served the old content.
This is different from a misconfigured DNS record. The DNS looked correct (Cloudflare IPs), but Cloudflare Pages had no knowledge of the custom domain, so it couldn't serve the new site from its edge network.
The Architecture Before vs. After
Before (Broken)
User → DNS: rekencile.com → Cloudflare Proxy IPs
↓
GoDaddy Origin Server
(serving old content)
After (Fixed)
User → DNS: rekencile.com → Cloudflare Proxy IPs
↓
Cloudflare Pages Edge
(serving new Next.js site)
Step-by-Step Solution
Step 1: Verify the Current State
# Check what the domain is actually serving
curl -s https://rekencile.com | grep -i "generator\|Go Daddy"
# Check DNS resolution
nslookup rekencile.com
# Check HTTP headers
curl -sI https://rekencile.com
Step 2: Access Cloudflare Dashboard
Navigate to:
https://dash.cloudflare.com → Workers & Pages → rekencile-web → Custom domains
Step 3: Add Custom Domain (The Fix)
- Click "Set up a custom domain"
- Enter your domain:
rekencile.com - Cloudflare shows the existing DNS record (pointing to GoDaddy)
- Click "Activate domain"
This does two things simultaneously:
- Updates DNS to point to Cloudflare Pages infrastructure
- Provisions SSL certificate for the custom domain
Step 4: Verify the Fix
# Wait ~30 seconds, then check
curl -sI https://rekencile.com
# You should see:
# - server: cloudflare
# - cf-ray: ... (Cloudflare Pages, not GoDaddy)
# - cf-cache-status: DYNAMIC (or HIT after first visit)
# Verify content
curl -s https://rekencile.com | grep -i "Go Daddy"
# Should return nothing (old GoDaddy content gone)
Key Lessons
Lesson 1: DNS + Hosting Are Separate
DNS tells browsers where to send traffic.
Hosting is where the actual website lives.
You can have DNS pointing to Cloudflare while hosting stays on GoDaddy. To fully migrate, both need to change.
Lesson 2: Cloudflare Proxy ≠ Cloudflare Pages
A domain added to Cloudflare's DNS proxy just passes traffic through Cloudflare to an origin server. To serve content from Cloudflare Pages, you must add it as a Cloudflare Pages custom domain.
Lesson 3: Domain Registration ≠ DNS Hosting
GoDaddy can be the registrar (where you bought the domain) while Cloudflare handles DNS and hosting. This is normal and recommended — just keep GoDaddy as the registrar and transfer DNS to Cloudflare.
Lesson 4: Propagation Takes Time, but SSL is Instant
DNS changes can take up to 48 hours to propagate globally. However, once you activate the custom domain in Cloudflare Pages, the SSL certificate provisions in under a minute.
For AI Agents: Automated Diagnosis Checklist
When debugging a similar issue, check these in order:
# 1. Is DNS resolving to Cloudflare?
nslookup example.com
# Should show Cloudflare IPs (104.21.x.x or 172.67.x.x)
# 2. Is it hitting Cloudflare Pages?
curl -sI https://example.com
# Look for: server: cloudflare
# 3. Is Cloudflare Pages serving content?
curl -s https://example.com | grep -i "generator\|pages.dev\|next.js"
# If you see GoDaddy/WordPress/other CMS, it's not Pages
# 4. Is the custom domain configured in Cloudflare Pages?
# Check via API:
wrangler pages project list
# Or check dashboard: Workers & Pages → Project → Custom domains
# 5. Is there an old origin server in the chain?
curl -s https://example.com | grep -i "x-siteid\|godaddy\|wordpress"
# Any of these = origin server issue
For Humans: Quick Summary
If you're doing this migration:
- Deploy your site to Cloudflare Pages first (using
wrangler pages deploy) - Test the
*.pages.devURL — confirm it works - Add the custom domain in Cloudflare Dashboard → Pages → Custom domains
- Wait 30 seconds — SSL provisions fast
- Test your domain — should now serve the new site
If your domain was previously pointed to GoDaddy (or any other host), the "Add custom domain" flow will update the DNS automatically.
Conclusion
Migrating from GoDaddy (or any host) to Cloudflare Pages is straightforward once you understand the distinction between DNS proxying and Pages serving. The key insight: Cloudflare Pages must explicitly know about your custom domain — it's not enough to just point DNS at Cloudflare.
The fix is a single button click in the Cloudflare Dashboard, and it handles DNS updates + SSL provisioning automatically.
Have questions about your own migration? The comments below are open.
Get blog updates!
Join our newsletter to receive new articles and healthcare tips.