v21.0

Notifuse/notifusev21.0Dec 27, 2025by pierre-b

AI Summary

Release v21.0 introduces a centralized email queue system for outbound marketing emails with priority-based processing, retry logic, and per-integration rate limiting. This major update also adds a background worker with graceful shutdown, automation timeline event tracking, and single-tick execution for processing multiple automation nodes.

Key Highlights

  • Priority-based email queue with retry logic and per-integration rate limiting
  • Background worker with graceful shutdown support
  • Automation timeline events (`automation.start` and `automation.end`)
  • Single-tick execution processing up to 10 automation nodes per scheduler tick
  • New `email_queue` table with 5 optimized indexes

Breaking Changes

  • Broadcast status `sending` renamed to `processing`
  • Broadcast status `sent` renamed to `processed`

New Features

  • Priority-based email queue with retry logic and per-integration rate limiting
  • Background worker with graceful shutdown support
  • Automation timeline events: `automation.start` and `automation.end` tracking
  • Single-tick execution: Process up to 10 automation nodes per scheduler tick
  • New `email_queue` table with 5 optimized indexes
  • New `enqueued_count` column on `broadcasts` table
  • New `automation_id` column on `automation_node_executions` table for analytics
  • New index `idx_message_history_broadcast_id` for broadcast queries

Full Release Notes

# Release v21.0

## Email Queue System

Centralized queue for all outbound marketing emails with unified delivery for broadcasts and automations.

### New Features

- **Priority-based email queue** with retry logic and per-integration rate limiting
- **Background worker** with graceful shutdown support
- **Automation timeline events**: `automation.start` and `automation.end` tracking
- **Single-tick execution**: Process multiple automation nodes per scheduler tick (up to 10 nodes)

### Schema Changes

- New `email_queue` table with 5 optimized indexes
- Added `enqueued_count` column to `broadcasts` table
- Added `automation_id` column to `automation_node_executions` for analytics
- New index `idx_message_history_broadcast_id` for broadcast queries

### Breaking Changes

- Broadcast statuses renamed: `sending` → `processing`, `sent` → `processed`