Client website handoff checklist for freelancers and agencies

What to check, what to document, and what to hand over so launches go smoothly and clients come back for the next project.

Updated October 13, 20269 min readFor: Freelancers and agencies

A good handoff is the difference between a client who refers you and one who emails you in a panic three months later. This checklist covers what to verify, what to transfer, and what to put in writing.

1. Final QA

  • Run the website launch checklist on the live domain.
  • Audit the pages in the sitemap for titles, descriptions, and noindex with the sitemap audit (10 pages free, 200 with Pro).
  • Check for broken links on key pages with the broken link checker.
  • Submit every form on the live domain and confirm delivery to the client's inbox.
  • Test on a real phone, with a keyboard only, and with zoom at 200%.
  • Set up 301 redirects from the old site's URLs so existing links, bookmarks, and search results still land on the right page.

2. Accounts and ownership

AccountOwnerYour access
Domain registrar and DNSClientDelegate or temporary
Hosting / deploymentClient (billing in their name)Team member
CMSClient adminSeparate admin user
Analytics and Search ConsoleClientUser / full access
Email sending (SPF, DKIM, DMARC)ClientAs needed
Third-party services (forms, payments, maps)ClientAs needed

Share credentials through a password manager, never by email or chat, and remove any personal API keys or test accounts you used during the build.

3. Documentation and training

  • A one-page guide: how to edit pages, add blog posts, swap images, and update menus.
  • Short screen recordings of the common tasks. Clients rewatch these far more than they read docs.
  • Where backups live, how often they run, and how to restore one.
  • How updates are handled: who updates the CMS, plugins, and dependencies, and how often.
  • Privacy policy, terms, and cookie consent that match the tools actually installed.
  • An accessibility statement, especially for clients selling into the EU. Use the accessibility statement generator and read the EAA guide.
  • Licenses for fonts, images, and themes transferred or documented.

5. The handoff pack

Send one email or shared folder with:

  1. The final QA report (PDF) showing what was checked and passed.
  2. The account ownership table above, filled in.
  3. Links to the docs and training videos.
  4. What is covered by your warranty period, and what counts as new work.
  5. Your maintenance offer, if you have one.

6. After handoff

  • Check in after one week: Search Console coverage, forms, and analytics data.
  • Check again at 30 days with a short report. It is the easiest moment to propose a retainer.
  • Re-check all client sites monthly with the portfolio check: site responding, HTTPS, security headers, noindex, sitemap, and AI crawler access in one table.

Questions

What should be included in a website handoff?

A QA report showing the site meets the agreed standards, ownership of every account (domain, hosting, analytics, Search Console), credentials shared securely, documentation for editing content, the legal pages, and a clear support or maintenance agreement.

Who should own the domain and hosting accounts?

The client, in their name and billing. Add yourself as a collaborator or admin. It protects both sides: the client is never locked out, and you are not responsible for renewals you do not control.

How do I turn a one-off project into a retainer?

Offer monthly checks and fixes with a short report: security headers, SEO basics, broken links, and accessibility. The Pro portfolio check covers the site-level part (site responding, HTTPS, security headers, title and description, noindex, sitemap, AI crawler access, and a real 404) across all your client sites at once and exports a CSV.

Should I include an accessibility statement?

If the client sells to consumers in the EU, the European Accessibility Act requires them to publish how their service meets accessibility requirements (micro-enterprises providing services are exempt), and a statement is the usual way to do that. It is good practice everywhere and takes a few minutes with a generator.

Tools for this guide