Skip to content
Frank Spin
All writing

WordPress to Astro migration: what it costs and where the money goes

My migrations start at €10,000. Where a project lands above that depends less on the number of pages than you'd think. This post walks through what actually drives the price.

The question I get most about moving a site from WordPress to Astro is the simplest one: what does it cost?

The short answer: my projects start at €10,000. The long answer is this post. The price depends less on the number of pages than you’d expect, and more on how your site is put together on the inside. Once you know where the money goes, you can estimate where your own site will land.

What goes into a migration

A migration is more than a new design in a different technology. Every project gets the same five things:

  • Inventory. Every URL from your sitemap, Search Console and analytics, and what each plugin does.
  • Content model and CMS. Your content gets fixed fields, and we pick the CMS your editors will work in.
  • Build. The site in Astro, on a staging link where you follow along with your real content in it.
  • Moving the content. With scripts, not by hand, images included.
  • Redirects and launch. Every old URL to its new address in a single hop, then a few weeks of watching Search Console.

That’s the fixed base. Below €10,000 I’d have to cut corners on one of those five, and they’re exactly the steps that decide whether you keep your rankings. That’s why the floor sits there.

What drives the price

Templates, not pages

Five hundred blog posts that all look the same are one template. I build it once, and the script moves all five hundred. Thirty landing pages that each have their own structure are thirty times the work.

So don’t count your pages, count the distinct layouts. A homepage, an article, an archive, a service page and a contact page make a manageable site, even with a thousand articles in it.

Content types and fields

A blog post has a title, a date, an image and body text. A job opening, a product or a case study has its own fields, its own filters and often its own relations: this case belongs to that service, this product to that category. Every content type has to exist in the CMS, the script and the templates. More types, more work.

Languages

A second language is more than twice the text. Every page has to know its translation, URLs differ per language, and the redirects have to be right per language. If your site runs on WPML or Polylang today, I pull the links between translations out of the database. That works well, but checking it takes time.

Page builders

This is often the biggest difference. If your site was built with the standard WordPress editor, the content is fairly clean. If it was built with Elementor, Divi or WPBakery, your text is buried in layers of markup, shortcodes and builder settings.

That content can’t be moved over as is. The script has to pull the text, headings and images out of the markup and into fixed fields. Pages that really differ from the rest I do by hand. A site full of page builder pages costs more than a site of the same size with plain posts.

Plugins that actually do something

Some of your plugins aren’t needed after a migration. Caching, security, image compression and most SEO plugins go away, because the new setup already does that on its own.

Plugins with a real job stay work: forms, search, a newsletter, a jobs feed, a members area. I build those with a small function on Cloudflare or a service that fits. A form is a small thing, a members area with logins is a project of its own.

A WooCommerce shop is a different story. Astro with a separate commerce service is an option there, but I don’t count that as a migration. That’s a new shop.

Redirects and SEO

More URLs means a bigger redirect map. Most of it is automatic: the script knows which old URL belongs to which new page. The work is in the exceptions. Old campaign pages, tag archives, PDFs linked from somewhere, URLs with parameters that still get traffic. I pull those from Search Console and analytics, and decide per group whether they get a new address or can go.

What you save afterwards

A migration is a one-off cost. Against it stand running costs that disappear or shrink.

  • Hosting. Static pages on Cloudflare cost next to nothing. For forms and server functions a paid Workers plan is enough, starting at $5 a month. A managed WordPress plan for a busy site often costs several times that.
  • Licences. Premium plugins and themes bill yearly. Those licences go away.
  • Upkeep. No more weekly plugin updates, no update that breaks something, no vulnerable plugin you have to deal with in a hurry. If you pay an agency or someone in-house for that today, it saves you money every month.
  • Speed. A faster site earns more than it costs, but that’s hard to put in euros up front. Why speed matters is in a fast website without plugins .

Add up a year of hosting, licences and upkeep, and you know how quickly a migration pays for itself.

When it doesn’t pay off

For a small site with a handful of pages that gets updated now and then, €10,000 is too much money. WordPress with a good theme and a few plugins is fine. I’ll tell you that if you ask.

A migration pays off for sites with a job to do: bringing in leads, holding a knowledge base or catalogue, running in several languages, or having editors in it every week. That’s where you pay the most for hosting, plugins and upkeep today, and where speed earns the most.

How to get a quote fast

Send me the URL of your site with this:

  • Roughly how many distinct layouts you have, and whether a page builder was used.
  • Which content types exist besides pages and posts.
  • How many languages the site has.
  • Which plugins do something you want to keep, like forms or search.
  • What’s pinching now: speed, upkeep, cost or the editing experience.

Within two working days I’ll tell you whether a migration makes sense and roughly where it lands. After the inventory you get a proposal with scope and planning. How the rest of a migration runs is on WordPress migration .