Web Hooks

Web Hooks provides a way to send a JSON representation of an event to any service. All that is required is a public endpoint (HTTP or HTTPS).

For more information about the JSON payloads posted by this consumer, see events.

Send JSON representation to a service

  1. Go to your Azure DevOps Services project service hooks page: https://dev.azure.com/{orgName}/{project_name}/_apps/hub/ms.vss-servicehooks-web.manageServiceHooks-project

    Project administration page

    Click Create Subscription.

  2. Select and configure the Azure DevOps Services event:

    Configure the event dialog box

  3. Configure what to do when the event occurs:

    See Q & A below for information on the Resource details to send, Messages to send, and Detailed messages to send settings.

    Configure the action dialog box

  4. Test the service hook subscription and finish the wizard:

    Test it

Now the Web hook is set up. Go to the target service to view the JSON representation:

View the JSON representation


Azure DevOps Services doesn't charge for the framework for integrating with external services. Check out the specific service's site for pricing related to their services.

Q & A

Q: What are the Resource details to send, Messages to send, and Detailed messages to send settings for?

A: They control the size of the JSON payload that is sent.

The Resource details to send setting controls how much of the resource is sent. The default is All, but you can also choose to send Minimal (only sends key fields like URL and ID), or None.

None and Minimal are useful in scenarios where the caller doesn't actually need much, if anything, about the resource because it is relying on the message or detailed message. None and Minimal are also useful for security reasons, for example, the caller needs to call back into Azure DevOps Services and go through normal security/permission checks in order to get more details about the resource.

Sample JSON:

        "event.type": "git.push",
        "messsages": {
            "text": "...",
            "html": "...",
            "markdown": "..."
        "detailedMesssages": {
            "text": "...",
            "html": "...",
            "markdown": "..."
        "resource": {
            "id": "...",
            "url": "https://...",
            "name": "...",
            "field1:": "..."

Q: Can I programmatically create subscriptions?

A: Yes, see details here.