It’s been a minute…
I thought I’d take a few minutes to document a process I’ve developed that forms part of my productivity flow within Obsidian. For those of you unfamiliar, Obsidian is a personal knowledge base and note-taking application - similar in nature to OneNote, Evernote, Notion etc. I’ve become a huge fan over recent weeks, moving my entire note-taking workflow to it in place of various other - often disparate - methods of tracking my thoughts, actions, and musings across my work and personal life. There are lots of things behind this decision; the way it supports organic and simple linking of thoughts and topics, the ease with which you can search and sort your notes, it’s extensible nature, the use of markdown as a primary input format etc. etc. - but fundamentally it just ticks all of my current boxes where others don’t… all that is, except for one! 🙂
So what’s the issue?
To explain my predicament, I first need to explain a little about the way that Obsidian stores note content. Each time you create a note, a new markdown file is created based on the title. This is stored in a file structure that Obsidian refer to as your “vault”, which is ultimately just a folder structure in a location on your device that mimics that which you build out in the Obsidian application. For the most part this structure is largely irrelevant - the magic of discovering / searching / linking your content is in the way you leverage tags and links within your note metadata and content - but it does serve the nice purpose of being non-proprietary. At any point you could do away with Obsidian and still have access to all of your notes in a reasonable structure. This is great - and also enables the use of various cloud sync services (e.g. OneDrive, Google Drive, Dropbox etc.) to synchronise your note content into different installations of Obsidian across your devices; providing flexibility and reassurance that your data is securely stored and always available. I do exactly this, storing my vault in OneDrive for Business, and also making use of a Community Plugin to push my content into a GitHub repository for version history and a tertiary copy of my data (local, OneDrive, and GitHub).
So what’s the catch? Well, this comes when you start to consider when and how you capture those incidental and sometimes random “things” that you want to drop into a note to refer to or action later, but where you may not have access to your Obsidian vault. How often do you pull up the Notes app on your phone, or find yourself simply emailing yourself a URL to an article to read later? This is a common requirement for most of us… particularly in the context of “Personal Knowledge Management” (PKM) workflows. It’s also one that is bizarrely difficult to integrate with Obsidian given the “local” nature of the Obsidian Vault.
Now, there is a mobile Obsidian app. Why not use this? Well, there’s a further constraint here in that (specific to iOS, but I believe also relevant to Android) to sync to mobile you are required to subscribe to Obsidian Sync - a premium sync service that costs £7.99 per month. I’m the first to invest in and support subscription services that I believe add value to my life… but I’ll be damned if I’m going to pay an amount equivalent to Netflix / Disney+ / Amazon Prime for a very occasional scenario that’s often better served with a quick email “note to self”.
OK, so what’s the fix?
The fix for me involves a relatively simple bit of Power Automate. Similar workflows are alluded to regularly on the Obsidian forums, but I struggled to find a decent and up to date summary of the steps involved, so cobbled together a Flow of my own to address my use case. Hopefully this write up saves someone else an hour or two of jiggery pokery down the line. A screenshot of the Power Automate can be found towards the end of this post, the actions taken are as follows:
Step 1 is the trigger, initiating the Flow when an email is received that meets specific criteria. I’m taking advantage of “Plus Addressing” (a topic I’ve blogged about previously, see here) to tag specific emails for processing by the Flow - “email@example.com”. The trigger is also scoped to only fire on emails received from my work, or personal email addresses.
Steps 2 & 3 process the email, marking it as read and then moving it to my archive (once it’s added to Obsidian, I no longer have a need for the email… I’ve always worked on the premise that mail in my inbox is either unread or requires a follow up, everything else is deleted or archived).
Step 4 takes the email body and converts it to plain text, ready for saving as a markdown file within the folder structure of my Obsidian Vault. There are some quirks with this function which account for steps 5-7 - additional line spaces are inserted when a double line space is present in the original email. This irritates me, so steps 5 and 6 define double and single space variables respectively, before step 7 uses a “replace” function to identify these in the plain text output of step 4 and correct them. The replace expression used is as follows:
replace (outputs('Convert_Email_to_Plain_Text')?['body'], variables('Double Space'), variables('Single Space') )
- Step 8 defines a variable for the markdown output which we populate in step 9. Step 9 is a condition which addresses another nuance of my setup depending on whether the original email has come from my personal, or corporate email account. In the case of the latter a signature is appended which I remove using another expression, this time a “split” function which looks for the start of my signature and only takes the text before that point. The split expression used is as follows:
- The output of the condition is the “setting” of the output variable initialised in step 8. This is subtly different on either side of the condition - taking the direct output of step 7 in the case of my personal email, or the output of the split function above if the email has come from my corporate address. In both cases I also append some default frontmatter which I use subsequently in Obsidian:
--- Created: dd MMMM yyyy HH:mm (based on the email received time) From: Recipient Email Address (taken from the original email) Tags: Work, Personal, Email/New ---
- Finally, step 10 creates a markdown file using the name “Subject.md” (where the subject line is taken from the received email), and using the output variable defined in the steps above. This (the final bit of magic, and possible based on the flat file nature of Obsidian) is saved into the OneDrive for business folder used for my Obsidian Vault, in a dedicated “Email Notes” folder.
Power Automate Flow
…and that’s all there is to it! In a few (fairly) simple steps you can now email anything you like to yourself and have it appear automatically within Obsidian as a new note, complete with bespoke frontmatter to help you with identification and organisation of “incidental” notes or information you wanted to send to your future self! I find this super useful, and infinitely quicker and easier than trying to navigate a third-party notes application on my phone (assuming that was even possible without a separate subscription). I hope you do too…
As usual, feel free to get in touch with any questions or feedback. Hopefully more (potentially Obsidian related) content to follow very soon!