I still have a feeling there's more going on here, but you're only giving me a portion of the whole thing you're trying to do. If you only replace the ' weapon4fullattackmacro' attribute with ' &{template:DnD35Attack}', then call the attribute, nothing will happen, because it's just the roll template. There are likely one of two things happening: part of the message is getting parsed by Roll20 before ChatSetAttr can process it; or (more likely) the sheetworkers on the DnD3.5 sheet are rewriting the field. The sheetworkers are fairly aggressive on that sheet, which is apparent if you create the ' weapon4fullattackmacro' attribute manually, then delete it, the sheetworkers will immediately recreate it. Gauss' example of using html replacements only works if you don't include the --replace function, because --replace changes all ; to @. In any case, if html replacements aren't working for you, then you can use the ChatSetAttr --replace functionality if you modify the script code , because it doesn't have a replacement for & or } natively built in. Or if you don't want to modify the ChatSetAttr code, then you can use Metascripts as a replacer function . The html replacement I tried out and appears to work is: [/\\amp/g, "&"], Then I ran this: !setattr --sel --replace --weapon4fullattackmacro|\amp{template:DnD35Attack} {{{{pcflag=true}} {{name=`{character_name}}} {{subtags=2 pincers + 2 claws + bite}} {{attack1=pincers: << `{weapon1attackcalc} >> }} Then running @{Glabrezu|weapon4fullattackmacro} gets this output: But honestly I'm not sure where the ' weapon4fullattackmacro' lives on the sheet, because it's not visible on the Attributes & Abilities tab, and I don't see a field anywhere on the sheet that shows that change.