In Flashduty On-call
- In the Flashduty console, go to Integration Center → Change Events
- Select Nautobot and enter an integration name
- To assign changes to specific channels, add rules under the integration’s Routes that match labels such as
object_typeoractor - Click Save and copy the generated Push URL
Configure Nautobot
1
Create a webhook
Go to Extensibility → Webhooks and click Add:
- Name: any name, for example
flashduty - 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 - Enabled: checked
- Type create / Type update / Type delete: select the operations to send; all three are recommended
- URL: the full Push URL of the Flashduty integration
- HTTP method:
POST - HTTP content type:
application/json - Body template: leave empty. Nautobot then sends its default JSON body, which is the format Flashduty parses
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.
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_idlabel, 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
Why don't I see any changes?
Why don't I see any changes?
- 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
Which deliveries does Flashduty reject?
Which deliveries does Flashduty reject?
Flashduty returns 400, and only when you customized the Body template, in these cases:
unsupported event:eventis missing or is notcreated,updatedordeletedmodel is missing,request_id is missing,data.id is missing: the body lacks that fieldinvalid timestamp:timestampis not in the2026-10-02 02:53:45+00:00or ISO 8601 format
Does a resent or retried webhook create duplicates?
Does a resent or retried webhook create duplicates?
No. The same change with the same event time and status is recognized as a repeat and discarded.
Why did edits to one object turn into several changes?
Why did edits to one object turn into several changes?
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.