Scheduled Actions Overview
Scheduled actions are actions withdelay_hours > 0 that execute at a future time. Thread’s scheduling system ensures actions trigger at the perfect moment without manual intervention.
[SCREENSHOT: Scheduled actions in admin view]
Caption: View upcoming scheduled actions across all accounts
How Scheduling Works
The Scheduling Pipeline
Delayed Actions Scheduled
Actions with delays added to Example:
scheduled_action_executions tableCalculation:Configuration
Setting Delays in Templates
When creating actions:| Hours | Duration | Use Cases |
|---|---|---|
| 0 | Immediate | Welcome emails, announcements |
| 24 | 1 day | Follow-ups, reminders |
| 48 | 2 days | Secondary actions, non-urgent requests |
| 72 | 3 days | Giving customers breathing room |
| 168 | 1 week | Long-lead items, reviews |
| 720 | 30 days | Post-launch check-ins |
Changing Delays After Creation
CSMs can adjust delays for specific accounts:- Navigate to Implementation Tab
- Find scheduled action (status: “pending”)
- Click “Reschedule”
- Enter new delay_hours or specific date/time
- Save changes
Rescheduling only affects this specific account. Template delays remain unchanged for future accounts.
Viewing Scheduled Actions
Per-Account View
In Implementation Tab: Pending actions show:- Action label
- Scheduled execution date/time
- Days/hours until execution
- Option to reschedule or execute immediately
Organization-Wide View
(Admin only) Navigate to Settings → Scheduled Actions See:- All scheduled actions across accounts
- Execution times
- Associated accounts and milestones
- Option to manually trigger or cancel
The Cron System
How the Cron Job Works
Frequency: Runs every hour (configurable) Process:- Query
scheduled_action_executionstable - Filter for
execution_time ≤ current_timeANDstatus = pending - For each action:
- Generate AI draft (if applicable)
- Update action status to “ready”
- Notify CSM (optional)
- Remove from scheduled queue
- Log execution results
/api/cron/execute-scheduled
Security: Protected by CRON_SECRET environment variable
Cron Schedule
Configured invercel.json:
0 * * * *= Every hour at :000 */4 * * *= Every 4 hours0 0 * * *= Daily at midnight
Timing Precision
Execution Timing Expectations
How precise is scheduling?- Same-Hour (✅)
- Not Minute-Exact (❌)
- Order Preserved (✅)
Actions scheduled for 2:00 PM will execute between 2:00-2:59 PMGuarantee: Within same hour as scheduled
For most use cases, hourly precision is sufficient. If you need minute-exact timing, execute actions manually at the desired time.
Common Scheduling Patterns
Onboarding Email Sequence
Multi-Touch Follow-Up
Post-Launch Sequence
Managing Scheduled Actions
Rescheduling Actions
When to reschedule:- Customer requested delay
- Holiday or blackout period
- Dependency not met
- Customer capacity issues
- Go to Implementation Tab
- Find pending action
- Click “Reschedule”
- Choose:
- New delay_hours from milestone start
- Specific date/time
- Save
Executing Early
When to execute early:- Customer ready before scheduled time
- Blocking progress
- Customer explicitly requested
- Navigate to pending action
- Click “Execute Now”
- Action immediately generates draft and moves to “ready”
- Review and execute as normal
Canceling Scheduled Actions
When to cancel:- Action no longer needed
- Replaced by different action
- Customer no longer requires this
- Find pending action
- Click “Cancel”
- Confirm cancellation
- Action removed from queue (can’t be undone)
Troubleshooting
”Scheduled Action Didn’t Trigger”
Problem: Past scheduled time but action still pending Possible causes:- Cron job hasn’t run yet (runs hourly)
- Cron job failed (check logs)
- Account or milestone was deleted
- Action was manually canceled
- Wait for next hour’s cron run
- Check cron logs in Vercel
- Manually execute if urgent
- Contact support if persistent
”Action Triggered Too Early/Late”
Problem: Execution time doesn’t match expectations Possible causes:- Milestone start time different than expected
- Action was manually rescheduled
- Timezone confusion
- Delay calculation error
- Verify milestone started at expected time
- Check action history for reschedules
- Confirm timezone settings
- Recalculate: milestone_start + delay_hours
”Multiple Actions Triggered at Once”
Problem: Several actions executed simultaneously, overwhelming customer Possible causes:- Multiple actions scheduled for same time
- Milestone started late, backlog of actions triggered
- Cron job backlog processed all at once
- Stagger action delays in template (avoid same delay_hours)
- If milestone delayed, reschedule future actions before starting
- Space actions 24-48 hours apart minimum
Best Practices
Space Actions Out
Use 24-72 hour spacing between actions to avoid overwhelming customers
Consider Timezones
Schedule considering customer timezone (9 AM their time, not yours)
Plan for Delays
Expect customers to be slower than template estimates—add buffer
Monitor Pending Queue
Regularly review scheduled actions to catch issues early
Test Timing
Use test accounts to verify delay calculations work as expected
Document Patterns
Track which delay patterns work best for your customer segments
Advanced Scheduling
Conditional Delays
(Future feature) Adjust delays based on customer attributes:- Longer delays for enterprise (more stakeholders)
- Shorter delays for SMB (faster decision-making)
- Industry-specific timing (healthcare compliance reviews)
Business Day Scheduling
(Future feature) Skip weekends and holidays:- Friday 3 PM + 24 business hours = Tuesday 3 PM (not Saturday)
