Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 
  • Community
  • Q&A
  • Jira
  • Questions
  • Confluence Automation Incoming Webhook v2.0 does not expose POST payload through {{webhookData}}

Confluence Automation Incoming Webhook v2.0 does not expose POST payload through {{webhookData}}

Adnan Karbelkar_ Vodafone
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
August 13, 2026

Description

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.

Environment

  • Confluence Cloud – Enterprise
  • Confluence Automation / Flows
  • Trigger: Incoming Webhook
  • Audit log reports: Webhook version 2.0
  • Endpoint: api-private.atlassian.com/automation/webhooks/confluence/...

Request

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 200

and the automation is successfully triggered.

Expected behaviour

The following smart values should resolve from the incoming POST payload:

{{webhookData}}
{{webhookData.repository}}
{{webhookData.content}}

For example:

{{webhookData.repository}}

should return:

ndt_fe

Actual behaviour

All webhook smart values resolve to empty values.

A Log action produces:

webhookData=[]
repository=[]
content=[]

As a result, conditions such as:

{{webhookData.repository}} equals ndt_fe

fail because the first value resolves to empty.

Troubleshooting already performed

We have verified that:

  • The webhook endpoint returns HTTP 200.
  • The Confluence automation flow is triggered successfully.
  • The Audit Log identifies the trigger as Webhook version 2.0.
  • 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.
  • We also tested application/x-www-form-urlencoded using --data-urlencode; the webhook still triggers but the values remain empty.
  • The Incoming Webhook audit-log entry does not display the request payload; it only displays Webhook version 2.0.

2 answers

1 accepted

1 vote
Answer accepted
Trudy P Claspill
Community Champion
August 13, 2026

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

https://support.atlassian.com/jira/kb/use-incoming-webhooks-with-smart-values-in-automation-for-jira/

Adnan Karbelkar_ Vodafone
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
August 14, 2026

Hi Trudy,

Thanks for the suggestions.

I am calling the webhook using curl from a macOS terminal.

I have also used curl --trace-ascii to 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. image.png

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

image.png

 

I am not able to upload the trace file.  I have that as well if you need it. 

 

 

Trudy P Claspill
Community Champion
August 14, 2026

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}}

Screenshot 2026-08-14 at 3.31.19 PM.png

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.

Trudy P Claspill
Community Champion
August 14, 2026

Additionally {{webhookData}} is the smart value specified in documentation I found that talks about incoming webhooks in Jira Automation.

Adnan Karbelkar_ Vodafone
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
August 14, 2026

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

Both worked successfully.

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.

 


Many thanks again — definitely deserved kudos!


 

The successful tests results for both Body and Parameter Posts. 

 

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

Pasted Graphic.png

 Audit Log

 Incoming webbook 15082026, 115558 M.png

 

 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

 coment = (cometheck parameters contene().png

 

Audit Log

 Automation.png

 

Like Trudy P Claspill likes this
0 votes
Aron Gombas _Midori_
Community Champion
August 14, 2026

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}}.

Adnan Karbelkar_ Vodafone
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
August 14, 2026

Thanks Aron. I tried your suggestion and passed the values directly as URL query parameters, for example:

This is my Automation flow. 

image.png

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. 

image.png
 

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.

Suggest an answer

Log in or Sign up to answer
DEPLOYMENT TYPE
CLOUD
PRODUCT PLAN
ENTERPRISE
TAGS
AUG Leaders

Atlassian Community Events