Zia.

Outlook

Outlook Plugin Development

Custom Outlook add-ins that live in the reading pane and compose window — surfacing data, automating replies, and acting on messages — built with Office.js and Microsoft Graph across desktop, web, and Mac.

What I build

What's included

Reading-pane & compose add-ins

Task panes that read the open message, inject content into a reply, and act when the user sends.

Event-based activation

Add-ins that run on new-message or on-send without the pane open — auto-tagging, disclaimers, and on-send checks.

Microsoft Graph mail & calendar

Reading and writing mail, events, categories, and attachments through the Microsoft Graph API.

CRM & helpdesk context

Showing the sender's contact, deal, or ticket data on the open email, and logging emails back with one click.

Problems this solves

Sound familiar?

  • Reps copy-pasting email details into a CRM all day.
  • No context about the sender inside Outlook, so staff switch tabs to look them up.
  • Disclaimers or categories that should be applied automatically on send but aren't.
  • A requirement that the add-in behave the same in Outlook desktop, web, and Mac.

Example use cases

What this looks like in practice

01

One-click CRM logging

An add-in that logs the open email to HubSpot with the contact matched via Microsoft Graph — no copy-paste.

02

On-send disclaimer

Event-based activation appends a legal disclaimer and checks for missing attachments the moment a user hits Send.

03

Support context pane

The reading pane shows the customer's open tickets and recent orders next to their email.

Tech stack

The tools I use for this

Core

  • Office.js (Mailbox API)
  • TypeScript
  • React

Activation

  • Event-based activation
  • On-send handlers

Data

  • Microsoft Graph
  • RoamingSettings
  • MSAL SSO

Delivery

  • Manifest
  • AppSource
  • Centralized deployment

Process

How it works

01

Define the trigger

Reading pane, compose, or on-send — and what data it needs.

02

Build with Office.js

Mailbox API, Graph calls, and persisted settings.

03

Test hosts

Verify on Outlook desktop, web, and Mac.

04

Publish

AppSource or centralized deployment for the org.

Outlook is one host in my wider Microsoft 365 development work. For the other Office apps, start from Office plugin development.

FAQ

Questions, answered

Can the add-in work in both Outlook desktop and web?
Yes — a single Office.js add-in runs in Outlook on Windows, Mac, and the web (and new Outlook), with checks where an API isn't available on a given host.
Can it run without the task pane open — for example on send?
Yes, using event-based activation. The add-in can run on new message or on send to auto-tag, add disclaimers, or validate before the email leaves.
Can it read and send mail through Microsoft Graph?
Yes. I use the Microsoft Graph API for mail and calendar — reading messages, creating events, applying categories, and handling attachments with the right permissions.
Can it show our CRM data on the open email?
Yes — a common build. The add-in matches the sender and pulls their contact, deal, or ticket data from your CRM into the reading pane.
How is an Outlook add-in installed across a company?
Through AppSource or, more often for internal tools, centralized deployment in the Microsoft 365 admin center so it appears for everyone automatically.

Let's build it together

Email me with what you need — I'll reply with a clear plan and next steps. Prefer chat? WhatsApp works too.