Skip to main content
Plan requirement: This feature requires an On-call Standard or higher subscription. Learn more
Use Pulumi Cloud webhooks to sync stack updates and Pulumi Deployments runs to Flashduty On-call. Each stack update (pulumi up, pulumi destroy) and each Deployments run becomes one Flashduty change. A webhook can be attached to an organization (it receives events from every stack in the organization) or to a single stack. Flashduty records the events below; every other event returns success and creates no change:

In Flashduty On-call


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

Configure Pulumi Cloud


1

Create a webhook

  • Organization webhook: go to Settings → Organization webhooks
  • Stack webhook: open the stack, then Settings → Webhooks
Click Create webhook.
2

Enter the Push URL

  1. Destination: select Webhook (the generic JSON format, not Slack or Microsoft Teams)
  2. Display name: any name
  3. Payload URL: paste the complete Flashduty integration Push URL
  4. Secret: leave empty. Flashduty authenticates with the integration_key in the Push URL and does not verify Pulumi-Webhook-Signature
3

Select events

Under Events, choose one of the following, not both (see “What one change is” below):
  • To track update results only: update_succeeded, update_failed, destroy_succeeded, destroy_failed
  • To use Pulumi Deployments and see queued, running, and finished: deployment_queued, deployment_started, deployment_succeeded, deployment_failed
Click Create.

What one change is


An update run through Pulumi Deployments sends both a deployment and a stack_update event. They are different objects and create two changes, so select only one of the two kinds. Two updates of the same stack are two changes. The update number and the deployment version are per-stack counters and never repeat within a stack.

Status mapping


Stack updates (result): Deployments runs (status): Pulumi reports an update or deployment you cancel as failed, so it is recorded as Failed. Done, Failed, and Canceled are end states; Flashduty records the change’s end time. Pulumi’s result and status can also hold not started, requested, or running, which Flashduty records as Ready or Processing; any other value makes the delivery return an error.

Change content


Labels can be used for routing and for filtering the change list: actor and operation can differ between the notifications of one change, so do not route on them; route on organization, project, and stack.

FAQ


Pulumi’s payloads carry no timestamp, so Flashduty uses the time it receives the notification as the event time. Redelivering a notification from Pulumi Cloud therefore adds one more event to the change, with the same status.Pulumi does not guarantee the order of notifications. If the running notification of a Deployments run arrives after its succeeded, the change goes back to Processing. This is rare; the delivery log in Pulumi Cloud shows the order. A stack update sends only its final result and is not affected.
A preview does not change infrastructure, and a refresh only syncs the cloud’s current state back into Pulumi state, so neither is recorded. The same applies to stack_preview events and to previews, refreshes, and drift detection in Deployments.
Pulumi’s ping event returns success and creates no change.
  • Pulumi-Webhook-Kind header is missing: the request did not come from a Pulumi Cloud webhook, or a proxy removed the header
  • updateUrl is missing / deploymentUrl is missing: the payload is incomplete. Make sure the webhook’s Destination is Webhook, not Slack or Microsoft Teams
  • unsupported result "..." / unsupported status "...": Flashduty received a state it does not support yet. Contact us