Skip to content

mbahnizen/OWA-Notifications

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

109 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

OWA Notifications

License: MPL 2.0 Firefox Add-on Install from AMO No External Requests CI

Smart desktop notifications for Outlook Web App β€” fully offline, privacy-first.


πŸš€ Install

Install the extension directly from Mozilla Add-ons:

πŸ‘‰ OWA Notifications on Firefox Add-ons

Steps:

  1. Open the link above in Firefox
  2. Click "Add to Firefox"
  3. Confirm installation

The extension will be installed and ready to use immediately.


The Problem

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.

The Solution

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.


✨ Features

  • πŸš€ 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, no XMLHttpRequest, no external communication whatsoever

πŸ” Privacy & Security

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.


πŸ”‘ Permissions Explained

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>, no cookies, no webRequest, no clipboardRead, no history. The extension cannot intercept network traffic, read cookies, or access any site other than OWA.


πŸ›‘οΈ Security Model

What the extension CAN access

  • 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)

What the extension CANNOT access

  • ❌ 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

Runtime Detection

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.


⚑ How It Works

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)
  1. Detection: Verifies the page is an OWA environment via DOM structure
  2. Monitoring: Every 1 second, reads unread count badges from the folder tree DOM
  3. Comparison: Compares current counts against stored state
  4. Notification: If counts increased, triggers a Firefox desktop notification
  5. Display: Updates tab favicon and title with the current unread count

Why 1-Second Polling?

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

πŸ“¦ Installation

πŸš€ Install from AMO (Recommended)

You can install the extension in one click directly from the Mozilla Add-ons Store. This is the fastest, safest, and most straightforward method.

πŸ§ͺ Manual / Developer Installation (Optional)

  1. Open Firefox β†’ navigate to about:debugging
  2. Click This Firefox β†’ Load Temporary Add-on
  3. Select src/manifest.json from this project

See INSTALL_GUIDE.md for full developer compilation and permanent .xpi installation instructions.


πŸ–ΌοΈ Screenshots

This section showcases the current UI and behavior of the extension.

πŸ”” Notifications

Notification Example


βš™οΈ Options Interface

General Settings

Options 1

Monitored Folder Settings

Options 2

Notification Settings

Notification Settings

Display Settings

Display Settings


❓ FAQ

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.


🧱 Compatibility

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)

πŸ› οΈ Development

# 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 build

See CONTRIBUTING.md for coding guidelines.


πŸ“„ License

Mozilla Public License 2.0 β€” the same license used by Firefox itself.


πŸ‘€ Author

Nizen β€” github.com/mbahnizen

Infrastructure engineer focused on secure, privacy-respecting tooling for enterprise environments.


πŸ™ Credits

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.

About

Privacy-first OWA notification add-on for Firefox (no external requests)

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors