How to Deliver a Website to a Client (Step-by-Step)
The professional way to deliver a website to a client — live preview, permanent link, no Git required. Works for React, Next.js, Svelte, Astro, and plain HTML.
The Website Handoff Problem
You’ve built the site. It works locally. The client wants to see it. And now you’re choosing between:
- Deploying to production before it’s approved (risky)
- Setting up a staging environment (time-consuming)
- Sending screenshots (useless)
- Spinning up Vercel/Netlify (overkill for a preview)
- Sharing localhost via ngrok (unreliable, temporary)
None of these are the right answer for delivering a website to a client in a professional, repeatable way.
The right answer is a permanent preview link — live in the browser, no login required, updatable without changing the URL.
What “Delivering a Website” Actually Means
There are two distinct moments in a web project:
- The preview phase — client reviews the work, gives feedback, requests changes
- The final handoff — client takes ownership of the production deployment
Most developers conflate these. They deploy to production for review, then scramble when the client wants changes. Or they use temporary tools (ngrok, Vercel preview URLs) that break or change with every update.
The professional approach separates these two phases. The preview lives on a permanent, updatable link. Production deployment happens only after final approval.
Step-by-Step: How to Deliver a Website to a Client
Step 1: Build your static site
Run your framework’s build command:
# React (Create React App)
npm run build
# Vite (React, Vue, Svelte)
npm run build
# Next.js (static export)
npm run build # requires output: 'export' in next.config.js
# Astro
npm run build
# SvelteKit (static adapter)
npm run build
Step 2: Zip the output folder
| Framework | Output folder |
|---|---|
| Create React App | build/ |
| Vite | dist/ |
| Next.js static | out/ |
| Astro | dist/ |
| SvelteKit static | build/ |
Right-click the folder → Compress (Mac) or Send to Compressed folder (Windows).
Step 3: Create a delivery on Clowd
- Log in to clowd.host
- Create a new delivery → select “Static Site”
- Upload your zip file
- Your site is live on a permanent URL instantly
Step 4: Send the link to your client
One email. One link. That’s it.
Hi [Client],
Your website preview is live here: https://clowd.host/a/[your-link]
You can view it on any device — no login needed. Leave comments directly
on the page if you have feedback.
I'll update the same link as we make revisions.
Step 5: Update without resending
When the client has feedback and you’ve made changes:
- Run your build command again
- Zip the new output folder
- Upload to the same Clowd delivery (click “Update”)
- Ping the client: “Updated — same link”
The URL never changes. The client’s bookmark still works.
Practical Example: The Freelance Developer’s Workflow
James is a freelance developer building a React marketing site for a startup.
Week 1: James finishes the first draft. He zips the dist folder, uploads to Clowd, sends the client a link. The client views it on their phone
during a commute and leaves three comments directly on the delivery page.
Week 2: James makes the changes. He uploads the new build to the same Clowd delivery. He sends one Slack message: “Updated — same link.” The client opens the same URL they bookmarked and sees the new version.
Week 3: Final approval. James deploys to the client’s production server. The Clowd preview link stays live as a reference.
Total links sent to the client: 1. Total “which version is this?” emails: 0.
Delivering Different Types of Web Projects
React / Next.js / Svelte / Astro (static export)
Works perfectly with Clowd. Any framework that produces a static output folder can be zipped and uploaded. See the step-by-step above.
WordPress / CMS-based sites
For CMS sites, you can’t zip a static build. Options:
- Use a staging subdomain on your hosting provider
- Export a static snapshot using tools like HTTrack or Simply Static (WordPress plugin)
- Use Clowd for the design assets and mockups, deploy the CMS to a staging URL separately
Full-stack apps (Node.js, Django, Rails)
Full-stack apps with server-side logic can’t be delivered as static files. Use a staging environment on your hosting provider. Clowd is best for the static/frontend portion.
Best Practices for Website Delivery
- Never deliver to production for review — always use a separate preview environment
- Use a custom domain —
preview.youragency.comlooks more professional than a generic URL - Enable client comments — keeps feedback tied to the specific version, out of email
- Set version labels — name each upload “v1 — Initial Draft”, “v2 — After Feedback” so the history is clear
- Keep the preview live after handoff — useful reference for both parties if questions arise later
- Don’t share your localhost — ngrok and similar tools are unreliable and look unprofessional
Question-Based Insights
Why shouldn’t I just deploy to production for client review?
Deploying to production before approval creates risk. If the client wants significant changes, you’re making edits to a live site. It also sets a precedent that the client can request changes to production at any time. A separate preview environment keeps the review process clean and professional.
What’s the difference between a staging environment and a client preview link?
A staging environment is typically a full server setup mirroring production — useful for complex apps but overkill for most client reviews. A client preview link (like Clowd) is a lightweight, instantly deployable static URL. It’s faster to set up, easier to update, and requires no server management.
How Clowd Helps
- Live in under 60 seconds — zip your build, upload, share the link
- Permanent URL — one link per project, updates in place
- No client login — clients view the site in their browser immediately
- Built-in feedback — clients comment directly on the delivery
- Version history — every build saved, rollback with one click
- Custom domains — map your own domain for a professional touch
Try Clowd for free
Share files with permanent links. Update anytime, same URL.
Sign up free