The number, in writing
Not the estimate you build yourself. Not the invoice you get once you're a customer. The number in between — and everything it does and doesn't cover.
Only one of them is a quote
Both are honest. Only one of them is a promise.
An estimate
A number you build yourself, on the spot, from the posted rate card. The estimator and the selector both produce one, and a spec sheet gives it a shareable link. Nobody on our side has seen it yet.
A quote
A number we send back, in writing, for the workload you actually describe to us — within one business day. It is what this page is about.
Four fields and a paragraph
No discovery call required to get a number back.
- NameRequired
Who to send the quote back to.
- EmailRequired
Where it arrives.
- CompanyOptional
Optional — only if there is one.
- WorkloadOptional
A rough shape: static site, dedicated instance, both, custom, or not sure yet.
One paragraph: the stack, rough traffic, and anything odd. That, plus the fields above, is the whole ask.
Hop by hop
Within one business day, from the first hop to the last.
- 1You
You send the brief
Name, email, a rough workload shape, and one paragraph — through the quote form, not a scheduled call.
- 2CustomHosted
We match it to a plan, or flag it as custom
Named plans cover most workloads. Anything that doesn't fit gets designed instead — see "When it does not fit a plan" below.
- 3CustomHosted
The number comes back, in writing
Within one business day. That is a target we hold ourselves to, not a clause in the SLA — see the honest limits below.
- 4You
You accept, or ask a follow-up question first
A complicated or undocumented app can need one round of questions before the number is final.
What's actually on it
One example configuration, priced the same way the estimator and the invoice price it. A specimen for illustration, not a real customer's quote.
| Line | Detail | Rate |
|---|---|---|
| Static Pro | Multiple sites & environments · staging · redirects/headersFair use: ~500 GB transfer/mo | $15/mo |
| Iteration — CodeHerder loop | Brief a change in plain words. An agent opens a pull request, a person reviews it, and the same pipeline ships it. | +$25/mo |
| DB Standard | Postgres · 2 GB RAM · 40 GB storage7-day PITR | +$25/mo |
| Total, this specimen | $65/mo |
The Iteration — CodeHerder loop line above ($25/mo) is the only line on that table that buys a process rather than a resource. This is the process — the same path Patching walks through for a flagged dependency:
- 1
A routine scan flags a dependency
The same kind of check that watches the infrastructure layers, run against your application’s own dependency list.
CustomHosted
- 2
It's triaged as application-level, not infrastructure
A library your own code imports isn't ours to patch silently — it can change how the app behaves.
CustomHosted
- 3
Briefed as a change
Written up the same way any other change request is. The iteration add-on is what covers it.
CustomLabs
- 4
An agent opens the pull request
The upgrade lands as a real pull request against the repository, with the test suite run against it.
CodeHerder
- 5
A human reviews and merges
Someone reads the diff before it goes anywhere near production — nothing here is auto-applied blind.
CustomLabs
- 6
It ships through the same pipeline
The same pipeline that deploys everything else on your stack ships this too — no separate process to babysit.
CustomHosted
- 7
You're told it's done
A note confirming what changed and that it merged, in the same shape as every other note on this site.
CustomHosted
What the number doesn't cover
Said plainly rather than found out later.
Costs you owe somewhere else
A domain registration, a payment processor's own fee, anything a third-party service bills you directly. See Domains and Outside services.
Building the software itself
Designing or building an app is a CustomLabs job, priced on its own. If you've got a half-built app, a prototype, or nothing written down yet — CustomLabs designs and builds the first version.
Anything past fair use
Static Starter: ~100 GB transfer/mo. Static Pro: ~500 GB transfer/mo. Past that, we reach out before anything on the account changes.
Nothing, until you say yes
A quote is a number, not an order.
Nothing, until you accept
A quote is not an order. Nothing is provisioned and nothing is billed until you say yes.
Cancel
Either side can end the service at any time. It stops at the close of the current monthly cycle, with no early-termination fee.
No lock-in
You receive the full pack and stand it up wherever you like — another provider, or back in-house. Free, documented, no rebuild required from us.
What moves the number, once you're on it
The same ledger Billing keeps, from the quote's side of it.
Moves it
Adding a plan, add-on, or database
The new line appears on the next invoice, at its posted rate.
Removing a plan, add-on, or database
The line drops off the next invoice. The capability itself stops the day you ask, with no pro-rated charge and no pro-rated credit.
Changing tier
Moving between tiers works the same way as adding or removing a line: the new rate appears on the next invoice.
A posted rate change
Rates can change, with 30 days' notice before a new one takes effect on your account.
Tax, where it applies
Shown as its own line on the invoice — never folded into the rate itself.
Never moves it
A traffic spike
The rate is flat, up to the plan's posted fair-use transfer allowance.
How many deploys you ship
Deploys are not a metered event on this platform.
How many changes you brief to the agent
The iteration add-on is a flat monthly line, however many changes you brief in a month.
A restore
Pulling a backup back in is part of the service, not a billable event.
A support request
Writing in through the quote channel costs nothing extra, however many times you do it.
Patching, or a certificate renewal
Routine maintenance the rate already covers.
An incident, or a rollback
Both are handled at no extra charge. A long enough outage moves the number the other way instead, as a service credit.
Nothing here forces a workload into the wrong tier
The rate card's Custom row promises exactly one thing: Fixed monthly quote within one business day. A queue, a full stack, several databases — anything a named plan wasn't sized for gets designed to the workload instead, then quoted the same way as everything else on this page. See Custom for what that path actually covers.
This site's own quote path
What actually reaches us, not a description of it.
- 1
Configure it
The estimator or the selector builds a QuoteSpec — a plan, its add-ons, and a database, if any.
- 2
It travels in the link
encodeSpec turns that configuration into a URL query string — the same one a spec sheet permalink carries.
- 3
The form reads it back
The quote form calls parseSpec on load. It fills in the spec plate, the hidden fields, and a starting paragraph — visibly, before anything is sent.
- 4
You add the rest
Name, email, and anything the configuration alone doesn't say.
The quote is only the start of it
See Onboarding for the full hour-by-hour timeline.
- Day 1
Stack goes up as code
The agreed shape is provisioned from an infrastructure definition, and a copy of the site or app stands up alongside it for you to check.
- Day 2–3
Rehearsed cutover, go-live
DNS and TLS switch over on a schedule you set, checked against the standing copy first, with a rollback ready.
- Week 1
First briefed change ships
Brief a small change in plain language; an agent opens a pull request and CI ships it once it's reviewed. Anything larger goes to CustomLabs instead of through the loop.
- Ongoing
Monitoring, backups, patching
Running quietly from here on, with a named human if anything ever needs a decision from you.
- No console to learn — nothing to click through before you can even ask a question.
- No CI pipeline to write. The one already running here ships every merge.
- No on-call rota. A named human carries that instead of you.
- No ticket queue — the quote form is the one channel, in both directions.
- No per-request bill to model. One flat number, agreed before anything starts.
- No renewal to remember: TLS, patching, and backups just keep happening on their own.
The honest limits
No invented commitment. No number without an artifact behind it.
A target, not an SLA clause
Within one business day is what we hold ourselves to for a reply. It is not a term in the binding document, which covers availability rather than reply speed. See the SLA.
A complicated app can need a question first
Most quotes need nothing further. An undocumented or unusual workload can need one round of questions before the number is final.
The number assumes the workload you described
A different workload — more traffic, a different shape — gets a different number.
Not a software build quote
This number prices hosting — the plan, add-ons, and database. Designing or building the app itself is priced separately, by CustomLabs.
Costs owed elsewhere are not in it
The number covers what we run. Anything a third party bills you directly sits outside it — see "What the number doesn't cover" above.
What the quote connects to
- Limits
Every limit on this quote and every other page, collected in one list — read it before you ask for a number.
- Pricing
The posted rate card and the estimator this page's specimen quote is built from.
- Spec sheet
The shareable estimate sheet — the number you build yourself, before you ever ask for a quote.
- Billing
What happens once the quote becomes an account: the invoice cycle, and the same specimen lines as a real bill.
- Get a quote
The quote form itself, and where a submitted brief actually goes.
- Onboarding
What happens hour by hour once you accept the number this page describes.
- Custom
The bespoke path this page's "when it does not fit a plan" section points at.
- Compare
How the number this page describes stacks up against rolling it yourself or hiring an agency.
Ready for a real number?
Tell us what you're running — a fixed monthly quote, back within one business day.