Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Tasks CalDAV Sync

josecoelhojosecoelho2k downloads

Bidirectional sync between tasks and CalDAV servers.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates13

Bidirectional sync between obsidian-tasks and any CalDAV server (Nextcloud, Radicale, Baïkal, Fastmail, etc.).

Works with the obsidian-tasks plugin — syncs task status, dates, priorities, recurrence, tags, and notes as standard VTODO items.

Demo

Features

  • Multi-calendar support — sync different tags to different calendars and servers (tasks must have the tag on both sides — Obsidian #tag and CalDAV CATEGORIES)
  • Bidirectional sync — push tasks to CalDAV servers and pull changes back
  • Auto-sync — configurable interval (default: 5 minutes)
  • Dry-run mode — preview what will sync before committing changes
  • Conflict detection — manual resolution or auto-resolve with Obsidian wins
  • Task notes — indented bullet points below a task round-trip as VTODO DESCRIPTION
  • Recurrence — RRULE round-trips between CalDAV and obsidian-tasks format
  • Delete detection — three-way diff detects deletions on either side
  • Reconciliation — automatically matches identical tasks when switching calendars or after lost sync data, preventing duplicates

Requirements

  • Obsidian v0.15.0+
  • obsidian-tasks plugin (must be installed and enabled)
  • A CalDAV server with VTODO support

Installation

From Community Plugins (recommended)

Available in the Obsidian community plugin directory:

  1. Open Settings → Community plugins → Browse
  2. Search for "Tasks CalDAV Sync"
  3. Click Install, then Enable

Using BRAT (for beta releases)

  1. Install the BRAT plugin
  2. Open BRAT settings → Add Beta Plugin
  3. Enter josecoelho/obsidian-tasks-caldav and click Add Plugin
  4. Enable "Tasks CalDAV Sync" in Settings → Community Plugins

BRAT will also handle future updates automatically.

Manual

  1. Download main.js, manifest.json, and styles.css (if present) from the latest release
  2. Create VaultFolder/.obsidian/plugins/obsidian-tasks-caldav/
  3. Copy the downloaded files into that folder
  4. Restart Obsidian and enable the plugin in Settings → Community Plugins

Configuration

Open Settings → Tasks CalDAV Sync. Add one or more calendars, each with:

Setting Description
Tag Only tasks with this tag are synced — on both sides (Obsidian tags and CalDAV CATEGORIES must match)
Calendar name Name of the calendar on the server
Server URL CalDAV server endpoint
Username / Password CalDAV credentials

Global settings:

Setting Description Default
Sync interval Auto-sync period in minutes 5
New tasks destination File where incoming CalDAV tasks are created Inbox.md
New tasks section Optional heading within the destination file —
Sync completed tasks Include completed tasks in sync off
Delete behavior What happens when a task is deleted on one side ask

Conflict resolution

Two modes:

  • Manual (default) — sync pauses when conflicts are detected, requiring review
  • Auto-resolve Obsidian wins — automatically keeps the Obsidian version on conflict

Usage

Commands

Open the command palette (Ctrl/Cmd + P) to access:

Command Description
Sync with CalDAV now Run an immediate sync
Preview sync (dry run) See what would change without applying
View sync status Show last sync time and any conflicts
Inject task IDs Add unique IDs to selected tasks
Validate task IDs Check document for valid/invalid task IDs

Task IDs

Each synced task needs a unique ID. The plugin uses the obsidian-tasks native format:

- [ ] Buy groceries 🆔 20260213-a1b

Use the "Inject task IDs" command to add IDs to existing tasks, or the plugin will assign them automatically during sync.

Metadata mapping

Obsidian CalDAV Direction
Task text SUMMARY ↔
Indented bullets DESCRIPTION ↔
📅 due date DUE ↔
🛫 start date DTSTART ↔
✅ done date COMPLETED ↔
🔁 recurrence RRULE ↔
Priority emoji PRIORITY (1-9) ↔
Tags CATEGORIES ↔
Status (done/cancelled) STATUS ↔

Task notes

Indented bullet points below a task are synced as the VTODO DESCRIPTION field:

- [ ] Plan vacation 🆔 20260213-x2c
    - Research flights
    - Book hotel
    - Pack list

These notes round-trip to/from CalDAV clients like Thunderbird or Tasks.org.

Troubleshooting

Sync reports success but nothing changes

The Tag setting is a hard filter on both sides, not just routing:

  • Obsidian → CalDAV — only tasks carrying the Obsidian #tag are pushed
  • CalDAV → Obsidian — only server VTODOs whose CATEGORIES include that tag are pulled

If your server tasks have no matching CATEGORIES, sync completes successfully but pulls nothing ("No tasks"). To sync everything regardless of category, leave the Tag field empty.

Known limitations

  • Priority round-trip is lossy — obsidian-tasks uses emoji-based priorities (⏫🔼🔽) while CalDAV uses numeric PRIORITY (1-9). Obsidian→CalDAV maps correctly, but CalDAV→Obsidian does not write priority emojis back into the task markdown.
  • Internal obsidian-tasks API — This plugin accesses obsidian-tasks' internal getTasks() method, which is not part of the official public API. Future obsidian-tasks updates could break this integration.

Tested CalDAV servers

Server Coverage
Radicale Automated E2E suite
Nextcloud Automated E2E suite
Vikunja Automated E2E suite
Baïkal (SabreDAV) Automated E2E suite
Fastmail Manually verified

Should work with any CalDAV server that supports VTODO, such as Synology.

iCloud

iCloud Reminders is not supported directly — Apple does not expose it as a standard CalDAV/VTODO backend, so sync fails at later steps even with the correct server URL (#74).

Workaround: sync Obsidian with a standards-compliant CalDAV account (e.g. fruux) and add that same account to the iOS Reminders app. Reported working by @Jane2100117.

Development

npm i            # install dependencies
npm run dev      # watch mode
npm run build    # production build with type checking
npm test         # run all tests (unit + E2E, requires Docker for Radicale)
npm run test:wdio  # run Obsidian smoke tests (requires Docker + downloads Obsidian binary on first run)

See CLAUDE.md for architecture details and testing guidelines.

License

MIT

95%
HealthExcellent
ReviewPassed
About
Sync obsidian-tasks with CalDAV servers bidirectionally, converting task status, dates, priorities, recurrence, tags and indented notes to VTODO items. Map tags to multiple calendars, run auto-sync or dry-run previews, detect conflicts and deletions, and reconcile duplicates.
TasksCalendarAutomation
Details
Current version
1.2.2
Last updated
21 hours ago
Created
7 months ago
Updates
13 releases
Downloads
2k
Compatible with
Obsidian 0.15.0+
Platforms
Desktop only
License
MIT
Report bugRequest featureReport plugin
Author
josecoelhojosecoelho
github.com/josecoelho
GitHubjosecoelho
  1. Community
  2. Plugins
  3. Tasks
  4. Tasks CalDAV Sync

Related plugins

TaskNotes

Note-based task management with calendar, pomodoro and time-tracking integration.

Day Planner

Day planning from a task list in a Markdown note with enhanced time block functionality.

Task Collector (TC)

Change task status and collect tasks within a document using hotkeys and context menus.

Rollover Daily Todos

Rollover any unchecked checkboxes from your last daily note into today's note.

Todoist Sync

Materialize Todoist tasks within your notes.

Google Calendar

Interact with your Google Calendar.

TaskChute Plus

Execute TaskChute that slots today's tasks, tracks projects, adds comments, and keeps you focused on now.

QuickAdd

Quickly add new notes or content to your vault.

Templater

Create and use dynamic templates.

Homepage

Open a note, base, or workspace on startup, or set it for quick access later.