Calendar integration
Add individual deadlines to your calendar with one click, or subscribe Google Calendar / Outlook / Apple Calendar to a private feed of your active compliance dates.
Overview
Ghost surfaces your team's compliance deadlines — DSAR response windows, breach notification clocks, DPIA questionnaire due dates, ROPA review cadences, training and consent expiries — in the in-app calendar. The calendar integration brings those deadlines into your everyday calendar app so they sit beside your meetings instead of in a separate browser tab.
There are two ways to get them out of Ghost:
- Per-event “Add to calendar” for a one-off snapshot of a single deadline. Good for sharing a single date with a colleague or pinning it to your personal calendar.
- Subscribable feed — a private URL you paste into Google Calendar, Outlook, or Apple Calendar. The feed updates automatically as deadlines move.
Per-event “Add to calendar”
Look for the small calendar icon next to any deadline on a DSAR case, breach record, DPIA questionnaire, or ROPA review. Clicking it opens three options:
- Download .ics file — downloads a single event you can open in Apple Calendar, Outlook desktop, or Thunderbird.
- Add to Google Calendar — opens calendar.google.com pre-filled with the event details.
- Copy event details — copies a plain-text block to your clipboard for emails or Slack messages.
These are one-off events. If the deadline moves later in Ghost (for example, you extend a DSAR), the calendar entry stays at the original date. For deadlines that should keep themselves up to date, use a calendar feed instead.
Subscribable calendar feed
A feed is a private .ics URL that calendar clients poll on a schedule. Whenever they fetch the URL, they receive the current set of compliance deadlines for your account — new events appear, completed ones drop off, moved deadlines shift to their new dates.
Feeds are per-user. Each member of an organisation creates their own and the URL only grants access to deadlines that user can already see in Ghost (matter scoping is honoured). If a teammate leaves the org, their feeds stop working on the next refresh.
Creating a feed
Open Settings › Calendar. Calendar feeds are personal to each user, so every team member with a Pro or Team plan can create their own — you don't need to be an admin. Click New feed and:
- Label— something memorable like “Outlook on my laptop”. You will see this label again later when you decide to revoke it.
- Modules — pick which compliance areas should appear. Leave them all selected to mirror the in-app calendar; narrow it down if your personal calendar should only carry, say, DSARs and breaches.
When you click Create feed, Ghost generates a URL that looks like https://ghostredact.app/api/calendar/ghc_….ics. The URL is shown once — copy it immediately. If you lose it, revoke the feed and create a new one; we cannot recover the original.
Subscribing in your calendar app
Google Calendar
The reveal modal includes an Add to Google Calendar button that opens Google with the URL pre-filled. Otherwise: open Google Calendar, click the + next to Other calendars, choose From URL, and paste the feed URL.
Outlook (web and desktop)
In Outlook on the web, open Calendar, click Add calendar in the left sidebar, choose Subscribe from web, and paste the URL. Outlook desktop pulls the subscription down automatically once the web version syncs.
Apple Calendar
On macOS, choose File › New Calendar Subscription and paste the URL. On iOS, open Settings › Calendar › Accounts › Add Account › Other › Add Subscribed Calendar.
How often the feed updates
The feed declares a refresh interval of six hours. Most calendar clients honour this loosely — Google polls roughly every 12–24 hours, Outlook every few hours, Apple Calendar configurable from Edit › Edit Subscription. Ghost rate-limits each token to 60 fetches per hour as a safety net so a misconfigured client cannot hammer the database.
Because the refresh is on the calendar client's schedule (not yours), expect a delay of a few hours between making a change in Ghost and seeing it in your calendar. For an immediately-correct view, use the in-app calendar.
Revoking a feed
If a device is lost, a calendar app no longer needs the feed, or you simply want to clear out an old one, click Revoke on its card in Settings › Calendar. The next time the calendar client fetches the URL it will receive an empty “feed unavailable” payload and existing events from it will eventually disappear.
Security model
- The token is a 48-character random hex string with a
ghc_prefix. Treat it like a password — anyone with the URL can read your calendar. - Ghost stores only a
SHA-256hash of the token. The plaintext exists exactly twice: in the URL you pasted into your calendar, and in the request from the calendar app. - Every fetch re-checks that you are still a member of the organisation. Removing a teammate from an org silently invalidates all their feeds.
- Plan downgrades disable existing feeds without revoking them — re-upgrading restores them automatically.
- The route is rate-limited per token (60 requests/hour) and the response carries
noindexheaders so search engines cannot crawl a leaked URL into oblivion.
Tips
- Create separate feeds per device so you can revoke one without the others. “Outlook desktop”, “personal iPhone”, etc.
- Use the per-event button when you need to share one deadline with someone outside the org — never share your feed URL.
- Treat the calendar feed as a read-only convenience. The source of truth is always the in-app record; editing the event in your calendar app does not change anything in Ghost.