# Go-live checklist: stages, owners, verification and rollback

Write a named person, not a team, into every Owner cell before the cutover starts, then tick each row when its verification passes, not when the work is finished. The progress and the open blockers at the side update as you go, and a blocking row stops the next stage until it passes. Agree the content freeze window and the launch date together before you begin.

## How to read the columns

- **Owner** is a named person, not a team. Fill it in for every row before the first stage starts.
- **Passes when** is the verification for the row. The row is done when it passes, not when the work is finished. If a blocking row has no verification you can describe, have the supplier write one before the stage starts.
- **Blocking** marks the rows that stop the next stage until they pass. Open blockers are counted at the side.
- **Rollback trigger** is the condition that sends the named caller back to the old stack. Fill in each agreed time limit before the switch stage.

### Stage 1: preparation (weeks before)

|  | Owner | Passes when | Rollback trigger | Blocking |
|---|---|---|---|---|
| [ ] Find out who controls the domain records, inside or outside the group |  | Contact and change lead time written down | None | Yes |
| [ ] Lower time to live on every record that will change |  | New values confirmed, old values noted | None | Yes |
| [ ] Prepare the new records without activating them |  | Checked by a second person against the hosting target | None | Yes |
| [ ] Issue and install certificates on the new stack |  | A test hostname serves with a valid certificate | None | Yes |
| [ ] Build the redirect map from access logs, analytics landing pages and the search index |  | Every old URL above the agreed request count has a destination | None | Yes |
| [ ] List every other system changing in the same window |  | Each has an owner and a place in the sequence | None | Yes |
| [ ] Write the rollback position (below) |  | Trigger, caller, return path and return time signed off | None | Yes |

### Stage 2: verification (days before)

|  | Owner | Passes when | Rollback trigger | Blocking |
|---|---|---|---|---|
| [ ] Start the content freeze |  | Editors confirmed in writing, editing rights reduced | None | Yes |
| [ ] Load the final content into the new stack |  | Agreed sample of pages matches the frozen state | None | Yes |
| [ ] Test the redirect map against the new stack |  | Every mapped URL lands where expected, no chains | None | Yes |
| [ ] Test forms, tracking and consent |  | A test submission arrives, tracking fires | None | Yes |
| [ ] Test any second brand domain or host based routing |  | Each hostname serves the expected brand | None | Yes |
| [ ] Test integrations with outside systems |  | A test record reaches the receiving system | None | Yes |

### Stage 3: switch (the day)

|  | Owner | Passes when | Rollback trigger | Blocking |
|---|---|---|---|---|
| [ ] Confirm the freeze holds and the old stack answers internally |  | Confirmed by the stage owner | None | Yes |
| [ ] Activate the new records |  | Change logged with a timestamp | Records cannot be activated cleanly | Yes |
| [ ] Confirm propagation from two networks |  | Site served from inside and outside the office | Not reachable after the agreed propagation time | Yes |
| [ ] Smoke test the top 20 pages and top 20 redirects |  | All return the expected content or destination | Any of the 40 fails | Yes |
| [ ] Send a test enquiry or order |  | Arrives in the receiving system | Not arrived within the agreed time | Yes |
| [ ] Lift the content freeze |  | Announced in writing by the switch owner | None | No |

### Stage 4: observation (the window after)

|  | Owner | Passes when | Rollback trigger | Blocking |
|---|---|---|---|---|
| [ ] Watch error rates and request counts |  | Error rate within the agreed band for the whole window | Above the band for longer than the agreed time | Yes |
| [ ] Watch the redirect log for unmapped old URLs |  | Misses added to the map the same day | None | No |
| [ ] Confirm search engines are crawling the new URLs |  | New URLs appear in their reporting | None | No |
| [ ] Compare enquiries with the week before |  | Count within the normal range | Enquiries stop entirely | No |
| [ ] Restore time to live, then decommission the old stack |  | Only after the rollback date has passed | None | No |

**Rollback position.** Fill in before the switch stage and circulate to every owner.

- What we return to: the old stack on its existing records, kept running until a written date
- How long the return takes: minutes, with time to live lowered
- Who may call it: one named person, reachable throughout the switch and observation window
- What triggers it: the Rollback trigger column above, with each time limit filled in

Run the list against your own plan or your supplier's and take the empty Owner cells and the blocking rows without a describable verification into the next conversation. An empty Owner cell means you are not ready, whatever the date says, and if no rollback trigger exists anywhere, that is the answer to "our agency says it will be fine".

