The Rebuild Specification
How the site would be rebuilt and migrated — specified in full, deliberately not executed, so the decision can be made later with everything already worked out.
Movement IV. Status: specified, not executed. This document records how the rebuild and migration would be carried out, so that the decision can be made later with full information and so that nobody has to re-derive any of it. Nothing described here has been performed. Deliberate decision, 2026‑08‑04: the site will be rebuilt correctly at a future date rather than hurriedly now.
Every statement of current state below was measured on 2026‑08‑04 and the source artifact is named. Every statement about the target is a proposal.
Contents
- 1. Why this is written down and not done
- 2. Current state of record
- 3. Target architecture
- 4. The URL and redirect map
- 5. M1 — Build
- 6. M2 — Instrument
- 7. M3 — Cutover
- 8. Acceptance criteria
- 9. Risks and rollback
- 10. Explicitly out of scope
- 11. Decisions required before M1 starts
1. Why this is written down and not done
Three reasons, in order of weight.
A migration is the single riskiest routine operation in SEO. It puts every existing ranking, backlink and citation at risk in one moment. The correct time to perform one is when there is instrumentation to detect a regression and a stable baseline to compare against. Right now there is neither: no analytics exist (§2), so a post-migration traffic collapse would be invisible.
There is currently almost nothing to lose, which is an argument for care, not haste. The site ranks for zero keywords and has zero AI-assistant mentions. That means a migration cannot destroy rankings — but it also means there is no deadline. The pressure to move fast is imaginary.
Everything valuable can start without it. Per S18.8, items 1–6 of the fix list are improvements to the existing Webflow site and can begin immediately. Only item 7 — the platform change — requires this document.
The sequence that follows from that: instrument first, publish for a quarter, then migrate with a real baseline and real evidence of what matters.
2. Current state of record
Verified 2026‑08‑04. Sources: raw/stack.json, raw/psi_*.json, raw/danielle_onpage_*.json, raw/sitemap_urls.json.
2.1 Platform and network path
| Layer | Current | Evidence |
|---|---|---|
| CMS / builder | Webflow | x-wf-region: us-east-1 and x-lambda-id headers on every page; danielle-carron.webflow.shared.*.min.css |
| Edge / CDN | Cloudflare — Webflow's account, not hers | Server: cloudflare, CF-Ray, CF-Cache-Status on all responses |
| Asset CDN | cdn.prod.website-files.com |
Serves CSS, images, media-kit PDF |
| DNS | SiteGround nameservers (ns1/ns2.siteground.net) |
Zone held at SiteGround; records point to Webflow. SiteGround serves no traffic. |
| Apex A record | 198.202.211.1 (Webflow-owned) |
|
www CNAME |
cdn.webflow.com |
|
| Apex behaviour | Double redirect — http://daniellecarron.com → https://daniellecarron.com → https://www.daniellecarron.com |
Two hops where one belongs |
| HTTP | HTTP/1.1 observed; alt-svc advertises h3 |
2.2 Application capability
| Capability | State |
|---|---|
| Analytics | None sitewide. No GA4, GTM, Meta pixel, Hotjar, Clarity, or dataLayer. |
| Structured data | None. Zero application/ld+json matches across 8 pages. |
| Canonical tags | None on any page. |
| Booking software | None. CTAs labelled “Book a Free Call” route to /contact. |
| Contact intake | Custom form → https://formspree.io/f/xaqgpnzo → email relay. reCAPTCHA v2. |
| Newsletter | Webflow-native form, /podcast footer only. Cloudflare Turnstile. No ESP behind it. |
| CRM | None. |
| Payments | None. Offers $300 – $20,000 sold by conversation. |
| Blog / CMS collections | None. Flat 8 pages. /podcast is hand-authored embeds. |
robots.txt |
Sitemap directive only; no Disallow rules. |
2.3 Performance baseline (mobile Lighthouse)
This table is the before measurement. Any rebuild is judged against it.
| Page | Perf | LCP | TTI | Weight | Unused JS |
|---|---|---|---|---|---|
/work-with-me |
66 | 7.5 s | 7.5 s | 1,172 KiB | 247 KiB |
/contact |
71 | 5.3 s | 9.9 s | 4,669 KiB | 555 KiB |
/ |
76 | 4.5 s | 6.7 s | 2,758 KiB | 247 KiB |
/about |
84 | 3.5 s | 5.9 s | 704 KiB | 247 KiB |
Desktop home: performance 94, LCP 1.5 s. Accessibility across pages: 80–89. SEO: 100 everywhere. Root-document server response: 0 ms (already edge-cached).
3. Target architecture
The governing constraint is S18.7: the strategy requires publishing many pages cheaply. Any target that keeps page creation a designer task fails regardless of its other merits.
3.1 Proposed stack
| Layer | Proposal | Rationale |
|---|---|---|
| Hosting / edge | Cloudflare Pages on an account Danielle owns | Own the cache rules, redirects, logs and edge functions (18.6). Static output is free at this scale. |
| Site generator | A static generator with content in plain Markdown (Astro or Eleventy) | Content stays in a portable, greppable format — kills the platform-risk problem in 15.1 outright. |
| Content model | Templated types: article, episode, service, page |
One template renders 300 articles. This is the whole point of the rebuild. |
| Forms | Cloudflare Pages Functions → ESP + CRM | Removes the Formspree email dead-end. |
| Booking | Hosted scheduler, embedded and linked | See 3.3. |
| Payments | Stripe (checkout links, not a full store) | Needed only for the front/middle rungs of S16. |
| DNS | Consolidate at Cloudflare | Ends the two-vendor split where SiteGround holds a zone it does not serve. |
Alternative worth pricing if she prefers a visual editor: keep a CMS but choose one with a real content API and collection templates. The non-negotiable is templated content types plus clean export — not any particular vendor.
3.2 Performance budget
Enforced on every deploy; nothing ships that breaches it.
| Metric | Budget | Current worst |
|---|---|---|
| Mobile Lighthouse performance | ≥ 95 | 66 |
| LCP (mobile) | ≤ 1.5 s | 7.5 s |
| Page weight (excl. video) | ≤ 400 KiB | 4,669 KiB |
| JavaScript shipped | ≤ 50 KiB | 247–555 KiB unused alone |
| Accessibility | 100 | 80 |
| CLS | ≤ 0.05 | already met (0.001–0.035) |
The weight budget is the load-bearing one. A page of text, images and a booking button has no legitimate reason to exceed it.
3.3 Booking and back end
The flow to replace the four-to-eight manual touches described in S18.4:
CTA "Book a call"
→ live availability (scheduler)
→ slot selected → confirmation email + calendar invite (automatic)
→ intake questions asked AFTER the slot is held
→ reminder at 24 h and 1 h
→ contact created in CRM, tagged by source
→ post-call: proposal / Stripe checkout link for the relevant rung
Tooling options, all adequate — the choice belongs to Danielle (§11):
- Calendly / Cal.com / SavvyCal — scheduling only. Simplest, cheapest, fastest to install.
- Practice Better / SimplePractice — scheduling plus clinical notes, intake and billing in one system. Heavier, but if she wants notes and invoicing in the same place, this collapses several tools into one.
Design rule regardless of choice: the intake questions currently on /contact are asked after the booking is secured. A held slot with three unanswered questions beats a perfect intake form nobody submitted.
4. The URL and redirect map
All eight live URLs, from raw/sitemap_urls.json. Every one keeps its path. There is no reason to change a URL during a platform migration, and every reason not to — changing platform and changing URLs at the same time makes any regression impossible to diagnose.
| # | Current URL | Target | Action |
|---|---|---|---|
| 1 | https://www.daniellecarron.com |
/ |
Keep |
| 2 | https://www.daniellecarron.com/work-with-me |
/work-with-me |
Keep |
| 3 | https://www.daniellecarron.com/how-i-work |
/how-i-work |
Keep |
| 4 | https://www.daniellecarron.com/podcast |
/podcast |
Keep — becomes an index over new per-episode pages |
| 5 | https://www.daniellecarron.com/press-and-speaking |
/press-and-speaking |
Keep |
| 6 | https://www.daniellecarron.com/about |
/about |
Keep |
| 7 | https://www.daniellecarron.com/contact |
/contact |
Keep — rebuilt around the scheduler |
| 8 | https://www.daniellecarron.com/cv |
/cv |
Keep |
Additional redirect rules required at cutover:
http://→https://— single hop, direct to the canonical host. Fixes the current double redirect.- Apex →
www(or the reverse — see §11; the decision is arbitrary, but it must be made once and never revisited). - Any new content lives on new paths (
/articles/*,/podcast/<episode-slug>) and therefore needs no redirects.
5. M1 — Build
Built in parallel with the live site. Nothing public changes during M1.
- Stand up the generator; deploy to a preview host (
preview.<something>.pages.dev),noindexthroughout. - Port all 8 pages, preserving copy verbatim unless Danielle approves a change. Content moves into Markdown.
- Rebuild the design to the performance budget of 3.2 — same look, a fraction of the bytes.
- Build the four content templates. Prove the
articletemplate by rendering three real pieces from the S6 content plan. - Build the
episodetemplate and port the podcast back-catalogue — themaineshaman.compattern from Movement III, transcripts included. This is the largest single content win available and it needs the rebuild to exist. - Structured data throughout:
Person,Service,FAQPage,PodcastEpisode. - Canonicals on every page.
- Accessibility to 100 — audited, not assumed.
- Wire forms to the ESP and CRM; wire the scheduler; wire Stripe for the S16 rungs.
6. M2 — Instrument
M2 does not wait for M1. It is performed on the existing Webflow site, immediately, and is the prerequisite for judging the migration at all.
- GA4 installed on the live Webflow site.
- Search Console verified, sitemap submitted.
- Baseline recorded and frozen: traffic, queries, impressions, Core Web Vitals field data — a minimum of one full quarter before cutover.
- The same property and measurement IDs carry to the new site, so the series is continuous across the migration rather than restarting at zero.
This ordering is the point of the whole document. Migrating first and instrumenting afterwards means never knowing whether the migration helped or hurt.
7. M3 — Cutover
The only user-gated step in this specification. It requires Danielle's explicit go-ahead on the day, and it does not begin without it.
Pre-flight, all of which must pass before anything is switched:
- Acceptance criteria (§8) green on the preview host.
- Full crawl of the preview site — zero broken links, zero missing pages against the §4 map.
- DNS TTLs lowered to 300 s at least 24 hours ahead.
- Rollback rehearsed: the exact records needed to restore Webflow, written down and ready to paste.
- A quiet window chosen — not mid-launch, not during a campaign.
Cutover:
- Move DNS to Cloudflare; point at Pages.
- Remove
noindex. - Verify from an external resolver and Danielle's own — not just from one machine.
- Submit the new sitemap; request re-crawl of the eight URLs.
- Watch Search Console daily for 14 days. Any indexing drop is investigated the same day.
- Keep the Webflow subscription active for at least 30 days after cutover. It is the rollback.
8. Acceptance criteria
The rebuild is done when an executable check passes — not when it looks finished. Per house rule, the check is written before the build and ships with it.
| # | Criterion | How it is proven |
|---|---|---|
| 1 | All 8 URLs return 200 at their original paths | Automated fetch of the §4 map |
| 2 | http:// and apex reach canonical in one hop |
curl -sIL, count redirects |
| 3 | Mobile Lighthouse ≥ 95 on all pages | PSI run against live |
| 4 | Page weight ≤ 400 KiB (excl. video) on all pages | Lighthouse total-byte-weight |
| 5 | Accessibility = 100 | Lighthouse |
| 6 | Structured data present and valid on every page | Rich Results Test |
| 7 | Canonical present on every page | Fetch + grep |
| 8 | GA4 fires on every page | Realtime report |
| 9 | Booking flow completes end to end | Manual test booking |
| 10 | Form submission reaches ESP and CRM | Test submission |
| 11 | Copy is byte-identical to approved source | Diff against Markdown |
| 12 | No page ships noindex post-cutover |
Fetch + grep |
Criterion 11 exists because the most common silent failure in a migration is copy quietly altered in the port.
9. Risks and rollback
| Risk | Likelihood | Mitigation |
|---|---|---|
| Ranking loss at cutover | Low — she ranks for nothing today | Paths preserved (§4); the downside is unusually small right now |
| Backlink loss | Low | All 30 referring domains point at the 8 preserved paths |
| Copy altered in the port | Medium — the common one | Criterion 11: byte-diff against approved source |
| Booking flow silently broken | Medium | Criterion 9: a real test booking, not a visual check |
| DNS propagation confusion | Medium | TTL lowered 24 h ahead; verify from multiple resolvers |
| Migration during a campaign | Low | §7 pre-flight names the quiet window |
Rollback: restore the Webflow DNS records (documented in §2.1 and kept ready per §7.4) and the old site is live again within one TTL. The Webflow subscription stays active 30 days precisely so this remains possible.
10. Explicitly out of scope
Named so nobody assumes them later:
- Any change to daniellecarron.com has not been made. Nothing in this document has been executed.
- No visual redesign. The look is good (S18.1); the target reproduces it at a fraction of the weight.
- No copy rewrite as part of the migration. Copy changes are a content decision, made separately, never bundled into a platform change.
- No new offers. The S16 ladder is a business decision that precedes its implementation here.
- No membership, course platform or community software.
11. Decisions required before M1 starts
None of these are urgent. All of them are Danielle's.
- Scheduler — lightweight (Calendly / Cal.com / SavvyCal) or full practice-management (Practice Better / SimplePractice)? Depends on whether she wants clinical notes and billing in the same system.
- ESP — the S12 tribe island needs one. Choose before M2 so the list starts accumulating immediately, on the existing site.
- Canonical host —
wwwor apex. Arbitrary, but decided once and never revisited. - Visual editing — does she need to edit pages herself without a developer? If yes, the generator choice changes.
- Podcast transcripts — the back-catalogue port is the largest content win available (Movement III,
maineshaman.com). Does she want all 66+ episodes, or the best twenty first? - Timing — the recommendation is one full quarter of M2 instrumentation and publishing before M3 cutover.