First, your macro is not being detected because it requires a space before the hash: ?{What Macro Do you want|Blind, #pic} That should work to have the #pic macro be detected. However... as Gauss explained, t he problem you run into with Roll20 formations is that macros and abilities are expanded prior to the resolution of the query, so if the expansion introduces new query-control characters (like what Gauss listed), it can change the way the query is parsed... giving you incorrect results and faulty performance. Another solution is to use the Metascript Toolbox, and use Fetch constructions for your macro calls. The toolbox gets around the above problem because Fetch constructions aren't expanded until after the query resolves. ?{What macro do you want?|Blind, #(pic)|Deaf, #(sound)|Tasteless, #(umami)} Going this route does not require HTML replacements to be made to your original macros. Since you don't have to resort to HTML replacements, your individual macros can run on their own (without having to start as a query choice). If you put the HTML replacement characters into the macro, then it would take the query process to properly convert them into text the macro would recognize. The one thing to deal with is which of your query-chosen macros should hit the chat (like a template message), and which should be sent to a mod script (like sending a command to TokenMod). Here's why... Utilizing the toolbox means turning your initial message into a bangsy message (starting with a bang, "!", and intended for a mod script). This engages the metascripts to do their work. If we need to output the result of our macro to chat, we can dump out of the script operations by inclusion of a {&simple} tag in our command line (effectively turning the message back into a standard, non-script message). So if one of our included macros was just a standard template message that would never normally engage the script deck, and if we chose that from the query and ran it... it would not hit the chat result until we included a {&simple} in the line. We can include a {&simple} in the query in every choice that would require such a dump out to the chat window... however, since that tag has a right-brace and a right-brace would be a control character for the query, we would want to HTML escape it as } Let's say that both the #pic and #sound macros are simple template messages, while the #umami macro is an api call. In that case, we could include the {&simple} tag like this: ?{What macro do you want?|Blind, #(pic) {&simple}|Deaf, #(sound) {&simple} |Tasteless, #(umami)} That way, if you choose "Tasteless", the #umami macro can run and send its command on to the script deck instead of dumping out to chat. On the other hand, if all of the choices required {&simple}, you can simply put it after the query, on the outside, and not deal with the HTML replacement: ?{What macro do you want?|Blind, #(pic)|Deaf, #(sound)|Tasteless, #(umami)} {&simple}