Tags beyond #Hashtags - is there a de facto naming convention? (fields, text expansion, etc)

Hi all - looking for some guidance on how to follow some emergent naming conventions. I’m noticing a need for tag-like abilities that are otherwise best NOT implemented as #Hashtags. I am curious if people have opinions on how to label them.

Here are the examples that I have:

Template Fields

I use templates greatly, and I need a marker for things that need to be filled in with data every time the template is used. For instance, consider a note template for a book quotation. I might have a section for a table on the core data:

Item Entry
Book Title ::BookTitle
Author ::Author

As you can see, I currently use “::” to signify a field that needs to be filled in. Is there a standard way for this?

Keyboard expansions

I like to use keyboard expansions, for instance if I type ~date it expands to [[2020-11-20]]. Occasionally, I’ll even put ~date directly into a note (e.g. a template) just to remind me to force a keyboard expansion at that location. Is there a best practice prefix (like my ~) for expansions?

Metadata field entries

I have a templatized metadata field table automatically at the bottom of every note thanks to python / iOS shortcuts. Several of the fields I’d like to use #HashTag answers for so that I can quickly pull up all like minded notes. For instance, consider a field called CardType, I’d like to be able to have a field #CardType-Belief or #CardType-Idea to link different types together through searching. The problem is, doing a hashtag makes the graph view near impossible, because all of these metadata fields are shared across all cards, thereby clogging up the graph view. My best solution is to give them a new prefix, say ^^, so that I can search for them. Is there a common prefix used for this?

Metadata fields

And similar to the previous item, I’d like the field names themselves (CardType) to have its own tag to separate it out. I’m using a single ^ for this (^CardType) to specify this. Is there something better?


I think that covers it - any guidance you have is appreciated.

1 Like

Hi! Don’t have standards, only a little tip for the template fields. I do the same: use a placeholder to remind me to fill something in. I simply use ### everytime. Thats easier than writing different words. e.g.

Book Title: ###
Author: ###

To fill the placeholders I simply doubleclick on the ### and start writing. With ::Author that’s more complicated: you have to select the string ::Author manually. Just my 2 (or 1) cents.

Thanks @a_wue for chiming in. The “just a double-click” goal is indeed something I’d love to have - so I take your suggestion particularly seriously. The problem I have is that using three hash marks is also used for H3 headers, and thus it makes it more difficult to programmatically replace the markers using python/ios Shortcuts without adding additional search constraints. But I appreciate the idea!

Also, for completeness for those finding this post, obsidian implies support for template fields (or arguably as a keyboard expansion) by using the double curly braces - e.g. {{date}} in your template text is expanded to be the current date. I’m close to switching from :: to {} - but the number of keystrokes to clean it up (per @a_wue’s comments) is even higher than ::.

For template fields, I’ve also seen some tools use backtick pairs, i.e. `Book Title` (e.g. RMarkdown). The problem with that is that it is overloaded with being <code> qualifiers in some markdown implementations.

Finally, for the Metadata field I’ve gotten the suggestion to use @ signs instead. Visually, the @ sign is quite “messy” (I’m a purist), plus I currently use the @ sign also as a tag for people referenced in my vault - keeping in line with general internet usage. Thus, why I currently use ^ carets instead.

@truth: that’s right, didn’t think bout that yet. Thanks for the hint! Of course, you could also use :::: as a placeholder, or any other string that’s double-clickable.