Ok, so #macroname calls another macro. Example: A secret roll of d20! #Secret1d20 Runs a macro, including whisper command, etc. Just make sure the #macro is in a seperate line. Inside a Query: ?{WhatDefense?|Dodge,#MacroDodge |Parry,#MacroParry } It lets you pick which macro to run. However, [Button1](~Macro1 ) Creates button “Button1”, but can't find the macro. [Button1](#Macro1 ) Creates a broken button that crashes Roll20. So if I want general utility macros invoked from a chat menu, I have to store those as Abilities in a spare character sheet. Example: [Button1](~CharSheetName|Ability1) Creates a button that activates an ability from the specified character sheet. Incidentally, an Ability can make a button to invoke another Ability in the same sheet using just [Button1](~Ability2) , so if you copy and rename a sheet, things won't break. But if I want to skip the button, I must specify the sheet name like %{CharSheetName|Ability2}. Question 1 : Is there a way to also ommit the sheet name, like with the button example above? Using just %{Ability2} wont work here. Question 2 : Instead of specifying the character by name, could I somehow use @{selected} or @{target} here? And are there any other related tricks I missed?