> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flashduty.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Octopus Deploy change integration

> Sync Octopus Deploy deployments (queued, started, succeeded, failed, canceled) to Flashduty On-call through a subscription webhook, as change events you can correlate with alerts and incidents.

<Tip>**Plan requirement**: This feature requires an On-call Standard or higher subscription. [Learn more](https://flashcat.cloud/flashduty/price/)</Tip>

Use an Octopus Deploy subscription webhook to sync deployment progress to Flashduty On-call. Each Octopus deployment becomes one Flashduty change, and its status follows the deployment from queued to running to finished.

<div className="hide">
  ## In Flashduty On-call

  ***

  1. In the Flashduty console, go to **Integration Center → Change Events**
  2. Select **Octopus Deploy** and enter an integration name
  3. To assign changes to specific channels, add rules under the integration's **Routes** that match labels such as `project` or `environment`
  4. Click **Save** and copy the generated **Push URL**
</div>

## Configure Octopus Deploy

***

<Steps>
  <Step title="Create a subscription">
    1. Go to **Configuration → Subscriptions** and click **Add Subscription**
    2. **Name**: enter a recognizable name, such as `Flashduty`

    You need permission to manage subscriptions.
  </Step>

  <Step title="Select events">
    In the filter's **Event Categories**, select these five:

    * Deployment queued
    * Deployment started
    * Deployment succeeded
    * Deployment failed
    * Deployment canceled

    Narrow the scope with the Projects, Environments, and other filters if needed.
  </Step>

  <Step title="Enter the push URL">
    Under **Webhook Notifications**, turn the **Enabled** switch on (it is off by default and nothing is sent while it is off), then set **Payload URL** to the full push URL of the Flashduty integration. Leave the header empty: Flashduty authenticates with the `integration_key` in the push URL. Save the subscription.
  </Step>
</Steps>

Octopus Deploy has no test button. After saving, run a deployment and the change appears in the Flashduty change list. The change link depends on the Octopus server address in the payload. Octopus Cloud includes it automatically; for a self-hosted instance, set the public URL under **Configuration → Nodes → Configuration Settings**, otherwise the payload carries no server address and the change has no link.

## What one change is

***

| Octopus object | Change key (change\_key) | Notes |
| - | - | - |
| Deployment | The deployment ID, for example `Deployments-12519` | The queued, started, and finished events of one deployment are one change. Deploying the same release to the same environment again is another deployment, so another change |

## Status mapping

***

| Octopus event category | Flashduty change status |
| - | - |
| Deployment queued (DeploymentQueued) | Ready |
| Deployment started (DeploymentStarted) | Processing |
| Deployment succeeded (DeploymentSucceeded) | Done |
| Deployment failed (DeploymentFailed) | Failed |
| Deployment canceled | Canceled |

These deliveries return success but record no change:

* Deliveries without an event category, and event categories that are not deployments (creation and modification of projects, releases, environments, deployment targets, and so on)
* Deployment resumed and Deployment precondition evaluated, which do not change the outcome of the deployment

A category starting with `Deployment` that Flashduty does not recognize returns `InvalidParameter` with the category name in the message; other events are not affected.

## Change content

***

| Field | Content |
| - | - |
| Title | `<project>: deploy <release> to <environment>`, for example `Example Project: deploy 0.1.178 to Development` |
| Description | The Octopus event message, for example `Deploy to Development failed for Example Project release 0.1.178 to Development` |
| Link | The deployment's page in Octopus |
| Time | When the event occurred in Octopus (`Occurred`) |

Labels can be used for routing and for filtering the change list:

| Label | Description |
| - | - |
| `project` / `project_id` | Project name / ID |
| `environment` / `environment_id` | Environment name / ID |
| `release` / `release_id` | Release version / ID |
| `deployment_id` | Deployment ID |
| `space_id` | Space ID |
| `actor` | User that triggered the event; `system` for automatic deployments |
| `octopus_state` | Octopus event category, for example `DeploymentFailed` |

Names are read from the event message. When one cannot be read, its label is empty and the title uses the ID instead.

## FAQ

***

<AccordionGroup>
  <Accordion title="Does a repeated delivery record a duplicate?">
    No. Octopus does not guarantee that each event is sent only once; a repeated event has the same occurrence time and category, and Flashduty records it once.
  </Accordion>

  <Accordion title="Why does a delivery return InvalidParameter?">
    * `Payload.Event.RelatedDocumentIds has no Deployments- id`: the deployment event carries no deployment ID; make sure the delivery comes from an Octopus subscription
    * `unknown deployment event category`: a deployment event category we do not handle yet; contact us
  </Accordion>

  <Accordion title="Why does the change have no link?">
    Octopus only includes the server address in the payload when a public URL is configured. See the setup notes above.
  </Accordion>
</AccordionGroup>
