Flow · 10 steps
Run beside your old system, then go live
Run Manifold beside your old system, then go live.
A new organization is read-only. Orders come in, stock and imports land and the team works in Manifold, but nothing leaves it: nothing to a store, no journal to an accounting system, no email to a customer or supplier, no webhook to an app.
Going live is final. It records who decided and when. Nothing held while read-only is sent later: each store and ledger catches up from things as they are now. Going live also completes the opening stocktake, so the books begin at that moment, and a stock SKU with no cost holds it back.
This walk sets the organization read-only first, then takes it live.
Services involved
A filled dot is a read; a ring is a call that changes something.
- Auth:
https://auth.getmanifold.io - Inventory Manager:
https://inventory.getmanifold.io
Every call carries Authorization: Bearer $MANIFOLD_TOKEN unless its step says otherwise
(getting a token). Run a flow in your sandbox, not your live
organization: see Before you start.
1 Read where the organization stands
The mode, and who last changed it. Any token for the organization may ask — a person's, a service's, an app's — and an app that writes outward for an organization asks exactly this before it does.
GET /api/auth/mode Auth
What the answer holds: the operation's example.
2 Hold everything outbound
An owner puts the organization into read-only mode. From here every push to a store or a ledger is refused with the reason, and mail to customers and suppliers is recorded as not sent; inbound work is untouched.
POST /api/auth/organizations/org_01a1586e-f9f6-7a8b-9c7d-6e5f4a3b2c1d/read-only Auth
What the answer holds: the operation's example.
Records auth.org-set-read-only.
3 Ask for read-only again
Idempotent by state: an organization already read-only is answered as it stands, with no second fact.
POST /api/auth/organizations/org_01a1586e-f9f6-7a8b-9c7d-6e5f4a3b2c1d/read-only Auth
What the answer holds: the operation's example.
Records nothing.
4 Stock a SKU nobody has valued
Three oak lamps on the shelf, with no cost yet — the books cannot open on them.
POST /items Inventory Manager
{
"sku": "LAMP-OAK",
"name": "Oak lamp",
"quantity": 3
}Answers 201. What the answer holds: the operation's example.
Records inventory.item-created.
5 Try to go live before it is valued
Going live completes the opening stocktake, starting one when none is open — but every stock SKU needs a cost first. Refused with OpeningStocktakeIncomplete naming the lamp; the organization stays read-only, and the stocktake it started waits to be valued.
POST /api/auth/organizations/org_01a1586e-f9f6-7a8b-9c7d-6e5f4a3b2c1d/go-live Auth
{
"_tag": "OpeningStocktakeIncomplete",
"stocktakeId": "stk_019a0f3c-5e20-7b41-8c52-6d7e8f9a0b1c",
"missing": 1,
"skus": [
"LAMP-OAK"
]
}Records inventory.stocktake-started.
6 Find the opening stocktake
The one going live started: open, over every live location, waiting for its costs.
GET /stocktakes Inventory Manager
What the answer holds: the operation's example.
From your answer, later steps send items[0].id as {stocktakeId}.
7 Value the lamp
$12.50 a lamp. Counts and costs are entered while read-only — they move nothing — but only going live completes a read-only organization's opening stocktake.
PUT /stocktakes/{stocktakeId}/counts Inventory Manager
{
"costs": [
{
"sku": "LAMP-OAK",
"unitCostCents": 1250
}
]
}What the answer holds: the operation's example.
Records inventory.stocktake-counted.
8 Go live
The business accepts Manifold acting for it. The opening stocktake completes first — the lamps counted at what inventory holds, at their cost — so the books open now; then the fact names the owner who accepted, and from the next moment a service asks, outbound work runs.
POST /api/auth/organizations/org_01a1586e-f9f6-7a8b-9c7d-6e5f4a3b2c1d/go-live Auth
What the answer holds: the operation's example.
Records auth.org-went-live, inventory.stocktake-completed.
9 Read it back
Live, with the owner who took it there and when — what the admin's badge and every outbound service now see.
GET /api/auth/mode Auth
What the answer holds: the operation's example.
10 Try to go back to read-only
Going live is final: the legacy platforms were drained and the source's lock lifted on the strength of it. Refused with GoLiveIsFinal, and nothing is appended.
POST /api/auth/organizations/org_01a1586e-f9f6-7a8b-9c7d-6e5f4a3b2c1d/read-only Auth
{
"_tag": "GoLiveIsFinal"
}What a recorded fact is: Facts and the journal. Why a repeated step changes nothing: Idempotency and retries.