Prebuilt means the bytes are already HTML

Agencies hand you a zip. A SaaS exports a static site. A contractor says “the website is done” and mails a folder. Your job is hosting, not redevelopment. StaticHost is aimed at that moment: take a prebuilt tree, publish it, attach a domain, keep rollback nearby.

No remote builders will reinterpret the project. If the zip lacks index.html at the right level, the host will not invent one. nginx answers with try_files $uri $uri/ =404. HTTPS preview works immediately after upload; certificates on custom domains arrive after DNS verifies. Trial ~1 day, then Starter $9 / Pro $30 / Scale $65 / Business $130. No forever-free, email, cPanel, or built-in CDN product.

Intake checklist for prebuilt deliveries

  • [ ] Unpack the zip locally (do not upload blind).
  • [ ] Find the directory that contains the real index.html (ignore __MACOSX and .DS_Store).
  • [ ] Open index.html in a browser as a rough check.
  • [ ] Note absolute paths pointing at the contractor’s machine or http://.
  • [ ] Note whether the site is multipage HTML or a history-mode SPA.
  • [ ] Measure total size versus plan storage (Starter 2 GB, Pro 10 GB, Scale 30 GB, Business 100 GB).
  • [ ] Ask who will rebuild if copy changes—prebuilt can become “nobody knows the source.”

If SPA deep links matter, settle hash vs files before launch—host a single-page application.

Normalize the tree

cd path/to/correct-root
zip -r ../prebuilt-site.zip .
unzip -l ../prebuilt-site.zip | head

Top-level index.html required. Guide: zip a static site without 404.

Fix obvious mixed content and dead asset paths before first deploy when cheap; after DNS cutover they become emergencies—static hosting with free SSL.

Worked example: agency zip with a trap folder

You receive Site_FINAL_v7.zip. Unzipbing reveals:

Site_FINAL_v7/
  __MACOSX/
  website/
    index.html
    css/
    images/
  readme-from-agency.txt

Wrong: zipping Site_FINAL_v7 again. Right:

cd Site_FINAL_v7/website
zip -r ../../client-site.zip .
unzip -l ../../client-site.zip | head

Deploy client-site.zip. Open HTTPS preview. Click primary CTAs, mobile nav, and any form that posts to a third-party endpoint. Roll back if “final_final_v3” is worse than the previous deploy in history.

Publish and domain cutover

Create a StaticHost site. Upload the normalized zip or push files to GitHub for git deploy a static site. When preview matches contract, add the domain, verify DNS, wait for the certificate—static hosting with a custom domain. Keep the contractor’s old host only until TTL expires.

Ownership after handover

Prebuilt sites rot when nobody can regenerate them. Demand source (Figma + export pipeline, or the generator repo). Hosting preserves the last good bytes; it does not recreate lost source. Designers: static hosting for designers. Agencies managing many prebuilts: static hosting for agencies.

When not to accept a “prebuilt” on StaticHost

  • The zip is a WordPress tree (wp-content, wp-config.php) → PHP host; refuse politely.
  • The zip is only src/ for a React app with no production build → send it back for a proper dist//build/.
  • The site depends on Apache .htaccess SPA rewrites → will 404 on deep links here.
  • Nobody can explain how to change a phone number next quarter → fix ownership before cutover.

Failure table (prebuilt intake)

SymptomLikely causeFix
Preview 404 on /Nested archive rootRe-zip from the folder that holds index.html
Styles missingPaths like /Users/agency/...Rewrite to relative URLs; redeploy
Form does nothingEndpoint blocked or HTTPUpdate action to HTTPS SaaS endpoint
Deep links 404History-mode SPA exportHash routes or prerendered files
Storage warningGiant unoptimized videoCompress or host media elsewhere

Boundaries

No cPanel file babysitting as the product core, no email, no built-in CDN, no WordPress runtime. If the prebuilt delivery is actually a WP tree, refuse StaticHost and send it to a PHP host. Related: host a personal HTML website when you are rebuilding simply instead of debugging a messy export.

Acceptance test procedure (30 minutes)

Before you tell a client “it is live,” run this against HTTPS preview—not against the zip on your laptop alone:

  1. Homepage hero, primary CTA, and mobile nav.
  2. Every footer link; note external vs internal.
  3. Contact form submit against the third-party endpoint (look for HTTPS and a success state).
  4. One interior page per main IA branch.
  5. Favicon and Open Graph image requests in the Network panel.
  6. Deliberate 404 path to see whether a custom 404.html exists (optional) versus a generic miss—remember this is not SPA fallback.
  7. Bandwidth sanity: a single page should not download tens of megabytes of unoptimized video unless contracted.

Log failures in the intake ticket. Fix files, re-zip from the correct root, redeploy. Use deploy history if “FINAL_v7” is worse than the previous artifact. Only then start DNS. Certificate issuance waits on verification; preview TLS already proved the bytes.

Who rebuilds next quarter?

Write the answer in the handoff note: repo URL, build command (even if “none—hand HTML”), who owns copy changes, and which StaticHost plan holds the site (Starter $9 / Pro $30 / Scale $65 / Business $130). Prebuilt without ownership becomes an orphan. Agencies juggling many orphans should read static hosting for agencies. Designers exporting from tools: static hosting for designers.

If the delivery is secretly WordPress, stop. StaticHost will not run PHP. If it is secretly an unbuilt React src/, send it back for a production dist//build/. Strict nginx (try_files $uri $uri/ =404) will not flatter either mistake.

Worked example: mixed-content emergency after DNS

Preview looked perfect on StaticHost’s HTTPS hostname. After cutover to https://client.example, the console fills with mixed-content blocks because the agency hard-coded http://legacy.cdn.example/... for scripts.

  1. Roll back only if the new tree is worse overall; otherwise keep the tree and patch assets.
  2. Download the current artifact; replace http:// script/style URLs with HTTPS or self-host the files into js/ and css/.
  3. Re-zip from the corrected root; redeploy; confirm on the custom domain.
  4. Update the handoff note so the next edit does not reintroduce hotlinks.
  5. Remind stakeholders StaticHost has no email product and no built-in CDN product—third-party CDNs you hotlink are your dependency risk.

This is why intake must open index.html and scan for absolute http:// before the marketing blast. Plans stay Starter $9 / Pro $30 / Scale $65 / Business $130 after a ~1 day trial with no forever-free tier.

FAQ

The zip contains both src and dist—what do I upload?

dist (or equivalent output) contents only.

Can I tweak one line of HTML on the server?

Prefer editing locally and redeploying so preview and history stay coherent.

What if fonts are hotlinked to a trial CDN that expires?

Self-host font files in the tree and redeploy.

Is prebuilt the same as “no Git”?

Often yes; zip is enough. Add Git when updates become frequent.

How do I know it’s prebuilt versus needing a build?

If opening index.html plus assets works without npm run build, treat as prebuilt. If only src/ exists, you must build first—or return it to the vendor.