POST request. Use them when your source system is not one of Duckie’s built-in deployment channels, or when you need to shape a custom event payload into Duckie runs.
How Custom Webhooks Work
A Custom Webhook deployment has two parts:
When Duckie receives a valid request, it checks the deployment’s event filtering, extracts the mapped fields, creates a run, inserts the mapped run messages, and queues the selected agent.
Create a Custom Webhook Deployment
1
Create a deployment
Go to Deploy, click Create Deployment, and choose the agent that should handle the webhook.
2
Choose Custom Webhook
In the trigger selector, choose Custom Webhook.
3
Name the endpoint
Enter an Endpoint Name. This name identifies the webhook endpoint in Duckie.
4
Choose a verification method
Select how Duckie should verify incoming requests.
5
Map the payload
Paste a sample JSON payload, parse the fields, and map the payload into run fields, run messages, and optional metadata.
6
Save and copy the webhook URL
Save the deployment. Duckie shows the generated webhook URL after the endpoint is created.
Webhook URL
After you save the deployment for the first time, Duckie shows a generated URL:POST requests to this URL. Duckie reads the request body as JSON, so non-JSON payloads are rejected.
Verification Methods
Choose a verification method before sending production traffic.
For HMAC verification, configure the signature header and algorithm. Duckie supports the algorithms available in the selector, including SHA-256, SHA-1, and SHA-512.
For token verification, the default header is
X-Webhook-Token. Send the token as the header value:
Payload Mappings
Payload mappings tell Duckie how to turn your JSON payload into a run. Most mapping fields accept either:
JSONPath reads a value from the payload. Templates combine literal text with dot-path placeholders from the payload.
Parse a Sample Payload
Paste a sample JSON payload into Sample JSON Payload and click Parse Fields. Duckie discovers scalar fields, suggests common mappings such as IDs and messages, and makes discovered fields available in mapping dropdowns. The parser accepts normal JSON, fenced JSON snippets, and common pasted object-literal formatting such as single quotes, unquoted keys, and trailing commas.Run Fields
Run fields are required fields written to the run.
Example mappings:
Run Messages
Run messages provide the conversation content the agent should respond to. Use Single message when each webhook payload contains one new message:
Use Conversation array when the payload contains an array of messages or comments. Set Array Path to the array, then map message fields relative to each item in that array.
Example payload:
When role is mapped from the payload, Duckie normalizes common values:
If the mapped role is missing or unrecognized, Duckie uses the fallback role selected in the deployment.
Run Metadata
Run Metadata stores optional fields on the run for context. Use it for source-specific attributes such as account ID, priority, product area, locale, plan, or tags. You can add fields manually, or click Add Parsed Fields after parsing a sample payload.Event Filtering
Event filtering lets one webhook endpoint receive multiple event types while a deployment only processes the ones you allow.
If you leave the allowed event types blank, Duckie accepts all event types for that deployment.
Request Outcomes
Duckie validates the request before it starts asynchronous processing.
If filtering does not match, Duckie accepts the request but does not create a run for that deployment. If required mappings resolve to empty values, Duckie does not create a run for that deployment.
Test Before Going Live
- Create the deployment in Testing mode.
- Send a representative sample payload to the webhook URL.
- Open Analyze > Runs and review the created run.
- Confirm the title, ticket ID, messages, role mapping, and metadata look correct.
- Switch to Live mode after the mapping is validated.
Troubleshooting
Next Steps
Create Deployment
Set up a deployment
Deployment Modes
Test before live traffic
Runs
Review webhook-triggered runs
Duckie as an External Subagent
Let a customer-owned orchestration agent call Duckie with a webhook.