Skip to content

Launch QA Checklist

Use this checklist before launching Growstack CRM in production or after upgrading to a new version.


Pre-Launch

Infrastructure

  • [ ] PHP 8.2+ with required extensions
  • [ ] Database backup completed
  • [ ] SSL/HTTPS configured
  • [ ] Cron job configured: * * * * * php artisan schedule:run
  • [ ] Queue worker running (if using queued notifications)
  • [ ] File permissions set (storage, bootstrap/cache writable)

Deployment

  • [ ] php artisan migrate --force completed
  • [ ] CRM seeders run (Module, LeadSource, Pipeline, Permissions, Notifications)
  • [ ] php artisan crm:migrate-legacy-data run (upgrades only)
  • [ ] npm run build completed
  • [ ] php artisan optimize:clear run
  • [ ] .envAPP_NAME=CRM
  • [ ] Logo and favicon uploaded in Settings → General
  • [ ] Demo data removed from production (CrmDemoSeeder not run on prod)

CRM Core Features

Contacts & Accounts

  • [ ] Create contact manually
  • [ ] Edit contact details
  • [ ] Create account and link contacts
  • [ ] Contact 360° view loads related records
  • [ ] Log activity (note, call) on contact — appears in timeline

Leads

  • [ ] Create lead from admin
  • [ ] Submit contact form on frontend → lead appears in admin
  • [ ] Submit service inquiry → lead created
  • [ ] Submit quote request → contact and lead linked
  • [ ] Filter leads by status and source
  • [ ] Assign lead to sales rep → notification sent

Lead Conversion

  • [ ] Convert lead → contact created with correct data
  • [ ] Convert lead → deal created in default pipeline
  • [ ] Lead status changes to "Converted"
  • [ ] Converted lead links visible on lead show page

Deals & Pipeline

  • [ ] Create deal manually
  • [ ] Pipeline Board (Kanban) loads with stage columns
  • [ ] Drag deal between stages — stage updates
  • [ ] Move deal to Won — status and metrics update
  • [ ] Move deal to Lost — status updates
  • [ ] Deal won notification sent to team

Dashboard & Reports

  • [ ] CRM dashboard loads at /admin/crm
  • [ ] KPI widgets show correct counts
  • [ ] Pipeline funnel chart renders
  • [ ] Lead sources chart renders
  • [ ] Reports page loads at /admin/crm/reports
  • [ ] CSV export downloads correctly

Permissions & Roles

  • [ ] Admin role has all CRM permissions
  • [ ] Sales Manager can view/edit but not delete
  • [ ] Sales Rep sees only own records (if configured)
  • [ ] User without CRM permissions cannot access /admin/crm
  • [ ] CRM menu hidden when module disabled

API & Integrations

  • [ ] Create Sanctum API token
  • [ ] GET /api/crm/contacts returns data with token
  • [ ] POST /api/crm/leads creates lead
  • [ ] POST /api/crm/leads/{id}/convert converts lead
  • [ ] POST /api/public/leads creates lead (no auth)
  • [ ] Rate limiting works on public endpoint (10/min)
  • [ ] Inbound webhook creates lead (POST /api/public/webhooks/leads)
  • [ ] Outbound webhook fires on deal won (if CRM_WEBHOOK_URL set)
  • [ ] CSV import contacts works
  • [ ] CSV export contacts/leads/deals works

Module Integration

  • [ ] Quote linked to contact on Contact 360° view
  • [ ] Ticket linked to contact on Contact 360° view
  • [ ] Appointment linked to contact on Contact 360° view
  • [ ] Order linked to contact (if e-commerce enabled)
  • [ ] php artisan crm:migrate-legacy-data links existing data (upgrades)

Client Portal

  • [ ] Public homepage shows CRM landing (not e-commerce widgets)
  • [ ] /login and /register work
  • [ ] Client dashboard shows only enabled modules
  • [ ] Disabled module routes return 404 (e.g., /products when products disabled)
  • [ ] Client can view tickets, appointments, quotes

Notifications & Scheduler

  • [ ] lead_assigned notification delivered
  • [ ] deal_stage_changed notification delivered
  • [ ] deal_won notification delivered
  • [ ] php artisan crm:send-activity-reminders runs without errors
  • [ ] Activity due notification sent for overdue tasks

Module Toggle

  • [ ] Disable CRM module → menu hidden, routes return 404
  • [ ] Re-enable CRM module → menu and routes restored
  • [ ] Re-enable CMS module (e.g., Blog) → blog accessible again

Launch Day

  • [ ] Deploy code to production
  • [ ] Run migrations
  • [ ] Run legacy data migration (if upgrading)
  • [ ] Clear all caches
  • [ ] Verify admin login → CRM dashboard
  • [ ] Verify contact form → lead creation
  • [ ] Smoke test 3 API endpoints
  • [ ] Monitor error logs for 48 hours

Post-Launch

  • [ ] Gather team feedback on Kanban and Contact 360°
  • [ ] Review lead capture sources in reports
  • [ ] Plan v2.1: email integration, duplicate merge, advanced reports


Last updated: June 2026

Released under the MIT License.