You cant do this: @{Target|?{Save}} You can never put calculations or queries inside an attribute call, due to the order roll20 does its macros. The first thing it does is try to read the value of all attributes in the macro, and then run queries. So it tries to look for an attribute named ?{Save} on the Target character sheet, and that obviously doesnt exist. The best way to do this is to use chat menu : print a button for each of the saves into chat (you can whisper the menu to yourself or the relevant player, so it doesnt clutter up chat for everyone), and then the person clicks the button for the correct save, which then rolls it. If you wish to use a query approach, you'll need to get familiar with html entity replacements . But the basic procedure would be to have a query like {{?{Save|Dodge,<complete text of dodge label and roll here>|Parry,<complete parry stuff here>|etc } }} That <complete text> section for dodge would look something like this Dodge=?{Roll|d20|10}+@{Target|Dodge} except that you have to replace some of the characters (in this case, the | and } characters) with html entities, like so Dodge=?{Roll&#124;d20&#124;10&#125;+@{Target|Dodge} You never replace characters in attribute calls, so the target|dodge is left alone. You then repeat that for each other row of the dropdown, and if you're lucky, it will work! Chat menus are much easier. :) Notice I've put the entire query inside the {{ }} brackets. Each row of the query will generate the proper label, the = sign, and the roll after the equals. All of that has to be put in each row of the query.