← All playbooks
Publishing migration

Squarespace → Astro

Export Squarespace as one WordPress XML file, turn posts into Markdown, and serve them from an Astro content collection. Styles, extra blogs, store pages, and drafts stay behind.

Typical timeline3 to 10 days10 to 25 hours active work
Statusneeds review
Source profileSquarespace export-your-site-content help reviewed 2026-11-03
Destination profileAstro content collections docs reviewed 2026-11-03
Documentation date
Review window
Evidence2 sources
This route needs review.Use it as a planning baseline, then verify the dated sources and test with representative data before production.
Before you migrate

Should you make this move?

Both platforms have a case. Compare what you gain with what you give up before scheduling the cutover.

Current platform

Squarespace

Reasons to stay
  • Beautiful templates and integrated hosting let small teams publish without technical operations
  • Editors get a purpose-built publishing workflow instead of raw files
Reasons to leave
  • Structured content, code control, and complex integrations are restricted
  • Themes, extensions, and content models add maintenance and portability constraints
New platform

Astro

What gets better
  • Content-focused sites ship very little client JavaScript by default
  • Managed deployments reduce infrastructure and release-management work
What gets worse
  • Repository-based publishing and custom integrations require engineering ownership
  • Runtime assumptions, platform services, and pricing models shape the architecture
Best of the move

Astro: Content-focused sites ship very little client JavaScript by default. This removes a major source-side concern: Structured content, code control, and complex integrations are restricted.

Worst of the move

What you lose: Beautiful templates and integrated hosting let small teams publish without technical operations. What you inherit: Repository-based publishing and custom integrations require engineering ownership.

Jump to a section
01At a glance

Know the shape of the move.

Transfer outcome11 features audited
Transfer outcome distributionClean transfer: 0, Partial transfer: 4, Manual rebuild: 3, Not transferred: 4.
Clean0
Partial4
Manual3
Lost4
Mapping route8 of 9 fields have a destination path

This timeline assumes

  • The Squarespace site is published and public. Squarespace says you cannot export a trial site.
  • The destination is a static Astro site with content collections, deployed wherever you already host Astro.
  • You can keep Squarespace online until redirects and the domain both work.
  • The site already documents Squarespace → WordPress, Squarespace → Webflow, and Squarespace → Framer if the site should stay in a hosted builder.
02What transfers

What survives the move.

“Partial” and “manual” are not footnotes. They are work that must be scheduled and verified.

ItemOutcomeImpactWhat happensMitigation
Export formatpartialcriticalSquarespace exports an XML file in WordPress format. The help page says to click the WordPress icon even when the destination is not WordPress. You cannot import that file into another Squarespace site.Download the XML while the site is public. Keep the file hashed.
Pages and textpartialcriticalThe export includes layout pages, text blocks, and image blocks. Text from blocks such as embed and Instagram comes with minimum structure. Gallery pages export, including York project pages on version 7.0.Open the XML and count pages before you cancel.
BlogspartialcriticalOne blog page exports, with its posts and up to 1,000 comments per post. If you have more than one blog, Squarespace asks you to pick a primary blog. A second blog is not in that file.Export again for any blog you did not select, if the panel lets you pick it. Do not assume one file has every post.
Page types that do not exportlosthighSquarespace's does-not-export list includes album, cover, index, info, calendar, portfolio, and store pages, plus headers, footers, sidebars, dropdowns, audio blocks, product blocks, video blocks, drafts, style settings, and custom CSS.Rebuild those pages or copy the CSS from the panel before you leave.
CommercelostcriticalStore pages and product blocks are on the does-not-export list. Astro content collections are not a cart.If you sell, this guide is only the content move. Keep commerce on a store you have already migrated.
ImagespartialhighImage blocks are in the export. The files can still be hosted by Squarespace. They disappear when the site comes down if you never saved them.Download images while the site is public and rewrite links to files in the repo.
CommentsmanualmediumUp to 1,000 comments per post can be in the XML. An Astro static site has no comment database. One site moved discussion to Giscus, which asks commenters for a GitHub account.Import comments into a host you choose, or archive them. Say so on the new post.
DesignlosthighStyle settings and custom CSS do not export. The new site is an Astro layout you build.Copy CSS you still need. Do not expect the Squarespace template to appear in the repo.
URLsmanualcriticalSquarespace paths do not become Astro routes on their own. A content collection serves the routes you define.Keep the path or add a redirect on the host. John Liu's rule on his own move was that every old path is kept or redirected.
DraftslostmediumSquarespace says drafts do not export.Publish or copy any draft you still want before you export.
Analytics continuitymanualmediumThe XML has no analytics. The new host starts at zero unless you add a tag and compare it with the old baseline.Save a top-pages report and check those URLs after launch.
03Field and feature mapping

Where each thing goes.

SourceDestinationMethodNotes
Layout pageAstro page or content entrytransformParse the XML into Markdown or a page file.
Blog postContent collection entrytransformAstro collections use a loader and an optional schema. Local Markdown is a build-time loader.
Post title, date, tagsFrontmattertransformDefine the schema so a missing date fails the build.
Image blockFile in the repomanualDownload it while Squarespace is public.
CommentComment host or an archivemanualCap in the export is 1,000 per post.
Second blogAnother exportmanualOne XML includes one blog.
Custom CSSAstro stylesheetmanualCopy from the panel. It is not in the XML.
Old pathSame route or a host redirectmanualTest on the host you will actually use.
Store pageNo destinationunsupportedNot in the content export. Do not point this playbook at a cart.
04Before you begin

Make the move recoverable.

Backup procedure

Create the source-of-truth backup

Keep the XML, the images, and the CSS that Squarespace will not put in the file.

  1. Confirm the site is public and not a trial.
  2. Export the WordPress XML and hash it.
  3. If you have another blog, run a separate export for it.
  4. Download images and copy custom CSS.
  5. Save a top-pages report and the current DNS records.

Proof to capture: The XML opens, the post count matches the blog you selected, and images exist as files.

Transformation · A small parser and an Astro content collection

XML to Markdown

Turn the Squarespace export into collection entries.

  1. Parse layout pages and the selected blog out of the XML.
  2. Write one Markdown file per post with title, description, date, and tags.
  3. Point a content collection loader at that folder and add a schema.
  4. Fail the build when a required field is missing.

Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.

Transformation · The redirect file your host actually reads

Redirect map

Keep every old URL that still gets traffic.

  1. List Squarespace paths from the XML and from the top-pages report.
  2. Keep the path or add one redirect. Do not send the list to the home page.
  3. Deploy the map to a preview URL and request the top paths.
  4. Switch DNS only after that preview matches.

Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.

05Handle with care

The things most likely to hurt.

These are operating limits. Treat every “Stop if” condition as a blocked migration, not a suggestion.

Backup

One blog was left in Squarespace

criticalpossible likelihood

The site has two blogs and the export asked for a primary.

Consequence
The second blog never lands in Git.
Mitigation
Count posts per blog against the XML before you cancel.

Stop if: A live blog is missing from every export you downloaded.

Pilot

Images still point at Squarespace

highlikely likelihood

Markdown still has Squarespace CDN URLs.

Consequence
The posts go blank when the subscription ends.
Mitigation
Download files and rewrite links. Request them from the preview host.

Stop if: A sample of posts still references Squarespace.

Cutover

The domain moves before redirects

criticalpossible likelihood

DNS changes while the redirect file is still a draft.

Consequence
Search and bookmarks 404.
Mitigation
Preview the redirect list on the real host first.

Stop if: A top URL has neither the same path nor a redirect.

06Precise timeline

Do the work in this order.

Estimate forA public Squarespace site with one blog and layout pages, no store
Total elapsed3 to 10 days
Active work10 to 25 hours
BufferJohn Liu described his own Squarespace to Astro move as one day and two evenings with agent-written scripts, against his expectation of three to six weeks of human-only work. A second blog, a store, or a large image set adds to that.
01
Days 1 to 2Count blogs and page types1 to 2 days
02
Days 2 to 3XML and images1 day
03
Days 3 to 7Collection and preview2 to 4 days
04
Days 7 to 8Domain1 day
05
Days 8 to 15Keep Squarespace up7 days
  1. Days 1 to 2 · inventory

    Count blogs and page types

    2 to 4 hours active1 to 2 days elapsedOwner list of pages to drop waiting
    • List blogs, stores, and page types Squarespace will not export.
    • Save the top-pages report.

    Depends on: Squarespace admin

    Stop / go checkpoint

    Export?

    Go when: You know which single blog the first XML will contain.

    Stop when: The site is still a trial, or a store has no other home.

  2. Days 2 to 3 · backup

    XML and images

    2 to 5 hours active1 day elapsedExport processing waiting
    • Download the XML.
    • Save images and CSS.

    Depends on: Public site

    Stop / go checkpoint

    Parse?

    Go when: Post count matches the blog you selected.

    Stop when: The file is missing a blog you need.

  3. Days 3 to 7 · pilot

    Collection and preview

    6 to 12 hours active2 to 4 days elapsedPreview deploy waiting
    • Generate Markdown.
    • Add the collection schema.
    • Deploy redirects to a preview host.

    Depends on: XML

    Stop / go checkpoint

    Move DNS?

    Go when: Top URLs and a sample of images work on the preview host.

    Stop when: The build fails schema checks or images still use Squarespace.

  4. Days 7 to 8 · cutover

    Domain

    1 to 3 hours active1 day elapsedDNS waiting
    • Point the domain, including www if you use it.
    • Request the top URLs on the new host.

    Depends on: Preview passed

    Stop / go checkpoint

    Astro is canonical?

    Go when: The domain serves the Astro build and redirects match the map.

    Stop when: www or the apex still hits Squarespace by mistake.

  5. Days 8 to 15 · observe

    Keep Squarespace up

    1 to 3 hours active7 days elapsedSearch traffic waiting
    • Watch 404s.
    • Leave Squarespace published until you accept the map.

    Depends on: DNS

    Stop / go checkpoint

    Cancel Squarespace?

    Go when: A week of top URLs still resolve and images are local.

    Stop when: A blog or image set is still only on Squarespace.

07The point of change

Cut over with a way back.

Go live

Cutover

The domain serves Astro, and every old path is either unchanged or redirected.

Recommended window: A time you can watch DNS, with the Squarespace export already archived.

  1. Deploy the build that passed the preview checks.
  2. Lower DNS TTL if you can.
  3. Point apex and www at the new host.
  4. Request the top-pages list against production.
  5. Leave the Squarespace subscription on until that list is clean.

Proof to capture: Production URLs match the redirect map and image requests do not hit Squarespace.

Return to safety

Rollback

Point the domain back at Squarespace, which you have not unpublished.

Deadline: Before you cancel Squarespace or set the site private. A private or trial site cannot produce the export.

  1. Restore the previous DNS records.
  2. Confirm Squarespace still answers.
  3. Keep the Astro repo and the XML.
  4. Fix the redirect or image gap on a preview URL.
  5. Try the domain move again only after the preview list passes.

Proof to capture: Squarespace serves the domain and the Git repo still has the export.

Rollback immediately when
  • A second blog is missing
  • Images still use Squarespace URLs
  • A top path 404s
  • www and the apex disagree
  • The content collection build fails
08Verification report

Prove the migration worked.

Every blocking check must pass. Capture the evidence before cleanup begins.

0%
Interactive report preview0 / 8 checks passed
PassIDCheckMethodExpected resultEvidence
V-01BlockingPost countCount posts in the XML and in the Squarespace blog you selected.The counts match, up to the 1,000-comment cap you checked.Count note.
V-02BlockingEvery live blogList blog pages in Squarespace against export files.Each blog you are keeping has an export.Blog list.
V-03BlockingCollection buildRun the Astro build.The schema accepts every entry you intend to publish.Build log.
V-04BlockingLocal filesRequest 15 post images from the preview host.None of the responses come from Squarespace.Image log.
V-05BlockingTop pagesRequest the analytics top-pages list.Each path is kept or redirected once.Redirect log.
V-06BlockingStore and portfolioConfirm store, portfolio, and draft pages are either rebuilt or explicitly dropped.The inventory says which.Page inventory.
V-07BlockingApex and wwwResolve both names.Both reach the Astro host.DNS lookup.
V-08BlockingSquarespace still publicOpen the Squarespace URL after DNS, using the old host if you kept one.You can still export or read the site until you cancel.Squarespace screenshot.
09Post-migration cleanup

Remove the scaffolding safely.

Safe after: A week of clean top URLs and images served from the repo or the new host.

  1. Commit the XML somewhere private if it has comments you do not want in public Git.
  2. Remove Squarespace secrets from any parser script.
  3. Cancel Squarespace only after the rollback deadline.
  4. Delete preview deploys you do not need.
  5. Note the comment host you picked.
  6. Re-check redirects after the next content import.
10Experiences from the field

When the plan met reality.

First-hand accounts are preferred. Vendor case studies are labeled, and every note below is an editorial paraphrase—follow the link for the full context.

First-person accountjohnliu.net

Planning and migrating from Squarespace to SWA + Astro2026

The author of johnliu.net moved the site off Squarespace onto Astro and Azure Static Web Apps, and published the account on 10 April 2026. Squarespace's export was a WordPress XML file. A parser turned it into 625 Markdown files with frontmatter. Old paths stayed where they could, category pages mapped to tags, and everything else got an explicit redirect. Comments moved to Giscus, so commenters need a GitHub account, and comments that did not map stayed in an archive. The write-up puts a human-only version of this work at three to six weeks, and the agent-assisted version at one day and two evenings alongside a job.

What they recommend
  • Write the URL rule before you polish the theme. Keep the path, map the category to a tag, or add a redirect.
  • Move comments as their own job. Giscus kept discussion in GitHub, and commenters needed a GitHub account.
Worth noticing
  • The Squarespace export was WordPress XML, and one parse produced 625 Markdown files.
  • The domain moved only after redirects, content, and analytics had all been checked.
First-person accountTomomi Sasaki · build.ripplet.org

Re-build ripplet.orgUndated

Tomomi Sasaki rebuilt ripplet.org on Astro after 12 years on Squarespace. The project log starts in March 2026. Squarespace provided one XML file, which became Markdown for the blogs. DNS at Cloudflare sent /weeknotes to Astro while the rest of the site stayed on Squarespace, and that split took a few hours. Later the rest of the DNS moved, Squarespace was cancelled, and the log records $1,920 paid since 2014. Phone photos in HEIC were converted during deploy, which the log says a hosted CMS would not let you script.

What they recommend
  • Export the XML and turn posts into Markdown before you rebuild the visual design.
  • If you cut over one section at a time, budget time for DNS. The /weeknotes split took a few hours.
Worth noticing
  • A hybrid DNS setup let the Astro blog go live while the rest of the site stayed on Squarespace.
  • The recorded Squarespace spend was $1,920 since 2014, paid before the account was cancelled.
Sources and evidence

Verify against the primary material.

Platform behavior changes. Check these sources and the review dates above before executing a production migration.

  1. Squarespace: export your site contentAccessed 2026-11-03
  2. Astro: content collectionsAccessed 2026-11-03