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.

PlanPriceSitesStorageAgency-relevant extra
Starter$9/mo12 GBToo small for multi-client
Pro$30/mo310 GBStaging
Scale$65/mo1030 GBVolume microsites
Business$130/mo30100 GBTeams

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.

  1. Create three StaticHost sites with clear names (acme-law, saas-refresh, summit-2026).
  2. Law firm: designer exports Webflow HTML; you flatten the zip so index.html is at the archive root, upload, and share HTTPS preview with the partner for copy QA.
  3. SaaS refresh: engineering’s CI builds Vite into an artifact branch; StaticHost tracks that branch. You confirm they shipped HashRouter or prerendered routes before anyone pastes a deep link into Slack.
  4. Event microsite: hand-built landing page; vanity hostname go.client.com. Preview first, then DNS, then cert—never ads before the padlock is real.
  5. 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:

  1. Confirm deliverable is prebuilt HTML/CSS/JS (or generator public/dist/_site).
  2. Confirm routing strategy documented in the SOW (multipage files, hash SPA, or SSG).
  3. Zip or artifact-branch root contains index.html at the served root.
  4. Deploy to StaticHost; open HTTPS preview; click every nav item and CTA.
  5. Grep built output for http:// asset URLs; fix mixed content before DNS.
  6. Add hostname(s); create DNS; wait for verification; wait for certificate.
  7. Retest on the custom domain; confirm CORS allowlists include the new origin if APIs are involved.
  8. Record site ID, hostname, plan, and teardown date (campaigns) in the ticket.
  9. Hand client the rollback expectation: bad content → redeploy or roll back; bad DNS → registrar fix.
  10. 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

SymptomLikely causeFix
Client refreshes /pricing and sees 404History-mode SPA on =404 nginxHash routing or emit real files; update SOW
Preview shows empty rootZip nested site/index.htmlRe-zip contents of build folder
“Build failed on the host” ticketExpectation of remote npm/HugoBuild in CI; upload artifacts only
Staging and production show same API errorsIdentical env baked into both bundlesRebuild staging with staging VITE_* / PUBLIC_*
Custom domain still serves old WordPressDNS not flipped or TTL cacheVerify records; wait; keep preview as source of truth
Invoice shock at month endForgotten campaign sitesTeardown runbook; downgrade when under limits
Designer cannot log inShared password cultureBusiness teams + per-person GitHub access
Form “email to client” never arrivesAssumed host mailboxesForm 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.