Ask why a redesign is late and the answer is almost never the design. It is the content: nine hundred blog posts nobody wants to sort, a services page whose copy is still with legal, images that exist only inside a page builder, and a URL structure that changed without anyone writing down what became what. Content migration is unglamorous, it is usually assigned to nobody, and it is the single most reliable way for a project to slip.
Decide who owns it on day one
The most common failure is not technical. It is that the studio assumes the client is writing the content, the client assumes the studio is moving it, and both discover the truth in week six.
Name an owner for each of three jobs, in the contract if necessary: who decides what content survives, who writes anything new, and who physically moves it into the new system. They can be the same person or three different ones, but unassigned content work does not get done, it gets discovered late and then rushed.
Inventory before you migrate
Never migrate what you have not counted. Export every URL, then attach traffic, conversions, and last updated date to each row.
That table produces four verdicts: move as is, rewrite before moving, merge with something else, or delete. Be aggressive. Most business sites carry a substantial tail of pages nobody has read in a year, and moving them costs real hours while adding nothing. Merging thin, overlapping pages into one strong page usually improves rankings rather than risking them, which is the same logic that governs the audit.
The rule that saves projects: a page nobody visits and nobody links to does not need a home in the new site. It needs a redirect to the nearest useful thing.
Map every URL, without exception
The migration document that matters is a two column sheet: old URL, new URL. Every row from your inventory appears in it, including the deletions.
Get it done before build, not during launch week, because it also settles arguments about structure while changing structure is still free. Redirect to the closest equivalent page, never in bulk to the homepage, since a mass redirect to the root is treated as a soft 404 and loses whatever the page had earned. Use permanent redirects, keep them in one hop rather than a chain, and preserve the query strings your campaigns rely on.
Then check the incoming links you cannot control: press coverage, directories, partner sites, old campaigns. Those are the URLs that must never break, and they are usually not the ones your team would have prioritised. The full ranking protection routine starts here.
Content is a design constraint, so gather it early
Designing with lorem ipsum and pouring real content in afterwards is how layouts break in week ten. Real headlines are longer than the ones designers write. Some products have nine word names. One case study has no photography at all.
Collect the real material before the visual design is signed off, or at minimum collect the extremes: the longest title, the shortest description, the client with no logo. Design for those and the rest fits.
This is also the moment to fix the writing rather than transplant it. Migration is the cheapest opportunity you will ever get to cut waffle and write pages that actually sell, because someone is touching every page anyway.
Move the assets properly
Images are where migrations quietly rot. Pull them at full resolution from the source rather than scraping the resized versions off the live site, keep the alt text you already have (it is written, it is often good, and rewriting it is a week nobody has), and re export at modern formats and correct dimensions on the way in, which is free performance you would otherwise pay for later.
Check documents too. PDFs linked from old pages are usually forgotten, and they frequently carry the pricing sheet or spec that someone’s search result points at.
Test the map before and after launch
Before launch, run the old URL list against the staging environment and confirm every single row resolves where it should. Automate it; a spreadsheet of 900 URLs is a job for a script, not a person clicking.
After launch, run it again against production within the hour, then watch server logs and search console for 404s daily for a fortnight. Real traffic finds the rows you missed faster than any test, and the fix window that matters is measured in days, which is why the first month after launch deserves attention.
Keep the redirect map forever, in the repository. Two years from now, someone will ask why a rule exists, and the answer will be in that file, along with the reason the site still has its traffic.
Staring at a thousand URLs and unsure what survives? That triage is something we do on every rebuild: hello@beconfidency.agency.
If you want the migration owned rather than assumed, that is exactly what our web development service is for.
