1 2.24 Set Up CalDAV
github-actions[bot] edited this page 2026-11-10 17:59:15 +00:00

Set Up CalDAV

Super Productivity has two separate CalDAV integrations. They can point at the same server, but they read different things and are set up in different places.

Integration Reads Where to add it Use it to
CalDAV Todo Tasks/todos (VTODO) Issue provider panel → Setup Issue Provider Import todos from a CalDAV task list as tasks and keep them updated
CalDAV Events Calendar events (VEVENT) Issue provider panel → Connect Calendar Show calendar events in the planner and schedule, and write time blocks to a calendar

CalDAV Todo never shows events, and CalDAV Events never shows todos. For a read-only subscription link without login, use iCal instead; see 2.07-Manage-Task-Integrations.

To open the issue provider panel and its plus (add) tab, see 2.07-Manage-Task-Integrations.

Set Up CalDAV Todo (Tasks)

  1. In the issue provider panel, open the plus (add) tab and click CalDAV Todo under Setup Issue Provider.
  2. Fill in the four required fields (see below).
  3. Click Test Connection (shown while adding the integration). The test also looks up the calendar, so it fails if the calendar is not found.
  4. Open Advanced Config, choose a Default Super Productivity Project and make sure Auto import to default project (requires a default project) is ticked. It is already ticked for a newly added integration, but disabled and without effect until a project is chosen; an integration set up in an earlier version keeps the setting it was saved with. Without both, todos are only listed in the integration's tab of the issue provider panel and you add each one by hand; nothing shows up in the project. See Choose How Tasks Are Imported.
  5. Save.

Required Fields

  • CalDAV URL (the base URL) — the address of your CalDAV account, not of a single calendar. The app connects to this address, asks the server for the calendars of your account, and then picks one by name. For Nextcloud, use https://<NC-URL>/remote.php/dav/calendars/<USER>.
  • The name of the CalDAV resource (the calendar) — see Calendar Name.
  • Your CalDAV username and Your CalDAV password — sent to the server as HTTP Basic authentication. If your server only accepts app passwords for this kind of login (for example with two-factor authentication), create one there and enter it here.

If one of the four is empty, the app shows CalDAV: Not properly configured.

In the web app, the browser may block requests to your server. For Nextcloud, the in-app help suggests allowing https://app.super-productivity.com in the Nextcloud app webapppassword. See also 3.05-Web-App-vs-Desktop.

Calendar Name

Each CalDAV Todo integration reads exactly one calendar (task list). The name you enter is compared with every calendar of your account:

  1. First with the calendar's display name. It must be identical, including upper and lower case and spaces.
  2. If no display name matches, with the last part of the calendar's URL. For a Nextcloud calendar whose address is …/remote.php/dav/calendars/<USER>/<CALENDAR_NAME>/ (shown by “Copy private link”), that is <CALENDAR_NAME>.

If nothing matches, the app shows CalDAV: Calendar "…" not found. To use several calendars, add one CalDAV Todo integration per calendar.

Choose How Tasks Are Imported

Only todos without a completion date are offered. Under Advanced Config:

  • Default Super Productivity Project — the project imported tasks go to.
  • Auto import to default project (requires a default project) — imports every open todo of the calendar into that project. Ticked for a newly added integration, where it takes effect once a default project is chosen; an integration set up in an earlier version keeps the setting it was saved with. Without it, nothing is imported on its own: todos are only listed in the integration's tab of the issue provider panel, where you can search them and add them one by one.
  • Poll imported for changes and notify — checks already-imported tasks for changes on the server.
  • Polling trigger — When context is open (auto import runs only while the default project is open; updates only for tasks in the project or tag you have open) or Always (in background).
  • Poll interval (minutes) — how often the app asks the server. Empty means every 10 minutes; the minimum is 1.
  • Category to filter issues for (leave empty for none) — only todos that carry exactly this category are offered and imported (case-sensitive, one category). Subtasks need the category too. Tasks that are already imported keep updating either way.
  • Also import subtasks when a task is added — see Subtasks.
  • Default note for imported tasks — used when the todo has no description.

What Is Synced in Each Direction

From the server to the app:

Todo on the server Task in Super Productivity
Summary Title
Description Notes
Completed Done
Start date (DTSTART) Scheduled day (all-day) or scheduled time (timed)
Due date (DUE) Deadline day (all-day) or deadline time (timed)
Parent todo (RELATED-TO) Parent task, see Subtasks

Other properties of the todo, such as priority or location, do not become task fields.

All of these are read when the todo is imported. When the todo later changes on the server:

  • Title, done state and notes are updated only if their sync direction (below) is Pull only or Both. Notes are Off by default, so a description changed on the server is not pulled unless you change that.
  • The schedule is set from the start date again; a todo without a start date clears the task's schedule.
  • A new due date replaces the deadline. Removing the due date on the server does not clear the deadline.
  • The parent is not changed after import.

From the app to the server, only three fields can be written, each with its own setting under Two-Way Sync (experimental):

Setting Field Default
Status sync direction Done / not done Pull only
Title sync direction Title Pull only
Notes / Description sync direction Notes Off

Each can be Off, Pull only (read from CalDAV), Push only (write to CalDAV) or Both (bidirectional):

  • With Pull only, the server owns the field: a change you make to it in the app is replaced by the server's value at the next poll.
  • With Both, a change you make in the app is written to the server. If the same field also changed on the server, the server's value wins.

Not written to the server, whatever the settings:

  • Start dates, due dates and deadlines. They are read but never pushed. Rescheduling a task in the app does not change the todo, and when the todo next changes on the server, the task's schedule is set from the todo's start date again.
  • Subtasks, tags, time estimates and tracked time.
  • New tasks, unless you turn on the switch below.

Create and Delete Todos on the Server

Both switches are under Two-Way Sync (experimental) and are off by default.

  • Create a CalDAV task for each new task in the default project — needs a Default Super Productivity Project; the checkbox is disabled until one is set. A new top-level task that you add to that project is uploaded as a todo with its title; a task moved into the project later is not. Subtasks, repeating tasks and tasks added from an issue stay local. If a category filter is set, the new todo gets that category. If the upload fails, the app shows an error and does not retry.
  • Delete the CalDAV task when the linked task is deleted — only for tasks deleted in Super Productivity. A single task is deleted on the server once its undo period has passed; several selected tasks right after you confirm.

Todos Deleted on the Server

Deleting a todo on the server does not remove its task in Super Productivity. The task is kept and stays linked to the provider. The regular background poll skips such a task without a message. A change you make to it is not pushed, also without a message, and your edit stays in the app. Only Update issue data in that task's context menu shows CalDAV: Task "…" seems to be deleted on server., with the task's title in the quotes. Delete the task in the app if you no longer need it.

Subtasks

Super Productivity supports one level of subtasks. With Also import subtasks when a task is added turned on:

  • The open direct children of a todo are imported as subtasks of its task.
  • Deeper levels are flattened. A child of a subtask is imported as another subtask of the same top-level task, at a later poll. Nothing is skipped, but the extra nesting is not kept in the app. The hierarchy on the server is not changed.
  • A todo whose parent task is archived is imported as a top-level task.

With the option off, child todos are imported as separate tasks; a child whose parent is already in the app is still placed under it.

Subtasks you add in the app are not uploaded. See also 2.04-Manage-Subtasks.

Set Up CalDAV Events (Calendar)

CalDAV Events is a bundled plugin. It shows events from your calendars in the planner and schedule views.

  1. In the issue provider panel, open the plus (add) tab and click CalDAV Events under Connect Calendar.
  2. Enter CalDAV server URL, Username and Password. The server root works, for example https://cloud.example.com/remote.php/dav for Nextcloud or https://caldav.fastmail.com/dav/ for Fastmail; the address of your calendar home also works.
  3. Click Load Options. The calendar lists stay empty until you do (a successful Test Connection also loads them).
  4. Under Calendars to display, select the calendars to show.
  5. Optionally choose a Default calendar for new events. It is used when you create or reschedule events directly from the planner.
  6. Save.

Optional settings:

  • Sync range (weeks) — how many weeks ahead events are loaded. Defaults to 2.
  • Auto time blocking and Time block calendar — when you schedule a task to a specific time, the app creates a matching event in that calendar. Rescheduling, completing or deleting the task updates the event.
  • Add tracked time to calendar and Tracked time calendar — see 2.07-Manage-Task-Integrations.

Troubleshooting

Connected, but No Tasks Appear (CalDAV Todo)

  • Check this first: Auto import to default project (requires a default project) is not ticked, or no Default Super Productivity Project is chosen. Both are under Advanced Config. Auto import is ticked for a newly added integration but does nothing without a default project, and an integration set up in an earlier version keeps the setting it was saved with. Test Connection succeeds either way; todos are then only listed in the integration's tab of the issue provider panel and must be added by hand. The search there matches the title case-sensitively.
  • Polling trigger is When context is open and the default project is not open.
  • The calendar holds events, not todos. Use CalDAV Events for events.
  • All todos in the calendar are completed. Todos with a completion date are not imported.
  • A category filter is set and the todos do not carry exactly that category.
  • The name matched a different calendar than you expected; see Calendar Name.

“CalDAV: Calendar … Not Found”

The login worked, but no calendar of the account matched the name.

  • Compare the name with the calendar's display name on the server, character by character, or enter the last part of the calendar's URL instead.
  • Check that the URL is the address of your account, not of one calendar.
  • Check that the calendar belongs to, or is shared with, the user you entered.

“CalDAV: Request Failed Because of a Client Side Network Error”

The server could not be reached or rejected the request. Check the URL, the username and the password (or app password). In the web app, also see the note on browser blocking under Required Fields.

Empty Calendar Dropdown (CalDAV Events)

  • Fill in the URL, username and password first, then click Load Options.
  • Only calendars that can hold events are listed. A pure task list does not appear here; use CalDAV Todo for it.
  • If Failed to load options appears or the list stays empty, check the credentials and the URL. Test Connection only checks that the URL answers, so it can succeed even when no calendars can be listed.

Read-Only Calendar

CalDAV Todo: importing and pulling work on a read-only calendar. Anything that writes to it shows CalDAV: Calendar "…" is read-only. Set the three sync directions to Off or Pull only and leave both create/delete switches off, or use a calendar you may write to.

CalDAV Events: if no calendar is chosen for what the app tries to write, it shows No write calendar configured. Please select a calendar in the CalDAV settings. (new events, time blocks) or No calendar configured for tracked time. Please select a calendar in the CalDAV settings. Choose a calendar you may write to in the matching field.