nathanstorm68934 downloadsCreate notes from Outlook .msg files — supports meetings, appointments, and recurring events.
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.
.msg files and prompts you to confirm the occurrence date before creating the note.msg filesSearch for Outlook Event Notes in Obsidian → Settings → Community Plugins.
main.js, manifest.json, and styles.css from the latest release.obsidian/plugins/outlook-event-notes/Drag and drop a meeting or appointment from the Outlook Classic desktop calendar onto the plugin ribbon icon. The plugin will:
.msg fileYou 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.
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.
The folder where new notes are created. Created automatically if it does not exist (supports subfolders like Meetings/2026).
Uses Mustache syntax. Default:
{{#helper_dateFormat}}{{apptStartWhole}}|YYYY-MM-DD_HH-mm-ss{{/helper_dateFormat}} {{subject}}
Produces filenames like 2026-07-30_18-20-05 Réunion d'équipe.
You can use / to create subfolders:
{{#helper_dateFormat}}{{apptStartWhole}}|YYYY/MM/YYYY-MM-DD_HH-mm-ss{{/helper_dateFormat}} {{subject}}
produces 2026/07/2026-07-30_18-20-05 Réunion d'équipe
Characters that are invalid in filenames (/ * " \ < > : | ?) are replaced with this value. Blank = remove them.
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.
---
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}}
---
| 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_dateFormatFormats 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_firstWordReturns only the first word of a field — useful for recording first names only:
meeting-recipients:
{{#recipients}}
- {{#helper_firstWord}}{{name}}{{/helper_firstWord}}
{{/recipients}}
.msg file parsing0BSD — see LICENSE.