Skip to content

Project Management

Master checklists and timeline templates for managing Cloudflare Pages projects — from initial assessment through post-launch handoff.


Every Cloudflare Pages project follows this lifecycle:

graph LR
    A["Assess<br/>1-2 days"] --> B["Plan<br/>1-2 days"]
    B --> C["Build / Migrate<br/>3-15 days"]
    C --> D["Test<br/>2-3 days"]
    D --> E["Deploy<br/>1-2 days"]
    E --> F["Maintain<br/>Ongoing"]

Site Inventory

  • Total pages counted
  • Total blog posts counted
  • Total media files counted
  • Forms count and complexity documented
  • Third-party integrations listed
  • Custom functionality listed

Scoring

  • Site scored using Decision Guide matrix
  • Score: ____ / 85
  • Migration priority: Phase ____

Baseline Captured

  • Current Lighthouse score (mobile): ____
  • Current Lighthouse score (desktop): ____
  • Current LCP: ____
  • Current TBT: ____
  • Current CLS: ____
  • Google Search Console data exported

Technical Audit

  • WordPress version: ____
  • PHP version: ____
  • Theme: ____
  • Active plugins listed (with versions)
  • Custom code identified
  • .htaccess redirects documented
  • Current hosting provider: ____
  • Migration approach approved
  • Timeline agreed
  • Content editing workflow chosen (Tier 1/2/3/4)
  • Downtime window approved (if needed)
  • Rollback plan documented
  • Site assessment report
  • Migration priority score
  • Baseline performance metrics
  • Stakeholder approval

  • Migration approach chosen:
    • Crawler-based (full site migration)
    • Playwright capture (landing pages / complex layouts)
    • Fresh build (Astro or plain HTML)
  • Migration plan document
  • Plugin replacement mapping
  • Content editing workflow document
  • Technical setup confirmed

gantt
    title WordPress Migration - Build Phase
    dateFormat  YYYY-MM-DD
    section Week 1: Core
    Project setup & dependencies     :a1, 2024-01-01, 2d
    Full site crawl & capture        :a2, after a1, 2d
    Image optimization & WebP        :a3, after a2, 1d
    CSS/JS optimization              :a4, after a3, 1d
    Form handlers & Functions        :a5, after a4, 2d
    section Week 2: Polish
    Plugin replacements              :b1, after a5, 2d
    Automated & visual testing       :b2, after b1, 2d
    Staging deploy & review          :b3, after b2, 1d

Day 1-2: Setup

  • Project directory created
  • Dependencies installed
  • Local WordPress running and accessible
  • Crawler/capture script configured
  • First test crawl run

Day 2-3: Content Migration

  • Full site crawl completed
  • All pages captured
  • Assets synced (themes, plugins, uploads)
  • Internal links rewritten to root-relative
  • Analytics/tracking scripts handled
  • 404 page generated

Day 3-4: Optimization

  • Images converted to WebP
  • CSS/JS optimized (defer, async)
  • Security headers added (_headers file)
  • Third-party scripts delayed/optimized
  • Cache headers configured

Day 4-5: Forms

  • Form handlers created (client-side)
  • Cloudflare Functions created (server-side)
  • SendGrid integrated
  • Success modal implemented
  • Email recipients configured
  • Complete static site ready for deployment
  • All forms functional
  • Automated tests passing
  • Lighthouse score meeting targets (90+ mobile)
  • Staging deployment live

Content Accuracy

  • All text matches WordPress original
  • All images display correctly
  • Phone numbers, addresses correct
  • Business hours correct
  • No placeholder or test content

Functional Testing

  • Every form submits successfully
  • Success modals appear
  • Email received by correct recipients
  • Email formatting correct
  • Reply-to set to customer email
  • Error handling works

Visual Testing

  • Side-by-side comparison with WordPress
  • All pages visually match
  • Mobile layout correct
  • Tablet layout correct
  • No broken images or missing assets

Performance Testing

  • Lighthouse mobile: ____ (target: 90+)
  • Lighthouse desktop: ____ (target: 95+)
  • LCP: ____ (target: <2.5s)
  • TBT: ____ (target: <200ms)
  • CLS: ____ (target: <0.1)
  • Meta titles present on all pages
  • Meta descriptions present on all pages
  • Structured data validates (Google Rich Results Test)
  • robots.txt correct
  • sitemap.xml generated and valid
  • Canonical URLs set
  • URL structure matches original (no broken links)
  • Test results documented
  • All critical issues resolved
  • Stakeholder sign-off for go-live

  • No test/debug code left
  • No sensitive data in code (API keys in env vars, not code)
  • .gitignore includes .env, node_modules, .wrangler
  • All commits pushed to GitHub
  • SENDGRID_API_KEY set in Cloudflare Dashboard (production)
  • Any other required secrets configured
  • Current DNS records documented
  • New DNS records prepared
  • Registrar access confirmed
  • Stakeholders notified of cutover window
  • Rollback plan documented
  1. Deploy to Cloudflare Pages:

    Terminal window
    npm run deploy
  2. Verify deployment success in Dashboard.

  3. Configure custom domain in Pages settings.

  4. Update DNS records (CNAME or nameservers).

  5. Wait for DNS propagation (15 min - 4 hours).

  6. Verify site loads on custom domain.

  7. Verify SSL certificate active (padlock icon).

  8. Test all forms on production (submit test form).

  9. Verify email received by correct recipients.

  10. Run Lighthouse audit on production URL.

Post-Deployment Verification (First 24 Hours)

Section titled “Post-Deployment Verification (First 24 Hours)”
TimeframeVerification
Hour 1Site accessible from multiple locations
Hour 2Forms working, test email received
Hour 4DNS fully propagated (check whatsmydns.net)
Hour 8Analytics tracking verified
Hour 24No error spikes in Cloudflare analytics
Hour 24Form submission volume matches expectations
  • Production site live
  • DNS migrated
  • All functionality verified
  • Monitoring active

Phase 6: Handoff and Ongoing (1-2 Days + Ongoing)

Section titled “Phase 6: Handoff and Ongoing (1-2 Days + Ongoing)”

Access Granted

  • Cloudflare account access (team member invited)
  • SendGrid account access (if applicable)
  • GitHub repository access
  • Domain registrar access (if applicable)

Documentation Delivered

  • Developer handoff document created
  • Content editing guide for chosen tier
  • Quick reference / cheat sheet
  • Troubleshooting guide
  • Emergency rollback procedures

Training Completed

  • Content editing workflow demonstrated
  • Deployment process demonstrated
  • Rollback process demonstrated
  • Team member made a test change and deployed
  • Team member rolled back a change

Old Hosting Cleanup

After 7-14 day observation:

  • Old WordPress hosting cancelled
  • Old plugin licenses cancelled
  • Old security services cancelled
  • Old backup services cancelled
  • Final WordPress backup archived
  • Access transferred
  • Documentation complete
  • Team trained
  • Old hosting decommissioned
  • Project closed

gantt
    title Simple Site Migration - 7 Business Days
    dateFormat  YYYY-MM-DD
    section Phases
    Assess: Score site, baseline metrics     :a1, 2024-01-01, 1d
    Plan + Setup: Approach, tools, config    :a2, after a1, 1d
    Build: Crawl, optimize, form handler     :a3, after a2, 2d
    Test: Automated tests, visual QA, forms  :a4, after a3, 1d
    Deploy: Deploy, DNS, verify              :a5, after a4, 1d
    Handoff: Documentation, training         :a6, after a5, 1d

Total: 7 business days

Medium Site (20-50 Pages, Blog, 2-3 Forms)

Section titled “Medium Site (20-50 Pages, Blog, 2-3 Forms)”
gantt
    title Medium Site Migration - 15 Business Days
    dateFormat  YYYY-MM-DD
    section Planning
    Assess + Plan                        :a1, 2024-01-01, 2d
    section Build
    Core: Crawl, assets, optimization    :b1, after a1, 3d
    Forms: Handlers, Functions, email    :b2, after b1, 2d
    Polish: Plugins, blog, search        :b3, after b2, 2d
    section QA
    Test: Full suite, visual, browsers   :c1, after b3, 2d
    Staging: Deploy, stakeholder review  :c2, after c1, 1d
    section Launch
    Deploy: Production, DNS migration    :d1, after c2, 1d
    Handoff: Docs, training, monitoring  :d2, after d1, 2d

Total: 15 business days (3 weeks)

Large / Complex Site (50+ Pages, Multiple Integrations)

Section titled “Large / Complex Site (50+ Pages, Multiple Integrations)”
gantt
    title Large Site Migration - 6 Weeks
    dateFormat  YYYY-MM-DD
    section Week 1
    Deep audit + plugin mapping          :a1, 2024-01-01, 5d
    section Week 2-3
    Migration + asset handling           :b1, after a1, 10d
    section Week 3-4
    Forms, search, booking, integrations :c1, after b1, 5d
    section Week 4
    Comprehensive QA + perf tuning       :d1, after c1, 5d
    section Week 5
    Staging + stakeholder review         :e1, after d1, 5d
    section Week 5-6
    Production cutover + handoff         :f1, after e1, 5d

Total: 6 weeks

gantt
    title Batch Migration - 5 Months
    dateFormat  YYYY-MM-DD
    section Month 1
    Pilot: 3 sites end-to-end           :a1, 2024-01-01, 30d
    section Month 2
    Batch 1: Simple sites (10-15)       :b1, after a1, 30d
    section Month 3
    Batch 2: Medium sites (10-15)       :c1, after b1, 30d
    section Month 4
    Batch 3: Remaining sites (10-15)    :d1, after c1, 30d
    section Month 5
    Complex sites + cleanup (5-10)      :e1, after d1, 30d

Total: 40-60 sites in 5 months


Subject: [Site Name] Cloudflare Pages Migration - Kickoff
Hi team,
We're migrating [site name] from WordPress to Cloudflare Pages.
What this means:
- Hosting cost drops from $[X]/month to $0/month
- Page speed improves significantly
- Security improves (no more WordPress vulnerabilities)
- Content updates will use [Tier X] editing workflow
Timeline:
- Start: [date]
- Staging ready: [date]
- Go-live: [date]
Action items:
- [Name]: Review staging site by [date]
- [Name]: Approve go-live date
- [Name]: Complete editing workflow training
Questions? Reply to this email.

RiskProbabilityImpactMitigationOwner
SEO ranking dropLowMediumPreserve URLs, 301 redirects, monitor GSCDeveloper
Forms break in productionMediumHighTest on staging first, quick rollbackDeveloper
Content editor can’t use new workflowMediumMediumTraining, documentation, fallback tierPM
DNS propagation delayLowLowSchedule during low traffic, communicateDevOps
Missing content/pagesLowMediumAutomated crawl + manual QA checkQA
Third-party integration breaksMediumMediumTest each integration on stagingDeveloper
Team resistanceMediumLowShow benefits, gradual rolloutPM
Cloudflare service disruptionVery LowHighMonitor status page, rollback planDevOps

ItemSimple SiteMedium SiteComplex Site
Developer hours8-16 hrs16-32 hrs32-80 hrs
At $50/hr$400-800$800-1,600$1,600-4,000
At $75/hr$600-1,200$1,200-2,400$2,400-6,000
At $100/hr$800-1,600$1,600-3,200$3,200-8,000
Testing/QA4-8 hrs8-16 hrs16-32 hrs
Documentation2-4 hrs4-8 hrs8-16 hrs
Total hours14-2828-5656-128
ItemEstimateNotes
Simple sites (30 x 20 hrs avg)600 hrs$30,000-60,000
Medium sites (15 x 40 hrs avg)600 hrs$30,000-60,000
Complex sites (5 x 80 hrs avg)400 hrs$20,000-40,000
Training and documentation40 hrs$2,000-4,000
Project management80 hrs$4,000-8,000
Total1,720 hrs$86,000-172,000
Annual savings (50 sites)$75,000-180,000/year
Payback period6-14 months

MetricTargetMeasurement
Lighthouse mobile90+npm run audit:baseline
LCP< 2.5sLighthouse report
TBT< 200msLighthouse report
CLS< 0.1Lighthouse report
Forms working100%Manual test
Visual fidelity95%+ matchVisual regression test
SEO rankingsNo drop after 30 daysGoogle Search Console
Hosting cost$0/monthCloudflare billing
MetricTargetMeasurement
Migration completion100% of eligible sitesProject tracker
Team proficiencyAll editors trainedTraining completion
Cost savings>$X/monthMonthly report
Average Lighthouse85+ across portfolioBatch audit
Uptime99.9%+Cloudflare analytics