Like many users of Atlassian Goals, we’ve been facing limitations due to the lack of official APIs and reporting.
To address this, we’ve devised a workaround using the Goals-Slack integration. This approach leverages Slack’s API to retrieve goal updates.
Install the Atlassian Home App in Slack
This app posts updates whenever goals are modified—if you’re subscribed to a goal or tag. To centralize these updates:
Create a dedicated Slack channel.
Add the Atlassian Goals bot to the channel.
Subscribe the bot to all relevant goals or tags.
Set Up a Slack Bot to Monitor Updates
Slack supports bot applications with detailed documentation:
Create a Slack bot using the standard bot setup: Slack Apps.
Add your bot to the dedicated channel.
Ensure it has read access to messages.
Retrieve Goal Updates via Slack API
Reading messages is straightforward using Slack’s REST API. Use the conversations.history
endpoint to pull chat messages from the channel.
You will have to also use the conversations.list method to find out the channel ID once.
Process and Store Updates
We built a small Node.js service that:
Monitors the Slack channel.
Parses goal updates into structured JSON.
Stores entries in a lightweight database (tinyDB)
The parsing is relatively clean, however, we created the following fields:
{
"id": "1750760000295-at80rb",
"timestamp": "2025-06-23 09:16",
"raw_ts": "1750670171.202209",
"author": " xyz",
"goal": "ELIER-96",
"title": "Project Title",
"previousStatus": "",
"currentStatus": "On track",
"previousTime": "",
"currentTime": "Oct-Dec",
"previousProgress": "",
"currentProgress": "100%",
"message": "Update message."
},
It is useful to have quite a few updates inside of Slack - this way you can a) identify all your goals and b) deal with subtleties on how changes in metrics, times, editing are provided in the raw JSON, handling UTF8, emojis,... chatGPT and regular expressions are your best friend.
Expose the Data via API
The service exposes the data through an Express-based REST API, allowing downstream systems to access structured goal data. That can have various formats: Markdown, csv, html.. and preformatted Confluence jsonbody code.
This is easy - once you have the data, you can expose it it any format needed.
Automate Page Creation in Confluence
Using Confluence automation, you can trigger webhook calls to generate pages:
Automatically upon receiving goal updates.
On-demand via smart buttons.
We’ve only just deployed this solution and are still working how we structure the resulting Confluence pages and reports.
If you're tackling the same issue, we hope this inspires or accelerates your own efforts!
Also, if you’re a fellow Goals user, please consider voting for feature requests related to APIs, reporting, and automation support—we’d all benefit!
Cheers,
Birgit
P.S. In case you’re wondering: this took ChatGPT and about 3 hours of playing. ChatGPT excels with well-documented REST APIs 🙂