Connor338 downloadsPulls Google Calendar and Google Tasks into your vault as notes and allows you to update them.
Sync Google Calendar events and Google Tasks into an Obsidian vault, then push edits back to existing Google items.
Google remains the source of truth for whether an event or task exists. The plugin imports and updates notes, but it does not create or delete items in Google.
events/.tasks/.googleId.googleId are never pushed to Google.orphaned/ on import.syncDirection: pull-only to prevent local edits from pushing.Pushes are diff-based and checked against the last imported state. Large batches require explicit confirmation with Push pending updates (confirmed). Use Preview pending Google updates for a dry run.
Download main.js, manifest.json, and styles.css from the latest GitHub release and place them in:
.obsidian/plugins/google-sync/
Restart Obsidian and enable the plugin.
The plugin uses your own Google OAuth client. Tokens and settings stay in your vault's local plugin data.
Start here: Simple Google setup guide
Advanced/reference guide: Google setup guide
Essential steps:
For iPhone and iPad, use the iOS checklist.
Importing is bounded so a vault is not filled with old or recurring events.
* works as a wildcard.These settings only affect imports from Google.
Search for these commands in Obsidian's command palette:
Default folders:
events/
events/archive/
events/orphaned/
tasks/
tasks/overdue/
tasks/completed/
tasks/orphaned/
Change folder names in settings before first sync if you want a different layout.
Imported notes use YAML frontmatter. Keep the googleId field; it links the note to Google.
Event example:
---
title: Coffee with Alex
date: 2026-06-02T10:00
end: 2026-06-02T11:00
timezone: Pacific/Auckland
location: Wellington
status: confirmed
googleId: example-event-id
---
Notes stay in Obsidian.
Task example:
---
title: Buy milk
due: 2026-06-01
completed: false
notes: 2% organic, two cartons
googleId: example-task-id
---
Local note body stays in Obsidian.
The body of a task note is not synced. The notes frontmatter field maps to Google Tasks details.
Optional guide: Templater setup
If you import from Google, do not use Templater folder-template auto-runs on Google Sync's managed events/ or tasks/ folders. Templater cannot tell whether a new file was created by you or by Google Sync, so it can overwrite imported notes with template defaults.
Safe options:
event-drafts/ or task-drafts/.events/ and tasks/ only if you never import from Google.Smoke test helpers:
./scripts/verify-setup.sh /path/to/your/vault
./scripts/bootstrap-sample-notes.sh /path/to/your/vault
requestUrl API..obsidian/plugins/google-sync/data.json.See PRIVACY.md and SECURITY.md.
googleId.timezone, for example Pacific/Auckland.The same sync engine can run without Obsidian for server or cron use. It can import notes, push edits, run lifecycle filing, and commit the vault to git.
Build with:
npm run build:headless
Guide: headless sync
The Obsidian plugin runtime is the published main.js bundle. The headless/ TypeScript files are Node-only tooling and are not loaded by Obsidian.