We are experiencing an issue with the Incoming Webhook trigger in Confluence Cloud Automation (Webhook version 2.0).
The webhook endpoint successfully receives the HTTP POST request and returns HTTP 200, and the automation flow is triggered successfully. However, the request payload is not available within the automation flow through the documented {{webhookData}} smart value.
api-private.atlassian.com/automation/webhooks/confluence/...We send the following JSON payload:
{
"repository": "ndt_fe",
"content": "Test Frontend documentation from webhook"
}Request headers include:
Content-Type: application/json
X-Automation-Webhook-Token: <secret>The webhook returns:
HTTP/2 200and the automation is successfully triggered.
The following smart values should resolve from the incoming POST payload:
{{webhookData}}
{{webhookData.repository}}
{{webhookData.content}}For example:
{{webhookData.repository}}should return:
ndt_feAll webhook smart values resolve to empty values.
A Log action produces:
webhookData=[]
repository=[]
content=[]As a result, conditions such as:
{{webhookData.repository}} equals ndt_fefail because the first value resolves to empty.
We have verified that:
curl --trace-ascii confirms that the JSON request body is actually transmitted to Atlassian.Content-Type: application/json was explicitly specified.{{webhookData}}, {{webhookData.repository}}, and {{webhookData.content}} were tested.{{webhookResponse.body}} was also tested and resolves empty.application/x-www-form-urlencoded using --data-urlencode; the webhook still triggers but the values remain empty.Hello @Adnan Karbelkar_ Vodafone
Welcome to the Atlassian community.
Can you provide a screen image of your entire rule? Sometimes there is a context issue that isn't obvious.
Can you show us all the settings in your Incoming Webhook trigger?
How are you calling the webhook; through Postman, through a python script, through a custom integration provided by another application, ...?
Have you confirmed with an independent tool that there are no hidden characters in your JSON?
According to the following Atlassian article you should try webhookResponse on place of webhookData
Hi Trudy,
Thanks for the suggestions.
I am calling the webhook using curl from a macOS terminal.
I have also used
curl --trace-asciito inspect the actual request being transmitted, and the JSON body is being sent correctly without any hidden characters. The webhook returns HTTP 200, and the Confluence Automation flow is triggered successfully.
The payload being sent is similar to:
{
"repository": "ndt_fe",
"content": "Test Frontend documentation from webhook by Adnan"
}I also tried the suggestion from the Atlassian article you shared.
I tested:
{{webhookData}}{{webhookData.repository}}{{webhookData.content}}
and also:
{{webhookResponse.body}}{{webhookResponse.body.repository}}{{webhookResponse.body.content}}
Unfortunately, all of them resolve to empty values in the Automation Audit Log.
For example:
webhookData=[] webhookResponseBody=[] repository=[] content=[]
The Incoming Webhook trigger in the Audit Log shows Webhook version 2.0.
I have also tried:
Sending the payload as application/json
Sending it as URL-encoded form data
Passing the values as URL query parameters
In every case the request returns HTTP 200 and triggers the flow, but the payload values are not available to the smart values.
I am attaching screenshots of the complete automation flow, Incoming Webhook configuration, and Audit Log.
Please let me know if you notice any context issue in the rule, or if there is another smart value/context that Webhook version 2.0 expects.
This is the Automation flow, I just first wanted the body paramter's so I have not built the flow further.
The command I run on the macos terminal (Redacted the Token and URL for security reason)
curl --trace-ascii /tmp/confluence-webhook.trace \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'X-Automation-Webhook-Token: **********************' \
--data-raw '{"repository":"ndt_fe","content":"Test Frontend documentation from webhook"}' \
'https://api-private.atlassian.com/automation/webhooks/confluence/a/**' \
-w '\nHTTP_STATUS=%{http_code}\n'
The Audit Log for the above API call
I am not able to upload the trace file. I have that as well if you need it.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hello @Adnan Karbelkar_ Vodafone
Having not worked with Confluence Automation Incoming Webhooks before I took a look at the information available directly within the Incoming Webhook dialog in Confluence Automation rules and noticed the following:
1. If you send information through --data with your POST method then that data is accessed through {{webhook.body}}, not {{webhookData}}
2. If you send information through parameters as part of the API then that data is accessed through {{webhook.parameters}}
So, try using those smart values (aligned with whether you are submitting a request body or API parameters) and see if you get the data. Let us know how that turns out.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Additionally {{webhookData}} is the smart value specified in documentation I found that talks about incoming webhooks in Jira Automation.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thank you so much, Trudy. Your answer was exactly what I needed.
I tested both of the Confluence-specific smart values you pointed out {{webhook.body}} for POST body data
and
{{webhook.parameters}} for values passed in the webhook URL
For example, using URL parameters I can now correctly read:
{{webhook.parameters.repository}} → ndt_fe
{{webhook.parameters.content}} → the content sent in the request
The key issue was that I was following documentation/examples that referred to {{webhookData}}, whereas Confluence Automation Webhook v2.0 expects the data through {{webhook.body}} or {{webhook.parameters}}.
Really appreciate you taking the time to check the Confluence Automation dialog itself and point this out. This solved the issue completely for me.
Test 1 — POST body
curl -sS -i \
-H 'Content-Type: application/json' \
-H 'X-Automation-Webhook-Token: ******’*********** \
--data-raw '{"repository": "ndt_fe","content": "Test Frontend documentation from webhook by Adnan"}' \
'https://api-private.atlassian.com/automation/webhooks/confluence/a/x’ \
-w '\n\nHTTP_STATUS=%{http_code}\n'
The Automation Flow
Audit Log
Test 2 — URL parameters
curl -sS -i \
-X POST \
-H 'X-Automation-Webhook-Token: YOUR_SECRET' \
'YOUR_WEBHOOK_URL?repository=ndt_fe&content=Test%20Frontend%20documentation%20from%20webhook%20by%20Adnan' \
-w '\n\nHTTP_STATUS=%{http_code}\n'
The Automation Flow
Audit Log
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I think it is a known issue that others have reported with Confluence Cloud Automation incoming webhooks.
Here is one thing you can try.
Pass your data as URL query parameters instead of in the POST body. Append the values directly to your webhook URL like this:
https://api-private.atlassian.com/automation/webhooks/confluence/YOUR_WEBHOOK_ID?repository=ndt_fe&content=Test+Frontend+documentation
Then access them with {{webhookData.repository}} and {{webhookData.content}}.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks Aron. I tried your suggestion and passed the values directly as URL query parameters, for example:
This is my Automation flow.
This is the command I run from the terminal using curl. ( I have redacted the URL and Webhook Token )
curl -sS -i \
-X POST \
-H 'X-Automation-Webhook-Token: *********************** \
'https://api-private.atlassian.com/automation/webhooks/confluence/a/c?repository=ndt_fe&content=Test%20Frontend%20documentation%20from%20webhook%20by%20Adnan' \
-w '\n\nHTTP_STATUS=%{http_code}\n'
I get the following response status for the API .
HTTP/2 200
content-type: application/json
content-length: 0
date: Fri, 14 Aug 2026 18:11:52 GMT
server: AtlassianEdge
x-envoy-attempt-count: 1
cache-control: no-cache, no-store, max-age=0, must-revalidate
pragma: no-cache
expires: 0
x-frame-options: DENY
x-trace-id: e5d9e1456a5049499dd15576de6e2fbe
x-content-type-options: nosniff
x-xss-protection: 1; mode=block
atl-traceid: e5d9e1456a5049499dd15576de6e2fbe
atl-request-id: e5d9e145-6a50-4949-9dd1-5576de6e2fbe
strict-transport-security: max-age=63072000; preload
report-to: {"endpoints": [{"url": "https://dz8aopenkvv6s.cloudfront.net"}], "group": "endpoint-1", "include_subdomains": true, "max_age": 600}
nel: {"failure_fraction": 0.01, "include_subdomains": true, "max_age": 600, "report_to": "endpoint-1"}
x-cache: Miss from cloudfront
via: 1.1 8a37f712d19fe14896e6f4c568ac31c6.cloudfront.net (CloudFront)
x-amz-cf-pop: PNQ50-P1
x-amz-cf-id: v5lnIzb3HsvG4IK6lTUSeB5_r0yBcGpGes4a0D_wJZfbdoMXMm8-3Q==
server-timing: cdn-upstream-layer;desc="EDGE",cdn-upstream-dns;dur=0,cdn-upstream-connect;dur=0,cdn-upstream-fbl;dur=508,atl-edge;dur=503,atl-edge-internal;dur=2,atl-edge-upstream;dur=502,atl-edge-pop;desc="aws-ap-south-1",cdn-cache-miss,cdn-pop;desc="PNQ50-P1",cdn-rid;desc="v5lnIzb3HsvG4IK6lTUSeB5_r0yBcGpGes4a0D_wJZfbdoMXMm8-3Q==",cdn-downstream-fbl;dur=515
HTTP_STATUS=200
This is the Audit Log for the API call from the Atlassian Automation.
The webhook call succeeds with HTTP 200, and the Confluence Automation flow is triggered successfully.
However, the smart values are still empty in the audit log:
{{webhookData.repository}}→ empty{{webhookData.content}}→ empty{{webhookData}}→ empty
The audit log shows that the trigger is using Webhook version 2.0.
So in my case, neither the POST body nor the URL query parameters are being exposed through {{webhookData}}.
If you know of any different smart value for accessing query parameters specifically with Webhook v2.0, please let me know and I can try that as well.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.