SuperMacro Reference Guide - Vanilla World of Warcraft Addon

SuperMacro is an absolutely essential addon for anyone interested in using macros effectively. It allows you to make many more macros with effectively no character limit, you can write Lua functions directly, greatly increasing the power of your macros and it adds many useful functions that can make your macros more powerful and easier to read.

For many more useful addons, check out my Vanilla World of Warcraft Addon Guide or World of Warcraft: Classic Addon Guide.

World of Warcraft: Classic Compatibility

SuperMacro is not compatible with World of Warcraft: Classic and there isn't a replacement. Addons no longer have the functionality available that made this possible in Vanilla.

There is a macro addon called GSE Classic that you may be interested in, but it doesn't have the functionality of SuperMacro.


You can download it from this GitHub:

Click on "Clone or download," then "Download ZIP."


Extract the downloaded file. In the SuperMacro-master folder is the SuperMacro folder. Drag that SuperMacro folder into the Interface/AddOns folder in your World of Warcraft game folder.

How to Use

SuperMacro Menu

Once installed, you can bring up the SuperMacro window by typing "/macro" in the chat box, or pressing Esc to click on the new SuperMacro button.

You will notice immediately that you have more macro slots available. There are 18 normal macros shared between characters, 18 normal macros for each character, and 30 super macros that are also shared between characters. The normal macros still have a 256 character limit, while the super macros have a 7000 character limit.

You can also write Lua functions in the Extended Lua section. Lua is the scripting language used for creating AddOns, so you can use this feature to create incredibly complex macro functions. This is a very powerful and underutilized feature.

Regular Macros Super Macros
SuperMacro Regular SuperMacro Super


SuperMacro Options

Click on the "SM Options" button to bring up the SuperMacro Options window.

Most of these options configure how the macros will appear on the action bar in the default Blizzard UI. If you are using an action bar replacement addon like Bongos, those settings may have no effect.

Option Description
Hide names on action bars Enabling this will hide the name of the macro on the icon in your action bars.
Show tooltip about spell or item When enabled, the tooltip for the macro will display the spell information of the first casted spell in the macro. SuperMacro Tooltip Spell
Show tooltip about macro's script When enabled, the tooltip for the macro will display the macro text. SuperMacro Tooltip Script
Show minimap button When enabled, adds a button on the minimap to bring up the SuperMacro UI.
Auto-replace action icons This will change the icon based on the last spell that the macro cast. Auto-check cooldown for actions must be enabled as well.
Auto-check cooldown for actions This will change the cooldown icon based on the last spell that the macro cast. Must be enabled for Auto-replace action icons to work properly.
Show menu button When enabled, displays the SuperMacro button in the Esc menu.
Output color of SM_print() and /print Changes the output color of the print commands.

Macro Functions

SuperMacro also adds many useful functions that you can use in your macros. Most, but not all, of the functions can be used in either a function syntax or a slash command. When available, both are listed in the following tables. Similarly, most have several spelling variations but are otherwise the same function.


Function Description Example
cast( spell )
/cast spell
Alias for CastSpellByName. cast( "Frostbolt" )
Channel( spell)
SM_Channel( spell )
/smchan spell
/smchannel spell
Casts a channeling spell that won't be canceled if you activate the macro again.  
stopcast() Alias for SpellStopCasting.  
caststop( list )
/caststop list
Casts the spells in the list sequentially, each immediately followed by stopcast(). Only works properly for spells that don't cause global cooldown. /run caststop("Arcane Power", "Presence of Mind", "Frostbolt")
/shift form
/smshift form
Shift into form for Druid, Rogue or Warrior. form can be bear, aquatic, cat, travel, moonkin, stealth, battle, defend or berzerk /shift bear
DoOrder( list )
/order list
/smorder list
Uses the first available spell or item in the list. DoOrder("healing potion", "lesser healing potion", "healing touch")


Function Description Example
FindBuff( name, unit)
buffed( name, unit )
Returns true if the unit has the buff. "target" is the default unit. name is the name of a buff, or even a partial name. Not case sensitive. if not buffed( "mark of the wild" ) then cast("mark of the wild") end
CancelBuff( name )
unbuff( name )
/unbuff name
/smunbuff name
Cancels a buff on the player. name is the name of the buff, or even a partial name. /unbuff Demon Skin
To remove all buffs: /unbuff .

Function Description
Print( msg )
SM_print( msg )
Printd( msg )
echo( msg )
/print msg
/smprint msg
Prints a message to the chat window only visible to you.
PrintColor(r, g, b, msg ) Prints a message to the chat window in the color you provide. r,g and b are in the range 0-1.
Pass( msg )
/pass msg
Prints a message if the current action succeeded.
Fail( msg )
/fail msg
Prints a message if the current action failed.

Command Execution

Function Description Example
SM_IN( seconds, command )
/in seconds command
Executes command after the amount of seconds has passed. If seconds is followed by '+', the command will repeat every number of seconds. Cannot cast spells or use items. Useful for reminders. Reminder to buff party members every 5 minutes: /in 300+ /print Buff Party Members
RunLine( text ) Runs the single line text as a macro or chat message. Can run multiples lines separated by commas. RunLine("/p Healing", "/cast Heal")
RunBody( text ) Runs the text as a macro. Multiple lines separated by '\n'.  
RunMacro( name )
Macro( name )
/macro name
Runs the normal macro with the given name. RunMacro( "Melee" )
RunSuperMacro( name )
/smacro name
Runs the super macro with the given name.  

Action Bar Buttons

Function Description
SetActionMacro( actionid, macro_name ) Set an action bar item to the macro by name.
SetActionSuperMacro( actionid, macro_name ) Set an action bar item to the super macro by name.
lastActionUsed The actionid of the last action bar item used.

You can use these to swap macros on your action bars. These two macros will swap places every time you run one.

Macro named 'FindHerbs':

/cast Find Herbs
/script SetActionMacro( lastActionUsed, 'FindMinerals' )

Macro named 'FindMinerals':

/cast Find Minerals
/script SetActionMacro( lastActionUsed, 'FindHerbs' )


Function Description Example
send( msg ) Alias for SendChatMessage. send( "Hello", PARTY )
SayRandom( list )
/sayrandom list
/smsayrandom list
Picks a random message from the comma separated list, or nothing at all. SayRandom( "Hi", "Hello" ) will either send "Hi", "Hello" or no message at all.


Function Description Example
pickup( bag, slot ) Pickup the item in the bag, slot position. Call once to pickup the item, call a second time to place the item.  
pickup( inventory_slot ) Pickup the item from your equipped inventory.  
pickup( name ) Pickup the item containing name. pickup( "hearthstone" )
CraftItem( skill, item, count )
/craft skill item count
/smcraft skill item count
skill is the name of the profession. item is the name of the craftable item. count is how many to craft. CraftItem( "First Aid", "Linen Bandage", 1)
FindItem( name ) Finds the item in your bags and returns the bag, slot, texture and number of items. local bag,slot,texture,count = FindItem("Linen Bandage");
/equip item
/smequip item
/eq item
/smeq item
Equip or use the item.  
/equipoff item
/smequipoff item
/eqoff item
/smeqoff item
Equip item into the off-hand slot.  
/unequip item
/smunequip item
/uneq item
/smuneq item
Unequips the item if there is space in your bags.  
use( bag, slot )
/use bag slot
/smuse bag slot
Use the item in the bag, slot position.  
use( inventory_slot )
/use inventory_slot
/smuse inventory_slot
Use the item from your equipped inventory.  
use( name )
/use name
/smuse name
Use an item by name.  
UseItemByName( name ) Use or equip the item by name.  

Event Macros

Function Description Example
RegisterEventMacro( macro, isSuper, events ) Register to trigger a macro when one of the events fires. macro is the name of the macro. isSuper is 1 if the macro is a super macro, 0 otherwise. events is a comma-separated list of events. See this page for all the available events. RegisterEventMacro( "SayHello", 0, "PLAYER_LOGIN" )
UnregisterEventMacro( macro, isSuper, events ) Unregister the macro from the events.  
ViewEventMacros() Prints the registered event macros to the chat window.  

You may also be interested in these World of Warcraft related pages:

World of Warcraft Macros

Question or Comment?