How to scope and price a WordPress rebuild (for agencies)
Scope and price a WordPress rebuild without overruns — discovery questions, phase-by-phase scope, pricing models, per-page migration pricing, and…
verifiedReviewed by Tommy Smith,Content Director

Scope a rebuild by phase (discovery, design, blocks, migration, SEO, QA, launch) and price content migration separately per page. Get the real page count from the sitemap, not the client guess. Use a written change-request process.
Most rebuilds overrun for the same reason: they are scoped as a design project when they are really a migration project. The new look gets all the attention in the proposal, while the genuinely time-consuming work — moving hundreds of pages of content into a new block structure — is hand-waved as an afterthought. Here is how to scope and price a rebuild so the numbers actually hold, the client understands where money goes, and your team is not eating margin on page 47 of a copy-paste marathon.
We have seen agencies lose thousands on under-scoped migrations and win retainers on rebuilds quoted with transparent per-page line items. The difference is not talent — it is measurement before the number goes on the slide.
Start with discovery, not a number
You cannot price what you have not measured. Before you quote, get answers to these:
- arrow_rightHow many pages, really? Pull the sitemap and analytics top-pages — not the client guess.
- arrow_rightWhat is the current build? Theme, page builder, ACF — it decides how content migrates.
- arrow_rightWhich pages actually earn? Traffic and conversions, so you prioritise and do not over-scope.
- arrow_rightWho owns content and sign-off? Bottlenecks here are the number-one cause of overrun.
- arrow_rightAny integrations? Forms, CRM, e-commerce, memberships — scope each one explicitly.
- arrow_rightURL structure changing? Redirects and SEO preservation are a fixed line item, not implied.
Scope by phase
Break the project into phases you can estimate and bill independently. This also makes it obvious where a delay — usually content — will bite.
- arrow_rightDiscovery and content inventory — sitemap, analytics, builder audit, URL map.
- arrow_rightDesign / template system — Figma, component library, responsive breakpoints.
- arrow_rightACF block library build — register blocks, field groups, local JSON, editor guide.
- arrow_rightContent migration — crawl, map, review, import per page.
- arrow_rightSEO — redirects, metadata, structured data, Search Console baseline.
- arrow_rightQA, accessibility and performance — cross-browser, Lighthouse, forms, checkout.
- arrow_rightLaunch and post-launch monitoring — cutover, 404 watch, week 1 and week 4 reports.
Estimating effort
Separate the one-time build (templates and blocks) from the per-page migration effort. Your block library is a reusable asset; migration scales with the number of pages. Conflating the two is how estimates go wrong. A 15-block library is built once; 80 pages of content migration is eighty units of work.
The migration line item
Price content migration per page. It is legible to clients, maps cleanly to effort, and maps directly to AIRA credits (1 credit = 1 page) — so your cost and your price move together. Define what one page includes: crawl, classification, review, import, one round of client amends. Exclusions: net-new copywriting, pages added after sign-off, custom post types requiring separate tooling.
Pricing models
| Model | Best for | Watch out for |
|---|---|---|
| Fixed price | Tight, known scope | Needs a firm change-request process |
| Time and materials | Discovery-heavy work | Cap it with a not-to-exceed |
| Per-page migration | The content move | Define what one page includes |
| Retainer phases | Long client relationships | Clear phase gates and sign-off |
A sample estimate
A line-item estimate makes the work — and your margin — legible. Here is the shape of one for a 45-page marketing site leaving Elementor:
| Line item | Basis | Notes |
|---|---|---|
| Discovery and inventory | Fixed | Sitemap, analytics, content audit |
| Block library (ACF) | Per block | Reusable across the build |
| Template build | Per template | Home, landing, post, archive |
| Content migration | Per page × 45 | Crawl, map, review, import |
| SEO and redirects | Fixed | Metadata plus 301 map |
| QA and launch | Fixed | Cross-browser, performance, go-live |
| Post-launch monitoring | Fixed | Weeks 1–4 Search Console watch |
Builder-specific scope adjustments
Elementor, Divi and WPBakery sites need section-level migration — not theme swap pricing. Add contingency for global templates, popups, and forms. Webflow handovers need crawl-and-map, not export-only. Classic Editor brochure sites are faster. WooCommerce rebuilds split marketing pages (migrate) from products (stay in DB). See page builder exit guide and builder-specific migration posts.
Presenting the quote and protecting scope
- arrow_rightQuote by phase so the client sees where the money goes.
- arrow_rightMake the content deadline an explicit dependency — your timeline rests on it.
- arrow_rightPut a written change-request process in the contract, not just a conversation.
- arrow_rightOn T&M work, give a not-to-exceed so the client feels safe.
- arrow_rightShow per-page migration as its own line — not buried in 'development'.
- arrow_rightInclude post-launch monitoring — prevents 'SEO is broken' panic on day five.
Scope-creep red flags
- arrow_right'While we are at it' new features mid-build — route them to a change request.
- arrow_rightContent not ready by the agreed date, stalling migration and QA.
- arrow_rightDesign changes after templates are signed off.
- arrow_rightUndisclosed pages, languages or integrations surfacing late.
- arrow_rightClient adding pages after migration crawl — re-scope per page.
- arrow_rightSEO treated as free because 'we already have Yoast' — redirects still take hours.
Tooling cost in your margin
If you use AIRA for migration, credit cost is a direct COGS line. Fifty pages at per-credit pricing is predictable — fold it into your per-page migration rate with margin on top. Compare to three dev days of manual copy-paste at £75/hour. See AIRA vs manual migration and pricing. Agencies often standardise block libraries so migration cost drops on project two.
Timeline dependencies
For the timeline side, see how long a WordPress rebuild takes. Migration cannot finish until blocks are registered and content is approved. QA cannot finish until migration is done. Launch cannot happen until redirects are loaded. Draw the dependency chain in the proposal — clients understand why a two-week content delay pushes launch.
What to deliver at each phase gate
- 1Discovery: sitemap export, URL map, analytics top-20, signed scope document.
- 2Design: approved Figma, template list, block inventory.
- 3Build: staging with all blocks registered, editor guide draft.
- 4Migration: draft pages imported, review log, redirect map CSV.
- 5QA: checklist signed off, Lighthouse before/after, form test results.
- 6Launch: go-live confirmation, monitoring spreadsheet, week 1 report.
Discovery questions checklist
| Question | Why it matters | Where to look |
|---|---|---|
| Exact page count? | Scales migration line item | XML sitemap + Screaming Frog |
| Top 20 traffic pages? | Prioritise QA and review | GA4 landing pages |
| Current page builder? | Migration complexity | Plugin list + page editor |
| URL structure changing? | Redirect scope | Old vs new sitemap diff |
| Who approves content? | Timeline risk | Client stakeholder map |
| Multilingual? | Per-locale page multiplier | WPML / Polylang audit |
| Forms and integrations? | Separate line items | Plugin + CRM inventory |
Margin worked example
45-page rebuild: you quote £120/page migration (£5,400 client revenue). AIRA credits cost ~£35 COGS at agency tier. Dev review time: 6 hours at £75 internal cost (£450). Total migration COGS ~£485 against £5,400 — strong margin if blocks are pre-built. Same project manual: 3 dev days (£1,800 internal) plus re-work risk. The per-page line item makes this maths visible in the proposal spreadsheet.
Contract clauses that protect you
- arrow_rightContent delivery deadline with automatic timeline extension clause.
- arrow_rightChange request form required for scope additions — signed before work starts.
- arrow_rightPage count cap with per-page rate for pages beyond inventory.
- arrow_rightClient sign-off gates between phases — no migration until design approved.
- arrow_rightThird-party plugin licence costs excluded unless explicitly included.
- arrow_rightPost-launch monitoring period defined — not indefinite free SEO support.
Vertical-specific adjustments
Law firms: fewer pages but higher compliance review — add legal sign-off time. E-commerce: split marketing pages from product templates — see WooCommerce rebuild guide. Membership sites: gated content may not crawl publicly — scope manual paths. Healthcare: accessibility audit line item is non-optional. Adjust the template, not just the page count.
Workshop: running a scoping call in 45 minutes
- 1Minutes 0–10: pull sitemap live on screen, count pages with client watching.
- 2Minutes 10–20: open GA4, show top landing pages — which matter most.
- 3Minutes 20–30: identify page builder and plugin inventory.
- 4Minutes 30–40: confirm URL changes, integrations, content owner.
- 5Minutes 40–45: outline phase structure and ballpark per-page migration rate.
Red flags that mean pad the quote
- arrow_rightClient says 'about twenty pages' but sitemap shows 80.
- arrow_right'We might redesign the homepage again' after Figma was approved.
- arrow_rightUndocumented multilingual setup nobody mentioned in the brief.
- arrow_rightCustom ERP or CRM integration 'that should just keep working'.
- arrow_rightPrevious agency used three different builders across page generations.
- arrow_rightNo access to analytics or old hosting — discovery will take longer.
Presenting migration as value, not cost
Clients see migration as invisible work — they want the new design. Frame per-page migration as 'every page of your existing content preserved in an editable format on the new site'. That is tangible value. Pair with before/after editor screenshots: Elementor backend vs clean ACF fields. The line item stops feeling like padding and starts feeling like insurance against content loss.
AIRA credits in your COGS spreadsheet
Add a row: pages migrated × credit cost = tooling COGS. Compare to estimated manual hours × internal rate. The delta is your margin story in the project retrospective. Share it with the team so the next rebuild quote gets sharper — not padded, not undercut.
The proposal that hides migration cost is the project that hides overrun until month two.
Protect rankings with the SEO checklist and post-launch monitoring.
Scope documents should link to these guides
Attach the right deep-dive to client SOWs so discovery surprises become line items. Builder exits: page builder migration hub. CPTs and portfolios: CPT migration — often under-scoped. Platform moves: Webflow, WordPress.com. Timeline framing: how long a rebuild takes.
The WordPress Rebuild Scoping & Pricing Kit
The discovery questions, phase-by-phase scope, pricing models and a sample line-item estimate we use to quote a rebuild without surprises.
- check_circleDiscovery questions to ask first
- check_circleA phase-by-phase scope checklist
- check_circleThree pricing models compared
- check_circleA sample line-item estimate
Frequently asked questions
How much does a WordPress rebuild cost?expand_more
It depends almost entirely on page count and how much is bespoke. Split it: a one-time cost for templates and the ACF block library, plus a per-page cost for content migration. That structure scales predictably instead of guessing a single number.
Should I price content migration separately?expand_more
Yes. Pricing migration per page makes the largest, most variable part of the project legible to the client and keeps your margin predictable — and it maps directly to per-credit tooling costs.
How do I stop scope creep on a rebuild?expand_more
Scope by phase, make the content deadline a contractual dependency, and route every mid-build addition through a written change request. Most overruns are content delays and unscoped extras, not build complexity.
How do I get an accurate page count?expand_more
Export the XML sitemap, cross-reference with Google Analytics landing pages, and tag builder-built vs standard posts. Exclude tag and author archives unless the client explicitly wants them migrated.
Should SEO and redirects be a separate line item?expand_more
Yes. Metadata migration, redirect map creation, Search Console baseline, and post-launch monitoring are real work — often 8–16 hours on a medium site. Price them explicitly.
Fixed price or time and materials for rebuilds?expand_more
Fixed price works when discovery is thorough and change requests are contractually defined. T&M with a not-to-exceed suits exploratory rebuilds. Never fixed-price a project you have not inventoried.
How do I price ACF block development?expand_more
Per block or as a fixed library fee. Blocks are reusable — price them as an asset, not per page. A 12-block library built once serves every page on the site.
What if the client adds pages mid-project?expand_more
Change request: per-page migration rate × new pages, plus timeline impact. Run a new crawl if pages were not in the original inventory.
How do I estimate migration time per page?expand_more
Manual: 1–3 hours per complex builder page. AIRA with review: 5–15 minutes per page after blocks are built. Use these ranges to sanity-check your per-page rate.
Should I include post-launch monitoring in the quote?expand_more
Yes — at least weeks 1–4 Search Console and 404 monitoring. It prevents emergency firefighting and demonstrates SEO stewardship. See the post-launch monitoring guide.
How do agencies improve margin on rebuilds?expand_more
Standardise block libraries across clients, automate migration with tooling, price per page with COGS built in, and protect scope with phase gates. Second project on the same library is significantly more profitable.

Ryan Hale
Head of Front End Development
Ryan Hale is Head of Front End Development at AIRA, where he leads the team building the engine that migrates WordPress sites into native ACF blocks. He has spent more than a decade building and rebuilding WordPress sites for agencies, with deep, hands-on expertise in Advanced Custom Fields, Gutenberg block development, and large-scale content migrations that protect search rankings. He writes about ACF, moving off page builders like Elementor and Divi, and the practical craft of shipping fast, maintainable WordPress rebuilds.
Reviewed to our editorial guidelines.

