Yes, you can create an Outlook plugin — but not the way most blogs say you should. The truth is, 80% of what people call a 'plugin' isn’t a plugin at all. It’s an add-in. And the difference changes everything: deployment, permissions, testing, and whether your manager will approve it.
The Short Version
| Method |
Pros |
Cons |
Works in Web? |
| Office Add-in (Manifest + HTML/JS) |
Runs everywhere — desktop, Mac, web, mobile. No admin install needed for sideloading. |
No access to low-level MAPI objects. Can’t read encrypted messages or hook into send/receive events deeply. |
✅ Yes |
| VSTO Add-in (C#/VB.NET) |
Full access to Outlook object model. Can intercept Send, modify headers, work with shared mailboxes, delegate folders. |
Windows-only. Requires .NET Framework + Visual Studio. Blocked by default in many corporate environments. |
❌ No |
| COM Add-in (Legacy C++/Delphi) |
Maximum control. Works with Outlook 2007–2021. Can inject ribbon buttons and monitor background sync. |
Hard to debug. Not supported in Outlook on the web. Fails silently if registry keys misconfigured. |
❌ No |
| Power Automate + Outlook Connector |
No coding. Triggers on new email, attachments, keywords. Works with shared mailboxes and delegates. |
Limited to actions Outlook connector supports — no custom UI, no real-time interaction. |
✅ Yes |
Method 1: Office Add-in (Manifest + HTML/JS)
This is what Microsoft now calls an “Outlook add-in” — and it’s the only method officially supported for Outlook on the web, Mac, and Windows. You build it with HTML, CSS, and JavaScript, package it as a manifest XML file, and load it via
File > Options > Add-ins > Get Add-ins > My Add-ins > Upload My Add-in.
The manifest defines where your add-in appears: in a message compose window, reading pane, or context menu. You can trigger it when someone opens an email with subject line
"Q3 Budget Review — Action Needed by Friday", or when they select text like "PO#" or "Invoice ID".
Here’s the surprising part: you don’t need Visual Studio. You can write the entire thing in VS Code, test it locally with
npm start, and deploy it from a simple HTTPS server (even GitHub Pages, if you configure CORS properly). I’ve seen teams launch internal add-ins this way in under two hours.
Limitations? You can’t read encrypted S/MIME messages. You can’t change the From address programmatically. And you can’t auto-approve meeting requests — that’s blocked by design.
Also: shared mailboxes work fine *if* the user has full access permission — but delegate access (like “Send As”) won’t let your add-in load unless explicitly enabled in Exchange Online PowerShell with
Set-Mailbox -Identity "shared@company.com" -AutoExpandingArchiveEnabled $true. That tripped me up for three days.
Method 2: VSTO Add-in (C#/VB.NET)
This is what most legacy enterprise tools use — think Salesforce for Outlook or older versions of Boomerang. You write code in C# or VB.NET, reference the
Microsoft.Office.Interop.Outlook library, and compile to a .dll.
To build one, you’ll need Visual Studio 2019 or newer (Community edition works), .NET Framework 4.8, and the Office Developer Tools workload installed. Then go to
File > New > Project > Office/SharePoint > Outlook VSTO Add-in. Your entry point is
ThisAddIn_Startup().
VSTO gives you direct access to
Application.ItemSend,
Explorer.SelectionChange, and even
Store.GetDefaultFolder(OlDefaultFolders.olFolderInbox) — including for shared mailboxes *if* they’re mounted in the user’s profile (not just visible in Folder List).
But here’s the catch: Outlook blocks VSTO add-ins by default in many organizations. Even if you sign your assembly with a trusted certificate, Group Policy may enforce
DisableAllAddins = 1 — and users won’t see any warning. Just silence. To check, go to
File > Options > Add-ins > Manage: COM Add-ins > Go… and look for your add-in name. If it’s missing, it was blocked at startup.
Also: VSTO doesn’t run on Outlook for Mac or Outlook on the web. So if your team uses Macs or relies on OWA for remote work, this method locks them out.
Method 3: Power Automate + Outlook Connector
Let’s be honest: most internal “plugins” don’t need custom UI or deep integration. They just need to react to emails.
Say you want to auto-forward all messages with subject
"Re: Re: Re: Project Phoenix Timeline" to a Slack channel, extract invoice numbers from attachments, or flag emails from vendors without SPF records. Power Automate does that — and it counts as “how to add addin on outlook” in practice, because it lives inside Outlook’s interface.
Here’s how: Open
Outlook on the web > Settings (gear icon) > View all Outlook settings > Mail > Rules > Create a new rule. Scroll down to “Run a flow” — then click “Create a flow”. That launches Power Automate with a prebuilt Outlook trigger.
You’ll see templates like “When a new email arrives”, “When an email is flagged”, or “When an email contains specific words”. Build your logic (e.g., parse subject, check sender domain, post to Teams), then save. The flow appears as a button in Outlook’s message toolbar — labeled with your flow name.
This method works with shared mailboxes *only* if the flow is created while signed in as the shared mailbox owner (not a delegate). Delegates can’t trigger flows on behalf of shared mailboxes — a hard limit, not a configuration issue.
Keyboard shortcut tip: In desktop Outlook, press
Alt+Q, type “automate”, and hit Enter to jump straight to Flow integration settings.
Which Should You Choose?
| Your Situation |
Best Method |
Why |
| You’re building something for external users (clients, partners) |
Office Add-in |
Only method supported across platforms. No installation friction. Can be published to AppSource. |
| You need to block outgoing emails with credit card numbers |
VSTO Add-in |
Only VSTO lets you cancel ItemSend before transmission. Add-ins run after send begins. |
| You want to auto-reply to emails from VIPs with a custom template |
Power Automate |
No dev skills required. Works with shared mailboxes if configured correctly. Auditable and versioned. |
| You’re on Outlook 2016 and need to auto-archive old items |
VSTO Add-in |
Power Automate doesn’t support archive rules. Office Add-ins can’t access folder properties like Folder.Items count. |
| Your IT department blocks all unsigned binaries |
Office Add-in |
Manifest files are XML — no code signing required for sideloading. Admins can deploy via centralized deployment in M365. |
| You’re supporting both Windows and Mac users |
Office Add-in |
VSTO and COM are Windows-only. Office Add-ins work identically on Mac Outlook (v16.85+). |
How to Install Outlook Plugin — Real Steps, Not Theory
“Install” means different things depending on the method. For Office Add-ins: open Outlook desktop, go to
File > Options > Add-ins > Manage: Office Add-ins > Go…, click “Add new source”, paste your manifest URL or browse to the local .xml file. It appears immediately — no restart needed.
For VSTO: double-click the .vsto file. If you get “ClickOnce security warning”, right-click > Properties > check “Unblock”, then re-run. Then verify it shows under
File > Options > Add-ins > Manage: COM Add-ins > Go… — *not* under “Disabled Items”.
For Power Automate flows: no install needed. Once saved, the button appears in the message toolbar — but only after you’ve opened and closed the message once. (Yes, it’s weird. This took me three days to figure out originally.)
How to Add Plugin in Outlook — Quick Checklist
- ✅ Confirm Outlook version: Office Add-ins require Outlook 2013+ (desktop), Outlook on the web, or Outlook for Mac v16.85+
- ✅ Test manifest validation first: use Microsoft’s Manifest Validator
- ✅ Shared mailbox access: grant
FullAccess (not just SendAs) and ensure the mailbox appears in the user’s profile — not just “Open Shared Mailbox”
- ✅ For VSTO: disable antivirus real-time scanning during install — some AVs flag interop assemblies as suspicious
Final Note on Terminology
Microsoft dropped the word “plugin” years ago. What you’re really building is an
add-in — either an
Office Add-in (web-based), a
VSTO Add-in (Windows desktop), or a
COM Add-in (legacy). Using “plugin” in internal docs or tickets causes confusion with IT — they’ll assume you mean browser extensions or third-party tools like Grammarly.
So when someone asks “how to add outlook plugin”, translate it in your head: “Which add-in type solves their actual problem — and which one will actually get approved?”