The confluence:contentAction module adds a menu item to the more actions (•••) menu for pages and
blogs. When the menu item is clicked, the module’s function renders a modal dialog.
On apps that use Custom UI, module content is displayed inside a special Forge iframe which has the sandbox attribute configured. This means that HTML links (for example, <a href="https://domain.tld/path">...</a>) in this iframe won't be clickable. To make them clickable, use the router.navigate API from the @forge/bridge package.


| Property | Type | Required | Description |
|---|---|---|---|
key |
| Yes |
A key for the module, which other modules can refer to. Must be unique within the manifest. Regex: |
resource | string | If using Custom UI or modern versions of UI Kit | The key of a static resources entry that your module will display. See resources for more details. |
render | 'native' | If using modern versions of UI Kit | Indicates the module uses UI Kit. |
resolver | { function: string } or{ endpoint: string } |
Set the Set the | |
viewportSize | 'small', 'medium', 'large', 'xlarge', 'max', 'resizable' (Preview) or { width: string; height: string } (Preview) | The display size of resource. Can only be set if the module is using the resource property. Refer to resizable design guidelines for more direction. For the custom dimensions object, it accepts any common CSS size string for width and height,, e.g. '500px', '60vh'. | |
title | string or i18n object | Yes |
The title of the content action, which is displayed as a menu item. The |
displayConditions | object | The object that defines whether or not a module is displayed in the UI of the app. See display conditions. | |
keyboardShortcut | object | The object that defines a keyboard shortcut to trigger this module. See keyboard shortcuts. | |
unlicensedAccess | List<string> |
A list of unlicensed user types that can access this module. Valid values are: unlicensed (Guests Users), and anonymous. For more information, see
Access to Forge apps for unlicensed Confluence users.
|
| Key | Type | Required | Description |
|---|---|---|---|
i18n | string | Yes | A key referencing a translated string in the translation files. For more details, see Translations. |
This module can also be declared as a dynamic module. However, this capability is currently available as a Forge preview feature.
For more details, see Dynamic Modules.
When you register a dynamic confluence:contentAction module, the data object uses the same properties as a static confluence:contentAction module in the manifest. The module key is provided as a top-level property in the Dynamic Modules API payload.
The following examples show Dynamic Module implementations specific to this module. For more detailed information about the API used in these examples (including error handling information), see Dynamic Modules API.
1 2import { asApp } from "@forge/api"; const payload = { "type": "confluence:contentAction", "data": { "resolver": { "function": "resolver" }, "resource": "main", "render": "native", "title": "Dynamic content action" } } const response = await asApp().requestAtlassian(`/forge/installation/v2/dynamic/module/`, { headers: { 'Content-Type': 'application/json' }, method: 'POST', body: JSON.stringify(payload), }); const body = await response.text(); console.log(`Response: ${response.status} ${body}`);
1 2import { asApp } from "@forge/api"; const key = "content-action-dynamic"; const payload = { "type": "confluence:contentAction", "data": { "resolver": { "function": "resolver" }, "resource": "main", "render": "native", "title": "Updated dynamic content action" } } const response = await asApp().requestAtlassian(`/forge/installation/v2/dynamic/module/${key}`, { headers: { 'Content-Type': 'application/json' }, method: 'PUT', body: JSON.stringify(payload) }); const body = await response.text(); console.log(`Response: ${response.status} ${body}`);
Use the useProductContext hook to access the extension context in UI Kit or getContext bridge method in Custom UI.
| Property | Type | Description |
|---|---|---|
type | string | The type of the module. |
content.id | string | A string that represents the unique identifier of the content object. |
content.subtype | string or null | A string that represents the subtype of the content object. null is returned if subtype does not apply. |
space.id | string | A string that represents the unique identifier of the space object. |
space.key | string | A string that represents the unique key of the space object. |
location | string | The full URL of the host page where this module is displayed. |
Rate this page: