How to Create Your First WoW Classic Addon: A Beginner-Friendly Introduction

How to Create Your First WoW Classic Addon: A Beginner-Friendly Introduction

So you want to create your first addon for WoW Classic? Great choice! Whether you’re looking to add a personal tweak to your UI, build a small quality-of-life feature, or one day release a fully-fledged addon to the community, the whole process is much simpler than it looks.

This guide is a gentle introduction to the basics — no coding experience required. By the end, you’ll understand how addons are structured, where files go, what the essential components are, and how to prepare your very first working addon.

What Exactly Is a WoW Addon?

Addons are small modules written in Lua (a lightweight scripting language) and XML. They allow you to customize WoW’s interface, automate UI behaviors (not gameplay!), display additional information, improve usability, and more.

They cannot perform rotation automation, botting, or anything that interacts with combat actions — but they can deeply enhance your interface and your overall experience.

How Addons Are Structured

Every addon is just a folder placed inside:

World of Warcraft\_classic_\Interface\AddOns\

Inside that folder, you typically have:

  • A .toc file — your addon’s “manifest” that tells WoW what files to load.
  • One or more .lua files — your code and logic.
  • (Optional) .xml files — frames, UI definitions, templates.
  • (Optional) Assets — icons, textures, images, sounds.

A minimal addon contains only a folder + a .toc file + one Lua file.

Creating Your First Addon (Step-by-Step)

Let’s start with the simplest addon possible: something that prints a message when you log in.

1. Create the Addon Folder

Go to:

World of Warcraft\_classic_\Interface\AddOns\

Create a new folder called:

MyFirstAddon

(You can replace the name with anything — just avoid spaces.)

2. Create the TOC File

Inside the folder, create a file named:

MyFirstAddon.toc

Add this content:

## Interface: 11502
## Title: My First Addon
## Notes: A simple test addon for WoW Classic
## Author: YourName
## Version: 1.0

main.lua

Important: Update the Interface number for your version of WoW Classic (it changes every major patch). You can check it by looking at any other addon’s .toc file.

3. Create Your First Lua File

Now create the file referenced in the toc:

main.lua

Put this inside:

local frame = CreateFrame("FRAME")
frame:RegisterEvent("PLAYER_LOGIN")

frame:SetScript("OnEvent", function()
    print("|cfff4b034MyFirstAddon loaded successfully!|r")
end)

Congratulations — you’ve just created an addon that loads and displays a message when the player logs in.

Where to See (and Enable) Your Addon

Start WoW Classic and go to the Character Select screen, then click AddOns in the lower-left corner.

You should see My First Addon in the list. Make sure it’s enabled, then enter the game. After login, you should see your custom message in the chat frame.

What You Just Accomplished

You now understand:

  • Where addons are stored
  • How the .toc file works
  • How Lua code is loaded
  • How to respond to events (like PLAYER_LOGIN)
  • How to print and test basic behavior

This is the foundation for everything else — frames, slash commands, data storage, UI widgets, and more.

What’s Next?

This introduction is the first part of a series. In the next guides, we’ll cover:

  • Adding slash commands (like /hello)
  • Creating your first frame with XML or Lua
  • Saving data between sessions (SavedVariables)
  • Debugging and structuring your addon project
  • Packaging your addon for CurseForge or Wago

Stay tuned — your first tiny addon is just the beginning of what you can build for your own WoW Classic UI!

Comments

One response to “How to Create Your First WoW Classic Addon: A Beginner-Friendly Introduction”

  1. […] the first part of this series, we built a tiny addon that prints a message when you log in. Now we’ll make it a bit more […]

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Index