Outlook Event Notes
pendingby nathanstorm689
Forked from Outlook Meeting Notes
Create notes from Outlook .msg files — supports meetings, appointments, and recurring events.
Outlook Event Notes
An Obsidian plugin that creates notes from Microsoft Outlook meetings, appointments, and recurring events by dragging and dropping .msg files onto a ribbon icon.
Based on Outlook Meeting Notes by David Ingerslev. This fork adds support for recurring events, opening existing notes, and other improvements.
Features
- Drag & drop a meeting or appointment from Outlook Classic onto the ribbon icon → a note is instantly created (or opened if it already exists)
- Recurring events — detects recurring
.msgfiles and prompts you to confirm the occurrence date before creating the note - Fully customisable filename pattern and note template using Mustache syntax
- No Microsoft 365 / Graph API dependency — works entirely from
.msgfiles - YAML frontmatter sanitisation — strips characters that would break Obsidian properties
Installation
Community Plugins (coming soon)
Search for Outlook Event Notes in Obsidian → Settings → Community Plugins.
Manual installation
- Download
main.js,manifest.json, andstyles.cssfrom the latest release - Copy them into your vault at
.obsidian/plugins/outlook-event-notes/ - Enable the plugin in Obsidian → Settings → Community Plugins
Usage
Drag and drop a meeting or appointment from the Outlook Classic desktop calendar onto the plugin ribbon icon. The plugin will:
- Parse the
.msgfile - For recurring events, ask you to confirm the occurrence date (defaults to today)
- Create a new note — or open the existing one if a note for that event already exists
You can also save a .msg file from Outlook (e.g. a meeting invitation received by email) and drag-drop the saved file onto the icon.
Recurring events
If the dropped .msg represents part of a recurring series, the plugin shows a modal asking for the occurrence date in YYYY-MM-DD format. Press Enter to accept the default (today), adjust the date if needed, or cancel to abort note creation.
Settings
Folder location
The folder where new notes are created. Created automatically if it does not exist (supports subfolders like Meetings/2026).
Filename pattern
Uses Mustache syntax. Default:
{{#helper_dateFormat}}{{apptStartWhole}}|YYYY-MM-DD_HH-mm_ss{{/helper_dateFormat}}_{{subject}}
Produces filenames like 2026-03-11_19-00_00_Discuss documentation.
You can use / to create subfolders:
{{#helper_dateFormat}}{{apptStartWhole}}|YYYY/MM/YYYY-MM-DD_HH-mm_ss{{/helper_dateFormat}} {{subject}}
produces 2026/03/2026-03-11_19-00_00_Discuss documentation
Invalid character substitute
Characters that are invalid in filenames (/ * " \ < > : | ?) are replaced with this value. Blank = remove them.
Template
Fully customisable Mustache template. All .msg fields are available, plus the helper fields and functions below.
YAML values are sanitised automatically to strip characters such as <, > and *, keeping the generated frontmatter valid even when invite data contains those symbols.
Default template
---
title: {{subject}}
subtitle: meeting notes
created: {{#helper_dateFormat}}{{apptStartWhole}}|YYYY-MM-DD_HH-mm-ss{{/helper_dateFormat}}
meeting: 'true'
meeting-location: {{apptLocation}}
meeting-recipients:
{{#recipients}}
- {{name}}
{{/recipients}}
meeting-invite: {{body}}
---
Template helpers
Helper fields
| Field | Description |
|---|---|
{{helper_currentDT}} | Date/time the file was dropped, in ISO format (e.g. 2026-03-11T19:00:00-05:00) |
Use helper_dateFormat to reformat it:
{{#helper_dateFormat}}{{helper_currentDT}}|YYYY-MM-DD_HH-mm_ss{{/helper_dateFormat}}
Helper functions
helper_dateFormat
Formats a date using moment.js. Separate the field and format with |.
{{#helper_dateFormat}}{{apptStartWhole}}|YYYY-MM-DD_HH-mm_ss{{/helper_dateFormat}}
produces 2026-03-11_19-00_00
{{#helper_dateFormat}}{{apptStartWhole}}|L LT{{/helper_dateFormat}}
Uses Obsidian's display language locale (e.g. 11/03/2026 19:00 in English GB, 03/11/2026 7:00 PM in English US).
helper_firstWord
Returns only the first word of a field — useful for recording first names only:
meeting-recipients:
{{#recipients}}
- {{#helper_firstWord}}{{name}}{{/helper_firstWord}}
{{/recipients}}
Credits
- Original plugin: Outlook Meeting Notes by David Ingerslev
- msgreader —
.msgfile parsing - mustache.js — template rendering
- mustache-validator — template validation
License
ISC — see LICENSE.
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.