Skip to content

Extension Points Reference

Add custom tabs to work unit detail views.

Context Provided:

  • workUnit - Full work unit object
  • workUnitId - Work unit ID
  • organizationId - Organization ID
  • businessType - Business type
  • status - Work unit status

Example:

{
point: 'work-unit.detail.tabs',
plugin: 'my-plugin',
priority: 50,
extension: {
type: ExtensionType.TAB,
id: 'my-tab',
label: 'My Tab',
component: MyTabComponent,
}
}

Add action buttons to work unit headers.

Context Provided:

  • workUnit - Full work unit object
  • workUnitId - Work unit ID

Example:

{
point: 'work-unit.header.actions',
plugin: 'my-plugin',
priority: 80,
extension: {
type: ExtensionType.ACTION,
id: 'my-action',
label: 'My Action',
icon: IconBolt,
onClick: async (context) => {
await doSomething(context.workUnit);
}
}
}

Add custom columns to work unit list tables.

Context Provided:

  • workUnits - Array of work units
  • organizationId - Organization ID

Example:

{
point: 'work-unit.list.columns',
plugin: 'my-plugin',
priority: 50,
extension: {
type: ExtensionType.COLUMN,
id: 'my-column',
header: 'My Column',
accessor: 'customField',
cell: (row) => <Text>{row.customField}</Text>
}
}

Add actions to work unit list views.

Context Provided:

  • selectedWorkUnits - Currently selected work units
  • organizationId - Organization ID

Example:

{
point: 'work-unit.list.actions',
plugin: 'my-plugin',
priority: 50,
extension: {
type: ExtensionType.ACTION,
id: 'bulk-action',
label: 'Bulk Update',
icon: IconEdit,
onClick: async (context) => {
await bulkUpdate(context.selectedWorkUnits);
}
}
}

Add status indicators and badges to work units.

Context Provided:

  • workUnit - Work unit object
  • workUnitId - Work unit ID

Example:

{
point: 'work-unit.indicators',
plugin: 'my-plugin',
priority: 50,
extension: {
type: ExtensionType.INDICATOR,
id: 'my-indicator',
badge: (context) => context.workUnit.isUrgent ? 'Urgent' : null,
color: 'error'
}
}

Add custom tabs to customer detail views.

Context Provided:

  • customer - Full customer object
  • customerId - Customer ID
  • organizationId - Organization ID

Add action buttons to customer headers.

Add custom columns to customer list tables.

Add status indicators to customers.

Add widgets to the main dashboard.

Context Provided:

  • organizationId - Organization ID
  • userId - Current user ID
  • premiumTier - Organization premium tier

Example:

{
point: 'dashboard.widgets',
plugin: 'my-plugin',
priority: 50,
extension: {
type: ExtensionType.WIDGET,
id: 'my-widget',
component: MyDashboardWidget,
title: 'My Widget',
gridSize: { cols: 2, rows: 1 }
}
}

Add actions to dashboard header.

Add components to the global sidebar.

Context Provided:

  • organizationId - Organization ID
  • userId - Current user ID

Example:

{
point: 'sidebar.widgets',
plugin: 'my-plugin',
priority: 90,
extension: {
type: ExtensionType.WIDGET,
id: 'sidebar-widget',
component: MySidebarWidget
}
}

Add action buttons to sidebar.

Add custom settings tabs.

Context Provided:

  • organizationId - Organization ID
  • userId - Current user ID
  • isAdmin - User admin status

Example:

{
point: 'settings.tabs',
plugin: 'my-plugin',
priority: 50,
extension: {
type: ExtensionType.TAB,
id: 'plugin-settings',
label: 'Plugin Settings',
component: MySettingsComponent
}
}

Add items to primary navigation menu.

Add items to user dropdown menu.

  • work-unit.detail.tabs
  • work-unit.header.actions
  • work-unit.list.columns
  • work-unit.list.actions
  • work-unit.indicators
  • customer.detail.tabs
  • customer.header.actions
  • customer.list.columns
  • customer.indicators
  • dashboard.widgets
  • dashboard.header.actions
  • sidebar.widgets
  • sidebar.actions
  • settings.tabs
  • settings.sections
  • navigation.primary
  • navigation.user-menu

Extension points follow this pattern:

{entity}.{location}.{type}

Examples:

  • work-unit.detail.tabs - Work unit detail page, tabs section
  • customer.header.actions - Customer page header, actions section
  • dashboard.widgets - Dashboard, widgets section

Extensions are rendered in order of priority:

  • 0-30: Core platform extensions
  • 31-60: Standard plugin extensions
  • 61-90: High-priority plugin extensions
  • 91-100: Critical/urgent plugin extensions

Higher numbers appear first/earlier in the UI.