Landing pages are static’s home turf

A landing page is usually one primary URL, a few assets, a clear CTA, and maybe a form that posts somewhere else. That shape does not need an application server. It needs fast first paint, HTTPS, easy rollback when copy changes, and a domain that matches the campaign or product.

StaticHost hosts that page as files. Upload a zip or connect GitHub to a branch that already contains the built HTML. Preview on HTTPS immediately. Attach a custom domain; certificate issues after DNS verifies. Roll back from deploy history when the new headline underperforms—or breaks mobile. The server uses try_files $uri $uri/ =404; for a classic landing page with in-page anchors (/#pricing) you will not care. If you built the landing page as a history-mode SPA, you will—fix that before ads go live.

Build options that stay honest

  • Hand-written index.html + CSS + JS
  • Export from a design tool (designers)
  • Vite/Astro/Eleventy single-page or few-page output
  • Framework static export when you already live in that toolchain

Build locally; StaticHost will not run npm/Hugo/Jekyll. Pack the output root correctly—zip without 404.

Anatomy of a deployable landing tree

index.html
styles.css
main.js
img/hero.webp
img/logo.svg
favicon.ico

CTA buttons either link to https://app.example.com/signup (another origin) or submit to a form SaaS. StaticHost does not process mail or run PHP mailers. No cPanel. No forever-free (trial ~1 day).

Performance habits that beat mythical CDNs

StaticHost does not include a built-in CDN product. For a landing page, you still win by:

  • Compressing the hero image
  • Avoiding four font weights when one suffices
  • Deferring noncritical JS
  • Keeping the HTML single-request friendly

More: fast static site hosting, lightweight high-performance.

Domain and SSL

Campaigns sometimes use get.example.com or a dedicated vanity domain. Add the hostname, create DNS, wait for verification, wait for cert—custom domain, SSL. Grep for mixed content before buying ads.

Experimentation without chaos

Change one thing per deploy: headline, hero, or CTA color. Use deploy history as a crude but effective undo. On Pro ($30, 3 sites, 10 GB, staging), keep a staging landing page that marketing can review without touching production. Starter ($9, 1 site, 2 GB) is enough for a single ever-green page. Scale/Business when you run many parallel pages—then also read campaign landing page, which focuses on lifecycle and teardown (distinct from this evergreen landing article).

Analytics and pixels

Drop in HTTPS analytics snippets as static <script> tags. Respect consent laws; hosting cannot do that for you. Ensure pixels do not pull http:// endpoints.

When a landing page outgrows static

Personalized server-rendered offers per user, server-side A/B that must not flash, or CMS editors who refuse anything but WordPress admin—those push you toward other hosts. Until then, keep the page a file tree.

Worked example: product waitlist page in an afternoon

Goal: https://example.com shows a hero, three benefit bullets, and an email waitlist form. No blog, no app shell.

  1. Write index.html with semantic sections and a form action pointing at your form provider’s HTTPS endpoint.
  2. Add styles.css with a single system font stack; skip webfonts on v1 unless brand demands it.
  3. Export a compressed hero.webp under 200 KB; set explicit width/height to reduce layout shift.
  4. Zip the folder contents (not the parent): index.html must sit at the archive root.
  5. Create a StaticHost site on Starter ($9) or during the ~1 day trial; upload; open HTTPS preview.
  6. Submit a test lead; confirm the form provider inbox. StaticHost will not email you.
  7. Grep the tree for http://; fix any mixed content.
  8. Add the custom domain; create DNS; wait for verification; wait for the certificate.
  9. Retest the form and CTA on the real hostname.
  10. When marketing wants a louder headline tomorrow, change one string, redeploy, and keep the previous deploy handy for rollback if conversion drops.

If someone later rewrites this page as a React app with BrowserRouter and a /thanks client route, read the SPA guide before launch day. Anchors on one HTML file remain the simplest landing architecture on a =404 host.

Failure table: landing pages that look fine locally

SymptomLikely causeFix
Preview has no CSSNested zip (site/index.html)Re-zip contents of the build folder
Form submits nowhere usefulmailto: or missing endpointUse form SaaS HTTPS action
Padlock warns after DNSMixed http:// pixel or fontGrep and upgrade to HTTPS
Ads live, domain shows old siteDNS not verified / old A recordFix DNS; do not spend until cert is live
“Thanks” URL 404sClient route without a fileUse /thanks/index.html or query/hash
Mobile LCP terribleHuge hero PNGCompress; consider WebP; lazy below-fold
Rollback needed but forgotten which zipUnnamed artifactsName zips with date or git SHA

Extra procedure: pre-ad gate (15 minutes)

Before you unlock budget:

  1. Load HTTPS preview in a clean mobile throttling profile; screenshot first paint.
  2. Click every CTA; confirm external signup URLs use HTTPS.
  3. Fire one analytics event; confirm it arrives with the expected UTM defaults.
  4. Hard-refresh / only—if you invented extra paths, hard-refresh those too and accept only 200s.
  5. Confirm deploy history shows the build you intend to keep as “last known good.”
  6. Only then flip ads to the custom domain.

This gate is boring on purpose. Landing pages fail from process skips more often than from missing Kubernetes. Plans remain Starter $9, Pro $30 with staging, Scale $65, Business $130—pick by how many landers you run, not by mythology about edge networks. StaticHost still will not run npm for you and still will not provide email, cPanel, or a built-in CDN product.

Copy decks and design freezes as deploy inputs

Treat the approved copy deck like source code. When legal signs off on PDF version 4, that text—not Slack folklore—goes into index.html. Name the zip landing-copy-v4.zip so deploy history maps to the deck. If marketing asks for a “quick tweak” after ads start, decide whether it is a new experiment (new deploy, measurable) or a violation of the freeze (push to next flight).

StaticHost makes the mechanical part easy: upload, HTTPS preview, rollback. It will not mediate process. Pair the technical pre-ad gate above with a human freeze so you do not oscillate headlines hourly and destroy attribution. Forms still post to SaaS endpoints; mail is still not included; npm still runs on your machine if you use a bundler at all.

FAQ

Can I A/B test on StaticHost?

Client-side tools or external experiment platforms yes. Native edge experimentation no.

Do I need Git for a one-page site?

No. Zip is fine.

Will a React landing page work?

Yes if the build output is static and routes you care about exist as files or hashes.

How do forms send email?

Use a form endpoint provider; StaticHost is not a mail server.

Is this the same as a campaign microsite?

Campaign pieces that go up and down have extra lifecycle concerns—see the campaign-specific guide linked above.