Fixing Broken Task Lists When Automations Forget Everything

Fixing Broken Task Lists When Automations Forget Everything

1. When your to-do app resets your priority tags silently

This happened inside Todoist, late on a Thursday morning. A random project renamed itself to “Inbox (1)” and the priority tags I had manually applied the night before — red for urgent, blue for blocked, yellow for follow-ups — were completely gone. Not replaced. Just… gone.

Turns out, I’d connected it to Zapier to automate context tagging based on Slack channel names. What I didn’t realize: Todoist silently resets priority levels when you update a task via the API without explicitly preserving them. Which Zapier does not do by default. You have to re-pass the priority or it assumes you wanted it back on level 1 (normal).

Nowhere in the Zapier docs does it mention this behavior. Todoist’s own field descriptions just say “optional priority field (1-4)”, but they don’t warn that omitting this overwrites the existing value. That’s a platform hazard, not user error.

The fix? I had to insert a Code step before the Todoist update that pulls the current task metadata (via a Todoist Lookup), extracts the existing priority, and re-inserts it back into the Update Task step explicitly. Overkill, but consistent.

2. Why list mirroring between Notion and Google Tasks breaks randomly

I tried syncing Google Tasks with Notion for a week using Make. Google Tasks has a simple API but: it does not emit push notifications reliably. Some events come in twice. Others never trigger at all. You end up relying on polling, which is slow and fundamentally unreliable when you need sub-hourly coherence.

One mirror bug: if you create a task in Google with a subtask nested under it, Notion treats that as a page creation inside a page, but the Make router doesn’t know how to distinguish the hierarchy. So the child page either becomes a sibling or just vanishes.

Found a weird pattern: setting a Google Task due date before setting the title increases the chance that subtasks fail to sync. Possibly due to object creation timing on the backend — timestamps seem off by a few milliseconds when debugging raw JSON from the Make logs.

Eventually I ditched the sync entirely. Best format I discovered? Keep both tools — but make Notion the central status tracker and route Google add/create events into a review database in Notion instead of trying to mirror structure bi-directionally. Monodirectional flows are less sexy but massively more stable.

3. Subtasks in ClickUp vanish when updated via webhook incorrectly

ClickUp’s subtasks are just tasks with a parent_task_id. But when updating them via an outgoing webhook (from a third-party form or automation), if you forget to include the parent_task_id field—even if you’re not changing it—it quietly removes the parent-child relationship. The task still exists. It’s just no longer nested.

I discovered this while using Make to assemble forms via Tally, and feed them into ClickUp under a specific parent task representing a project month. Worked great… until three entries appeared blank in the project folder. The tasks were there, but not linked to any parent.

Aha moment from the ClickUp API logs:

{
  "task": {
    "id": "x123",
    "name": "January Feature Prep",
    "status": "To Do",
    ...
  }
}

There’s no parent field. Which means it defaults to none. The workaround was to pre-query the parent task ID from a static variable and re-send it in every update step — even when not modifying it.

This behavior isn’t documented anywhere in their public API or UI logic. You’d think not sending a field wouldn’t affect existing data. Wrong assumption.

4. Using Obsidian to track to-dos without breaking your flow state

If you’re someone who writes or plans in Obsidian, you’ve probably tried one of the many task plugins — Tasks, Kanban, Checklist. I went through five of them. They all break in slightly different ways.

Best setup I landed on involves:

  • Always typing tasks in daily notes, never in the main project docs
  • Tagging with #action and inserting @due(Tuesday) inline
  • Using a Dataview query that harvests only incomplete tasks tagged with #action
  • Adding a custom capture hotkey with Templater to pre-fill from clipboard
  • Running a nightly Obsidian script to move overdue tasks to today’s note

The bug: if a task line contains a pipe character (e.g. Send invoice | pending X approval), it breaks the Dataview rendering. The task still exists, but the query silently skips it. That cost me a full deliverable one Friday because I thought it was “archived.”

It’s easier to debug by rendering the raw query results as a table instead of using the checklist view — that way you at least see the row exists and can backtrack the parse error.

5. How duplicating Status columns in Airtable silently disables automations

We had a setup where moving a task to “Ready to Launch” in Airtable automatically triggered a Slack post. Worked great. Until someone duplicated the table to use for next quarter’s plan. Identical layout. Same fields. Same automations, cloned with the table.

But nothing fired.

The problem? Airtable automation triggers aren’t attached to field labels — they’re attached to internal field IDs. When you duplicate a table, new fields get new IDs even if their names are the same. So your cloned automation fired on the old field’s ID, which didn’t exist anymore. And Airtable doesn’t warn you. The automation just stays green. Logs show trigger not matched, but that’s buried in the run history.

Only way to confirm: open the automation config and manually re-select each field in the trigger step. That refreshes the ID linkage. But this silently breaks if you never touch it. Almost impossible to notice if you’ve got a dozen or more cloned views with similar setups.

Honestly wild that Airtable doesn’t flag orphaned IDs post-duplication.

6. Forwarding email tasks into Notion with consistent metadata

I needed a way to capture tasks from forwarded emails — typically work requests — and dump them into a Notion database with context intact (sender, date, subject, raw body excerpt). Did it with a chain: Gmail → Zapier Email Parser → Notion.

But Gmail’s API parses weirdly depending on your label workflow. One message, forwarded manually, includes Delivered-To and From headers in the body snippet. If you auto-forward via filters, neither header appears in the body. Zapier only parses the visible content — no full header access — so conditional logic breaks constantly.

The hack: I created a Zapier Email Parser mailbox manually, then started forwarding emails from myself with the original email pasted in the body. Then in the parsing template, I trained it to extract fields using consistently placed inline labels:

Sender: {{sender}}
Subject: {{subject}}
Requested: {{date}}

It’s crude. Doesn’t scale. But it works more reliably than trying to capture actual email headers, because Gmail filters abstract away half the useful metadata unless you’re in the API directly.

The edge case that broke it once: someone forwarded from Outlook using their mobile app, which base64-encodes the body text. The parser saw a wall of garbage. I had to add a conditional check in Zapier: if body text contains too many = signs, skip the Notion step.

7. Why recurring tasks inside Calendar-based tools create logic loops

Tools like Sunsama, Morgen, and Akiflow help schedule your to-dos on a calendar view. Which is only helpful if the calendar is accurate. But recurring tasks behave like zombies.

At one point, I had a weekly review task in Akiflow that automatically rescheduled every Friday. I thought it was working fine. Then I noticed it was duplicating on Sundays too. Turns out: I accidentally changed the due date from Friday to “Every 7 days” without anchoring it.

That means: if you miss the task Friday and reschedule it for Saturday (or Sunday), the next instance sets itself for 7 days from that rescheduled date. Over time, you creep into Monday. Wednesday. And the whole review cadences drifts.

No warnings. No visible trigger. The duplication logic lives inside the recurrence metadata, and Akiflow doesn’t let you see the raw settings unless you recreate the recurring rule entirely. I eventually cleared all recurring tasks and rebuilt only essential ones manually.

Definitely broke flow more than it helped.