Smart desktop notifications for Outlook Web App β fully offline, privacy-first.
Install the extension directly from Mozilla Add-ons:
π OWA Notifications on Firefox Add-ons
- Open the link above in Firefox
- Click "Add to Firefox"
- Confirm installation
The extension will be installed and ready to use immediately.
In many enterprise environments, users access email through Outlook Web App (OWA) in a browser β without a desktop email client. OWA does not reliably surface desktop notifications when new emails arrive, especially in pinned or background tabs. This leads to missed emails, delayed responses, and the habit of compulsively checking tabs.
OWA Notifications monitors your OWA tab and delivers instant desktop notifications when new emails arrive β with zero network calls, zero data collection, and zero external dependencies. Everything runs locally inside your browser.
- π Priority Watchlist β Mark important folders for instant, cooldown-free alerts
- π Smart Notifications β Cooldown system prevents spam from low-priority folders
- π Periodic Summaries β Recurring unread digest for your watchlist folders
- π¨ Visual Indicators β Dynamic tab icon (orange = priority, blue = other) and title badge
- π Calendar Reminders β Persistent alerts for missed meetings and tasks
- π Silent Mode β Mute popups while keeping visual indicators active
- βοΈ Auto-Scan β Automatically detects your OWA folders, no manual setup
- π Zero Network Calls β No
fetch, noXMLHttpRequest, no external communication whatsoever
This extension does not connect to the internet under any circumstances.
| Guarantee | Details |
|---|---|
| No network requests | Zero fetch(), XMLHttpRequest, or WebSocket calls in the entire codebase |
| No data collection | No analytics, no telemetry, no tracking pixels |
| No cloud sync | Settings stored in browser.storage.local β never leaves your machine |
| No email reading | The extension reads folder badge counts only, never email subjects or bodies |
| No external scripts | Fully self-contained β no CDNs, no third-party libraries |
You can verify this yourself: the entire source code is ~600 lines across 3 JavaScript files.
Every permission is justified below. We request the minimum set required.
| Permission | Why It's Needed | What It Does NOT Do |
|---|---|---|
storage |
Saves your settings (watchlist, colors, intervals) to local browser storage | Does NOT sync to any server, does NOT store email data |
notifications |
Displays desktop notifications via Firefox's built-in notification API | Does NOT send data externally, does NOT access notification history |
tabs |
The settings page queries open tabs to find your OWA tab for folder scanning | Does NOT track your browsing, does NOT read non-OWA tab content |
Notably absent: No
<all_urls>, nocookies, nowebRequest, noclipboardRead, nohistory. The extension cannot intercept network traffic, read cookies, or access any site other than OWA.
- DOM elements on pages matching OWA URL patterns (
*/owa/*,outlook.office365.com, etc.) - Unread count badge numbers displayed in the OWA folder tree
- Firefox's local storage API (for settings persistence)
- Firefox's notification API (for desktop alerts)
- β Email content (subjects, bodies, attachments, recipients)
- β Authentication tokens or session cookies
- β Network traffic or API responses
- β Other browser tabs or websites
- β Filesystem, clipboard, or browser history
- β Any external server or service
The extension uses DOM-based detection (isOWAEnvironment()) to verify it's running on an actual OWA page before activating. It checks for Outlook-specific elements like folder trees ([role="treeitem"]), mail pane IDs, and notification containers β not just URL patterns.
OWA Page (DOM)
β
βββ content-script.js reads folder badge counts via CSS selectors
β (querySelectorAll on [role="treeitem"], .ucount, etc.)
β
βββ Compares counts against previous state
β
βββ If count increased β sends message to background.js
β
βββ background.js β browser.notifications.create()
(Firefox native notification β no external call)
- Detection: Verifies the page is an OWA environment via DOM structure
- Monitoring: Every 1 second, reads unread count badges from the folder tree DOM
- Comparison: Compares current counts against stored state
- Notification: If counts increased, triggers a Firefox desktop notification
- Display: Updates tab favicon and title with the current unread count
| Concern | Answer |
|---|---|
| Why not longer? | Users expect instant notification β 1s ensures near-real-time responsiveness |
| Performance impact? | Each check runs ~5 querySelectorAll calls on a small DOM subtree β sub-millisecond |
| Network overhead? | Zero β DOM reads only, no HTTP requests |
| Battery impact? | Negligible β no reflows, no repaints, no network activity triggered |
You can install the extension in one click directly from the Mozilla Add-ons Store. This is the fastest, safest, and most straightforward method.
- Open Firefox β navigate to
about:debugging - Click This Firefox β Load Temporary Add-on
- Select
src/manifest.jsonfrom this project
See INSTALL_GUIDE.md for full developer compilation and permanent .xpi installation instructions.
This section showcases the current UI and behavior of the extension.
Q: Does it send my email data anywhere? A: No. The extension makes zero network requests. It only reads unread count numbers from the OWA page DOM. It never reads email subjects, bodies, or recipients.
Q: Why does it need the tabs permission?
A: The settings page uses browser.tabs.query() to find your open OWA tab and scan its folder structure. It only reads tab URLs to match OWA patterns β it does not monitor or track your browsing.
Q: Why is the check interval fixed at 1 second? A: To provide near-real-time notifications. Each check is a lightweight DOM read (no network calls), so the overhead is negligible. A future version may make this configurable.
Q: Does it work with on-premise Exchange (not Office 365)?
A: Yes. The URL pattern *://*/owa/* matches any on-premise OWA deployment. The extension also performs runtime DOM detection to confirm the page is actually OWA.
Q: Is it safe for enterprise use? A: Yes. No data leaves the browser. No external connections are made. The extension is fully auditable β the entire codebase is ~600 lines of vanilla JavaScript.
| Environment | Status |
|---|---|
| On-premise OWA (Exchange 2013+) | β Supported |
| Outlook 365 (outlook.office365.com) | β Supported |
| Outlook.com (outlook.live.com) | β Supported |
| New Outlook (outlook.office.com) | β Supported |
| Firefox 128+ | β Required |
| Outlook Desktop App | β Not applicable (browser extension) |
# Install dependencies
npm install
# Run with auto-reload
npx web-ext run --source-dir=src/
# Lint (same as CI)
npm run lint
# Build .xpi package
npm run buildSee CONTRIBUTING.md for coding guidelines.
Mozilla Public License 2.0 β the same license used by Firefox itself.
Nizen β github.com/mbahnizen
Infrastructure engineer focused on secure, privacy-respecting tooling for enterprise environments.
Based on the original OWA Notifier by Mihai Chezan, itself a fork of OWA Firefox Addon by Phil Baranovskiy. Heavily redesigned with modern UI, priority monitoring, and security hardening.




