Forums

Articles
Create
cancel
Showing results forΒ 
Search instead forΒ 
Did you mean:Β 

I spent hours debugging a Confluence automation β€” turns out my prompt was too long 🀦

A hard-won lesson about the 30-second wall, and how to work around it.

I've been working on automating SEO audits in Confluence. The idea: add a label to a page, trigger an automation rule, and have my cloud AI agent review the content and post a comment with the full audit.

Simple enough on paper. In practice? I spent way too long staring at error messages and wondering what I was doing wrong.

Here's what actually happened β€” and what I wish someone had told me before I started.

 

 

πŸ› οΈ What I was trying to build

The setup I had in mind:

  1. Someone adds an seo-check label to a Confluence page
  2. A Confluence automation rule fires and sends the page content to my AI agent via a Send web request action
  3. The agent runs a full SEO audit against my playbook and posts the result as a page comment

 

 

 

The agent itself worked great when I tested it directly. The audit output was exactly what I wanted. So I wired it up in Confluence automation, tested it… and nothing. Literally, a blank page comment:empty comment.jpg

 

πŸ› The debugging spiral

 

I tried everything I could think of:

  • Checking my API endpoint and authentication headers
  • Simplifying the JSON body of the web request
  • Switching between POST and different content types
  • Testing whether the automation rule was even firing correctly
  • Rebuilding the rule from scratch

 

Sometimes it worked on short test pages. Sometimes it just silently failed. I could not figure out the pattern.

Then I noticed this message in the automation audit log:

 

error message automation.jpg

30 seconds. That was the key.

⏱️ The 30-second wall: a known platform limit

 

Confluence Cloud automation's "Send web request" action currently has a fixed 30-second timeout. This is not a setting you can change today. Atlassian has an open suggestion requesting a configurable timeout, which confirms that the current limit is fixed. If the endpoint takes longer than 30 seconds, the automation can time out and return a message saying the result is unknown.

 

 


Why does this matter for AI agents? A good AI audit isn't fast. My agent reads the full page content, runs it through a multi-step framework, and generates structured output. That easily takes 30–60 seconds β€” sometimes more for a long page. The automation fires, the agent starts working, the clock runs out.


πŸ’‘ Where I've landed (not a perfect fix yet)

 

The first thing I tried was simplifying my prompt. I stripped it down to almost nothing β€” just enough to call the agent. It worked… but the output was useless. A shallow, generic audit that missed everything I actually cared about. So that wasn't a real solution.

What I ended up doing is moving the system prompt into variables β€” {{anthropicPrompt}} and {{seoSystemPrompt}} β€” and keeping the request body as light as possible. That combination gets the request through within the 30-second window.

 

automation rules.jpg

It works. But it comes with a real tradeoff: the lighter the prompt, the shallower the audit. I'm essentially tuning the instructions to fit a time constraint rather than to produce the best output. That's the part I haven't fully solved yet.

So if you're trying to do something similar β€” this is the workaround that gets you moving. Just know that you're trading depth for reliability, and the 30-second wall is still there whether you can see it or not.

 

 

Have you run into this timeout issue in your own Confluence automations? I'd love to know how you worked around it β€” drop a comment below πŸ‘‡

 

 

3 comments

Becker_ Rene
Contributor
April 9, 2026

Hallo Patricia.

I've run into the same issue.

In my case it was transforming a knowledge article into a structured training article.

At first I tried sending behaviour commands + site content to Rovo.

This caused two problems:

1. Cut Off (length exceeded -> 20.000 chars)

2. I am not getting back the page as ADF, so I only got "useless" plaintext.

 

What I did and what has been working so far:

1. Create an agent and give the instructions in the Agent definition. This way, the agent knows exactly what to do and how to deliver the content without sending it to the prompt thus shortening the answer.

You can also define a cut-off point (on the page) that you can resume from later, if you are not using ADF:

 

Example:

(Default Scenario)

You are an assistant that receives a source page (content-id 1)

Follow these steps:

1. Parse "content-id 1"'s page content and extract the following values:
- Value01: Purpose of the instruction (what is explained)
- Value02: Prerequisites (required software, tools, permissions)
- Value03: Short summary of the article
- Value04: Name of the page (same as original)
- Value05: Possible target group (use either "hotline service", "technician" or "customer")
- Value06: Step-by-step instructions
- Value07: Notes related to the instructions
- Value08: Verification or result
- Value09: Possible category (e.g., instruction, parameter, mechanic, software)
- Value10: Reference machine types
- Value11: Attachments (linked content, file attachments)
Put your extraction of the page content-id 1 into those variables.
In the source page, if you encounter pictures in the original text, place a placeholder in the new text, where the picture should be. The placeholder must contain the original attachment's link. The format is [ATTACHMENT:URL_TO_ATTACHMENT]. Where "URL_TO_ATTACHMENT" should be replaced by the URL to the original attachment.

In Value11, do not use the ATTACHMENT placeholder. Instead create each attachment as a single JSON node.

2. Always create a variable "rest"; If you cannot interpret a part of content-id 1, save it to "rest".

3. If a value cannot be found or is empty, set the respective variable's value to "<EMPTY>".

Your responses should be clear, structured, and precise. Maintain a professional and neutral tone. Do not change the language of the original page.

Create a variable called "errors". If you encounter any problems, save the error output into this variable.
Create a variable called "rest". If you cannot interpret something on the original page, put it into this variable.

Should any of the variables "Value01" to "Value11", "errors" or "rest" be empty or only contain "", set their value to "[EMPTY]".

Format your output as JSON. Create a JSON node for each variable and make the value of each node the value of the variables you created in steps 1 to 4.
Make sure, that all special characters are escaped correctly.

 

---

My rule

- Trigger

- Use Agent -> Prompt = Content-id 1: 12345678910

=> This has Rovo pull the page => should circumvent the 30s limit

- Audit {{agentResponse}}

- Publish New Page: Page Content {{AgentResponse}}

-> Creates it as ADF instead of plaintext

 

---

=> I then pull the page via a different Automation Engine (N8N), which gives me the option to create more complex/abstract scripting. But that was primarily because I had Rovo create a JSON format. (now that I think of it, it automatically resolved the ADF issue for me too ...)

 

---

 

Maybe this can help you to find your way to resolve the issue.

All in all: My tip is to move Automation to other tools as possible and work via the REST API. Automation debugging (as you wrote) and the very, very, veryl low code experience and the artificial limits really limit your possibilities (it is really like you only have a steering wheel, but no car to drive with). Especially in Confluence, where the Automation is more of an idea than an actual function.

 

All the best.

 

Like β€’ # people like this
Patricia Modispacher _K15t_
Community Champion
April 9, 2026

Hi @Becker_ Rene,

this is super helpful β€” thanks a lot for taking the time to share such a detailed breakdown πŸ™Œ

I really like your approach of moving the instructions into the agent definition instead of the prompt. That makes a lot of sense, especially with the time and size limits we’re running into. I hadn’t thought about structuring it that strictly with variables either.

Also interesting that you let the agent pull the page via content-id instead of sending everything through the request. That might actually be the cleaner way to get around both the timeout and payload limits.

The ADF vs. plaintext issue is something I’ve also been struggling with, so your workaround via a second automation engine (like n8n) is a really good call, even if it adds another layer to the setup.

I agree with your point about Confluence automation feeling a bit limited for more complex use cases. It works well for simple flows, but once you combine AI + external calls + structured output, you hit those boundaries pretty quickly.

Out of curiosity:
Have you found a good balance yet between structure (like your JSON output) and readability for end users? That’s something I’m still trying to figure out for my SEO audits.

Thanks again β€” this definitely gave me a few new ideas to try!

Becker_ Rene
Contributor
April 15, 2026

Hi Patricia,

 

>> Thanks again β€” this definitely gave me a few new ideas to try!

No problem. Always glad to have exchanges :-) 

 

---

 

>>  Have you found a good balance yet between structure (like your JSON output) and readability for end users?

Not really, no. When Rovo creates pages directly, it messes up formatting and cannot handle images. That's why I opted out of it. I tried a lot, but then cost and usefulness became unbalanced.

When I started to use JSON I still had to overcome the fact, that Rovo embedded it into ADF. That means I had to use N8N to unwrap the JSON twice (1: extract it from ADF, 2: extract the actual JSON).

 

There is one thing which might work for you though. I only did it with N8N so far but it might work with Rovo as well - in theory. I guess it wouldn't hurt to try.

 

- Define your agent, including the content-id option and what output you need (name the output, as I did in my example, so you can always reference it)

- Prepare a template and put in placeholders. Not the actual Confluence ones, but your own. For example "%VALUE01%",  "%VALUE02%" etc.

- Have Rovo work out the data that you need

- Have Rovo pull up the page and have it replace "%VALUE01% etc.

- (You will have to make sure, that formatting is already in place)

 

I am not sure though, whether Rovo can actually update a page, yet.

Else you might give it a try with the native Automation options (remember that smartvalues support the "replace"-function.

---

 

Comment

Log in or Sign up to comment
TAGS
AUG Leaders

Atlassian Community Events