Ops Checklist.
Public/private-ish runbook for keeping booking, checkout, analytics, and email healthy. Secrets are never shown here.
Resend verified
/api/health?deep=1 must show resend_domain_verified:true.Stripe valid
stripe_valid:"ok" means the live key authenticates.Slots available
/api/available-slots should return future unbooked slots.Video fallbackZoom OAuth -> personal Zoom URL -> Jitsi. Status explains the current path.
PostHog installedCTA and funnel events use
window.EIAnalytics.capture.Audience syncLead capture still works when Resend Audience is skipped.
Release commands
npm run audit:themes npm run audit:a11y npm run audit:links npm run audit:seo public-project-security-check --path . git push origin main vercel --prod --yes npm run verify:production
Recovery
Stripe invalid: reset STRIPE_SECRET_KEY in Vercel, redeploy, verify /api/health?deep=1 Resend domain failed: open Resend domain, restart verification, confirm DNS, verify /api/health?deep=1 Paid but unscheduled: open /admin/bookings.html, filter "NEEDS SLOT", email customer dashboard/schedule link Rollback: vercel rollback or redeploy last known good commit, then run npm run verify:production
Status / Roadmap / Admin bookings / Privacy / Terms / Refunds