Tasks — Production Guide
Licensing
- Catalog slug:
tasks - Default-included, non-billable for new workspaces
- Deactivate via Central module subscription tools to revoke access without dropping data
Bootstrap
On workspace provision:
- Default modules installed (includes Tasks)
- Tenant permissions include
tasks.*viaconfig/tenant-permissions.php/ default role maps
No stage seeder (unlike Leads)—status/priority are enums on the task row.
Permissions rollout
New Tasks permissions for existing workspaces must ship as an additive data migration using TenantPermissionSynchronizer::grantMissingDefaultRolePermissions([...]). Do not re-seed roles or rely on login/dashboard to repair RBAC.
Monitoring
- Platform audit events:
task_created,task_updated,task_deleted,task_assigned,task_completed,task_reopened,task_note_added - Notifications: assignment (mail + database); due today / overdue in-app per task; one daily mail digest per assignee (
crm:send-due-notifications) - Workspace setting
task_reminder_time/ Daily Reminder Time (default09:00) in tenant timezone gates when digests and daily CRM summaries send - Digest send state is durable in
task_digest_deliveries(queued → sent / failed + retry). Cache flush does not re-email; failed queue jobs become retryable afterretry_after - Daily CRM summary send state is durable in
daily_summary_deliveries(kind=personal|team). Stalequeuedrows older than 45 minutes may be reclaimed (max 5 attempts/day). See Daily CRM summary. - Tenant mail settings with Central SMTP fallback
Scheduled jobs
| Command | Cadence | Purpose |
|---|---|---|
crm:send-due-notifications | Every 5 minutes (withoutOverlapping(10), onOneServer) | Idempotent due/overdue in-app task alerts + daily task digest emails + daily CRM summaries; lead follow-up due/overdue notifications; meeting reminders |
Deploy checklist
- Migrate task tables (
tasks,task_notes,task_activities) andtask_digest_deliveries - Migrate CRM summary support:
users.receive_all_users_daily_summary,daily_summary_deliveries - Deploy frontend (board/list, KPIs, comments/history, due-date gate, Settings → Daily Reminder Time, Users → daily summary flag)
- Confirm
module:tasks+ expanded permissions - Confirm scheduler +
php artisan queue:work --queue=emails(digest + CRM summary mail is queued) - Shared cache driver required for schedule
onOneServer()locks - Smoke: register/login → Tasks board → create → complete → note → due-date permission check → set reminder time → confirm personal/team CRM summary after gate