Reminder & Follow-up Engi
Snooze, follow-up and escalate any record so nothing slips through the cracks
Important follow-ups slip through the cracks because native Odoo activities are tied to specific models, can't be snoozed, have no personal worklist and never escalate when ignored. This lightweight engine lets anyone attach a reminder to ANY record, snooze it by preset or custom time, and run recurring follow-ups that auto re-arm. A scheduled job fires due reminders and escalates the ones that get repeatedly missed to a manager, while a daily digest emails each user their open, overdue and urgent worklist. Sales, support, finance and operations all follow up the same reliable way — so nothing is forgotten.
Key Features
Attach a reminder to any record
gb.reminder.followup uses a generic res_model / res_id (Many2oneReference) link, so a follow-up attaches to a partner, lead, invoice or task alike. The gb.reminder.mixin adds a reminder_count smart button and action_view_reminders to any model you inherit it onto; res.partner ships wired in out of the box.
Flexible snooze with preset or custom time
The gb.reminder.snooze.wizard offers presets from 15 minutes to 1 week, or a custom date/time. action_apply calls snooze(), which pushes due_date forward, sets state to snoozed and increments miss_count — every snooze is one step closer to escalation, logged in chatter.
Miss-based escalation policy
gb.reminder.policy defines escalate_after_misses and an escalate_action of notify, reassign or both. When miss_count crosses the threshold, _maybe_escalate resolves the manager (via resolve_manager, using the owner's HR manager, then the policy manager_id), reassigns and notifies — optionally CC'ing the owner.
Scheduled engine that fires and escalates
The _cron_process_reminders job flips scheduled/snoozed reminders to due when due_date passes, then escalates overdue ones still left unactioned past the policy's default_lead_minutes grace window. Reminders progress and escalate even when nobody is logged in.
Recurring reminders that auto re-arm
Set recurrence to daily, weekly or monthly with an optional recurrence_end. On action_mark_done, _spawn_next_occurrence copies the reminder forward to its next due date with miss_count and escalation reset — so routine follow-ups never need re-creating.
Lifecycle states and overdue search
Reminders flow through scheduled, due, snoozed, escalated, done and cancelled via action_mark_done, action_cancel and action_reset. The searchable is_overdue flag and minutes_to_due field let you filter and sort your worklist by urgency, with priority levels Normal/Important/Urgent.
Daily personal worklist digest
gb.reminder.digest builds a per-user snapshot counting open, overdue, due-today, escalated and urgent reminders, rendering an HTML summary. The _cron_send_digests job groups open reminders by user_id and message_notify-s each owner their morning worklist so nothing is forgotten.
One-click open and programmatic create
action_open_record jumps straight from a reminder to its linked record, while the mixin's create_reminder(name, due_in_hours, note) helper lets other modules attach follow-ups in code. open_reminder_count surfaces only the still-open items on each record's smart button.
Use Cases
Screenshots
Digests
Reminders
Policies
Why Choose This Module
Things slip through the cracks. Native Odoo activities are limited to specific models and offer no snooze, no personal worklist and no escalation chain. This lightweight engine lets you attach a personal reminder or follow-up to any record, snooze it, and let a scheduled job fire due reminders and escalate the ones that get ignored.
Specifications
- Compatible: Odoo 18.0 / 19.0
- License: OPL-1
- Languages: English
- Author: Pokutsoft
- Dependencies: mail
- Support: support@pokutsoft.com
Update date: 2026-07-02