Airtable doesn't ship recurring tasks. Every team running on Airtable for ops eventually hits this gap and either pays for a third-party tool or builds it themselves. Building it is usually the right call — what you end up with is more flexible than most task-app implementations and integrates with everything else in your base.
This guide walks through the full recurring-task system: schema, daily-check automation, custom intervals, deadline reminders, escalation alerts, and the patterns that keep it maintainable.
The Recurring Task Architecture
Two tables and one daily-check automation:
| Table | Purpose |
|---|---|
| Recurring Tasks | Definitions of what recurs and how often |
| Tasks | Real task instances (created by the automation) |
Each Recurring Task is the "template" — one row per recurring item. The Tasks table holds the actual work, with a link back to the Recurring Task that spawned it.
Recurring Tasks fields
- Name — e.g. "Weekly client report," "Monthly inventory count."
- Frequency — single select: Daily / Weekly / Monthly / Custom.
- Custom Days — number (only for Custom frequency).
- Day of Week — single select (only for Weekly): Mon / Tue / ... / Sun.
- Day of Month — number (only for Monthly): 1-31.
- Owner — collaborator field.
- Default Duration — number of days to complete.
- Active — checkbox.
- Last Created Date — date populated by the automation.
- Linked Tasks — reverse link from Tasks table.
Tasks fields
- Name — copied from Recurring Task.
- Due Date — calculated by automation.
- Status — single select: Not Started / In Progress / Done / Skipped.
- Owner — copied from Recurring Task.
- Recurring Task — linked record to source Recurring Task.
- Completed Date — date.
The Daily-Check Automation
The core of the system: one automation that runs every morning and creates real Tasks for any Recurring Tasks due today.
Setup
- Trigger: Scheduled — every day at 6:00 AM in your team's timezone.
- Find records: In Recurring Tasks, find rows where
Active = trueAND the recurrence pattern matches today. - For each found row: Create a Task record with:
- Name = Recurring Task's Name (optionally append today's date).
- Due Date = today + Default Duration.
- Owner = Recurring Task's Owner.
- Status = "Not Started."
- Recurring Task = link to source row.
- Update: Set the Recurring Task's Last Created Date = today.
The "matches today" filter
The trickiest part. For each frequency type, the filter is different. Use a formula field on Recurring Tasks that returns true/false for "due today":
// Formula field "Due Today"
SWITCH(
{Frequency},
'Daily', TRUE(),
'Weekly', DATETIME_FORMAT(TODAY(), 'ddd') = {Day of Week},
'Monthly', DAY(TODAY()) = {Day of Month},
'Custom', IS_SAME(
DATEADD({Last Created Date}, {Custom Days}, 'days'),
TODAY(),
'day'
),
FALSE()
)
Then the automation's find action filters on Due Today = true AND Active = true AND (Last Created Date != TODAY() OR Last Created Date is empty).
The last clause is what prevents double-creation if the automation accidentally runs twice in a day.
Deadline Reminders
The second half of the system: ping the owner before tasks slip.
The "Days Until Due" pattern
Add a formula field to the Tasks table:
// Formula field "Days Until Due"
IF(
AND({Due Date}, {Status} != 'Done', {Status} != 'Skipped'),
DATETIME_DIFF({Due Date}, TODAY(), 'days'),
BLANK()
)
This returns the integer count of days remaining (negative if overdue), blank if completed.
Reminder automations
Build one automation per reminder window. Common windows:
- 7-day reminder — trigger when
Days Until Due = 7. Send email to owner: "Heads up, this is due next week." - 2-day reminder — trigger when
Days Until Due = 2. Send Slack message to owner. - Due today — trigger when
Days Until Due = 0. Send a more urgent Slack message. - Overdue escalation — trigger when
Days Until Due = -1. Send Slack message to both owner and manager.
Each automation uses When record matches conditions as the trigger. The condition fires when the formula transitions to the matched value, which only happens once per task per window.
Tracking which reminders fired
Optionally, add checkbox fields (Reminder 7d Sent, Reminder 2d Sent, etc.) and update them in each automation. This makes debugging easier and prevents re-sending if the formula re-fires.
Escalation Patterns
For tasks that slip past the due date, escalation pings widen the audience.
Escalation ladder
- Day 0 (due today): Slack DM to owner.
- Day +1 (1 day late): Slack DM to owner + email.
- Day +3: Slack message to owner + manager.
- Day +7: Slack message to owner, manager, and a #late-tasks channel.
Each step is an automation triggered by the formula transitioning to the matching Days Until Due value.
Soft vs hard escalation
For low-stakes tasks (internal admin), keep escalations on internal channels. For client-facing or revenue-impacting work, escalate to leadership at day 3-5 and pause the task auto-creation until the cause is addressed.
Daily Digest Pattern
Instead of (or alongside) individual reminders, send each owner a morning digest of their tasks for the day.
Setup
- Trigger: Scheduled, daily at 8:00 AM.
- Find records: Tasks where
Owner = each userANDDue Date <= today + 1ANDStatus != Done. - Group by Owner.
- For each Owner: Send Slack DM (or email) with the formatted list of their tasks.
This works particularly well combined with the recurring-task automation — the morning digest naturally includes today's freshly created recurring tasks.
Comparison: Reminder Strategies
| Strategy | Best For | Notification Channel |
|---|---|---|
| Individual reminder per window | Critical, time-sensitive tasks | Slack DM |
| Morning digest | Day-to-day work | Slack DM or email |
| Manager escalation | Tasks blocking other work | Slack to manager channel |
| Public escalation | Repeatedly missed tasks | Public Slack channel |
| No reminders | Self-managed senior team | None — they own their queue |
Most teams mix two or three strategies.
Common Mistakes
Mistake 1: Creating recurring tasks in one mega-table without a source-of-recurrence table. Hard to edit, hard to disable temporarily, no history. Always split definition (Recurring Tasks) from instances (Tasks).
Mistake 2: Running the daily-check automation too often. Once per day is enough. Hourly creates 24 duplicates per task if the dedup filter has a gap.
Mistake 3: Reminder spam. Three reminders per task per day across 50 tasks per user = 150 pings/day = muted Slack channel. Use the digest pattern for routine work.
Mistake 4: Not handling skipped recurrences. If a Monday weekly task is skipped, the next instance should still be next Monday — not Tuesday. The Last Created Date field handles this correctly only if you update it on creation, not on completion.
Mistake 5: Forgetting timezones. Scheduled triggers run in the automation owner's timezone. Document the schedule explicitly.
Troubleshooting
Recurring tasks created twice on the same day. The dedup filter is missing or wrong. Confirm the filter checks Last Created Date != TODAY().
Monthly task didn't fire on day 31 in a 30-day month. The formula should handle this: use MIN({Day of Month}, DAY(LAST_DAY_OF_MONTH(TODAY()))) to cap.
Reminders fire repeatedly for the same task. The formula re-evaluates and re-triggers. Add a Reminder Sent field and filter on it in the trigger condition.
Tasks created but Owner is empty. The Recurring Task's Owner field is empty. Add a validation step or fall back to a default.
Daily check missed a day. Airtable's scheduled automations can occasionally miss runs during maintenance windows. Add a self-healing step: if last run was more than 25 hours ago, also create yesterday's missed records.
Next Steps
A recurring task system is a building block for broader operational workflows: shift scheduling, inventory checks, maintenance rounds, content production calendars, client check-ins. Once the pattern is in place, layering on top — approval workflows, status reporting, completion verification — is straightforward.
For broader patterns, see our Airtable task management with subtasks guide, project management guide, approval workflow guide, and automation guide. For complex multi-team operational rollouts, get in touch.