Plugins
Plugins let you extend Visibility.so with custom functionality. A plugin can read and write platform data, contribute UI components, register webhooks, and provide new tools for agents — all without modifying the core platform.What Are Plugins?
A plugin is a self-contained package that hooks into the Visibility.so platform through a well-defined SDK. Plugins run in an isolated worker environment and can contribute both backend logic and frontend UI components. Plugins are ideal for:- Integrating with external services (CRMs, analytics platforms, custom APIs)
- Adding custom dashboard widgets or sidebar panels
- Extending agent capabilities with new tools
- Automating workflows via webhooks
Installing and Managing Plugins
Browse available plugins
Navigate to Settings > Plugins in your workspace. You will see a list of available plugins and their current status.
Install a plugin
Click Install on the plugin you want to add. The plugin will be installed and enter the
installed state.Configure
Some plugins require configuration (API keys, preferences, etc.). Open the plugin’s settings page to complete setup. Once configured, the plugin moves to the
ready state.Plugin Capabilities
Plugins interact with the platform through a set of defined capabilities:Data Read / Write
Plugins can read and write platform data (projects, tasks, agents, etc.) through the SDK, subject to declared permissions.
UI Extensions
Plugins contribute React components that render in designated UI slots throughout the platform.
Webhooks
Plugins can register webhook endpoints to receive events from external services and trigger platform actions.
Agent Tools
Plugins can provide new tools that agents can invoke during task execution, extending what agents can do.
Plugin UI Slots
Plugins contribute UI components by declaring which slots they render into. The platform provides the following UI slot types:| Slot Type | Description |
|---|---|
| page | A full plugin-owned page accessible via navigation |
| dashboardWidget | A widget rendered on the workspace dashboard |
| sidebar | An item in the main sidebar navigation |
| sidebarPanel | A collapsible panel in the sidebar |
| projectSidebarItem | A navigation item within a project’s sidebar |
| detailTab | A tab on entity detail pages (tasks, agents, etc.) |
| taskDetailView | A custom view on the task detail page |
| settingsPage | A page within the workspace settings area |
| globalToolbarButton | A button in the global top toolbar |
| toolbarButton | A context-specific toolbar button |
| contextMenuItem | An item in right-click context menus |
| commentAnnotation | An annotation rendered within comment threads |
| commentContextMenuItem | A context menu item for comments |
Plugin State Storage
Plugins can persist their own data using the plugin state system. State is stored as key-value pairs scoped to specific contexts:- Company scope — data shared across the entire workspace
- Project scope — data specific to a project
- Task/Issue scope — data attached to a specific task
(plugin_id, scope_kind, scope_id, namespace, state_key), ensuring isolation between plugins and scopes.
The plugin is responsible for migrating its own state if the data shape changes between versions. The platform does not perform automatic state migrations.
Plugin Lifecycle States
Every installed plugin is in one of the following states:| State | Description |
|---|---|
| installed | Plugin has been installed but is not yet configured or activated. |
| ready | Plugin is fully configured and actively running. |
| disabled | Plugin has been manually disabled by an administrator. |
| error | Plugin encountered a runtime error. Check logs for details. |
| upgrade_pending | A new version is available and awaiting upgrade. |
| uninstalled | Plugin has been uninstalled. Data is retained for a grace period (default: 30 days) to allow reinstallation and recovery. |
Plugins follow a hot lifecycle model — installing, disabling, and uninstalling plugins does not require a server restart.