Opportunities — Production Guide
Licensing
- Catalog slug:
opportunities - Category: Sales (
sales) - Free Marketplace opt-in (not auto-installed)
- Catalog flags:
is_default_included = false,is_billable = false, price0,sort_order = 40 - New workspaces receive only Leads + Tasks by default; enable Opportunities from Marketplace
- Sales Pipeline is not a separate catalog row — stages and board ship inside this module
- Existing workspaces that already have Opportunities keep their subscription (policy change does not uninstall)
Bootstrap
On new workspace create:
installDefaultModules()installs publishedis_default_includedmodules (Leads, Tasks only)- Operators enable Opportunities from Marketplace (free / non-billable install activates immediately)
- Tenant permissions include
opportunities.*viaconfig/tenant-permissions.php/ default role maps - First API use seeds default
opportunity_stagesviaOpportunityStageSeeder(idempotent)
Permissions rollout
New Opportunities permissions for existing workspaces ship as an additive data migration using TenantPermissionSynchronizer::grantMissingDefaultRolePermissions([...]). Do not re-seed roles.
Ask EloSync Opportunity triage ships on catalog ai 1.6.0 (not an Opportunities bump). See AI Opportunity triage production readiness.
Monitoring
- Platform audit events:
opportunity_created,opportunity_updated,opportunity_deleted,opportunity_assigned,opportunity_stage_changed,opportunity_note_added,opportunity_tag_created,opportunity_tags_synced - Notifications: assignment via
OpportunityAssignedNotification
Deploy checklist
- Migrate tables (
opportunity_stages,opportunities,opportunity_tags,opportunity_opportunity_tag,opportunity_notes,opportunity_activities); catalog bump opportunities → 1.1.1 (colored tags) - Register the
opportunitiescatalog module via migration (DefaultModuleRegistrar) as free Sales opt-in — notdb:seed - Run opportunities permissions migration so default roles receive missing
opportunities.*grants - Confirm
module:opportunities+opportunities.*permissions on target roles - Deploy Frontend SPA with Opportunities nav/pages (mirror Leads board + table, inline tags) when the SPA ships