Launch ops checklist
Short checklist for release / high-traffic days. Pair with Monitoring for endpoint details.
Before send
Staging auto-deploys from main; production Google connect/reconnect smokes
(WP-00, #3841) run at the next production release, not before staging send.
Staging (2026-09-22, Email-ready v1)
-
GET /api/healthon staging returns200 {"status":"ok"}(verified 2026-09-22) - Google connect smoke on staging (founder or agent with test account)
- Google reconnect smoke on staging (revoke, banner, refresh)
- Production Google connect smoke (deferred, #3841)
- Production Google reconnect smoke (deferred, #3841)
-
sse_connection_degradedPostHog alert uses a trailing 60 minute window (see table below)
All environments
-
GET /api/healthreturns200 {"status":"ok"} - Sync
GET /health/liveandGET /health/readyare healthy; logs showexecution=activewhen Google sync is enabled - Deploy Discord health webhook is configured (see CI/CD workflows)
- PostHog Error Tracking is receiving
$exceptionfrom web (open a staging page and trigger a handled test if needed) - Confirm
sync_health_snapshotevents arrive every ~5 minutes in PostHog - Confirm the Meeting dashboard
is readable: empty server tiles are no-data until
booking_operationships, not 100% success. Runbook: Meeting monitoring
Alerts to create in PostHog (or Discord)
Alert on sync_health_snapshot properties (low cardinality — safe to alert):
| Signal | Suggested threshold |
|---|---|
connections.actionRequired | rising day over day, or absolute > 0 for 10+ minutes under load |
connections.oldestImportingAgeMs | > 3600000 (one hour) while any connection is still importing |
jobs.failed | rising vs baseline |
jobs.oldestDueAgeMs | > 5 minutes while execution=active |
freshness.percentOver30s | sustained spike vs quiet baseline. Sample is live connections only (healthy, delayed, catchingUp), not actionRequired or disconnected. |
Also watch:
- Web
$exceptionrate (Error Tracking)