Google Simple Tasks

Tabbed category

The what

The Google Simple Tasks plugin was created for my personal use to automatically (or manually) one-way sync Google Tasks to Obsidian and to (manually) send locally created tasks from Obsidian to Google Tasks.

It all began in July of 2025 when I created my first personal Obsidian plugin that I called Add to Google Tasks. The plugin let me create a standard, markdown checkbox “task” in Obsidian and send it to any of my Google Tasks lists via a hotkey. Once sent, the task disappeared from wherever I had added it locally and showed up the correct list in Google Tasks.

Like many do, I started with the Obsidian sample plugin available on GitHub. I had additional help from claude.ai, who, while saving me some time, also frequently frustrated me by randomly rewriting my perfectly working code (cheeky bot). I developed the plugin for use with the desktop version of Obsidian on Mac OS. In my particular case, I am on the latest beta version and have the basic Catalyst license which gives access to beta app versions and Obsidian Bases.

After creating Add to Google Tasks, I decided to go on to create a two-way syncing plugin which I initially called Google Tasks Aller-Retour, designed to work independently from the first plugin. While it ended up working pretty well, there were issues with timing and delays that made me nervous about which location was up to date. After messing with it for a month, I decided that I would let Google Tasks be the “source of truth” for managing the actual tasks, so I added the first plugin to this newer version, changed the sync to create individual task “notes” (rather than the original one note for each list) and renamed it Google Simple Tasks. It would still allow me to capture local tasks but not worry about accidentally overwriting or missing changes as was sometimes the case in the original two-way sync.

The why

What motivated me to create this revised version of my original two plugins was the move to Obsidian from ClickUp and Notion, and a desire to stop paying for external task managers. I needed a simple way to turn emails into tasks, since that is where most of my tasks began, but I also wanted to be able to create tasks locally and add them to my different Google Tasks lists.

After years of using third-party task managers, I found that Google Tasks had gotten pretty good – an email becomes a task with a simple click, without adding plugins to Gmail. And the Google Tasks page view also lets you arrange lists in a kanban-like setting and drag and drop tasks (active, billable, etc.) between lists. Pretty simple. I was not time-tracking my work, nor do I collaborate with other workers, so most popular task managers were overkill for me.

So… in September 2025, after a lot of experimenting and learning, Google Simple Tasks was “reborn”. We’ll see where it goes from here.

 

Features

  • On sync (Google Tasks to Obsidian), task lists are imported as folders and each task as a note inside the list folder
  • Manual or automated syncing (up to once per hour) from Google Tasks to Obsidian desktop
  • Ability to create a standard checkbox task anywhere in Obsidian and send it to Google Tasks, to the task list of your choice
  • Ability to add a due date and time to any task you send to Google Tasks
  • Locally added task is deleted upon a successful send to Google Tasks, appearing in next sync
  • Set custom hotkeys in Obsidian settings to trigger sending and syncing
  • Date format option in Settings
  • Compatible with Dataview plugin queries to display and sort tasks to taste
  • Compatible with Bases core database plugin (as of September 2025)

Requirements

  • Obsidian desktop installed on your computer (I have only tested this on Mac)
  • Your own Google API credentials (Client ID and Client Secret) – see OAuth documentation on Installation page
  • Node.js and npm installed (for building the plugin) in the code editor of your choice (VS Code, etc.)

Screenshots

Click on an image to enlarge it.

Requirements

  • Obsidian desktop version installed on your computer (currently only tested on Mac)
  • Your own Google API credentials (Client ID and Client Secret) – see OAuth documentation below
  • Node.js and npm installed (for building the plugin) in the code editor of your choice (VS Code, etc.)

Create your Google App credentials

You can create one app and use the same credentials for any Obsidian plugins that require credentials. You’ll need a paid Google Account to do this.

  • Sign in to your Google account on the Google Cloud Console.
  • Create or select a project – Click on the project dropdown at the top, click “New Project” and enter a project name, then click “Create”
  • Enable required APIs – In the left sidebar, go to “APIs & Services” > “Library”. Search for and enable APIs, then locate and enable the Google Tasks API.
  • Create credentials – Go to “APIs & Services” > “Credentials”. Click “Create Credentials” at the top. Choose your credential type (OAuth 2.0 Client IDs for user authentication).
  • Configure OAuth client – Choose desktop application type and external use and click “Create”
  • Download credentials – Click the download icon next to your new credentials; save the JSON file securely (be careful not to commit this file to a public repository)
  • Set up the OAuth consent screen – Go to “OAuth consent screen” and fill in required app information. Add test users if in development mode

Your credentials are now ready to use in your application.

Download and install the plugin

Download the latest version of Google Simple Tasks for Obsidian desktop. An installation guide is included (or visit the Docs tab).

Download the zipped readme.

Changelog

Version 1.0.0

Note from the developer

Because this plugin uses (your own) OAuth credentials, it is not currently mobile-compatible and making it so is way beyond my skill level. This hasn’t been a big issue for me since I am using Obsidian Sync and mainly only look at my tasks on my phone and tablet (where I can always see the latest sync). Maybe some brave soul will take what I’ve done here and expand on it. I’m still too shy to put this on GitHub!

 

 

Configure the plugin

  • Open Obsidian Settings → Google Simple Tasks
  • Paste your Client ID and Client Secret
  • Run the command Authenticate with Google from the command palette
  • Follow the authentication flow :
    – Click the link to open Google authentication
    – Grant permissions to access your Google Tasks
    – Copy the authorization code
    – Paste it back in Obsidian

The plugin will automatically start syncing and you’ll see status messages.

Customize Settings

  • Tasks Folder – Root folder for all task notes (default – Tasks)
  • Sync Interval – How often to sync automatically in minutes (default 5, max once per hour)
  • Due Date Icon – Icon or text to display before due dates (default – 📅)
  • Completed Icon – Icon or text to display before completion dates (default – ✅)
  • Show Source List – Toggle display of the source Google Tasks list name
  • Date Format – Choose between Dataview format (YYYY-MM-DD), short (M/D/YYYY), or long (Mon DD, YYYY)

Usage

Receiving tasks from Google

Tasks automatically sync based on your configured interval. For manual sync:

  • Open the command palette (Ctrl/Cmd + P)
  • Run Sync Google Tasks to Obsidian
  • Tasks will be organized into subfolders by list name
  • Completed tasks go to the Archived subfolder

Sending tasks to Google

Method 1 : From any note

  • Write a task in checkbox format: `- [ ] Task title`
  • Place your cursor on that line
  • Run Send task to Google Tasks command (assign a hotkey for quick access)
  • Select which Google Tasks list to add it to
  • Optionally set a due date
  • The task is created in Google Tasks and the local task is removed
  • After auto-sync, a new note will appear in the appropriate subfolder

Method 2 : Update existing synced tasks

  • Open any task note that was synced from Google Tasks
  • Edit the title in the checkbox line or check/uncheck the box
  • Run Send task to Google Tasks command (or your custom hotkey) to push your changes
  • Changes are sent to Google Tasks
  • The note updates after the next sync

Important – If you don’t manually send local updates, the next automatic sync from Google will overwrite your local changes

Task note structure

Each task note includes :

Frontmatter metadata

google_task_id – Unique identifier for syncing

list_id and list_title – Source Google Tasks list

status – Current status (needsAction or completed)

due_date – Formatted due date (if set)

completed_date – Formatted completion date (if completed)

notes – Task notes from Google Tasks (supports multi-line)

tags – Extracted hashtags from notes

parent_task – ID of parent task (for subtasks)

Body

  • Task title as heading
  • Interactive checkbox with formatted dates
  • Task notes section
  • Last sync timestamp

Folder structure

Tasks/
├── [List Name 1]/
│ ├── Task Title 1.md
│ └── Task Title 2.md
├── [List Name 2]/
│ └── Task Title 3.md
└── Archived/
└── Completed Task.md

Bases integration

This plugin was designed with Obsidian Bases in mind. Filter and sort tasks by list, status, due date, tags and more. Use properties and formulas to control display and use Obsidian links and tags in Google Tasks to enable querying and search. Task title in .base files automatically link to the locally synced Google Task note.

Dataview integration

Use of Obsidian links and tags in Google Tasks enables querying and search. Use inline  Dataview (community plugin) syntax to customize results.

dataview
TASK
WHERE due
WHERE !completed
SORT due ASC

Query by list

dataview
TABLE due_date, status
FROM "Tasks/Work Tasks"
WHERE !completed
SORT due_date

Find overdue tasks

dataview
TASK
FROM "Tasks/List-folder-name"
WHERE due < date(today) AND !completed

Tips

  • Assign a hotkey to “Send task to Google Tasks” for quick capture and updates
  • Push changes immediately – if you check/uncheck tasks in Obsidian, use the send command right away or they’ll be overwritten on next sync
  • Google Tasks is the source of truth – automatic sync always overwrites local changes
  • Use hashtags in Google Tasks notes – they’ll be extracted as Obsidian tags
  • Edit task notes freely – add your own content below the sync metadata (won’t be sent to Google)
  • Link tasks to projects by adding wiki-links in your notes
  • Organize with subfolders – tasks automatically organize by list name
  • Archive completed tasks automatically move to the Archived folder

Privacy & Security

  • Your Google credentials are stored locally in Obsidian’s data
  • The plugin only requests access to your Google Tasks (no other data)
  • Authentication uses OAuth 2.0 with refresh tokens for security
  • No data is sent to third parties

Troubleshooting

Authentication fails

  • Ensure you’ve enabled the Google Tasks API in Google Cloud Console
  • Try revoking access in your Google Account settings and re-authenticating
  • Check that you’re using “Desktop app” credentials

Tasks not syncing

  • Verify your refresh token is set in settings
  • Check the console (Ctrl/Cmd + Shift + I) for error messages
  • Try manually running the sync command

Task updates not working

  • Ensure you’re editing a synced task note (has google_task_id in frontmatter)
  • Check that the checkbox line format is correct –  - [ ] Task title
  • Verify you have a valid connection (try manual sync first)

Changes in Obsidian get overwritten

  • This is expected behavior – automatic sync always pulls from Google Tasks
  • You must manually use the “Send task to Google Tasks” command to push local changes
  • Assign a hotkey for quick access when you make changes

Support

For issues, feature requests, or questions  – dana@vizou.com