Skip to main content
Plan requirement: This feature requires an On-call Standard or higher subscription. Learn more
Use a Semaphore webhook notification to sync pipeline results to Flashduty On-call. Each pipeline becomes one Flashduty change, recorded once when the pipeline ends. Semaphore sends a notification only when a pipeline is done (state done) and has no start event, so a change has no Processing state and is recorded directly with its end state: Done, Failed, or Canceled.

In Flashduty On-call


  1. In the Flashduty console, go to Integration Center → Change Events
  2. Select Semaphore 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, ref, or pipeline
  4. Click Save and copy the generated Push URL

Configure Semaphore


1

Create a notification

In the Semaphore console, open Notifications, create a notification, and add a rule:
  1. Name: a recognizable name, for example Flashduty
  2. Filters (optional): filter by Projects, Branches, Tags, Pipelines (YAML files), and Results. Empty means no restriction. Valid Results are passed, failed, stopped, and canceled; leave it empty so all four are sent
  3. Webhook endpoint: paste the full Push URL of the Flashduty integration
  4. Secret name: the name of a Semaphore secret, not free text. Leave it empty. Flashduty authenticates with the integration_key in the Push URL and does not verify X-Semaphore-Signature-256
You can also create it with the Semaphore CLI:
2

Adjust timeout and retries (recommended)

Semaphore’s default response timeout is 500 milliseconds with no retries. If Flashduty answers slower than that, the delivery counts as failed and is not sent again. Run sem edit notification flashduty and add to the webhook configuration:
retries applies only to timeouts and resends the same body, so Flashduty does not record a duplicate.
3

Run a pipeline

Semaphore has no test delivery. Run a pipeline in a project the notification covers; when it ends, the change appears in the Flashduty change list.

What one change is


Status mapping


These deliveries return success but record no change:
  • Deliveries whose pipeline.state is not done

Change content


Labels for routing and for filtering the change list:

FAQ


Semaphore webhook notifications are sent only when a pipeline ends; there is no start event. The change appears with its final status when the pipeline ends.
No. A retry carries the same body, and Flashduty de-duplicates on the pipeline’s end time, so it is recorded once.
  • pipeline.id is missing: the body is incomplete; make sure it comes from a Semaphore webhook notification
  • unknown pipeline.result: a pipeline result value we have not mapped; contact us to add it
  • invalid pipeline.done_at: the time field in the body is malformed
  • Notifications are sent for rules created by users who can access the project; make sure the user who created the notification is at least a member of the project
  • Check that the rule’s filters do not exclude the project, branch, or result
  • Semaphore’s default 500 ms timeout may be too short to wait for the response; see the timeout and retries step above