A typo, a price, a page — the words on your site, and who changes them.
This site names the stuck typo and the page that waits forever more than once, with nowhere to send you. This page is that place: how a word actually changes, on a site with no admin screen to log into.
A word, a picture, a page
Almost every request to change a site is one of these three.
- 1
A word
A typo, a price, a sentence rewritten. The smallest kind of change, and by far the most common one.
- 2
A picture
A photo swapped, a logo updated, or an image replaced with a lighter one — along with the alt text a screen reader speaks for it.
- 3
A whole new page
A page that does not exist yet, added to the site and linked from somewhere a visitor actually reaches.
By hosting shape
A repository, a database, or an outside service — never all three at once.
A static build
Every word and picture lives in the repository, as a file. Changing one is a change to that file, reviewed the same way as any other line of code. See Repository.
A CMS-driven app
Words and pictures live as rows a database holds, not files in the repository. Changing one is a row update, made through whatever admin screen the app itself provides. See Databases.
A headless CMS
Content sits in an outside service, and the site's build or app fetches it from there rather than holding it. A record lives there permanently, not just passed through on a single call. See Outside services.
A briefed picture, and an uploaded one
A picture you brief into the site is committed with the build. Every hosting shape holds one, Static included. Swapping a hero image needs no disk at all.
The table below answers the other case: a picture a visitor or an editor uploads while the site runs. That one needs a writable disk, which is why Static reads "None". See Files for that case in full.
| Shape | Plan | Disk | Detail |
|---|---|---|---|
| Static | Static Starter | None | A static site has no writable disk. There is nowhere to put an upload. |
| Dedicated | Dedicated S | 40 GB SSD | The instance's own disk, sized into the tier's flat rate. Not a metered add-on. |
| Dedicated | Dedicated M | 60 GB SSD | The instance's own disk, sized into the tier's flat rate. Not a metered add-on. |
| Dedicated | Dedicated L | 80 GB SSD | The instance's own disk, sized into the tier's flat rate. Not a metered add-on. |
| Custom | Custom | Sized to the workload | Durable storage sized and priced for what you actually keep, the same as any other Custom shape. |
Who opens it, and who merges it
Your own team decides what goes live. We can review and merge for you, if you ask. See Access for who can touch the rest of a running system.
| Capability | Your team | CustomHosted | The pipeline | CodeHerder agent |
|---|---|---|---|---|
| Open a pull request | Any of your own contributors can. | The same as any other contributor, reviewed the same way. | It ships a merge. It does not propose one. | Only ever on its own branch, never on the branch that ships. |
| Merge to the main branch | This is your call to make. | Only if you have asked us to review and merge for you. Most teams keep this step themselves. | It deploys after a merge. It does not decide to merge. | Never. A person approves the pull request first. |
From a wrong price to a live fix
A content change starts with a person who reads the page. Every step after the brief is the step any other change here takes. CustomLabs builds the first version of a site. CodeHerder iterates on it. CustomHosted runs what ships. See The Loop for the whole arc.
- 1
You notice it
YouA wrong price, a typo, a page that is missing. Nothing here watches for this. A person reads the page and sees it.
- 2
You describe it in plain language
YouSay what to change and where it appears. No ticket template, and no technical wording — see Brief a change for the five parts of a good one.
- 3
Briefed as a change
CustomLabsWritten up the same way any other change request is. The iteration add-on is what covers it.
- 4
An agent opens the pull request
CodeHerderThe change lands as a real pull request against the repository, with the test suite run against it.
- 5
A human reviews and merges
CustomLabsSomeone reads the diff before it goes anywhere near production — nothing here is auto-applied blind.
- 6
It ships through the same pipeline
CustomHostedThe same pipeline that deploys everything else on your stack ships this too — no separate process to babysit.
- 7
You're told it's done
CustomHostedA note confirming what changed and that it merged, in the same shape as every other note on this site.
The same downtime picture as any other change
Static site
None — there is no running process to restart.
Dedicated instance
A few seconds while the process restarts. A health check confirms it answers correctly before the window closes.
Managed database, minor version
A brief connection blip during failover — existing connections reconnect on their own.
A private staging copy, and a way back
Private by default. Not linked from anywhere on your live site, not submitted to a search engine, and left out of the sitemap. Reaching it is a matter of knowing the address and being allowed in — access is controlled, not just unlisted.
Revert the merge
The same pipeline that shipped the change redeploys the last known-good version. No data touched, because none was.
Promote the previous deploy
On static hosting, the last deploy is already built and kept. Going back is a request through the usual channel, a straight promotion of it rather than a rebuild.
A data problem is a restore, not a rollback
If the thing that's wrong is data rather than code, that's the other procedure entirely — see Recovery for the backup and point-in-time paths, and where that boundary actually sits.
A briefed change, not a new project
A word or a picture is a briefed change
Agentic iteration — CodeHerder ($25/mo) covers it, the same as any other small change. Brief a change in plain words. An agent opens a pull request, a person reviews it, and the same pipeline ships it.
It draws from the same iteration allowance
3 changes a month, 2 hours each — the same allowance a config change or a new page draws from.
A brief that needs pricing first is quoted flat
Quoted within one business day if the change itself needs pricing before anyone starts on it.
This site's own content
Every number below is counted from the build, not hand-typed.
- This site is the worked example. It has 87 routes, 134 glossary terms, and 37 guide sections. Each one is a word or a page, written and shipped the same way a client's would be.
- 3 of the checks that run on every deploy here guard content directly. One confirms a page's own index still matches its bands. One confirms the machine-readable directory lists every route once. One confirms every route still carries one title, one description, and valid structured data. See Being found.
The checks that guard it
- check:anchorsEvery hub page's "On this page" index still matches its own numbered bands, in order.
- check:llmsThe machine-readable site directory lists every route exactly once, and every link actually resolves.
- check:seoEvery route carries one canonical URL, one title, one description, and valid structured data — and nothing meant to stay out of the index does.
And the route out of each
A picture too heavy for the page budget
Owner: You, briefed through CodeHerderA large image can push a page past its own published weight budget. Resizing it before it ships is part of the same briefed change. See Images.
A new page nobody linked to
Owner: YouA page that exists but is linked from nowhere is hard for a visitor, and a crawler, to ever find. Brief where it should be linked from, not just the page itself. See Being found.
A word changed in one place, and not the other three
Owner: YouThe same price or the same name printed on more than one page drifts the moment only one copy is updated. Brief every place a word appears, not just the one you noticed. See Brief a change.
A change went live before you saw it
Owner: YouMerging a pull request is the step that ships it, not opening one. Click the staging link first, the same way any other change gets checked before it merges. See Review.
The honest limits
No admin screen to log into
A static build has no dashboard, no login, and no button that edits a live page. Every word or picture ships as a briefed pull request instead.
No keyword research or content strategy
Choosing what to write about, and which words to use, is your call. We keep the technical side clear; we do not plan your content.
Nothing merges itself
There is no setting that lets an agent merge its own pull request. A person approves every change, including when you would prefer that it did not.
A redesign
Changing the visual system before there is anything to react to needs a plan, not a diff. Start that as a build with CustomLabs, then bring the iterations here.
Content questions
A typo or an out-of-date price has been wrong for months. How do we fix it?
Brief it in a sentence — the word or the price to change, and where it appears. An agent opens a pull request, the checks run, and a person approves it before it merges.
There is no login for our site. How do we add a page?
The same way as any other change: brief what the page should say and where it should link from. See the worked artifact above for what that path actually ships.
Is there a content management screen we can log into?
No, on a static build. See the honest limits above — every word or picture ships as a briefed pull request, not a dashboard.
What is a headless CMS, and do you support one?
A service that holds your content and hands it to your site's build or app over its own API, rather than storing it in the repository. See "Where content actually lives" above for how it differs from a static build or a database-backed app.
Does changing a word take the site down?
No. See "What it takes down" above — the same downtime picture as any other change, by hosting shape.
Can I see a content change before it goes live?
Yes. It stands on a private staging copy first — see "Seeing it before it is live" above for the address and how to go back if it is wrong.
What does fixing a typo cost?
Nothing extra on its own — it draws from the same 3-changes-a-month allowance as any other small change, under Agentic iteration — CodeHerder ($25/mo). See "What it costs" above.
Can CodeHerder redesign our site?
No. Changing the visual system before there is anything to react to needs a plan, not a diff. Start that as a build with CustomLabs, then bring the iterations here.
What content connects to
- Brief a change
How to write the brief that describes a content change, before an agent ever opens a branch.
- Review
The approval decision once the pull request for a content change arrives.
- Deploys
What actually happens between a merged word and it serving real traffic.
- Repository
The one copy of the code a static build's words and pictures live in.
- Files
A file your app writes while it runs — a different thing from a picture checked into the repository.
- Being found
Whether a machine reader can find a page once it exists — the other half of a new page shipping well.
- In flight
What happens once a content change like this one is briefed — why one runs at a time, and what sets the order.
Got a word, a picture, or a page to change?
Brief it, and it comes back as a pull request — one fixed monthly rate, in writing.