Impromptu Call: Templates (Patterns?) in Roam Research

I’m a bit foggy on the idea of templates in Roam Research. I know what a template is, generically speaking, but I’m not sure what Conor was demoing tonight.

How are these different that Nat Eliason was creating with his book template or person template??

Recommended by


1 Like

I missed the call to put the little ones to bed. Could anyone summarize?


What Nat was creating with his book/people templates from his first course were basic sets of attributes (metadata). This method is limited by having to assign collections to expand in TextExpander, Alfred, etc.

What Conor has built seems to be much more flexible and usable:

  • ANY block can become a template (by expanding it as a template using the “expand children as text” function.
  • References can be contained within the template, setting up the option for algorithms of thought, and more dynamic templates.

It’s tough to fully figure it out without playing around with it… but the idea of algorithms of thought is very interesting to me, and very different than simple TextExpander snippets


Thanks for the summary! Sounds interesting

I like the “anything can now be a template” idea … feels like that will open the door to many kinds of algorithmic processes/shortcuts

1 Like

Thanks, @brandontoner! I probably do just have to lay with it. I’m trying right now and I don’t even have the “expand children as text” function (yet?).

As I said, I understand the concept of a template—love them; use them. I guess it went too fast for my slow brain, or perhaps I was distracted. I remember watching him do that.

Turning any block into a template seems beyond cool, but I wonder about storing and access.

Thinking from a usability angle, if I can turn what’s in front of me into a template, that seems useful…and I think that’s what everyone was so excited about (and maybe I still don’t grok?). But let’s say I’m journaling in my daily notes at the end of the day, and I want to use my “accomplishments and gratitude” template. Where is that? How do I insert so I can respond to the prompts? Currently, I type a few characters and TextExpander adds the multimarkdown formatted prompts into my journal (DayOne, but rethinking that!).

How do I do that with what Conor demoed? I think that’s part of what I’m missing: telling Roam that I want a block of text to become a template, like Nat’s book or CRM template—where does roam then store that template, and how do I use it in the future?

Again, apologies for being so thick and missing what everyone else seemed to understand! :stuck_out_tongue_winking_eye:

Great questions! (You’re not being thick — this stuff is hard to conceptualize haha… I’m barelyyyy keeping up, and am probably off on lots)

I’d store them on template pages.

Then you’d call it up by creating a block reference and expanding it into its children as text.

I’m sure there will be some great tutorials that will surface when it’s released!

If not, I’ll make one :+1:t3:


Thanks…(and thanks)!

Hmmm…. So these still sound the same as Nat’s template pages. Am I right in thinking that the difference is in pasting them as “as text” vs “as reference”? That way, they don’t link back to the original?

But if that’s true, is there an advantage to doing it that way vs a TextExpander snippet?

1 Like

I think the big advantage vs textexpander is in A) smoothly modifying them on the go… both in quick online editing without going into another app ecosystem, but also

B) quickly reassembling and rearranging, like a set of tinker toys, for near frictionless rearrangements of sub-parts…

1 Like

That’s cool, but I just want to sort backlinks.


Was this impromptu call recorded?

thanks, @mattbrockwell. i’m sure i’ll figure it out, but i hope i’m not the last one to the party! now…being the last one to leave would be fine…. :stuck_out_tongue_winking_eye:

Two things I would need to use block references as templates to their fullest are…

  1. Maintain header levels. Right now, everything is reduced to header level 0.
    Maybe just enable #, ##, ### in Roam’s Markdown language.

  2. Date calculations. I use Phrase Expander as my text expander so I can perform the date calculations in the template. Haven’t found a way to do date calculations in Roam, yet.

Even without these, the new block references functionality is pretty awesome.

1 Like

I actually find it good that header levels are not preserved: they are not attributes of the text but rather of the block itself. However, for the use case of templates as you’re describing, I do agree that it would be useful to have an option to maintain header levels as well.

1 Like