Written by
Founder & CEO, Gspikes
I own and run Gspikes, the agency I founded in 2018. Before going all-in, I led SEO at Chain Reaction — one of the region's largest digital agencies — and shipped production code at Orange and Forbes. Everything published here comes from projects I've personally built, migrated, or ranked.
Last updated · August 2026
Every week I get some version of the same email: “We’re still on Drupal 7. What’s this going to cost us?” And every week I give the same annoying answer — it depends — followed by the numbers most agencies won’t put in writing.
So let me put them in writing.
I’ve been on both sides of this. I started my career as a backend engineer, and these days my team at Gspikes handles Drupal development and migrations for sites ranging from 500 pages to over 50,000. The prices below come from real proposals, not a pricing calculator someone built for lead capture.

The short version
| Site profile | Typical cost | Timeline |
|---|---|---|
| Small D7 site (under 1,000 pages, little custom code) | $15,000–$35,000 | 6–10 weeks |
| Mid-size (1,000–10,000 pages, several custom modules) | $35,000–$90,000 | 3–5 months |
| Large institutional (10,000–50,000+ pages, multilingual, integrations) | $90,000–$300,000+ | 5–9 months |
If a quote lands dramatically below these ranges, someone hasn’t read your module list. I say that as the person who ends up rescuing those projects at month seven.
Why this isn’t an upgrade — and why that drives the price
Drupal 7 to Drupal 10 or 11 is a re-platform. The database schema changed, the theming layer moved from PHPTemplate to Twig, and the module ecosystem was rebuilt on modern PHP. Nothing carries over automatically. I wrote more about what end-of-life actually means in our Drupal 7 migration guide, but for budgeting purposes, here’s what you’re really paying for:
1. Content model rework (15–25% of budget)
Fifteen years of a living site produces content-type sprawl: fields nobody used since 2016, view modes that render nothing, taxonomy trees with one term. A migration is the one chance to shed that weight. Budget-wise, this is analysis and decision work — cheap per hour, expensive when skipped, because every junk field you migrate costs money at every later stage.
2. Custom module ports (20–40% — the wild card)
This is where quotes diverge. Every D7 site I’ve audited has a drawer of custom modules, and each must be rewritten for modern object-oriented Drupal or replaced with contrib. A site with three small custom modules and a site with thirty are different projects wearing the same face. This is why I don’t quote before an audit — and why you should distrust anyone who does. Our take on vetting vendors is in how to choose a Drupal development company.
3. The migration pipeline itself (25–35%)
Migrate API configuration, field mappings, media handling, URL aliases, redirects, and — critically — rehearsals. We run the full migration multiple times against staging before launch day, so by the time it counts, it has already succeeded. Teams that budget for one migration run are budgeting for a bad weekend.
4. Theming (15–25%)
Your PHPTemplate theme doesn’t port. Most clients treat this as the silver lining: a redesign was overdue anyway, and doing it inside the migration costs less than doing it separately later.
5. SEO preservation (5–10%, or the entire project’s value)
Here’s my bias, earned honestly: I run SEO for a living alongside the engineering, and the single most expensive migration mistake I see is treating search as an afterthought. A full 301 map, metadata migration, schema markup, and daily rank monitoring through cutover costs a fraction of the project — and protects the organic traffic that probably justifies the site’s existence. We’ve migrated 50,000-page sites without losing a single ranking. That’s process, not luck.
What moves you to the low end of the range
- A ruthless content audit before anyone codes. Migrating 60% of your content costs roughly 60% of migrating all of it.
- Accepting contrib instead of porting custom. Half the custom modules from 2014 now exist as maintained contrib. Pride is expensive; use the community’s code.
- A decision-maker who answers within a day. I’ve watched a six-figure project drift for two months waiting on one approval. Delay is a line item; it just doesn’t appear on the invoice.
- Fixed-price after a paid audit. A $3–5K audit that produces an exact scope routinely saves ten times its cost — and if the audit tells you Drupal isn’t even the right destination (sometimes it’s WordPress; see our honest comparison), you just saved the whole budget.
What moves you to the high end
Multilingual content multiplies everything. Integrations — CRM, SSO, ERP — add both build time and testing time; I covered why those fail in the enterprise Drupal piece. Compliance requirements (government accessibility standards, audit trails) add review cycles. And version choice matters less than people think: if you’re migrating now, go straight to Drupal 11 — the reasoning is in Drupal 10 vs 11.
Ongoing cost after the migration
The site you launch needs security patching, module updates, and a human who answers when something breaks. Plan for support from day one — real numbers in what Drupal maintenance actually costs. And if you’re staffing internally instead, here’s what Drupal developers cost to hire — spoiler: a good agency retainer is usually cheaper than one senior hire, until you need three of them.
How to get a number you can take to your board
Ask for a paid technical audit first: content inventory, module list with port-or-replace decisions, URL count, current rankings, integration map. The output should be a fixed price with a timeline — not a rate card. That’s how we quote at Gspikes, and it’s why our migration projects finish at the number we said. Request a free preliminary review and a senior engineer — I mean an actual engineer, not a sales rep with a script — will tell you which range you’re in within three business days.
