Finish the site. Send one link. Get paid.
Handoff is the last step between a finished static build and a live client website. Upload your .html or .zip, send one link, and the client picks a domain and clicks Launch — without ever seeing DNS, hosting, or a deploy log. No more chasing them about “why isn’t it live yet.”
how it works
From your build to their live site
Upload a build
Zip your static site and upload it. We extract it, verify index.html, and stage it for launch — no build pipeline to configure, no Git push.
Send one link
Generate a handoff link and text it to your client. They open it on their phone. No account, no login, no dashboard they have to learn.
Or ship from your terminal
npx handoff-ship ./dist — upload and get a client link without opening a browser. API tokens + a GitHub Action for CI deploys are built in. Server code too: drop a _worker.js in your zip for contact forms and APIs.
They pick a domain
Live availability checked against the actual registry. They type a name, see whether it's free, and see the annual price — right there on the page.
One-click launch
They click Launch. We deploy, provision SSL, and return a live URL in under a minute. Cloudflare, DNS records, and deploy logs stay behind the curtain.
Changes without email
When the client needs an edit, they type it into the portal. It lands in your dashboard as a change request. Nothing gets lost in an inbox thread.
Recurring without servers
Charge a managed-plan fee on top of free hosting. You keep the recurring revenue; you never run a server or carry a hosting SLA.
scope
Static sites only (for now)
Handoff delivers the frontend. If your project has a backend, host that part elsewhere — we’ll point the domain at it.
Static — a perfect fit
HTML, CSS, JS. Fast, secure, basically free to host.
- Landing pages & marketing sites
- Portfolios & brochures
- Small-business sites
- Static exports: Astro, Next.js
export, SvelteKit, Webflow, Framer, plain HTML
Dynamic — host the backend yourself
Logins, databases, real-time, real checkout.
- WordPress, Shopify, custom Node/Python
- Member areas, dashboards, SaaS apps
- Host the backend on Railway, Fly.io, Vercel, or Supabase
- Point the domain at it — we handle the DNS
Built for vibe coders, solo devs, and small studios who ship in Webflow, Framer, Astro, Next.js, SvelteKit, or plain HTML — and hate the handoff meeting.
Pricing
Simple, transparent pricing
No hidden fees. Cancel anytime.
Free
- 2 free launches
- Branded delivery page
- Unlimited handoff links
- Domain availability check
Pro
- Unlimited launches
- Branding removed
- Change-request portal
- On-the-spot domain registration
- Cancel anytime
The client never pays Handoff anything — they just click Launch. Your $19.99/mo covers unlimited delivery, unbranded portals, and the change-request channel. Cancel anytime.
faq
Questions, answered straight
No account for your client. No server for you. Here's how the pieces actually fit.
Do my clients need an account? +
Who owns the hosting? +
Do I need to know Cloudflare? +
What about a site with a backend — logins, a database, real checkout? +
Can I register a domain for a client on the spot? +
Registrar:Edit to your token and setting up a payment method in your Cloudflare. It’s billed to your card, registered to the client, and auto-pointed, with a clear review-and-confirm step before any charge. Or skip all that and buy the domain anywhere you like (Namecheap, GoDaddy, Squarespace…) and just point it here.What does it actually cost? +
What can I upload? +
.html file, or HTML, CSS, JS, and assets in a .zip. If you build with a framework, export the static build first. We expect an index.html at the top.