# CRM Contacts Module — Deploy checklist

## 1. Permissions
```bash
php artisan db:seed --class=CrmContactPermissionSeeder
php artisan db:seed --class=CrmTicketFollowupPermissionSeeder
```
Or run SQL:
- `database/sql/crm_contact_permissions.sql`
- `database/sql/crm_ticket_followup_permissions.sql`

## 2. Migrate
```bash
php artisan migrate
```

## 3. Backfill sync (order matters)
```bash
php artisan crm:sync-students-to-contacts
php artisan crm:sync-instructors-to-contacts
php artisan crm:sync-leads-to-contacts
php artisan crm:sync-purchases-to-contacts
php artisan crm:sync-topic-status-to-contacts
php artisan crm:build-contact-timeline
```

## 4. Environment
Set in `.env`:
```
MYOPERATOR_API_KEY=
MYOPERATOR_SECRET_TOKEN=
MYOPERATOR_AUTH_TOKEN=
MYOPERATOR_COMPANY_ID=
MYOPERATOR_PUBLIC_IVR_ID=
```

Configure `support_id` / `support_number` on admin users for outbound/inbound agent mapping.

## 5. Verify
- Admin → CRM Contacts / CRM Tickets / CRM Followups
- Contact detail: Add Followup / Add Ticket + Tickets & Followups tabs + timeline
- Outbound Call button (requires MyOperator + user support_id)
- Webhook: `POST /webhook/myoperator`
