Agencies buy site counts and rollback, not mystery PaaS
An agency’s static hosting problem is inventory: dozens of microsites, staggered launches, client domains, staging approvals, and the occasional “put last week’s build back.” StaticHost prices that inventory explicitly.
| Plan | Price | Sites | Storage | Agency-relevant extra |
|---|---|---|---|---|
| Starter | $9/mo | 1 | 2 GB | Too small for multi-client |
| Pro | $30/mo | 3 | 10 GB | Staging |
| Scale | $65/mo | 10 | 30 GB | Volume microsites |
| Business | $130/mo | 30 | 100 GB | Teams |
Trial ~1 day; no forever-free. Zip or GitHub of prebuilt files. HTTPS preview immediately. Certificates after DNS verifies. Deploy history/rollback. No remote npm/Hugo/Jekyll. No SPA fallback (try_files $uri $uri/ =404). No cPanel, no email, no built-in CDN product.
Operating model
One site per property. Do not cram unrelated clients into folders on one hostname. Site quotas exist so you can isolate deploys and domains.
Staging before production. On Pro+, use staging to bake client QA. Clients click HTTPS staging URLs; you only promote when approved. Production rollback remains the safety net when someone bypasses process.
Artifact discipline. Developers build in CI; designers export HTML; neither uploads node_modules. Publish dist/public/_site contents—dist, zip.
Routing honesty in SOWs. If engineering delivers a React SPA, the SOW must specify hash routing or SSG file emission for StaticHost—or specify a different host. Surprising a client with refresh 404s is an agency self-own—SPA.
Domain factory
Each client domain: add hostname, create DNS at their registrar (or your DNS reseller), wait for verification, wait for cert—custom domain. Keep a checklist in your PM tool. Mixed content greps before launch—SSL.
Teams on Business
Business adds teams so access is not a single shared password in a 1Password note titled “hosting.” Combine with GitHub permissions for artifact branches. Still no mailbox product—set expectations in onboarding decks.
Campaign churn
Agencies spin campaign pages up and down. Use Scale/Business site counts, and schedule teardown so you do not pay forever for dead microsites—campaign landing page. Evergreen landers: landing page hosting.
Pricing conversation with clients
Pass through hosting as a line item or absorb into maintenance retainers. $9–$130 at the agency tier is usually smaller than the hours you burn on VPS snowflakes. Compare DIY cloud: where to host.
When to decline StaticHost for a client
- They need WordPress editor workflows on the same origin → PHP host.
- They need host-native serverless functions → JAMstack platform with functions.
- They insist on history-mode SPA without SSG → different nginx story than this product.
Decline early; switching hosts mid-launch taxes trust.
Worked example: three-client week on Scale
Imagine Monday you inherit three launches: a law firm brochure rebuild, a SaaS product marketing refresh, and a two-week event registration microsite. Scale ($65, 10 sites, 30 GB) gives you room without jumping to Business yet.
- Create three StaticHost sites with clear names (
acme-law,saas-refresh,summit-2026). - Law firm: designer exports Webflow HTML; you flatten the zip so
index.htmlis at the archive root, upload, and share HTTPS preview with the partner for copy QA. - SaaS refresh: engineering’s CI builds Vite into an artifact branch; StaticHost tracks that branch. You confirm they shipped
HashRouteror prerendered routes before anyone pastes a deep link into Slack. - Event microsite: hand-built landing page; vanity hostname
go.client.com. Preview first, then DNS, then cert—never ads before the padlock is real. - Friday: summit legal rejects a claim. Roll back production to Thursday’s deploy from history while staging on Pro-or-higher absorbs the revised copy.
None of these steps ask StaticHost to run npm. All of them treat site count as inventory you can tear down when the summit ends. That is agency-shaped hosting: reversible deploys, isolated properties, and explicit quotas.
Launch checklist you can paste into tickets
Copy this into your PM tool for every static client launch:
- Confirm deliverable is prebuilt HTML/CSS/JS (or generator
public/dist/_site). - Confirm routing strategy documented in the SOW (multipage files, hash SPA, or SSG).
- Zip or artifact-branch root contains
index.htmlat the served root. - Deploy to StaticHost; open HTTPS preview; click every nav item and CTA.
- Grep built output for
http://asset URLs; fix mixed content before DNS. - Add hostname(s); create DNS; wait for verification; wait for certificate.
- Retest on the custom domain; confirm CORS allowlists include the new origin if APIs are involved.
- Record site ID, hostname, plan, and teardown date (campaigns) in the ticket.
- Hand client the rollback expectation: bad content → redeploy or roll back; bad DNS → registrar fix.
- Schedule a 30-day post-launch cleanup for unused staging assets and retired campaign sites.
Running this checklist beats “we’ll figure hosting out in week three,” which is how agencies donate margin to chaos.
Failure table: agency hosting incidents
| Symptom | Likely cause | Fix |
|---|---|---|
Client refreshes /pricing and sees 404 | History-mode SPA on =404 nginx | Hash routing or emit real files; update SOW |
| Preview shows empty root | Zip nested site/index.html | Re-zip contents of build folder |
| “Build failed on the host” ticket | Expectation of remote npm/Hugo | Build in CI; upload artifacts only |
| Staging and production show same API errors | Identical env baked into both bundles | Rebuild staging with staging VITE_* / PUBLIC_* |
| Custom domain still serves old WordPress | DNS not flipped or TTL cache | Verify records; wait; keep preview as source of truth |
| Invoice shock at month end | Forgotten campaign sites | Teardown runbook; downgrade when under limits |
| Designer cannot log in | Shared password culture | Business teams + per-person GitHub access |
| Form “email to client” never arrives | Assumed host mailboxes | Form SaaS endpoint; set mail expectations early |
Keep this table in your internal wiki. Most “StaticHost is broken” threads dissolve into one of these rows.
Retainer math without romanticizing infra
A messy VPS per client looks cheap until someone has to patch it, renew a cert by hand, and explain an afternoon outage. StaticHost’s $30–$130 bands are often less than a single mid-level engineer hour burned on snowflake recovery. Price hosting as either:
- Pass-through: client pays plan + your markup for monitoring and deploys.
- Bundled retainer: you absorb Starter/Pro costs into a monthly care plan and reserve Scale/Business for multi-brand accounts.
Either model works when you stop treating hosting as an afterthought line that junior staff invent differently on every project. Standardize on prebuilt artifacts, HTTPS-preview-first launches, and honest SPA constraints. Companion reads for the sales deck: static website hosting pricing and free vs paid.
FAQ
Can we white-label the preview URL?
You will primarily brand with client custom domains. Preview hostnames are for QA.
How do we handle 15 clients on Pro?
You do not—Pro has 3 sites. Move to Scale (10) or Business (30).
Who runs npm run build?
Your CI or developers—never StaticHost.
Is staging a full separate site?
Treat it as the non-production deploy target the product provides on Pro+; keep env-specific builds distinct.
Can we host client email?
No. Coordinate a mail vendor separately.