
Put Jira issues on a calendar inside any Confluence page. You pick a JQL query and a date field, and the macro shows a month grid, a week or a day-by-day list. The date can be due date, created, updated, resolved or any date custom field, alone or as a start and end pair. Every issue links to Jira.
Each reader sees only the issues they can see in Jira, because the search runs with the reader's own Jira permissions.
customfield_10015).JQL errors show Jira's own message. A custom field that doesn't exist or isn't a date is named in the error. Cut-off results and issues without a readable date are reported under the calendar.
A site administrator installs the app for Confluence and then for Jira on the same site. Both installs are needed (see Requirements).
/Issue Dates Calendar and insert the macro.project = ABC AND statusCategory != Done. It's the only required setting.customfield_10015, cf[10015] or 10015).To find a custom field ID, go to Settings, Issues, Custom fields in Jira and open the field's Edit details page. The number in the page address is the ID.
| Limit | Value | What happens |
|---|---|---|
| Issues per view | 500 loaded | The search also covers a day or two around the range, and those issues count toward the 500. When more match, the earliest issues in the range are shown and the notice gives the exact number shown. |
| JQL length | 2,000 characters | Longer queries are refused in the settings check. |
| Jira time budget | 20 seconds per load | The budget also bounds a request that is still running and the reading of its response. A further page starts only with 6 seconds left. Loading then stops early and the notice says how many issues are shown. |
| Rate limits | Retry-After up to 3 seconds | The app waits and retries. When Jira asks for a longer wait, the app doesn't retry and says Jira is limiting requests. |
| Summary length | 200 characters | Longer summaries end with "…". |
| Cache | 5 minutes per reader and view | Refresh reloads from Jira. A Refresh within 20 seconds of the last load uses the cache. A result that ran out of time isn't cached, so the next load asks Jira again. |
Date fields, such as Due date, Start date and other Date custom fields, are calendar days and are never shifted.
Date-time fields (Created, Updated, Resolved and Date Time custom fields) land on the day they fall on in the reader's Atlassian time zone, which is shown under the calendar. Jira compares them in the reader's Jira time zone instead, and the two can be up to 26 hours apart. So the search is widened by two days on each side for date-time fields (one day for date-only fields) and then filtered by the local day. Issues near midnight aren't lost.
An issue whose end is before its start shows on its start day only, and the notice counts it.
Your JQL is wrapped as (your JQL) AND <date range> ORDER BY <date field> ASC, key ASC. Before that, the macro checks that parentheses and quotes are balanced outside quoted text and that no stray backslash could escape the added ). If something is off, it asks you to fix the query. Any ORDER BY in your query is ignored. The JQL goes only in the body of Jira's search API, never in a URL.
read:jira-work lets the app search issues and read field names (to check custom date fields), as the reader.storage:app holds the 5-minute cache of results and of custom field names and types.Confluence Cloud and Jira Cloud must be on the same site. The macro calls that site's Jira as the reader.
The app must be installed for Jira as well as for Confluence. A site administrator adds it to Jira after the Confluence install. Without the Jira install, Forge refuses every Jira call with "The app is not installed on this instance", and the macro tells readers that an administrator needs to install the app for Jira.
In the manifest (app.compatibility), Confluence is the required product and Jira is optional. Forge's manifest check accepts only one required product, so Jira can't be marked required too. That's why the Jira install is a manual step. We haven't run the app on a live site yet. Public answers from Atlassian staff on the developer community say the second install is needed, so we treat it as required (see NOTES.md).
If Jira refuses a search for any other reason, the macro shows a permission message and says what an administrator should check. It doesn't show an empty calendar.
Zovo builds and maintains this app. If it saves you time, you can support the work on GitHub Sponsors. Sponsorship is optional, and the tool works the same without it.
Zovo is made by theluckystrike on GitHub.
If this app saves you time, you can support the work on GitHub Sponsors. Monthly tiers start at $5, and one-time tiers start at $15. Sponsorship is optional, and the tool works the same without it.