> ## 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.

# Harness FME change integration

> Sync feature flag changes from Harness FME (formerly Split) to Flashduty On-call through the Audit log outgoing 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>

Split is now part of Harness as Harness Feature Management & Experimentation (FME). Use the FME **Outgoing webhook (Audit log)** to sync every feature flag modification to Flashduty On-call, for example editing targeting rules, changing a rollout percentage, or killing a flag.

FME sends changes that have already taken effect, so each change is recorded as **Done** directly.

Metric degradation alerts use a different webhook (Metric Alerts); see [Split alert integration](/en/on-call/integration/alert-integration/alert-sources/split-io). You can configure both side by side.

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

  ***

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

## Configure Harness FME

***

<Steps>
  <Step title="Add the Outgoing webhook (Audit log)">
    <Note>
      On a free Harness FME plan the Marketplace tab shows **Outgoing Webhook (Audit Logs)** with an **Upgrade** button instead of **Add**. The audit log outgoing webhook is available on a paid FME plan.
    </Note>

    1. Click your **initials** at the bottom of the left navigation pane and select **Admin settings**
    2. Click **Integrations** and open the **Marketplace** tab
    3. Find **Outgoing webhook (Audit log)**, click **Add**, and select the Split project to send changes from
  </Step>

  <Step title="Select environments and enter the URL">
    1. Check the environments to send changes from. Configure each project separately.
    2. **URL**: paste the full push URL of the Flashduty integration. Flashduty authenticates with the `integration_key` in the push URL.
    3. Click **Save**
  </Step>
</Steps>

FME has no test delivery button. After saving, change and save any flag in a checked environment, and the record appears in the Flashduty change list.

## What one change is

***

| FME object | Change key (change\_key) | Notes |
| - | - | - |
| One flag modification | `<environmentName>/<name>@<changeNumber>`, for example `Prod/new_checkout@1790560800123` | `changeNumber` is the version of the flag definition after the change. Every save creates a new version and one Flashduty change. The same flag changed in two environments is two changes. |

The payload has no id of its own, so the key combines the environment name, the flag name and the version. If you rename an environment in FME, later changes are recorded under the new name. The payload does not carry the project name: flags in different projects merge into one change only if they share the flag name, the environment name and the version number.

## Status mapping

***

| FME delivery | Flashduty change status |
| - | - |
| Any flag modification (targeting rules, rollout percentage, kill, creation) | Done |

Deliveries whose `type` is not `split` return success and create no change.

## Change content

***

| Field | Content |
| - | - |
| Title | `<flag name> in <environment name>`, for example `new_checkout in Prod` |
| Description | FME's readable summary of the change (`description`) |
| Link | The flag's page in FME; empty when the payload has none |
| Change time | `time` from the payload (seconds or milliseconds) |

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

| Label | Description |
| - | - |
| `flag` | Flag name |
| `environment` | Environment name, for example `Prod` |
| `change_number` | Version of the flag after the change |
| `actor` | The editor (`editor`); not written when `editor` is an email address |

## FAQ

***

<AccordionGroup>
  <Accordion title="Does an FME retry record a duplicate?">
    No. When FME gets a non-200 response it waits 300 milliseconds and retries once with the same body. Flashduty records the change once.
  </Accordion>

  <Accordion title="Why are changes from one environment missing?">
    The webhook is configured per project and per environment. Confirm the project has the Outgoing webhook (Audit log) and that the environment is checked.
  </Accordion>

  <Accordion title="Are segment or metric changes recorded?">
    No. The audit log webhook sends flag modifications only.
  </Accordion>

  <Accordion title="Why does a delivery return InvalidParameter?">
    * `name is missing`, `environmentName is missing`, `changeNumber is missing`: the payload lacks a required field. Confirm it comes from the FME Outgoing webhook (Audit log).
    * `invalid time`: `time` is not an integer

    Such a delivery creates no change; FME retries a non-200 response only once.
  </Accordion>
</AccordionGroup>
