TaskBridge / Linear → Todoist

Assigned there.
Planned here.

TaskBridge carries assigned engineering work from Linear into the Todoist you already use for planning, reminders, and daily focus. Connect your own accounts, pick the teams that matter, preview the exact import, and decide what completing a task should do back in Linear.

BAR-104 → todoist://today · sync.status = ok

Your accounts, your choice Preview every import Linear is the source of truth Todoist stays personal

01 · What we stand on

Four commitments.

They shape the product, the copy, and every design decision on this site.

01

Linear is the source of truth

Shared work lives in Linear. TaskBridge mirrors it and reports back. It never becomes a third place to check.

02

Nothing imports unseen

You choose the teams and projects, and you preview the exact import before anything lands in your list.

03

Todoist stays personal

Your projects, labels, and errands are none of our business. The bridge carries work in; it never reads the rest.

04

Sync you can forget about

Complete or reopen on either side and the other follows, on your rules. Boring reliability is the whole feature.

02 · The crossing

Two shores. One list.

A bridge is configured in five steps. Nothing is written to either system until you activate — and you see the exact import first.

  1. 01

    Connect

    Sign in with an email link, then connect your own Linear and Todoist accounts through OAuth. Tokens are stored only as AES-256-GCM ciphertext.

  2. 02

    Choose teams

    Pick the Linear teams to include. Only open issues assigned to you are in scope.

  3. 03

    Pick a destination

    Choose the Todoist project where mirrored tasks will live.

  4. 04

    Set behavior per team

    Two questions per team: which state “done” means, and where “not done” returns the issue.

  5. 05

    Preview & activate

    TaskBridge computes the import server-side and lists every issue. Activation imports precisely that list.

Preview & activate

18 issues will be imported

12 from BAR, 6 from AGQ

BAR · Barology Core
IssueTitleCurrent state
BAR-101Fix invoice rounding on annual plansIn Progress
BAR-102Handle proration for seat downgradesTodo
BAR-103Backfill harvest events for JuneIn Review
BAR-104Retry failed harvest webhook deliveriesIn Progress
The wizard’s final step, as the app renders it: the import is computed server-side and every issue is listed before anything is written. Shown with TaskBridge’s built-in demo workspace.

03 · Field ownership

Two systems, each still itself.

Exactly one thing crosses the bridge: the task. Everything else has one owner, and TaskBridge enforces the boundary.

Linear — the far shore

Owned there, mirrored here.

Text flows one way, from Linear into the mirror. Editing the mirror never updates these fields; reconciliation restores them from Linear.

  • Identifier & title[BAR-142]
  • Descriptionone way
  • Assignee, team, projectscope
  • Workflow stateIn Review, Shipped, …
  • Engineering labelsfrom Linear
  • Delivery deadlinenever your due date
  • Source URLdeep link back

Todoist — your shore

Yours. Never read, never written.

Reconciliation never includes these fields in a Todoist update, and never maps your planning back to a Linear deadline.

  • Planned date & remindersyour schedule
  • Personal priorityyours
  • Orderingyours
  • Personal labelsyours
  • Private commentsnever read
  • Personal subtasksnever read

Completion crosses — both ways, under rules you chose. Completing the Todoist task moves the Linear issue to the state you picked for that team. Un-completing it puts the issue back exactly where it was. That is the entire two-way surface.

04 · The contract

“Done” means what your team expects.

Completion behavior is configured per Linear team, in two questions. TaskBridge shows the resulting sentences before you activate — and honors them afterwards.

What you configure

One lifecycle policy per team. The app states each policy as the sentences it will act on:

BAR · Barology Core Lifecycle policy
  • When you complete a task in Todoist, the issue moves to Done.
  • When you un-complete a task, the issue returns to the exact state it was in before.
AGQ · Acquisition Lifecycle policy
  • When you complete a task in Todoist, the issue moves to Shipped.
  • When you un-complete a task, the issue returns to its previous state.

What TaskBridge guarantees

Completion can move an issue only to the one state you chose. The prior state is recorded durably and is the only reopening target.

If Linear was completed by someone else and no prior state was recorded, Linear is authoritative — TaskBridge re-closes the Todoist task rather than guessing.

Issues that became deleted, unassigned, canceled, or archived are never completed by the bridge.

When something can’t proceed, TaskBridge holds the work and says exactly what happened — and what didn’t:

Holding · 2 completions The “Shipped” state no longer exists in BAR. 2 task completions are on hold until you pick a new state. Nothing was changed in Linear.

05 · Sync you can forget about

Webhooks make it fast. Reconciliation makes it true.

TaskBridge never turns a webhook payload into a write. Verified events only wake reconciliation, which rereads both systems and plans explicit operations.

Wake

Webhooks

Deliveries from Linear and Todoist wake the bridge within seconds. Every delivery is HMAC-verified against the exact raw body, bounded by a replay window, and deduplicated by the verified body hash — delivery headers are never trusted.

LINEAR   signature + 60 s window
TODOIST  signature + 5 min window
IDENTITY verified raw-body hash
PAYLOAD  ≤ 256 KiB

Read

Reconciliation

Both providers are reread before anything is planned. The plan is a list of explicit operations — create, update, complete, reopen — and nothing is applied unless apply is explicitly true.

APPLY    per-bridge lock, serialized
WAKEUPS  coalesced, one follow-up
MANUAL   Sync now, 60 s throttle

Repair

The repair pass

A periodic pass covers missed webhooks and process restarts. Retryable work waits in a durable outbox with exact next-attempt times, and every delayed write re-verifies that its link still names the same relationship before touching a provider.

PERIODIC every 5 min per bridge
OUTBOX   ≤ 25 due entries per pass
LEASE    120 s · provider timeout 15 s

Activity

TimeTriggerModeStatusResult
11 Aug, 17:58Scheduled checkApplySucceededNo changes
11 Aug, 17:53Provider eventApplySucceeded1 Linear issue moved
11 Aug, 17:49ActivationApplySucceeded18 Todoist tasks created
Every reconciliation run is recorded with its trigger, mode, and exact result — including the runs that changed nothing. Boring reliability is the whole feature.
Syncing BAR-142… retry at 14:32 · nothing changed in Linear

Invite-only beta

Stand on it.

TaskBridge is in an invite-only beta. Sign in, connect your accounts, and preview your first import before anything is written.