Request shape
The destination URL is supplied per-Action when you choose the Custom Webhook automation type. The configurator surfaces:
- Method dropdown —
POST,PUT,PATCH - Request URL field
- Request Headers table (Key / Value rows)
- Query Params table (Key / Value rows)
- Body table (Key / Value rows)
- Test Webhook section — fires a test request using one of three data sources: Demo Data, Sample Data, All Data
Body shape
The default body is a JSON object with the following top-level keys:
The
newDevices[].* field set is what you configure under the Body table on the Action, not a fixed shape. Adding rows to the Body table extends each device object with additional fields (e.g. Os, LastUser.Email). Demo Data uses a fixed sample of device names; Sample Data uses the first matching devices from the saved view; All Data sends every matching device in a single request.
Body template interpolation
The Body table is a Key / Value mapping. The Value column supports literal strings, and for fields surfaced by the Action editor’s field picker (the small dropdown next to each Value cell), Protect interpolates the matching device field at fire time. Common interpolation fields used in Body values:Headers
Default headers sent on every webhook:
Custom headers configured on the Action are sent in addition to the defaults. Typical custom headers include:
Authorization: Bearer <token>for destination-side authenticationX-API-Key: <key>for systems that use a custom auth headerX-Source: protector similar for downstream routing
Retry behaviour
When a destination returns a non-2xx response or times out:- Failure is logged in the Action’s Automation Log with the response status (or
timeout) - Retries are attempted automatically for transient failures (5xx, network errors)
- 4xx responses are typically treated as terminal — the destination rejected the payload and retrying won’t help
Webhook destinations
Protect’s Action Center exposes the following automation types from the Create Action modal:
This page documents the Custom Webhook wire format. The other channels (Trigger Workflow, Create Ticket, Send Notification, Send Email) use destination-specific transports.
Testing your endpoint
1
Open the Custom Webhook configurator
Action Center → Create Action → choose Custom Webhook under Automations.
2
Point at a request bin
Use a free request inspector (e.g.
webhook.site, requestbin.com) to capture the exact headers and body Protect sends.3
Use the Test Webhook section
Pick a
Type (Demo Data / Sample Data / All Data) and click Send Test Request — this fires without saving the Action.4
Watch the Automation Log
The Automation Log on the Action Center page records the response code and any retries for live (non-test) firings.
Security considerations
Authenticate the destination
Authenticate the destination
Protect doesn’t sign webhook requests and doesn’t restrict where they go. Configure your destination to require an
Authorization header (set as a custom Request Header on the Action) and reject unauthenticated requests.Allowlist ThreatAware egress
Allowlist ThreatAware egress
For destinations behind a firewall, allowlist the ThreatAware egress IP range — request the current list from your account team.
Treat the device payload as sensitive
Treat the device payload as sensitive
Payloads include the device hostname, user email, public IP, and any custom fields you’ve added. Log accordingly — don’t write to public storage.
Rotate destination credentials
Rotate destination credentials
Auth tokens embedded in custom headers are stored as part of the Action configuration. Rotate them on a normal cadence and re-save the Action when you do.
Cross-references
Action Center
The conceptual home of webhook automations
Continuous Actions
Always-on Actions
Snapshot Actions
Time-bound Actions
Error Codes
Action error states
Troubleshooting
Webhook failure debugging
API Reference
Inbound API counterpart