RoamJS is becoming a part of SamePage! To check out the inter-tool network we're building, click here to learn more!


Table of Contents


You can quickly turn just about anything in Roam into a workflow. Defining custom workflows accessible via the SmartBlocks Trigger is the primary use case of this extension.

A SmartBlock workflow follows a number of simple rules outlined below. There is a Workflow SmartBlock to help you get started.

Structure of a SmartBlocks:

A parent block on any page that has the tag #SmartBlock followed by the title defines a SmartBlock workflow. All child blocks are part of the workflow.


Here's what this SmartBlock is saying:

  • #SmartBlock Meeting Agenda (This is the parent block, it will not be inserted when the action is triggered. Search for "Meeting Agenda" to trigger)

    • Child block 1 (all text in this block will be inserted, replacing the trigger in the current block)

    • Child block 2 (this block of text will be inserted as a sibling of the previous block)

      • Indented Child block (this block will be inserted and indented)


Any formatting will be included in the output of the workflow, such as ** for bold, _ for emphasizing, and so on. All text within the block is preserved.

Block level settings, such as headers, alignment, and view type are also preserved.

Special Commands

Workflows can be "Smart" which means you can embed certain commands into your workflow to have it perform dynamic actions. See the command reference for documentation on all of the supported commands.

Example of SmartBlocks with commands


  • #SmartBlock Meeting Agenda (Parent block, followed by children blocks)

    • Date: <%DATE:today%> <%TIME%>

    • <%IFDAYOFWEEK:1%> Monday detailed briefing

Helper Workflow

SmartBlocks includes a pre-defined workflow named Workflow Starter. It helps you start a new workflow quickly by inserting a template as a starting point. Visit this section for a list of all the other pre-defined workflows.


There is an active community at channels #roam42 and #roamjs discussing and building SmartBlocks. Stop by if you need help or want to share your ideas.