FileCheckout

Website Handoff Checklist for Freelancers: Everything You Need to Deliver

You built the website. The client signed off on the design. Everything works. Now you need to actually hand it over, and this is where a lot of freelance developers drop the ball.

Not because the work is bad. Because the handoff is messy. Missing credentials, no documentation, unclear hosting situation, DNS pointing to your personal Cloudflare account. The client ends up confused and you end up fielding support questions for the next six months.

A clean handoff is the difference between a project that's truly finished and one that haunts you. Here's the complete checklist.

The Complete Website Handoff Checklist

1. Source Code

  • Transfer the GitHub/GitLab repository to the client's account (or add them as owner).
  • If no Git repo exists, provide a clean zip of the entire codebase.
  • Include a README with setup instructions: how to install dependencies, run locally, build for production.
  • Remove any of your personal API keys or credentials from the code.
  • Make sure .env.example exists with all required environment variables listed (without actual values).

2. Hosting & Deployment

  • Transfer hosting ownership to the client's account (Vercel, Netlify, AWS, or whatever you used).
  • If you set up the hosting under your account, document how to transfer it. Every platform has a different process.
  • Provide deployment instructions: how to push updates, how to roll back, what triggers a deployment.
  • List any third-party services the site depends on: CDN, image optimization, analytics, monitoring.

3. Domain & DNS

  • Confirm the domain is registered under the client's account (not yours).
  • Document all DNS records: A records, CNAME, MX (email), TXT (verification/SPF/DKIM).
  • If you managed DNS through Cloudflare or similar, transfer the zone to the client's account.
  • Make sure SSL is configured and auto-renewing.

4. CMS / Admin Access

  • Create an admin account for the client in the CMS (WordPress, Sanity, Strapi, whatever you used).
  • Write a short guide on how to update content: adding pages, editing text, uploading images.
  • If there are content types or custom fields, explain what each one does.
  • Remove or downgrade your own admin access (or let the client know you still have it and why).

5. Third-Party Accounts & API Keys

  • List every third-party service the site uses: analytics (Google Analytics, Plausible), forms (Formspree, Typeform), email (SendGrid, Resend), payments (Stripe), maps, etc.
  • For each service, either transfer to the client's account or document the account credentials.
  • If you used your own API keys during development, swap them for the client's keys.

6. Database

  • Transfer database ownership to the client (Supabase, PlanetScale, MongoDB Atlas, etc.).
  • Provide a recent backup and instructions for creating future backups.
  • Document the schema: what tables exist, what they store, how they relate to each other.

7. Design Assets

  • Share the Figma file (or Sketch/Adobe XD) with the client. Transfer ownership if they have their own account.
  • Include any custom fonts, icons, or illustrations used in the project.
  • Provide the brand guidelines if you created them: colors, typography, spacing rules.
  • Export logos in multiple formats: SVG, PNG (transparent), favicon.

8. Documentation

  • A plain-language overview of how the site is built (for whoever maintains it next).
  • Technical docs: architecture decisions, folder structure, key components.
  • A "common tasks" guide: how to add a blog post, change the hero image, update the footer.
  • Contact info for ongoing support (if you offer it) and your rate for future changes.

How to Package All of This

Don't send 15 separate emails with attachments. Package your handoff as a single deliverable:

  • A zip file containing the source code, design assets, and documentation.
  • A master document (Notion page, Google Doc, or PDF) with all credentials, links, and instructions.
  • Optional: a 10-minute Loom video walking through the handoff package.

One link. Everything they need. Professional.

Gate the Handoff Behind Payment

Here's the part that most handoff guides skip. You've done all this work. You've packaged everything beautifully. Now you need to get paid before you hand it over.

If you send the zip file and the credentials document before the final payment clears, you've lost your leverage. The client has everything. The site is running. What's their incentive to pay the last invoice quickly?

Instead, do this:

  1. Show, don't send. Walk the client through the finished site on a call. Show them the staging URL. Demonstrate the CMS. Get their approval.
  2. Prepare the handoff package. Zip everything up. Write the documentation. Get it ready to go.
  3. Send a payment link. The client pays the remaining balance and the handoff package downloads automatically.
  4. Transfer accounts. After payment, handle the account transfers (hosting, domain, etc.) that can't be zipped.

FileCheckout is built for exactly this. Upload the handoff zip, set the remaining balance as the price, send the link. Client pays and downloads. Then you handle the account transfers knowing the money is in your account.

After the Handoff

A few things to wrap up after the client has everything:

  • Remove your access to the client's hosting, CMS, and any accounts you no longer need.
  • Archive the project on your end. Keep a backup of the code and assets in case the client comes back for changes.
  • Send a final email with your availability for future maintenance or updates, and your rate for that work.
  • Ask for a testimonial while the positive handoff experience is fresh.

A clean handoff is one of the easiest ways to stand out as a freelance developer. Most clients have been burned by developers who disappeared after launch, left no documentation, and hosted everything under their personal account. Being the opposite of that gets you referrals.

FAQ

What should be included in a website handoff to a client?

A complete handoff should include: source code (with README), hosting and deployment instructions, domain and DNS documentation, CMS admin access, all third-party account credentials, database access, design assets (Figma files, logos, fonts), and plain-language documentation covering common tasks and site architecture.

How do I transfer a website to a client as a freelancer?

Package everything into a zip file with documentation. Transfer repository ownership on GitHub, hosting account on Vercel/Netlify, and domain registration if needed. Provide a master credentials document and a walkthrough video. Gate the handoff behind your final payment to ensure you get paid before transferring everything.

Should I deliver a website before getting final payment?

No. Show the client the finished site on a staging URL or via screen share, but don't transfer source code, hosting access, or credentials until the final payment is received. Use a gated delivery tool like FileCheckout to package the handoff behind a payment link.

How do I document a website for client handoff?

Create three levels of documentation. First, a technical README for future developers (setup, architecture, dependencies). Second, a CMS guide for content editors (how to add pages, edit text, upload images). Third, a credentials document listing every service, account, and API key the site uses. A short Loom video walkthrough ties it all together.

What's the best way to package website deliverables for a client?

Create a single zip file with a clear folder structure: /code (source), /design (Figma exports, logos, fonts), /docs (documentation, guides). Include a master credentials document as a separate PDF. Optionally record a walkthrough video. Deliver it all through a single payment link so the client gets everything in one clean download.

Package your website handoff behind a payment link.

Upload the zip. Set the price. Client pays and downloads everything in one step.

Get Started Free