You need one page live for a webinar, a resource hub, or a campaign — not a whole website. Here's how to stand up that page from a single HTML file: a private, no-index link in seconds, with expiry, custom domain, and an honest line on where registration capture belongs.
A webinar invite has a date on it. So does a campaign landing. So does the resource page you hand a cohort the morning the workshop starts. These pages are appointments — they go live, they do one job, and within a month they mean nothing. Yet the standard advice is to stand up a website to serve each one: register a domain, pick a CMS, choose a theme, wire a deploy. A permanent home for a page with an expiry baked in.
That mismatch is the whole problem. A website is where something lives. A webinar page is where something happens, once, on a known date, for a known list. You shouldn't have to build the first to host the second — and you don't.
Strip a webinar or resource or campaign page down and there's almost nothing structural to it. A hero with the offer. A few sections of detail. Maybe an embed — a video, a calendar widget, a form. One call to action. That's a single HTML file's worth of content.
Everything heavy about "making a website" is the infrastructure around that file: registering a domain, picking a host, configuring a CMS, setting up a build, managing a dashboard you'll forget the password to. None of it is the page. It's scaffolding you erect to get one file onto the internet.
So skip it. Build the file, drop the file, get a link. An AI builder can write the HTML from a one-paragraph brief — date, speaker, three benefits, one button — and the portable prompt patterns cover how to ask for self-contained HTML so the output is a single file you can move anywhere. Or hand-roll it if the page is simple. Either way the output is one file, and one file is all a private-link host needs.
The webinar case is where this shape earns its keep, because a webinar isn't one moment — it's three, and the usual setup makes you build a separate page for each.
Before the session, the page is an invite: title, time, speaker, what attendees walk away with, and a register button. During the session, it's a reminder — the same URL, now leading with the join link. After, it's a replay: swap the content for the recording embed and the slide download. Three jobs, one link, no new URL to circulate at each stage. You drop it once in the calendar invite and the reminder emails, and the same address carries the whole arc.
That continuity is the point. When the invite, the live page, and the replay each live on a different tool, you spend the day of the event re-sending links and fielding "which one is current?" replies. With one private link you edit in place — the people you sent it to always land on the right state, and the URL never changes underneath them. Set the expiry for a couple of weeks past the replay window, and the page retires itself once the late re-watchers are done.
The resource hub and the campaign landing run on the same move. A cohort needs the materials — a worksheet, a recording, two reference links — as one styled page, not a Drive folder that reads like a filing cabinet. A campaign needs a sharp page that loads instantly and disappears cleanly when the push ends. Same pattern each time: a file becomes a link, the link does one job, the link retires when the job is done.
Drop a sample webinar or campaign page and get a private link in seconds — no account, no domain, no deploy. Set a 7-day expiry and watch how the URL behaves before and after, on a low-stakes file first.
Here's the part most "no-website" pitches skip, and it's the part that saves you an afternoon.
The page is a static-hosting job, and a private-link host is the fast path for it. The form on it splits into two cases, and the split is worth naming.
Collecting emails — the page can do this. For a resource page, a campaign landing, or a simple sign-up list, turn on the email gate: the page opens behind a short form (email, plus up to four optional fields you define), the visitor unlocks by entering it, and the addresses collect in your dashboard to export as CSV — Free holds 15 leads, Solo 500, Studio unlimited. No separate form tool to wire up.
True webinar registration — point that at the webinar platform. A live webinar has a moving part the email gate doesn't cover: the registrant needs to land on your webinar platform's attendee list so they get the join link, the calendar hold, and the reminders. That's a live integration, and a static host doesn't run one. So route the register button to your webinar platform (Zoom, Demio, Riverside) — its native registration drops attendees straight onto the right list.
If you genuinely want the form and a database and server logic living together — automated sequences off each sign-up, syncing to a CRM, anything past collect-and-export — that's a real backend, and the honest answer is to reach for Vercel or Netlify. Use them when the page is really an app. Use a private-link host, with the email gate when you just need the addresses, when the page is really a page. Most resource hubs and campaign landings are the second kind.
Two defaults make this shape work, and both are deliberate.
Private and no-index by default. A targeted webinar invite or a cohort resource page has a known audience — the list you emailed, the people in the room. It doesn't need to be discoverable in search; it needs to reach exactly the people you sent it to. A private, unguessable, no-indexed link gives you that. "Anyone can open it" means anyone you handed the link to, not the open internet. For a campaign you do want public, that's a deliberate choice you can make — but the safe default is the private one.
Retires on a schedule. These pages have an end date baked in. The webinar happens. The campaign closes. The cohort moves on. An expiry makes the retirement automatic — set the date, and the link goes to a clean ended page on its own, so a registration form for a past event doesn't keep collecting sign-ups and a stale campaign doesn't sit live for months. When the page should stay — an evergreen resource you reuse every cohort — a never-expire link on a paid plan holds it open instead.
Build one HTML file. Drop it. Share the link. Collect emails on the page with the gate, or point a true webinar registration at your webinar platform. Set when it retires.
That's a webinar page, a resource hub, or a campaign landing — live in minutes, branded on your own custom domain if you want it, gone when it should be — without a domain registration, a CMS login, or a single line of "let's set up a website." The page was never the hard part. The scaffolding was, and you can skip it.
For the full plan ladder — expiry control, detailed analytics, custom domain, and white-label — see pricing, or browse the use cases for the exact page you're standing up.
Client-side encryption tools turn your page into an encrypted file, so the protection and the artifact are the same object — every edit means re-running the tool and re-uploading. What that actually costs, the salt setting that decides whether your old share links survive, and when a hosted password is the better trade.
Running the studio out of one folder per client is a good structure for making the work. It stops at the point where the client has to open it — a private repo needs a GitHub account, and Pages built from one is public by default. What the handover step actually needs, and how to add it without breaking the folder.
A .json Lottie is not a page — hand it to a client and they get a wall of numbers. What it takes to turn one into something that opens in any browser, and why the answer is smaller than the tooling suggests.
miinideck turns a single HTML file into an unguessable link with optional password and expiry. Default-private, never indexed.