SpaceCal Team Calendar

SpaceCal Team Calendar for Confluence

SpaceCal puts a shared team calendar on any Confluence page. Leave, releases, on-call weeks and meetings sit in one place, in month, week or agenda view, and anyone who can see the space can read them.

Confluence's own team calendars come with Premium and Enterprise only. SpaceCal works on Standard sites too.

What it does

Insert the SpaceCal team calendar macro on a page. Its events belong to the space, so every SpaceCal macro in that space with the same calendar name shows the same events. Give a macro a different name (say "Releases") and it gets a calendar of its own.

You can label the six colours in the macro settings, for example green for leave and purple for releases. The labels show as a legend above the calendar and as categories in the .ics file.

Who can do what

Access follows the space, and every check runs as the person using the macro.

PersonCan
Can view the spaceSee events and export them
Can add pages in the spaceAlso add, edit and delete any event in that space's calendars
Can't view the spaceNothing. The macro shows an error and no events

Edits are safe when two people work at once. If someone saved an event after you opened it, your save is refused and you're asked to reload, so nobody overwrites a change they never saw.

Dates and time zones

All-day events are plain dates. A leave day on 5 November is 5 November for every reader, wherever they are.

Timed events are entered in your own time zone (the one in your Atlassian profile) and stored as exact moments. A reader in another zone sees them at their local time, and on their local day. A 22:00 London meeting shows at 07:00 the next morning for someone in Tokyo. If you pick a time that doesn't exist because the clocks jump forward, the app says so and asks for another time. When a time happens twice because the clocks go back, the earlier one is used.

Export

Export .ics covers 90 days back to 365 days ahead, up to 1,000 events or 1 MB. The file is built when you click Export, with your own access, and it shows up as text in a box. Select it all, copy it, save it in a file ending in .ics, and import that file into your calendar app.

There's no download button. UI Kit has no way to save a file, and a download link would need a public web trigger, which Atlassian counts as data egress. So the app keeps the copy box only and stores nothing for the export.

When the window holds more than the limit, upcoming events win. The file takes everything from today on first, then past events from the most recent backwards, and the dialog says it was cut.

The export is a snapshot. It doesn't update itself, so export again after changes. All-day events go out as dates and timed events in UTC, so calendar apps show them at the right local time. People are listed by display name in the event description. Names that Confluence doesn't return (for example, hidden by profile settings) are counted instead.

Limits

LimitValue
Title200 characters
Notes2,000 characters
People per event20
All-day event length366 days
Timed event length14 days
Calendar name40 characters
Events per calendar (space plus name)20,000
Events loaded for one view500, with a notice when more fall in the range
Years2000 to 2099
Export90 days back to 365 days ahead, 1,000 events, 1 MB, names for 500 people

Recurring events aren't supported. A weekly meeting has to be added as separate events.

Permissions and data

The app runs on Atlassian Forge with no outside servers, no web triggers and no external calls. Its only requests go to Confluence on your own site, as the person using the macro. Events are kept in Forge SQL, Atlassian's hosted database for the app. It asks for three scopes.

ScopeWhy
read:space:confluenceCheck that you can see the space and whether you can add pages there
read:confluence-userLook up display names for the .ics file
report:personal-dataTell Atlassian which account IDs the app stores, so closed accounts can be removed

It can't change pages, comments or anything else in Confluence. See PRIVACY.md for what's stored and for how long.

Install from source

You'll need Node.js 22.5 or later and the Forge CLI.

npm install
forge register        # replaces REPLACE_ME in manifest.yml with your app id
forge deploy -e development
forge install --product confluence

npm test runs the unit tests against an in-memory SQLite copy of the schema. npm run validate checks the manifest offline, and npm run check-frontend checks the UI Kit source. The last two use your installed Forge CLI.

Support

Use the support link on the app's Marketplace listing. Include the error text from the macro, and leave out event titles you'd rather not share.

Support Zovo

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.

More tools by Zovo

Support this work

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.

Sponsor on GitHubZovo on GitHub