Skip to main content

Prerequisites

Before continuing, you should have already completed the following for this connector:
1

Configure the Connector

Enable the connector and set up its connector profile in your project. See Managing Connectors.

Connector Profile

Todoist - OAuth 2.0
2

Link an Account

Connect an account using StackOne Hub or Auth Link.

Link Account

Todoist - OAuth 2.0

Retrieve the Native Webhook URL

StackOne generates a unique Native Webhook URL for this connection, which you paste into your Todoist app’s webhook settings.

1

Copy the Native Webhook URL

Open this connection in StackOne and copy the Native Webhook URL field. It is unique to this connection and already contains the security token Todoist will call, so keep it secret.

Configure the webhook on your Todoist app

Todoist webhooks are set on the OAuth app you created for this connection (the one whose Client ID and Client Secret you entered), in the App Management Console.

1

Open your app in the App Management Console

Sign in to Todoist, open the App Management Console, and click the app you use for this connection to open its settings.

2

Configure the Webhooks section

Scroll to the Webhooks section and fill it in.

  • Callback URL: paste the Native Webhook URL from this connection.
  • Webhook version: select Todoist API v1.
  • Webhook Events: tick the events you want to receive (match the events you enabled in StackOne), then save.
3

Note the verification token

Todoist signs every delivery with an X-Todoist-Hmac-SHA256 header computed from your app’s Verification token (shown in the app settings). No action is needed — StackOne authorizes each delivery by the Todoist user id it maps to a connected account.

Available webhook events

The events below can be enabled for this connection. Each delivered payload carries the firing event in event_name and the affected entity in event_data. Only the events you tick in the app’s Webhook Events (and enable in StackOne) are delivered.

1

Review task events

Fired for tasks (Todoist “items”).

  • Task Added (item:added) — Fired when a task is created.
  • Task Updated (item:updated) — Fired when a task is updated.
  • Task Completed (item:completed) — Fired when a task is completed.
  • Task Uncompleted (item:uncompleted) — Fired when a completed task is reopened.
  • Task Deleted (item:deleted) — Fired when a task is deleted.
2

Review comment events

Fired for comments (Todoist “notes”).

  • Comment Added (note:added) — Fired when a comment is added.
  • Comment Updated (note:updated) — Fired when a comment is updated.
  • Comment Deleted (note:deleted) — Fired when a comment is deleted.
3

Review project events

Fired for projects.

  • Project Added (project:added) — Fired when a project is created.
  • Project Updated (project:updated) — Fired when a project is updated.
  • Project Deleted (project:deleted) — Fired when a project is deleted.
  • Project Archived (project:archived) — Fired when a project is archived.
  • Project Unarchived (project:unarchived) — Fired when a project is unarchived.
4

Review section events

Fired for sections within projects.

  • Section Added (section:added) — Fired when a section is created.
  • Section Updated (section:updated) — Fired when a section is updated.
  • Section Deleted (section:deleted) — Fired when a section is deleted.
  • Section Archived (section:archived) — Fired when a section is archived.
  • Section Unarchived (section:unarchived) — Fired when a section is unarchived.
5

Review label events

Fired for personal labels.

  • Label Added (label:added) — Fired when a label is created.
  • Label Updated (label:updated) — Fired when a label is updated.
  • Label Deleted (label:deleted) — Fired when a label is deleted.
6

Review filter events

Fired for saved filters.

  • Filter Added (filter:added) — Fired when a filter is created.
  • Filter Updated (filter:updated) — Fired when a filter is updated.
  • Filter Deleted (filter:deleted) — Fired when a filter is deleted.
7

Review reminder events

Fired for reminders.

  • Reminder Fired (reminder:fired) — Fired when a reminder triggers.

Delivery format

How Todoist delivers events to StackOne.

1

Inspect event payloads

Todoist sends each event as an HTTP POST with a JSON body containing event_name (the firing event, e.g. item:added), user_id (the Todoist user the event belongs to), event_data (the affected entity, whose id is used as the event id), event_data_extra (present on updates), initiator (the user who triggered the event), version, and triggered_at (ISO 8601 time). One event is sent per request.

2

Understand signed deliveries

Todoist signs each delivery with an X-Todoist-Hmac-SHA256 header — a base64-encoded HMAC-SHA256 of the raw request body using your app’s Verification token. StackOne resolves and authorizes each delivery by the Todoist user id it maps to a connected account.

Verify

Your Connector should now be able to receive and process events. Try triggering an event and you should see an Event appear in the Connector logs.