| title | Extensibility Points |
|---|---|
| titleSuffix | Azure DevOps |
| description | Browse through the places where your extension can extend Azure DevOps capabilities. |
| ms.assetid | 007954b7-9424-4ea6-916b-8cb2f215f5c4 |
| ms.subservice | azure-devops-ecosystem |
| ms.author | chcomley |
| author | chcomley |
| monikerRange | <= azure-devops |
| ms.topic | overview |
| ms.date | 12/01/2025 |
| ms.custom | engagement-fy23, sfi-image-nochange |
[!INCLUDE version-lt-eq-azure-devops]
Extensions add capabilities to the Azure DevOps UI and REST surface. This article lists the most common extensibility points you can target and shows the IDs you use in your extension manifest. For an overview of the extension model and contribution patterns, see the Contribution model.
[!INCLUDE extension-samples-tip]
Hubs and hub groups provide primary navigation in Azure DevOps (for example, Files, Releases, Backlogs, Queries). A hub belongs to a hub group; for example, the Files hub belongs to the project-level Azure Repos hub group. Hub groups can exist at the organization/collection level or at the project level. Most extensions contribute at the project level.
The following table lists common hub groups and their contribution IDs.
::: moniker range="<=azure-devops"
| Name | ID | Level | Preview image |
|---|---|---|---|
| Azure Boards | ms.vss-work-web.work-hub-group |
Project/team | :::image type="content" source="media/work/azure-boards.png" alt-text="Screenshot of custom work hub added to Azure Boards."::: |
| Azure Repos | ms.vss-code-web.code-hub-group |
Project/team | :::image type="content" source="media/code/azure-repos.png" alt-text="Screenshot of custom work hub added to Azure Repos."::: |
| Azure Pipelines | ms.vss-build-web.build-release-hub-group |
Project/team | :::image type="content" source="media/build/azure-pipelines.png" alt-text="Screenshot of custom hub added to Azure Pipelines."::: |
| Azure Test Plans | ms.vss-test-web.test-hub-group |
Project/team | :::image type="content" source="media/test/azure-test-plans.png" alt-text="Screenshot of custom hub added to Azure Test Plans."::: |
| Project settings | ms.vss-web.project-admin-hub-group |
Project | :::image type="content" source="media/test/project-settings.png" alt-text="Screenshot of custom project admin hub."::: |
| Organization settings | ms.vss-web.collection-admin-hub-group |
Organization/collection | :::image type="content" source="media/test/organization-settings.png" alt-text="Screenshot of custom organization admin hub."::: |
| ::: moniker-end |
This example shows a hub contribution that targets the Code hub group:
{
"contributions": [
{
"id": "my-custom-hub",
"type": "ms.vss-web.hub",
"targets": [
"ms.vss-code-web.code-hub-group"
],
"properties": {
"name": "Code Hub",
"order": 30,
"uri": "/views/code/custom.html"
}
}
]
}ms.vss-web.hubis the type of contribution. Thevss-webextension published under themspublisher defines this type. This type defines the optional and required properties for contributions of this type (for example, name, order).ms.vss-code-web.code-hub-groupis the full ID of the hub group contribution that this hub targets. Thevss-code-webextension published under themspublisher declares this contribution.my-custom-hubis the short ID of this contribution;{publisherId}.{extensionId}.my-custom-hubis the full ID.
Add an icon property so you can reference it directly by name.
We recommend providing your own icon. Using your own icon example:
"name": "Sample hub",
"uri": "dist/Hub/Hub.html",
"icon": "asset://static/sample-icon.png",
"supportsMobile": true
}
Using the Office UI Fabric Icons example:
"iconName": "Code",
"name": "Code Hub",
"order": 30,
"uri": "/views/code/custom.html"
}
Note
Icons, icon and iconName properties, don't support tab contributions. They only work for hubs, menus, and toolbars.
| Name | Target ID |
|---|---|
| Organization/collection overview toolbar | ms.vss-admin-web.collection-overview-toolbar-menu |
| Collection overview projects grid | ms.vss-admin-web.projects-grid-menu |
| Project overview toolbar | ms.vss-admin-web.project-overview-toolbar-menu |
| Project overview teams grid | ms.vss-admin-web.teams-grid-menu |
::: moniker range="<=azure-devops"
| Name | Target ID | Preview image |
|---|---|---|
| Work item query menu | ms.vss-work-web.work-item-query-menu |
:::image type="content" source="media/work/query-actions.png" alt-text="Screenshot of custom query action added to query menu."::: |
| Work item query results toolbar menu | ms.vss-work-web.work-item-query-results-toolbar-menu |
:::image type="content" source="media/work/query-results-toolbar-menu.png" alt-text="Screenshot of Query Results custom toolbar menu action."::: |
| Work item query results menu item | ms.vss-work-web.query-result-work-item-menu |
:::image type="content" source="media/work/query-results-item-menu.png" alt-text="Screenshot of Query Results Item Menu custom action."::: |
| Work item query results tab | ms.vss-work-web.query-tabs |
:::image type="content" source="media/work/query-results-pivot-tab.png" alt-text="Screenshot of Query toolbar custom pivot tab."::: |
| Work item for context menu | ms.vss-work-web.work-item-toolbar-menu |
:::image type="content" source="media/work/work-item-toolbar-actions.png" alt-text="Screenshot of custom work item toolbar actions."::: |
| Backlog item menu | ms.vss-work-web.backlog-item-menu |
:::image type="content" source="media/work/backlog-item-actions.png" alt-text="Screenshot of backlog item actions custom menu options."::: |
| Sprint board pivot filter menu | ms.vss-work-web.sprint-board-pivot-filter-menu |
:::image type="content" source="media/work/sprint-board-pivot-filter-actions.png" alt-text="Screenshot of sprint board pivot filter menu."::: |
| Board pivot filter menu | ms.vss-work-web.backlog-board-pivot-filter-menu |
:::image type="content" source="media/work/backlog-board-pivot-filter-actions.png" alt-text="Screenshot of Backlog Board Pivot Filter Actions."::: |
| Card menu | ms.vss-work-web.backlog-board-card-item-menu |
|
| Product backlog tab | ms.vss-work-web.product-backlog-tabs |
:::image type="content" source="media/work/product-backlog-tab.png" alt-text="Screenshot of product Backlog Custom Tab."::: |
| Iteration backlog tab | ms.vss-work-web.iteration-backlog-tabs |
:::image type="content" source="media/work/iteration-backlog-tab.png" alt-text="Screenshot of iterations Backlog Custom Tab."::: |
| Portfolio backlog pane | ms.vss-work-web.portfolio-backlog-toolpane |
:::image type="content" source="media/work/portfolio-backlog-pane.png" alt-text="Screenshot of Portfolio Backlog Custom Pane."::: |
| Product backlog pane | ms.vss-work-web.requirement-backlog-toolpane |
:::image type="content" source="media/work/product-backlog-pane.png" alt-text="Screenshot of Product Backlog Custom Pane."::: |
| Iteration backlog pane | ms.vss-work-web.iteration-backlog-toolpane |
:::image type="content" source="media/work/iteration-backlog-pane.png" alt-text="Screenshot of Iteration Backlog Custom Pane."::: |
::: moniker-end
::: moniker range="azure-devops"
| Name | Target ID | Preview |
|---|---|---|
| Completed build menu | ms.vss-build-web.completed-build-menu |
:::image type="content" source="media/build/completed-build-actions.png" alt-text="Screenshot of completed build actions."::: |
| Test results toolbar action | ms.vss-test-web.test-results-actions-menu |
:::image type="content" source="media/build/extension-test-custom-action.png" alt-text="Screenshot of test results toolbar action."::: |
| Test result details tab | ms.vss-test-web.test-result-details-tab-items |
:::image type="content" source="media/build/extension-test-custom-tab.png" alt-text="Screenshot of test result details tab."::: |
| Release pipeline explorer context menu | ms.vss-releaseManagement-web.release-definition-explorer-context-menu |
:::image type="content" source="media/release/definition-explorer-context-menu.png" alt-text="Screenshot of definition explorer context menu."::: |
| Pipeline details view, header button | ms.vss-build-web.pipelines-header-menu |
:::image type="content" source="media/build/header-menu.png" alt-text="Screenshot of pipeline details view, header menu."::: |
| Pipeline details view, folder context menu | ms.vss-build-web.pipelines-folder-menu |
:::image type="content" source="media/build/folder-menu.png" alt-text="Screenshot of pipeline details view, folder context menu."::: |
Tasks perform work in a build or release. For more information, see Add a custom pipelines task extension.
::: moniker-end
::: moniker range="<=azure-devops"
| Name | Target ID | Preview image |
|---|---|---|
| Source item (grid) menu | ms.vss-code-web.source-grid-item-menu |
:::image type="content" source="media/code/source-grid-item-actions.png" alt-text="Screenshot of repos item grid actions."::: |
| Source item (tree) menu | ms.vss-code-web.source-tree-item-menu |
:::image type="content" source="media/code/source-tree-item-actions.png" alt-text="Screenshot of repos item tree actions."::: |
| Source item (grid and tree) menu | ms.vss-code-web.source-item-menu |
:::image type="content" source="media/code/source-item-actions.png" alt-text="Screenshot of repos item actions."::: |
| Change list item menu | ms.vss-code-web.change-list-item-menu |
|
| Change list summary item menu | ms.vss-code-web.change-list-summary-item-menu |
|
| Git branches tree menu | ms.vss-code-web.git-branches-tree-menu |
:::image type="content" source="media/code/git-branches-tree-actions.png" alt-text="Screenshot of git branches tree."::: |
| Git pull request actions menu | ms.vss-code-web.pull-request-action-menu |
:::image type="content" source="media/code/pull-request-actions.png" alt-text="Screenshot of git pull request actions."::: |
| Git pull request tabs (pivots) | ms.vss-code-web.pr-tabs |
:::image type="content" source="media/code/pull-request-tab.png" alt-text="Screenshot of git pull request tab."::: |
| Git commit listing menu | ms.vss-code-web.git-commit-list-menu |
:::image type="content" source="media/code/git-commit-list-menu.png" alt-text="Screenshot of git commit list menu."::: |
| Git commit detail menu | ms.vss-code-web.git-commit-details-menu |
:::image type="content" source="media/code/git-commit-detail-menu.png" alt-text="Screenshot of git commit detail menu."::: |
::: moniker-end
::: moniker range="<=azure-devops"
| Name | Target ID | Preview image |
|---|---|---|
| Test run grid menu | ms.vss-test-web.test-run-grid-menu |
:::image type="content" source="media/test/test-run-grid-menu.png" alt-text="Screenshot of test run grid menu."::: |
| Test plan suites tree menu | ms.vss-test-web.test-plans-suites-context |
:::image type="content" source="media/test/test-plans-suites-context.png" alt-text="Screenshot of test plans suites context."::: |
| Test plan hub pivot tab | ms.vss-test-web.test-plan-pivot-tabs |
:::image type="content" source="media/test/test-plan-hub-pivot-tab-preview.png" alt-text="Screenshot of test hub pivot tab."::: |
::: moniker-end
- Dashboard widget: An extension can contribute a new type of widget that users can add to a dashboard. Learn how to contribute a dashboard widget.
- Work item form: Extensions enhance the work item form with new sections, tabs, actions, and custom field renderers. For more information, learn how to extend the work item form.
- Service hooks: A consumer is the service that Service Hooks sends events to. An extension can contribute consumer services. A user (or programmatically) configures these services to send events to that service. For more information, see Create a custom consumer for service hooks.