I think I see the issue, and should have seen it last night. The problem is that this: %{selected|npc_str_save} is not an attribute, it's an Ability Call. For simplicity, when you run a macro, roll20 checks all the attributes, ability calls, and macro calls, and extracts their contents , placing them in the macro. Then the query is run. So imagine npc_str_save includes the following (and likewise for DEX save: &{template:default}{{name=@{character_name}}} {{STR Save=[[1d20+@{str_mod}}} Now you have a macro like this: ?{Save| STR,%{selected|npc_str_save} | DEX,%{selected|npc_dex_save} } When you run it, roll20 extracts and replaces the contents, so you have this: ?{Save| STR,&{template:default}{{name=@{character_name}}} {{STR Save=[[1d20+@{str_mod}}} | DEX,&{template:default}{{name=@{character_name}}} {{DEX Save=[[1d20+@{dex_mod}}} } And then attribute values are replaced (I can't rememvber off-hand if attributes are replaced before the uery runs, but abilities definitely are), so you might have ?{Save| STR,&{template:default}{{name=Goblin}} {{STR Save=[[1d20+0]])} | DEX,&{template:default}{{name=Goblin}} {{DEX Save=[[1d20+3]]}} } And at this point, your dropdown query runs. And now, it stumbles at the first }, thinking thats the end of the query, and your query fails. So, if you want those save abilities to work in tiyur macro, you have to edit them, swapping certain characters with HTML entities. And you either have to do that in the ability being called (making the abiliy break when you try to run it outside of this macro), or ciopy the text of the ability into the macro and edit it directly there. By far the easiest solution to all this, is to replace the query with a chat menu . The code is so much easier and you don't have to edit your other abilities to use them.