Launch checklist: reduce first-day risk with a staged rollout plan
This guide is for non-engineers planning a software launch with an agency. You will leave with a concrete launch plan that shifts risk into a rehearsal period, limits blast radius on day one, and gives you clear go/no-go checks, rollback steps, and ownership.
TL;DR — The riskiest launch is the one where traffic, data, payments, email, and monitoring all go live at the same moment. Plan a staged rollout instead: freeze changes, rehearse in production-like conditions, launch to a small audience first, and write the exact rollback actions before launch day. Reading time: ~5 min
Goal
When you finish, you will have a written launch runbook with owners, timings, go/no-go checks, rollback steps, and a phased release plan so launch day is a controlled switch, not the first real test of your system.
Prerequisites
- Your project tracker or shared doc tool with edit access, for example Google Docs, Notion, or Confluence
- Access to your hosting dashboard and DNS provider dashboard (the service that manages your domain records)
- Access to your analytics dashboard, error tracking dashboard, payment dashboard, and email sending dashboard if your product uses them
- A list of the people involved in launch day with phone numbers or chat handles: business owner, agency lead, developer, designer, support contact, marketing contact
- Your public launch date and time zone
- Your production URL, for example
https://app.example.com - If your agency uses GitHub/GitLab/Bitbucket, read access to the deployment or release notes is helpful but not required
- A spreadsheet or table where you can copy the launch checklist below
Steps
Step 1: Create the launch runbook document
Create one shared document named exactly:
Launch Runbook - <project name> - <YYYY-MM-DD>
Copy this table into the document:
| Section | Owner | Time | Status | Notes |
|---|---|---|---|---|
| Change freeze starts | | | Not started | |
| Final rehearsal completed | | | Not started | |
| Backup confirmed | | | Not started | |
| Monitoring checked | | | Not started | |
| Launch decision made | | | Not started | |
| Limited rollout started | | | Not started | |
| Full rollout started | | | Not started | |
| Post-launch checks passed | | | Not started | |
| Rollback decision if needed | | | Not started | |
| Launch closed | | | Not started | |
You should see one shared document with a single table that every launch participant can edit.
Step 2: Set a change freeze before launch
In your shared document, add this exact text under a heading named Change freeze:
Freeze start: 48 hours before launch
Allowed during freeze: bug fixes for launch blockers only
Blocked during freeze: new features, design changes, copy rewrites, plugin installs, dependency upgrades, DNS changes not already planned
Approval required from: business owner + agency lead
If your team uses a task board, move any non-launch task to a column named exactly After launch.
You should see a clear freeze window and a visible list of work that will not be touched before launch.
Step 3: Write the exact go/no-go checks
In the same document, add a heading named Go/No-Go and paste this checklist:
GO only if all are true:
[ ] Production site opens at the correct URL
[ ] Login works for a test user
[ ] Signup works or is intentionally disabled
[ ] Payment test succeeds or payments are intentionally disabled
[ ] Transactional email (password reset / receipt) arrives
[ ] Analytics records one test visit
[ ] Error tracking shows no new critical errors in the last 30 minutes
[ ] Backup from the last 24 hours exists
[ ] Rollback steps are written and assigned
NO-GO if any are true:
[ ] Homepage returns an error
[ ] Admin access is broken
[ ] Database migration (database structure change) cannot be reversed or restored
[ ] DNS change has not propagated to the expected value
[ ] Payment or email provider is still in test mode by mistake
You should see a checklist that lets a non-engineer say "go" or "no-go" without guessing.
Step 4: Plan a limited rollout instead of a full switch
In your document, add a heading named Rollout plan and paste these exact phases:
Phase 1 - Internal only - 30 minutes
Audience: team and invited testers only
Traffic action: do not announce publicly
Success rule: complete all verification checks with no critical issue
Phase 2 - Small audience - 1 to 2 hours
Audience: email to a small customer segment or limited ad spend
Traffic action: 5% to 10% of expected day-one traffic
Success rule: error rate stable, pages load normally, support inbox manageable
Phase 3 - Full launch
Audience: public
Traffic action: publish announcement, full campaign, remove waitlist if used
Success rule: continue monitoring for 2 hours after announcement
You should see a launch plan where the first public traffic is not the first meaningful test.
Step 5: Write the rollback actions before launch day
⚠️ If you skip rollback planning, your team may argue during an outage while customers are waiting. Write the exact actions now, before emotions and time pressure are involved.
Add a heading named Rollback and paste this template, then fill in the bracketed items with your real values:
Trigger rollback if:
- Homepage error rate is above [5%] for [10 minutes]
- Checkout or signup is broken for [2] consecutive tests
- Critical data is being written incorrectly
Rollback actions in order:
1. Pause public announcements in [email tool/social scheduler/ad platform]
2. In hosting dashboard, redeploy previous stable release labeled [release name]
3. If a database migration ran, restore from backup named [backup name] only if approved by [owner name]
4. Re-enable maintenance page or waitlist page at [URL or dashboard location]
5. Post status update in [status page/chat channel]
Rollback owner: [name]
Approval required: [name]
You should see a rollback section with named owners and literal actions, not general advice.
Step 6: Rehearse the launch with the real checklist
In your calendar, create a meeting named exactly:
Launch rehearsal - <project name>
During the rehearsal, open the production-like environment (a staging copy that closely matches production) and complete these checks in order:
1. Open homepage
2. Log in as test user
3. Complete one core user journey
4. Trigger one email
5. Complete one payment test if applicable
6. Check analytics event appears
7. Check error dashboard for new critical items
8. Time how long the whole checklist takes
Record the actual time next to each item in the runbook.
You should see a completed rehearsal with realistic timings and any unclear step fixed before launch day.
Step 7: Confirm backups, monitoring, and contacts
Use your provider dashboards and record the exact values in the runbook.
Check these locations:
Hosting provider dashboard → Backups
Error tracking dashboard → Issues or Alerts
Analytics dashboard → Realtime or Live view
Payment provider dashboard → API keys / mode
Email provider dashboard → Sending domain / suppression / activity
DNS provider dashboard (for example Cloudflare: DNS → Records) → planned records only
Record these exact lines in the document:
Latest backup timestamp: <YYYY-MM-DD HH:MM TZ>
Error dashboard checked by: <name>
Payment mode: Live
Email sending domain status: Verified
DNS changes pending for launch: Yes/No
War room chat link: <URL>
Emergency phone list confirmed: Yes
You should see one place where the team can confirm the system is observable and recoverable.
Step 8: Run launch day from the document, not from memory
At launch time, open the runbook and update each row live. Use this order exactly:
1. Confirm freeze is still in effect
2. Confirm backup timestamp
3. Run Go/No-Go checklist
4. Start Phase 1 - Internal only
5. Wait 30 minutes and review errors/support messages
6. Start Phase 2 - Small audience
7. Wait 1 to 2 hours and review metrics
8. Start Phase 3 - Full launch
9. Monitor for 2 hours
10. Mark Launch closed
You should see a timestamped record of decisions, which reduces confusion and speeds up any rollback.
Verify it works
Your launch plan is ready if all of these are true:
[ ] One shared runbook exists with owners, times, and statuses
[ ] A change freeze start time is written
[ ] Go/No-Go checks are written and understandable to non-engineers
[ ] Rollout has at least 3 phases: internal, small audience, full launch
[ ] Rollback triggers and actions are written with named owners
[ ] A rehearsal was completed and timed
[ ] Backup timestamp, monitoring checks, and contact list are recorded
On launch day, the plan is working if:
- You can answer "who decides" and "what happens next" by reading the document
- The first public traffic arrives only after internal and small-audience checks pass
- If something fails, the team follows the rollback steps without inventing them live
Common pitfalls
Launching marketing and product at the exact same minute
Mistake: sending the full email campaign or ad traffic before internal checks finish.
Symptom: support messages and traffic spike before you know whether login, checkout, or email works.
Fix: delay public announcements until Phase 1 - Internal only and Phase 2 - Small audience are marked passed in the runbook.
Treating staging as optional
Mistake: using launch day as the first time the whole flow is tested end to end.
Symptom: integrations like payments, email, or analytics fail in production even though pages looked fine earlier.
Fix: schedule the Launch rehearsal - <project name> meeting and time the full checklist at least once before launch.
No named rollback owner
Mistake: writing "rollback if needed" without naming who can approve and who executes it.
Symptom: long delays during an incident because people debate responsibility.
Fix: fill in Rollback owner and Approval required with real names and phone numbers in the runbook.
Changing DNS, copy, pricing, and code during the freeze
Mistake: bundling late edits into the final 24 to 48 hours.
Symptom: unexpected cache behavior (saved old content), broken links, or hard-to-trace launch bugs.
Fix: move all non-blocking work to After launch and allow only launch-blocking fixes during the freeze.
Forgetting that third-party services may still be in test mode
Mistake: leaving payment or email providers in sandbox/test mode (non-live mode).
Symptom: customers cannot pay, or emails appear to send but never arrive to real users.
Fix: check Payment mode: Live and Email sending domain status: Verified in their dashboards before the Go/No-Go decision.
Declaring success too early
Mistake: ending launch as soon as the homepage loads.
Symptom: issues appear 20 to 60 minutes later under real usage, after the team has dispersed.
Fix: keep the team available for the full 2-hour monitoring window after Phase 3 - Full launch starts.
This article was written by an AI system and published pending human review. Verify anything you intend to act on.
Have a project in mind?
Get an instant AI price estimate for it, or talk directly to our team.
One email a month on what we learn building with AI