Confluence
Documentation Tool
Confluence
Overview
Confluence is an enterprise wiki platform developed by Atlassian. It integrates complete Jira connectivity, team collaboration features, and project documentation to optimize organization-wide knowledge management.
Details
Confluence was developed by Atlassian in 2004 and has grown as a pioneer in enterprise collaboration wikis. The web-based platform provides integrated document creation, knowledge sharing, and project management. Native integration with Jira enables complete connectivity between project management and documentation workflows. Real-time collaborative editing allows multiple team members to simultaneously edit and comment on documents. The macro system enables dynamic content, external system integration, and custom functionality. Enterprise features include SAML SSO, two-factor authentication, automated user provisioning, and advanced administrative controls. Whiteboard functionality enables real-time brainstorming and diagram creation. As of 2025, it has been adopted by many enterprise companies including Docker, Dropbox, and Roblox, functioning as organizational information infrastructure. The Atlassian Forge platform also enables custom app development and third-party integration.
Advantages and Disadvantages
Advantages
- Native Jira Integration: Complete connectivity between project management and documentation for unified management
- Enterprise-Grade Security: Complete SAML SSO, enforced two-factor authentication, and access control
- Real-time Collaboration: Efficient teamwork through simultaneous editing, commenting, and notifications
- Rich Macro Functionality: Dynamic embedding of Jira issues, calendars, and external content
- Scalability: Administrative features and performance for large-scale organizations
- Atlassian Ecosystem: Integration with other products like Bitbucket and Trello
- Customizability: App development and API integration through Forge platform
Disadvantages
- Learning Curve: Time required for initial mastery due to rich functionality
- License Costs: High license fees when using enterprise features
- Performance: Decreased operating speed with large amounts of data or complex pages
- UI Complexity: Complexity of administrative screens and configuration items
- Vendor Lock-in: Dependency on Atlassian ecosystem
- Export Limitations: Constraints when migrating to other platforms
Key Links
- Confluence Official Site
- Confluence Features
- Confluence Developer Documentation
- Jira Integration Guide
- Atlassian Forge Platform
- Confluence Cloud Roadmap
Usage Examples
Basic Page Structure
# Project Plan
## Project Overview
**Start Date**: July 1, 2025
**Expected End Date**: December 31, 2025
**Project Manager**: John Doe
## Integrated Jira Issues Display
{jira}project = "PROJ" AND status = "In Progress"{jira}
## Task List
- [x] Requirements definition completed
- [x] Design document created
- [ ] Implementation started
- [ ] Testing conducted
## Team Information
| Role | Person | Contact |
|------|--------|---------|
| PM | John Doe | [email protected] |
| Lead Developer | Jane Smith | [email protected] |
| QA | Bob Johnson | [email protected] |
## Attachments
- [Design_Document.pdf]
- [Requirements_Specification.docx]
Utilizing Jira Issue Macros
<!-- Issues list for specific project -->
{jira:url=https://company.atlassian.net|project=PROJ}
<!-- Issues assigned to current user -->
{jira}assignee = currentUser() AND status != Done{jira}
<!-- Specific JQL query results -->
{jira}project = "WEB" AND component = "Frontend" AND fixVersion = "2.0"{jira}
<!-- Single issue detail display -->
{jira:PROJ-123}
<!-- Issue creation form -->
{jira:project=PROJ|type=Task|priority=High}create{jira}
Creating Page Templates
<!-- Meeting Minutes Template -->
<h1>Meeting Minutes - {Date}</h1>
<table>
<tr><th>Item</th><th>Content</th></tr>
<tr><td>Date/Time</td><td>{Enter date and time}</td></tr>
<tr><td>Attendees</td><td>{List of attendees}</td></tr>
<tr><td>Location</td><td>{Meeting room or online}</td></tr>
</table>
<h2>Agenda</h2>
<ol>
<li>{Agenda item 1}</li>
<li>{Agenda item 2}</li>
<li>{Agenda item 3}</li>
</ol>
<h2>Discussion Content</h2>
{Record discussion content}
<h2>Decisions Made</h2>
{decisions}
<table>
<tr><th>Decision</th><th>Assignee</th><th>Due Date</th><th>Jira Issue</th></tr>
<tr><td>{Decision 1}</td><td>{Assignee}</td><td>{Due Date}</td><td>{jira:issue-key}</td></tr>
</table>
{decisions}
<h2>Action Items for Next Meeting</h2>
{tasks}
- [ ] {Action 1} - {Assignee} - {Due Date}
- [ ] {Action 2} - {Assignee} - {Due Date}
{tasks}
Atlassian Forge App Development
# manifest.yml - Confluence app configuration
modules:
confluence:contentAction:
- key: page-enhancer
resource: main
resolver:
function: resolver
render: native
title: Page Enhancement Tool
confluence:macro:
- key: custom-chart
resource: chart-macro
resolver:
function: chart-resolver
render: native
title: Custom Chart
function:
- key: resolver
handler: index.handler
- key: chart-resolver
handler: chart.handler
resources:
- key: main
path: src/frontend/index.jsx
- key: chart-macro
path: src/chart/index.jsx
permissions:
scopes:
- read:confluence-content.summary
- write:confluence-content
- read:confluence-space.summary
- read:jira-work
external:
fetch:
backend:
- https://api.example.com
app:
runtime:
name: nodejs22.x
id: ari:cloud:ecosystem::app/your-app-id
Utilizing Confluence REST API
// Confluence API usage in Forge apps
import { requestConfluence, route } from '@forge/api';
// Get page content
async function getPageContent(pageId) {
const response = await requestConfluence(route("/wiki/api/v2/pages/" + pageId + "?body-format=atlas_doc_format"), {
headers: {
'Accept': 'application/json'
}
});
if (!response.ok) {
throw new Error(`Page retrieval error: ${response.status}`);
}
return await response.json();
}
// Create a page
async function createPage(spaceId, title, content) {
const pageData = {
spaceId: spaceId,
status: 'current',
title: title,
body: {
representation: 'atlas_doc_format',
value: content
}
};
const response = await requestConfluence(route("/wiki/api/v2/pages"), {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(pageData)
});
return await response.json();
}
// Add labels to page
async function addLabelsToPage(pageId, labels) {
const labelData = labels.map(label => ({
prefix: 'global',
name: label
}));
const response = await requestConfluence(route`/wiki/api/v2/pages/${pageId}/labels`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ results: labelData })
});
return await response.json();
}
Space Configuration and Access Management
// Space configuration screen using Forge UI
import ForgeUI, { render, SpaceSettings, Text, Select, Option, Button, useState } from '@forge/ui';
const SpaceConfigApp = () => {
const [accessLevel, setAccessLevel] = useState('team');
const [notifications, setNotifications] = useState(true);
const handleSaveSettings = async () => {
// Save space configuration
await saveSpaceConfiguration({
accessLevel,
notifications
});
};
return (
<SpaceSettings>
<Text>Space Configuration</Text>
<Select
label="Access Level"
value={accessLevel}
onChange={setAccessLevel}
>
<Option label="Team Only" value="team" />
<Option label="Department Wide" value="department" />
<Option label="Company Wide" value="company" />
</Select>
<Button
text="Save Settings"
onClick={handleSaveSettings}
/>
</SpaceSettings>
);
};
export const run = render(<SpaceConfigApp />);
Automation and Workflows
// Confluence automation rules (Automation)
{
"name": "Automatic processing when new page is created",
"trigger": {
"type": "page.created",
"spaceKey": "PROJ"
},
"conditions": [
{
"type": "page.hasLabel",
"label": "meeting-notes"
}
],
"actions": [
{
"type": "create.jira.issue",
"project": "PROJ",
"issueType": "Task",
"summary": "Meeting Follow-up: {{page.title}}",
"description": "Follow-up task based on meeting minutes\n\nPage link: {{page.tinyUrl}}"
},
{
"type": "notify.user",
"users": ["@project-manager"],
"message": "New meeting minutes created: {{page.title}}"
}
]
}
Whiteboard and Collaboration
<!-- Using whiteboard macro -->
{whiteboard:title=Project Design|template=user-journey}
<!-- Utilizing comment functionality -->
<ac:structured-macro ac:name="info">
<ac:rich-text-body>
<p>If you have questions about this section, please contact
<ac:link>
<ri:user ri:account-id="user-123" />
</ac:link>
via comments.</p>
</ac:rich-text-body>
</ac:structured-macro>
<!-- Shared task lists -->
{task-list}
- [ ] UI design review (@designer, 2025-07-15)
- [ ] API endpoint implementation (@backend-dev, 2025-07-20)
- [x] Database design completed (@database-admin, 2025-07-10)
{task-list}