Sync Data using Webhook
The last page sent data into a call. This one gets it back out.
Two words to keep straight, because every payload uses both:
| What it is | Where it comes from | |
|---|---|---|
initial_context | What you told the agent before it dialled | Your API trigger request |
gathered_context | What the agent worked out during the call | Variable extraction on the nodes |
A Webhook node POSTs both to a URL of your choosing when the call ends.
Before you start: an agent that extracts something. If no node has
Enable Variable Extraction switched on, gathered_context will be empty and
the webhook will faithfully deliver nothing. See
Context and variables.
Add the Webhook node
Click the + button on the canvas (Add node) and scroll down to Webhook.
A webhook node is not part of the conversation — it does not sit between two call nodes and the caller never waits for it. You can have several, pointing at different systems.
Point it at a URL
Paste your endpoint into the URL field and set the method to POST. If your backend needs authentication, add the header here rather than in the payload.
Write the payload template
This decides exactly what JSON goes out. Reference both kinds of context:
Payload template {"debtor_name": "{{initial_context.debtor_name}}","client_name": "{{initial_context.client_name}}","debt_amount": "{{initial_context.debt_amount}}","amount_user_will_pay": "{{gathered_context.amount_user_will_pay}}","payment_method": "{{gathered_context.payment_method}}","sentiment": "{{gathered_context.sentiment}}"}There are call-level variables available too —
{{workflow_run_id}},{{call_time}},{{cost_info.call_duration_seconds}}and others. The full list is in the Webhook reference.Save, publish, and make a call
Save the node, then Publish the agent. Run a call and let it finish — the webhook fires on call end, not during.
That is the loop closed: your backend briefs the call, the call gathers what you asked for, and your backend gets it back without anyone opening a dashboard.
When nothing arrives
No request at all
The webhook fires when the run completes. A call that is still in progress, or that failed before connecting, will not have fired one. Check the run under Usage first — if there is no completed run, the problem is the call, not the webhook.
If the run completed and nothing arrived, check that you published after adding the node.
The request arrives but every gathered field is empty
Nothing was extracted. Open the node where that information comes up in the conversation, switch on Enable Variable Extraction, and declare the variables you want with a short hint each. Extraction is per node and off by default.
Your endpoint returns an error
Decibyl POSTs once when the call ends. If your endpoint is behind an
authenticating proxy, or rejects an unexpected content type, that shows up as a
non-2xx in your own logs rather than anywhere in Decibyl. Test the same payload
against your endpoint with curl before blaming the node.