A Chrome/Edge (Chromium) extension that hooks Outlook Web’s internal GetReminders API and provides extra, highly noticeable meeting reminders.
This extension creates additional reminders at:
- 2 minutes before meeting start
- 15 seconds before meeting start
Both reminders use:
- Persistent browser notifications (
requireInteraction: true) → They stay on screen until clicked → They pop up even if Outlook is not focused, minimized, or in another workspace
You can later add more reminders (+30s after start, repeating nags, sound, etc.).
No need to re-enter events manually. The extension hooks into Outlook Web’s own async calls.
This is how OWA itself retrieves the list of reminders.
Because notifications are from the browser, not from the Outlook tab.
If an event is:
- moved
- deleted
- reminder changed …your alarms update accordingly.
Uses a service worker, alarms, and notifications.
No servers, no external API keys, no Graph API permissions, no token storage.
We inject it as an external script (allowed by Outlook CSP):
-
It monkey-patches
window.fetch -
Whenever Outlook calls
GetReminders, we:- detect it
- clone & parse the JSON
- forward the reminder list to the extension via
postMessage
It listens for:
window.postMessage({ type: "OUTLOOK_GET_REMINDERS", data })And forwards it to the background service worker via:
chrome.runtime.sendMessage(...)Maintains a small “snapshot”:
{
"events": {
"<uid>": { "subject": "...", "start": "..." }
}
}On every update:
-
Detects new, changed, and removed meetings.
-
Schedules alarms using:
chrome.alarms.create(name, { when: timestamp })
-
When an alarm fires:
- Creates a persistent notification.
extension-root/
│
├─ manifest.json # MV3 manifest
├─ background.js # service worker (alarms + notifications)
├─ content.js # injects hook + forwards messages
├─ page_hook.js # patches fetch() inside Outlook Web
├─ icon128.png # notification icon
└─ README.md