Skip to main content

Prerequisites

Before continuing, you should have already completed the following for this connector:
1

Configure the Connector

Enable the connector and set up its connector profile in your project. See Managing Connectors.
https://stackone-logos.com/api/azure-devops/filled/png

Connector Profile

Azure DevOps - OAuth 2.0 (Microsoft Entra ID)
https://stackone-logos.com/api/azure-devops/filled/png

Connector Profile

Azure DevOps - Personal Access Token
2

Link an Account

Connect an account using StackOne Hub or Auth Link.
https://stackone-logos.com/api/azure-devops/filled/png

Link Account

Azure DevOps - OAuth 2.0 (Microsoft Entra ID)
https://stackone-logos.com/api/azure-devops/filled/png

Link Account

Azure DevOps - Personal Access Token

Subscribe via the StackOne dashboard

This connector uses Programmatic Webhooks. When you enable webhook events for a connected Azure DevOps account, StackOne automatically creates one Service Hook subscription per enabled event (via POST /_apis/hooks/subscriptions?api-version=7.1), each pointing at your StackOne callback URL. Azure DevOps requires a separate subscription per event type — StackOne manages their full lifecycle.

1

Ensure the required scope or PAT permission

Before enabling webhook events, confirm your connected account has the necessary permissions.

  • OAuth 2.0 (Microsoft Entra ID): Ensure the vso.hooks_write scope is included in your app registration’s granted permissions.
  • Personal Access Token: Generate the PAT with Service Hooks (Read & write) permission (under Organization scopes in the PAT creation dialog).
2

Select event subscriptions in the dashboard

In the StackOne dashboard, open the Azure DevOps connector profile and enable the webhook events you want delivered downstream. See the Available Webhook Events section below for the full list.

3

Project scoping and the Project name field

Set the Project name (webhook scoping) config field to your project’s name — the {project} segment of your project URL, https://dev.azure.com/{organization}/{project} (e.g. my-project). StackOne resolves that name to the internal project ID automatically, so you never need to look up a GUID. The field is optional, but whether you must set it depends on which events you enable:

  • Organization-level or project-level — work item, git, pull request, and build events. Leave Project name blank to receive them from every project in the organization, or set it to scope them to a single project.
  • Project-level only (Project name required) — pipeline events (run / stage / job state changed). Azure DevOps rejects these if created at the organization level, so their subscriptions fail unless Project name is set.
4

Registration on subscribe

When webhook events are enabled (or the event selection changes), StackOne creates the corresponding Service Hook subscriptions on your behalf. You can inspect them in Azure DevOps under Organization Settings > Service hooks (or Project Settings > Service hooks for project-scoped subscriptions).

5

Verify delivery

Trigger a matching change in Azure DevOps (for example, create a work item) and confirm the event reaches your downstream consumer.

  • Azure DevOps posts each event as a JSON payload; StackOne responds with 200 OK automatically.
  • Delivery history and retries are visible in Azure DevOps under Service hooks > History for each subscription.
6

Unsubscribe

Changing your event selection creates subscriptions for newly enabled events and deletes the ones for disabled events. Disconnecting the account deletes all StackOne-managed subscriptions, stopping deliveries.

Available Webhook Events

The following Azure DevOps events can be enabled. Each enabled event is registered as its own Service Hook subscription.

1

Work Item events

Events on work items (bugs, tasks, user stories, etc.) across all work item types.

  • Work Item Created (workitem.created) — Fired when a new work item is created
  • Work Item Updated (workitem.updated) — Fired when a work item’s fields are changed
  • Work Item Deleted (workitem.deleted) — Fired when a work item is permanently deleted
  • Work Item Restored (workitem.restored) — Fired when a deleted work item is restored
  • Work Item Commented (workitem.commented) — Fired when a comment is added to a work item
2

Git and Pull Request events

Events on Git repositories, pushes, and pull requests.

  • Git Push (git.push) — Fired when commits are pushed to a repository
  • Pull Request Created (git.pullrequest.created) — Fired when a new pull request is opened
  • Pull Request Updated (git.pullrequest.updated) — Fired when a pull request is updated
  • Pull Request Merged (git.pullrequest.merged) — Fired when a pull request is completed (merged)
  • Pull Request Comment (ms.vss-code.git-pullrequest-comment-event) — Fired when a comment is added to a pull request
3

Build events

Events on classic and YAML pipeline builds.

  • Build Complete (build.complete) — Fired when a build finishes (any result: succeeded, failed, partially succeeded, canceled)
4

Pipeline events

Events on Azure Pipelines runs, stages, and jobs. These events use publisher pipelines.

  • Pipeline Run State Changed (ms.vss-pipelines.run-state-changed-event) — Fired when a pipeline run changes state
  • Pipeline Stage State Changed (ms.vss-pipelines.stage-state-changed-event) — Fired when a stage within a run changes state
  • Pipeline Job State Changed (ms.vss-pipelines.job-state-changed-event) — Fired when a job within a stage changes state

Delivery format

Details of how Azure DevOps delivers events to StackOne.

1

JSON payloads

Azure DevOps delivers each event as an HTTP POST with a JSON body. The common envelope contains id (a GUID used as the event ID), eventType (e.g. workitem.created), publisherId, createdDate, and resource (the event-specific data).

2

No signature verification

Azure DevOps Service Hooks do not include HMAC signature headers. Deliveries are authenticated solely by the fact that the callback URL is known only to StackOne and Azure DevOps.

Verify

Your Connector should now be able to receive and process events. Try triggering an event and you should see an Event appear in the Connector logs.