Want to heal a party frame without losing your enemy target, interrupt a second enemy, or pop a trinket without reaching for its icon? That's what macros are for. Start with one simple button and build from there, with code you can copy, explanations, and the limits WoW Forever puts on macros.
Your first macro in a minute
A macro is your own button with a set of instructions. It can heal the ally under your mouse without dropping your enemy target, or interrupt your focus while you hold Shift. It saves you target swaps, but deciding what to press and when is still on you.
- Type /macro in chat. General macros are shared with your other characters, and character macros belong to this character only. Sharing a macro doesn't give another class its spells.
- Click New, give it a short name, and pick the question-mark icon. Paste the example below, save it, and drag its button onto an action bar.
- Bind that action bar slot to a key that's easy to reach. Test the button out of combat before you add a combat spell.
- Start each command on a new line. The Copy button only takes the code, so don't paste the explanation under it into the macro editor. Make and arrange your combat buttons ahead of time, out of combat.
/danceYour character dances. If nothing happens, check the saved macro and the key binding before you start digging into spell names or conditions.
What a combat macro is made of
The Mage example below does two things. #showtooltip controls the icon and tooltip, and /cast tries to cast the spell. A tooltip doesn't cast anything. If you leave #showtooltip without a name, the client picks the spell from the macro itself, modifier choices included.
- Commands and conditions stay in English: /cast, help, nodead. Spell names have to match your game client's language, no matter what language the guide is in.
- Put the text cursor after /cast, open your spellbook, and Shift-click the spell. That's safer than translating the name or copying it from an old guide.
- After you Shift-click, check whether a rank got added. Without an explicit rank, the highest rank you have is used, and helpful spells can also have target-level limits. An explicit suffix like "(Rank 2)" won't update when you learn a new rank. Take it out when you want the highest rank, or keep the exact spellbook suffix if you're downranking on purpose.
- Keep an eye on the editor counter. The standard limit is 255 characters, spaces and line breaks included. These examples are short, but once you add conditions, check that the last line still fits.
#showtooltip
/cast FrostboltA plain
Frostbolt with no extra conditions. For another class, put in a spell that character has learned.
| Command | What it does |
|---|---|
| #showtooltip | Shows the tooltip and icon; does not use the ability. |
| /cast | Attempts to cast the specified spell. |
| /use | Attempts to use an item by name or equipment slot. /use 13 means the upper trinket, not item number 13 in your bags. |
| /startattack | Starts autoattacking your selected enemy. It can succeed even if the following ability fails. |
| /stopattack | Stops your autoattack. It does not remove existing damage-over-time effects or recall your pet. |
| /stopcasting | Stops your current cast or channel. It does not interrupt an enemy or clear a GCD already in progress. |
| /petattack / /petfollow | Send your pet to attack / order it to follow you. |
| /stopmacro | Stops the remaining lines in this activation. It does not undo commands already executed. |
Brackets, commas, and semicolons
A line like /cast [conditions] Spell; [other conditions] Other spell is read left to right, and the client picks the first option that matches. It's a priority list of conditions, not a list of spells to try based on cooldowns.
That rule only applies to the options inside one command. Macro lines run from top to bottom, and a command that fails doesn't necessarily stop the lines after it. For example, /startattack can start your swings even if you can't afford the next ability. Use /stopmacro when you really need the later lines skipped.
| Syntax | Meaning |
|---|---|
| [help,nodead] | The unit must be both friendly and alive. A comma means AND. |
| [combat][mod:shift] | You are in combat OR holding Shift. Separate bracket groups are alternatives. |
| ; | Another option, with its own conditions and potentially another spell. |
| [] | Normal spell targeting, including the current target and auto-self-cast settings. It does not always mean “cast on me”. |
| harm / help | Hostile / friendly unit. These do not check range or health. |
| dead / nodead / exists | The unit is dead / alive / present. Resurrection uses dead; healing uses nodead. |
| combat / nocombat | You are in / out of combat. It does not check whether someone is currently hitting you. |
| mod:shift / mod:ctrl / mod:alt | The corresponding modifier is held. |
| nomod:shift | Shift is not held. Ctrl or Alt may still be held; this condition specifically checks Shift. |
| nochanneling | You are not channeling a spell. This does not check ordinary casts or spell readiness. |
Mouseover, focus, and target of target
| Target | Use it for |
|---|---|
| @target | Your selected target. |
| @mouseover | The unit under your mouse in the world or on a unit frame. This is not a ground location. |
| @focus | A separately remembered unit, such as the enemy healer while you attack someone else. |
| @player | Always yourself. |
| @pet | Your own pet, for example to heal it. |
| @targettarget | Your target’s selected target. It is not necessarily the tank: a boss can switch. |
| @cursor | The ground position under the cursor for a ground-targeted spell. Support depends on the client and spell. |
Heal without switching targets
Hover a friendly party frame and press the macro's key binding. Clicking the action bar button moves your pointer off the ally, so @mouseover isn't that ally anymore and might hit a different unit or the fallback. The default unit frames work fine, and you don't need an extra addon.
#showtooltip
/cast [@mouseover,help,nodead][help,nodead][@player] Flash Heal
Flash Heal goes on a living friendly mouseover first, then a living friendly target, and otherwise on you. Learn the spell first. Your selected enemy stays selected. A friendly mouseover that's out of range gives you a range error, not a self-heal.
A separate self-heal button
#showtooltip
/cast [@player] Flash Heal
Flash Heal always goes on you, whatever your target, focus, or mouseover is. It's handy when you need to know exactly where an emergency heal lands. It doesn't make the heal instant or get around movement and silence.
Remember a second target for crowd control
Focus remembers a separate unit. In Forever, select the enemy you want to remember, type /focus, then go back to your main target. Now you can send crowd control or an interrupt to @focus without swapping targets. The button below can also remember a hostile mouseover.
Focus doesn't jump to another enemy on its own when its unit dies, so set a new one or clear it. Check range to the focus itself, because your main target might be right next to you while the focused healer is behind a pillar.
/clearfocus [mod:shift]
/stopmacro [mod:shift]
/focus [@mouseover,harm,nodead][harm,nodead]Without Shift, it remembers a living hostile mouseover, or your living hostile target if there isn't one. Shift clears focus and stops the macro so it can't set it again right away.
#showtooltip
/cast [@focus,harm,nodead] Polymorph
Polymorph only on a living hostile focus. Without a valid focus, it won't cast on your main target, so you don't accidentally sheep the enemy your group is hitting. Damage to the sheep still breaks it.
Two actions on one key
If Shift+1 is already bound to switching action bar pages, the macro on 1 might never see Shift+1, so check your key bindings. Alt can also be set to self-cast. Start with Shift or Ctrl and clear any binds that clash.
Don't bury five emergency actions under different combos. One modifier you can remember under pressure is worth more than a clever button you have to stop and think about.
Test a mouseover modifier with its actual key binding, not by Shift-clicking the action bar icon, which can behave differently. In the Rogue and Shaman examples below, [nomod:shift] means "without Shift" specifically, even if Ctrl is held.
#showtooltip
/cast [mod:shift] Frost Shock; Earth ShockA normal press uses
Earth Shock, and Shift uses
Frost Shock. The question-mark icon follows whichever one is picked. It doesn't fire both Shocks, since they share a cooldown and you pick which one to use.
The GCD and burst: what can fire together
The global cooldown, or GCD, is the short shared lockout most abilities trigger. A macro doesn't wait between lines, so two regular on-GCD spells don't turn into two casts from one press just because they're on separate /cast lines.
Burst is a short window of extra damage. You can pair an attack with an off-GCD on-use trinket, as long as it's equipped, ready, and allows that combo.
Keep this off your regular spell button if you want to save burst for an important target. /use runs before /cast, so the trinket can get spent even if the spell then fails because of range, resources, or no target. Two on-use trinkets might share a cooldown too, so /use 13 plus /use 14 doesn't guarantee both go off at once.
#showtooltip 13
/use 13Uses the active effect of your top trinket. Swapping that trinket doesn't mean editing the macro. For the bottom slot, change 13 to 14 on both lines. A passive trinket can't be activated.
#showtooltip Frostbolt
/use 13
/cast Frostbolt13 is the top trinket slot and 14 is the bottom one. This tries the top trinket, then
Frostbolt. A passive trinket has no on-use effect. An item that triggers the GCD can block the spell on that press.
/castsequence: an order, not an autopilot
Spells separated by commas are steps in a sequence, not options to pick from. If you put the first DoT up, move, and press the button again, it tries the next step. Use the question-mark icon and #showtooltip without a spell name to see what's coming next.
- reset=target/10 goes back to the first spell when your selected target changes OR after 10 seconds without pressing this macro. It's not 10 seconds from the start of combat, and it's not the spell's cooldown.
- Every press restarts the idle timer, so spamming a stuck step keeps the timed reset from ever kicking in.
- Running out of mana, a spell you haven't learned, or a step on cooldown can stall the sequence. It doesn't skip ahead to find a different spell it can use.
- Long sequences handle movement, target swaps, and emergency interrupts badly. Keep reactive abilities on their own buttons.
- target/10 combines resets with OR, not AND. To test it, cast the first DoT and change your selected target, and the icon should go back to the first step. Start again and leave the button alone for 10 seconds to test the other reset. Moving your mouse over a different frame doesn't change your selected target on its own.
#showtooltip
/castsequence reset=target/10 Corruption, Bane of AgonyThe first press starts
Corruption (without the talent it has a 2-second cast), the next press after that cast lands casts
Bane of Agony, and then the sequence loops. It's here to teach the syntax, not an optimal rotation. /castsequence doesn't fire the next step when the last one finishes, so it needs another press.
Starter macros for all nine classes
Pick your class. These are small standalone buttons, not one macro for a whole fight. Learn the listed spells first, and use your spellbook names if your client is in another language. The class PvP guides have more combos, but level and talent requirements still apply.
Warrior: keep your melee swings going
#showtooltip
/startattack [harm,nodead]
/cast Hamstring
Hamstring slows the target, and /startattack starts swinging even if you can't afford the spell. Stance, range, and weapon requirements still apply. Autoattacking your selected unit while it's crowd-controlled can break the control even when the ability itself fails.
Paladin: heal a friendly mouseover
#showtooltip
/cast [@mouseover,help,nodead][help,nodead][@player] Holy Light
Holy Light on a friendly mouseover, then your friendly target, and otherwise on you. You can help a teammate without dropping the enemy. It still has its normal cast time and can't be cast on the move.
Hunter: send and recall your pet
#showtooltip
/petattack [harm,nodead]
/cast Arcane ShotSends your pet at your living hostile target and tries
Arcane Shot. Don't put /petattack on every shot unless you want the pet switching every time you change targets. The pet command can work even when the shot is out of range.
/stopcasting
/stopattack
/petpassive
/petfollowStops your cast and autoattack, sets the pet to passive, and calls it back. Handy before crowd control. The pet stays passive after you press it, so once your CC is in place, switch it back with /petdefensive or /petaggressive, or it won't defend you on its own. Projectiles already in the air and DoTs already ticking stay put, so it can't guarantee a trap holds.
Rogue: Shift-Kick your focus
#showtooltip
/cast [mod:shift,@focus,harm,nodead][nomod:shift,harm,nodead] Kick
Kick normally hits your enemy target, and Shift sends it to focus only. With Shift held and no valid focus, it won't kick your main target instead. Kick still needs melee range.
Priest: healing and damage on one button
#showtooltip
/cast [harm,nodead] Smite; [help,nodead] Flash Heal
Smite on a hostile target and
Flash Heal on a friendly one. There's no self-cast fallback on purpose, so without a matching target it does nothing. Keep a separate self-heal you can count on for emergencies.
Shaman: stop your cast to interrupt theirs
#showtooltip
/stopcasting
/cast [mod:shift,@focus,harm,nodead][nomod:shift,harm,nodead] Earth ShockStops your current cast first, then tries
Earth Shock. Shift uses focus only, and a normal press uses your target. /stopcasting still fires if Shock is on cooldown or the focus is out of range. Stopping a cast doesn't clear a GCD that's already running. Keep this as your emergency interrupt button.
Mage: control without a target swap
#showtooltip
/cast [@mouseover,harm,nodead][] Polymorph
Polymorph on a living hostile mouseover, and otherwise normal targeting. For a set enemy healer, use the strict focus macro above, because this one goes for whoever's under your mouse.
Warlock: don't clip a channel
A regular cast, like a Mage's
Frostbolt, does its thing after the cast bar fills. A channeled spell, like
Drain Life, works while the bar runs and deals damage in ticks. [nochanneling] checks for the second kind. It keeps extra presses from restarting a channel, but it doesn't protect every regular cast.
#showtooltip
/cast [nochanneling] Drain Life
Drain Life won't restart while you're channeling any spell. Once the channel ends, another press can start a new one. Put emergency Fear or movement on a different button. Unlike this condition, /stopcasting cuts off both regular casts and channels on purpose.
Druid: HoT an ally without losing your target
#showtooltip
/cast [@mouseover,help,nodead][help,nodead][@player] Rejuvenation
Rejuvenation on your friendly mouseover, friendly target, or yourself. A HoT heals over time. This example has no /cancelform, so form limits, shifting, and mana costs are still up to the client. Test it in caster form first.
Handy buttons outside your rotation
Resurrection flips the life check: help,dead, not nodead. The example below is for Priests. Other classes should put in their own resurrection spell from the spellbook. The macro doesn't change combat limits, reagent requirements, or cooldowns.
For weapon swaps, /equipslot 16 is the main hand and /equipslot 17 is the off hand, and you need your exact item names. The October 8 patch brought back multiple weapon swaps within one GCD. That doesn't guarantee a follow-up ability can fire on the same press.
#showtooltip
/cast [@mouseover,help,dead][help,dead] Resurrection
Resurrection goes on a dead friendly mouseover first, then a dead friendly target. A living unit doesn't match, and there's no self-cast fallback. Press its key binding while you hover the dead unit's frame. A Priest's regular resurrection can't be cast in combat.
/console outlineModeShowLootEffectWhenDisabled 1
/console graphicsOutlineMode 0
/console OutlineEngineMode 0The same setting as in our addon guide. Outlines get turned off, and lootable quest items get the game's sparkle instead. Herbs and ore don't get highlighted this way. The last two lines change graphics options, so if you don't like the result, set your old outline mode back in the Graphics settings.
/console outlineModeShowLootEffectWhenDisabled 0Turns off the quest item sparkle while outlines are off. It doesn't undo the other two values changed above, and /console graphicsOutlineMode 2 or a graphics preset brings outlines back. The change only shows up after a full game restart, and /reload might not be enough. It's a visual setting, not a way to see loot through walls.
Where Forever differs from older guides
- Scrolls trigger the GCD. This changed in the October 15 patch. A scroll followed by a regular spell might stop at the scroll on that press.
- No fog-disabling commands here. Blizzard removed a setting that turned off fog in a way it wasn't meant to. An old graphics macro doesn't prove the command still works.
- Focus and mouseover aren't combat scripts. /run doesn't unlock restricted combat data or let a macro pick the best spell for you. Client restrictions still apply.
- Check @cursor for each ability. Don't assume every Retail ground-targeting shortcut works for every Forever spell. If the client rejects it, use the regular spell and confirm where it lands.
- Check your spellbook and talents. Retail, Classic Era, SoD, and Forever don't give a class the same abilities, and a macro can't teach you a spell you don't have.
Build buttons without typing the syntax
You don't need an addon for your first macros. For a bigger collection, ForeverFastMacros opens with /ffm. Drop a spell from the book, pick a mouseover, focus, or Shift template, and take the button it makes. Names come from your client.
Macro Forever, opened with /mforever, has a guided builder with class examples and sequences. Both tools make regular macros, not an autopilot. A library example might use a spell you haven't learned, so read the text it generates before you use it.
There are more handy tools and interface options in our addon guide.
The button does nothing: a quick checklist
Change one thing at a time: plain /cast first, then conditions, then modifiers. That way you can see which change broke it. Copy working text somewhere safe before a big rewrite, log out normally afterward, and back up the WTF folder with the client closed.
Before a dungeon, test with no target, a living enemy, a friendly unit, and an empty focus, then repeat each one that matters with Shift. Check what happens when it fails, not just when it works. With several lines, also watch whether an item or defensive gets used up before the spell you actually wanted.
| Symptom | Check |
|---|---|
| No response at all | Save the macro, drag the current button onto the bar, and check the binding. Test /dance in the same slot. |
| Unknown spell | Check client language, spelling and learned rank. Insert the spell from your spellbook again. |
| Fails only with Shift | Check whether Shift plus that key is already bound to another action, such as changing action-bar pages. |
| Casts on the wrong unit | Check the order of @mouseover, @focus and []. Remove fallback targeting if the button must strictly use focus. |
| A target exists, but no cast happens | Check dead/nodead, help/harm, line of sight, range, resources, weapon and stance requirements. A matching unit is not necessarily a castable one. |
| Sequence is stuck | Check its next spell. Stop pressing for 10 seconds for reset=10, or change the selected target for reset=target. Neither fixes a missing spell. |
| Your own casts keep stopping | Look for /stopcasting on a regular attack button. Keep it only on buttons intended to abandon the current cast. |
| Macro text appears in chat | Look for an accidental line without a command. Copy only the code, not the explanation beneath it. |
| Mouseover heals me rather than the ally | Keep the pointer on the living friendly frame and press the key binding instead of clicking the macro icon. Otherwise it may use a target or @player fallback. |
| The icon remains a question mark | Check that the spell is learned and spelled correctly. For a strict focus button with no valid focus, explicitly naming the spell after #showtooltip can keep its tooltip visible. It does not change the cast target. |
| Copy reports that copying was blocked | Your browser did not allow clipboard access. Check this site’s clipboard permissions or copy the macro text manually. The button reports success only when copying succeeds. |
Frequently asked questions
Are macros allowed in WoW Forever?
They are. The built-in /macro editor is part of the client. It doesn't get around the GCD or pick spells for you based on health, mana, buffs, or cooldowns. Outside software that presses keys for you is a different story.
Can I put a whole rotation on one button?
/castsequence locks in a fixed order, but every step still takes a press. It can't pick the best ability, and it can get stuck on a spell that isn't available. Keep interrupts, crowd control, and defensives on their own buttons.
Why does an English macro fail on a Russian client?
Commands and conditions stay in English, but spell names have to match your game client's language. Shift-click the spell from your spellbook. Take out an explicit rank when you want the highest rank, not a downrank.
What is the difference between mouseover and focus?
Mouseover follows your pointer. Focus remembers a separate unit while you switch your main target. Neither one gets around range or line of sight.
What does reset=target/10 mean?
Go back to the first step of the sequence when your selected target changes or after 10 seconds without pressing this macro. Every press restarts that idle timer, and it isn't a timer from the start of combat.
Will a macro increase my DPS?
It can save the time you'd spend swapping targets or reaching for another button. It doesn't make a spell hit harder. It helps by making the right move easier to do on time.
Why does mouseover fail when I click the action-bar button?
The @mouseover unit is whatever's under your pointer the moment the macro fires. Moving the pointer to the macro icon takes it off the ally. Hover the unit frame and fire the macro with its key binding instead.