Receber por email
← Voltar para o catálogo

saas-launch-checklist

Pre-launch verification across infrastructure, security, legal, payment, email, analytics, and performance. Day-1 monitoring, rollback plan, incident response skeleton, and post-launch week-1 checklist.

507estrelas
Atualizado há 4 meses

Ver no GitHub ↗ Licença: MIT

Como adicionar

/plugin marketplace add vibeeval/vibecosystem

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/saas-launch-checklist/svg)](https://www.skillteca.com.br/skills/saas-launch-checklist)
#ai

Skills relacionadas

Ver todas de DevOps e Infra →

Alerta por categoria

Receba novas skills de DevOps e Infra toda segunda

1 email curto, só com as skills novas de DevOps e Infra. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

SaaS Launch Checklist

A structured checklist for shipping a SaaS product to production with confidence. Every item exists because someone skipped it and regretted it.

Pre-Launch Checklist (28 Items)

Infrastructure (5 items)

  • [ ] SSL/TLS -- Certificate installed, auto-renewal configured (Let's Encrypt / ACM), HSTS header present
  • [ ] CDN -- Static assets served through CDN, cache-control headers set, origin shielding enabled
  • [ ] Backup -- Database backup scheduled (daily minimum), tested restore procedure, off-site copy
  • [ ] Monitoring -- Health check endpoint returns 200 when healthy and 503 when degraded, uptime monitor pings every 60s
  • [ ] Alerting -- PagerDuty/Opsgenie configured, on-call rotation set, escalation policy defined (5 min ack SLA)

Security (5 items)

  • [ ] Penetration test -- Run OWASP ZAP or equivalent against staging, fix all HIGH/CRITICAL findings
  • [ ] Dependency audit -- npm audit / pip-audit / trivy shows zero critical CVEs
  • [ ] Secret rotation -- All production secrets differ from staging, rotation schedule documented
  • [ ] Rate limiting -- API endpoints rate-limited (e.g., 100 req/min per user), auth endpoints stricter (10 req/min)
  • [ ] Headers -- CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy all configured

Legal (4 items)

  • [ ] Terms of Service -- Reviewed by legal counsel, published at /terms, acceptance recorded at signup
  • [ ] Privacy Policy -- GDPR/CCPA compliant, published at /privacy, covers data collection, retention, and third parties
  • [ ] Cookie consent -- Banner shown to EU visitors, non-essential cookies blocked until consent, preferences stored
  • [ ] DPA (Data Processing Agreement) -- Template available for enterprise customers, sub-processor list published

Payment (4 items)

  • [ ] Test transactions -- Full purchase flow tested with test cards (success, decline, 3DS), subscription upgrade/downgrade verified
  • [ ] Webhook verification -- Stripe/Paddle webhook signature verified, replay attacks prevented with idempotency keys
  • [ ] Invoice generation -- Invoices auto-generated with correct tax info, downloadable as PDF, emailed on payment
  • [ ] Dunning flow -- Failed payment retry schedule configured (day 1, 3, 5, 7), grace period before cancellation

Email (4 items)

  • [ ] SPF/DKIM/DMARC -- DNS records configured, DMARC policy set to quarantine or reject, verified with mail-tester.com
  • [ ] Transactional templates -- Welcome, password reset, invoice, and trial expiry emails tested across Gmail/Outlook/Apple Mail
  • [ ] Unsubscribe -- One-click unsubscribe header present (RFC 8058), /unsubscribe endpoint works, preference center available
  • [ ] Sender reputation -- Dedicated IP warmed up (if >10k emails/day), bounce handling configured, complaint feedback loop active

Analytics (3 items)

  • [ ] Core events -- Signup, activation, purchase, and churn events tracked with user ID and properties
  • [ ] Funnels -- Signup-to-activation and trial-to-paid funnels configured in analytics dashboard
  • [ ] Dashboards -- Real-time dashboard shows active users, revenue (MRR), error rate, and response time

Performance (3 items)

  • [ ] Load test -- k6/Artillery run at 2x expected peak traffic, p95 latency under 500ms, zero errors
  • [ ] CDN cache -- Cache hit ratio above 90% for static assets, proper Cache-Control and ETag headers
  • [ ] Image optimization -- All images served as WebP/AVIF with responsive srcset, lazy loading below the fold

Day-1 Monitoring Dashboard

Build this dashboard before launch. Every panel answers a specific question.

+-----------------------------------------------------+
|                  SaaS Launch Dashboard               |
+---------------------------+-------------------------+
| Request Rate (req/s)      | Error Rate (%)          |
| Normal: 10-50/s           | Target: < 1%            |
| Alert: > 200/s            | Alert: > 2%             |
+---------------------------+-------------------------+
| p95 Latency (ms)          | Active Users (real-time) |
| Target: < 200ms           | Shows WebSocket/polling  |
| Alert: > 500ms            | count                    |
+---------------------------+-------------------------+
| Signup Rate (/hr)         | Payment Success Rate (%) |
| Compare to projection     | Target: > 95%            |
| Alert: 0 for 30min        | Alert: < 90%             |
+---------------------------+-------------------------+
| CPU / Memory              | Database Connections      |
| Alert: > 80%              | Alert: > 80% pool        |
+---------------------------+-------------------------+

Dashboard as Code (Prometheus Queries)

# monitoring/launch-dashboard.yml
panels:
  - title: Request Rate
    query: sum(rate(http_requests_total[5m]))
    alert_threshold: 200

  - title: Error Rate
    query: |
      sum(rate(http_requests_total{status_code=~"5.."}[5m]))
      / sum(rate(http_requests_total[5m])) * 100
    alert_threshold: 2

  - title: p95 Latency
    query: |
      histogram_quantile(0.95,
        sum(rate(http_request_duration_seconds_bucket[5m])) by (le))
    alert_threshold: 0.5

  - title: Signup Rate
    query: sum(increase(user_signups_total[1h]))
    alert_threshold: 0  # alert if zero for 30 min

  - title: Payment Success Rate
    query: |
      sum(rate(payment_completed_total[5m]))
      / sum(rate(payment_attempted_total[5m])) * 100
    alert_threshold: 90  # alert if below

Rollback Plan Template

Complete this before you deploy. If you cannot fill every field, you are not ready to launch.

# Rollback Plan: [Product Name] v[X.Y.Z]

## Decision Criteria
Trigger rollback if ANY of these occur within 60 minutes of deploy:
- [ ] Error rate exceeds 5%
- [ ] p95 latency exceeds 2 seconds for 5 consecutive minutes
- [ ] Payment processing fails for 3+ consecutive attempts
- [ ] Data integrity issue detected (mismatched records)

## Rollback Steps
1. Set feature flag `launch_v1` to OFF (immediate, <30 seconds)
2. Revert DNS/load balancer to previous deployment
3. Run: `kubectl rollout undo deployment/api --to-revision=PREV`
   OR: `docker compose -f docker-compose.prod.yml up -d --force-recreate`
4. Verify health check returns 200 on previous version
5. Notify #incidents channel: "Rollback executed, investigating"

## Data Migration Rollback
- [ ] Database migration has a DOWN migration
- [ ] Tested: `npm run migrate:down` or `python manage.py migrate APP PREVIOUS`
- [ ] New columns are NULLABLE (old code ignores them)
- [ ] No destructive changes (column drops, renames) in this release

## Communication
- Engineering: #incidents Slack channel
- Support: Pre-drafted message in support tool
- Customers: Status page update (only if downtime > 5 min)

## Owner
- Rollback decision: [On-call engineer name]
- Execution: [DevOps engineer name]
- Communication: [Support lead name]

Incident Response Playbook Skeleton

# Launch Day Incident Playbook

## Severity Levels
| Level | Definition                  | Response  | Example                    |
|-------|-----------------------------|-----------|----------------------------|
| SEV-1 | Service down, data loss     | 5 min     | Database unreachable       |
| SEV-2 | Major feature broken        | 15 min    | Payments failing           |
| SEV-3 | Minor feature broken        | 1 hour    | Email delivery delayed     |
| SEV-4 | Cosmetic issue              | Next day  | Alignment bug on Safari    |

## On-Call Roster (Launch Day)
| Role               | Primary        | Secondary      | Contact        |
|--------------------|----------------|----------------|----------------|
| Incident Commander | [Name]         | [Name]         | [Phone/Slack]  |
| Backend Engineer   | [Name]         | [Name]         | [Phone/Slack]  |
| Frontend Engineer  | [Name]         | [Name]         |
Compartilhar X LinkedIn