Skip to main content
Plan requirement: This feature requires an On-call Standard or higher subscription. Learn more
Use a Nautobot webhook to sync creates, updates and deletes of Nautobot objects (devices, interfaces, IP addresses, locations and more) to Flashduty On-call. The edits one request makes to one object become one Flashduty change, so during an incident you can see what changed in Nautobot beforehand. A Nautobot webhook is sent once, after the object is saved. There is no start and end phase, so every change is recorded as Done.

In Flashduty On-call


  1. In the Flashduty console, go to Integration Center → Change Events
  2. Select Nautobot and enter an integration name
  3. To assign changes to specific channels, add rules under the integration’s Routes that match labels such as object_type or actor
  4. Click Save and copy the generated Push URL

Configure Nautobot


1

Create a webhook

Go to Extensibility → Webhooks and click Add:
  1. Name: any name, for example flashduty
  2. Content types: the object types to sync. Select only types that affect production (for example dcim | device, ipam | ip address), not types that change constantly
  3. Enabled: checked
  4. Type create / Type update / Type delete: select the operations to send; all three are recommended
  5. URL: the full Push URL of the Flashduty integration
  6. HTTP method: POST
  7. HTTP content type: application/json
  8. Body template: leave empty. Nautobot then sends its default JSON body, which is the format Flashduty parses
The Push URL already contains the integration key, so no extra header is needed. Secret can stay empty; if you set it, Nautobot signs the request in the X-Hook-Signature header, which Flashduty does not verify.
2

Verify

Edit and save an object of a selected type in Nautobot; the change appears in the Flashduty change list. Nautobot has no webhook test button. When a delivery fails, the error is in the Nautobot Celery worker log.
Nautobot refuses webhook URLs that resolve to loopback or link-local addresses; Flashduty’s Push URL is a public address and is not affected. Nautobot sends webhooks from its Celery worker, so make sure the worker is running and can reach the internet.

What one change is


The change key (change_key) has three parts: <model>:<object id>:<request id>, for example location:a16ea2bb-…:db6c8eb8-….
  • Nautobot’s request id (request_id) is different for every request; several edits to one object within a request are merged into one webhook
  • Edits to the same object in two separate requests are two changes
  • In a bulk edit (one request, several objects) each object is its own change; they share the same request_id label, which lets you group them
  • Saving through the web UI and through the API are separate requests, so they are separate changes

Status mapping


Any other event value (for example from a customized body template) is rejected; see the FAQ below.

Change content


Labels can be used for routing and for filtering the change list: The object’s fields and the before/after snapshots (snapshots) may contain sensitive data and are not recorded.

FAQ


  • Check that the webhook’s Enabled box is ticked, that Content types includes the edited object type, and that the matching Type create/update/delete box is ticked
  • Check that the Nautobot Celery worker is running; webhooks are sent asynchronously
  • Look up the response code of the delivery in the Celery worker log
Flashduty returns 400, and only when you customized the Body template, in these cases:
  • unsupported event: event is missing or is not created, updated or deleted
  • model is missing, request_id is missing, data.id is missing: the body lacks that field
  • invalid timestamp: timestamp is not in the 2026-10-02 02:53:45+00:00 or ISO 8601 format
Clear the Body template to use the default body.
No. The same change with the same event time and status is recognized as a repeat and discarded.
Each request is one change. Nautobot sends the webhook once per object for all edits within one request, but edits made in separate requests are separate changes.