Free Migrations That Actually Save Billable Hours: A Practical Guide for Agencies

Master Free Migrations: What You'll Achieve in 30 Days

In 30 days you will turn migrations from a bespoke, time-sucking task into a repeatable, low-friction service that saves your team hours and grows https://rankvise.com/blog/best-hosting-companies-for-web-design-agencies/ margins. By the end of this tutorial you'll be able to:

    Audit a site and estimate migration effort in under 30 minutes Use a checklist and reusable scripts to reduce hands-on migration time by 60 to 80 percent Document a standardized "free migration" offering that prevents hidden billable work after launch Measure actual billable hours saved and convert that data into pricing and staffing decisions

Think of migrations like moving a home into storage. Done wrong, you box everything and carry it twice. Done right, you label, pack the essentials, hire the right truck, and unpack in hours. This guide gives you the labels, the truck, and a route map.

Before You Start: Required Credentials and Tools for Site Migration

Have these items ready before you touch a client site. Missing anything here turns a "free" migration into hidden billable work.

    Access list - Admin access to CMS, FTP/SFTP, database, DNS provider, and the current hosting control panel. Include temporary credentials and expiration dates. Backups and snapshots - A verified, downloadable full-site backup or permission to create one. Never assume the origin host has proper backups. Contact path - One named client contact with approval authority and a preferred communication channel. Test domain or staging server - A ready staging environment with similar PHP/MySQL versions or container images matching the live site. Migration tools - Choose one migration method and stick to it: scripted CLI routines, a migration plugin with CLI options, rsync, or a hosting-provided migration API. Install required CLI tools on your staging server. Change window and DNS plan - Client approval for a maintenance window and DNS TTL reduction plan. Post-migration checklist - Canned QA tests and monitoring to validate the site one hour, 24 hours, and 7 days after launch.

Example credential packet

    CMS admin: [email protected] / tempPass!23 (expires in 72 hours) SFTP: sftp.example.com user / key file Database: db.example.com port 3306 dbuser / dbpass DNS provider: provider name + user with zone-edit rights

Your Complete Migration Roadmap: 9 Steps from Audit to Go-Live

Follow these steps like an assembly line. Each step has a clear owner and an expected time range. Times below are realistic for a typical WordPress or small CMS site.

Audit and scope - 20 to 40 minutes

Run a quick checklist: CMS version, plugins, custom code, media size, database size, and third-party integrations (payment, email, analytics). Use this table to estimate effort.

Site typeDatabase sizeEstimated manual time Small blog< 200 MB1-2 hours Medium business site200 MB - 1 GB2-4 hours Large WooCommerce> 1 GB4-8 hours

Note the specific blockers: large media libraries, custom cron jobs, or external APIs that need reconfiguration.

Preflight - 15 to 30 minutes

Lower DNS TTL to 300 seconds if you control DNS. Confirm backup exists and verify restore on a disposable instance. Create a migration ticket and list the revert plan.

Provision target - 10 to 30 minutes

Spawn a new staging instance from a standard image: correct PHP, web server, database, and PHP extensions. This is where standardization returns the biggest time savings.

Copy files and DB - 20 minutes to 3 hours

Use scripted rsync with exclude patterns for cache and uploads if you want speed. Run a search-replace for domain changes with a safe tool that handles serialized data. Example: use a CLI search-replace utility if you work with WordPress.

Configure environment - 20 to 45 minutes

Set environment variables, update wp-config or equivalent, set file permissions, configure SSL with a wildcard or Let's Encrypt, and wire the CDN if used.

Functional QA - 30 to 90 minutes

Run a canned QA: logins, forms, payment tests in sandbox, image load checks, broken link scan, and sitemap validation. Use a mix of automated tests and a human spot check.

DNS cutover and performance check - 10 to 60 minutes

Lower TTL earlier and at approved time switch the A record. Watch propagation for 30 minutes. Test using cURL and browser checks from multiple regions.

Post-launch monitoring - ongoing

Monitor error logs, uptime, and traffic anomalies for 24 to 72 hours. Keep a rapid rollback plan ready for 2-4 hours after cutover.

Closeout and documentation - 15 to 30 minutes

Deliver a migration report with the final checklist, credentials moved to the client's vault, and a line-item of what you did. If the migration was free, state what is included and what will require billable work.

image

Avoid These 7 Migration Mistakes That Waste Billable Hours

These are the common traps that turn a "free" migration into an expensive experience. Avoid them like a leaky moving truck.

Assuming backups are usable

Many hosts say they back up sites. Test a restore before you start. A failed restore can double your time because you have to reconstruct the site and troubleshoot missing pieces.

image

Skipping the DNS TTL step

Failing to lower TTL means traffic sticks to the old host. You will chase caching issues and blame the wrong systems. Lower TTL at least 24 hours ahead of the cutover.

Not standardizing environments

Every custom environment increases QA time. Standardize images and container templates so you know which steps are always needed.

Not excluding caches and temp files

Copying cache directories or temporary build artifacts wastes network time and disk space. Use exclude lists in rsync or your migration tool.

Ignoring third-party integrations

Payment gateways, email providers, and API keys often need to be re-authorized. Map these dependencies during audit to prevent last-minute firefights.

Poor client communication

Unclear expectations about the "free" scope leads to scope creep. Always document what the free migration includes: DNS change, content copy, basic QA. Extra features are billable.

No rollback plan

Not having a tested rollback doubles stress and cost. Create and rehearse a rollback before the cutover so you can switch back in minutes if needed.

Pro Migration Strategies: How to Cut 50% of Billable Hours

These are techniques senior engineers use to turn manual work into repeatable throughput. Implement them gradually.

    Create a reusable migration template Build a single script or Ansible playbook that covers 80 percent of your migrations: provisioning, installing core packages, creating DB users, and wiring SSL. Treat the template like a product you improve after each migration. Offer a "free migration" with clear boundaries Define the free scope: what you will move, how many plugins you will troubleshoot, and which integrations are excluded. This prevents small items from ballooning into billable tasks. Use automated QA checklists Run a post-migration script that checks status codes, broken links, and key page content. Automate the easy checks so your engineers can focus on the complex ones. Batch similar migrations Schedule migrations of similar stacks back to back. Your team stays in the same mental context and reduces setup time between jobs. Move billing from hourly to fixed where possible Once you can estimate reliably, fixed-fee migrations reward your efficiency. Track time on an initial set of migrations to build dependable estimates. Train an on-call junior with escalation paths A trained junior can execute the predictable parts of a migration; seniors step in only for complex debugging. Think of it like a factory floor: operators handle the repetitive tasks and specialists resolve exceptions.

Practical example - time saved

TaskManual timeStandardized time Provision server60 minutes10 minutes Copy files and DB180 minutes60 minutes QA and fixes120 minutes45 minutes Total360 minutes115 minutes

At a $120 hourly rate that saves roughly $370 per migration in internal billable time. Multiply by 20 migrations per year and the savings fund an automation engineer.

When Migrations Fail: Quick Fixes for Common Breakages

Errors happen. Here are targeted fixes that get you back online without a full rollback.

    500 errors after cutover Check PHP error logs first. Common causes: missing PHP extension, wrong PHP version, or file permission issues. Revert to default error handling and enable display temporarily on staging only. Fix the environment rather than fiddling with application code. Broken images or missing media Often caused by an incomplete rsync exclude or a path mismatch. Verify the upload directory and run a focused rsync to pull the missing files. If the library is huge, restore on-demand for seldom-used assets. Forms not submitting or third-party auth failing Check webhook URLs and callback domains. Ensure API keys are valid for the new domain. If you use environment-based keys, double-check they were updated and not left pointing to staging values. Slow performance after migration Confirm caching layers are enabled and configured correctly. Check database indexes and slow queries. If the live site is on a smaller plan than staging, that may explain degradation; revert or resize quickly. DNS still resolving to old host Confirm TTL and propagation. Flush local DNS cache and test from multiple public resolvers. If propagation lags, provide a temporary proxy or use a hosts file for urgent QA.

When to roll back

    Major data loss that cannot be fixed in under two hours Payment flow broken for live customers Security incidents like exposed secrets

Rollbacks should be automated where possible: snapshot the origin, take a final snapshot of the target before cutover, and provide a one-click restore path.

Closing: Measure What You Save and Iterate

Free migrations are not a charity. They are a customer acquisition and efficiency tool that, when standardized, reduces billable hours, increases conversions, and keeps clients happy. Track three metrics after each migration:

    Actual engineer hours spent vs estimated Number of post-launch support tickets in the first 7 days Time to resolve any critical issue

Run a monthly review. If the variance between estimated and actual hours is large, isolate why and adjust your scripts, documentation, or the free scope. Think of this as continuous improvement - small changes compound quickly.

Final metaphor: Treat each migration like a flight. You want a standard checklist, a trained crew, and a practiced emergency plan. When those are in place, the trip is predictable, comfortable, and costs less than you feared.