GuildRouter

A lightweight, high-performance World of Warcraft addon that routes guild events (MOTD, joins/leaves, achievements, roster changes), login/logout, and Guild & Officer chat into a single, dedicated 'Guild' tab.

Why use this?

TL;DR - be better connected with your guild.

Stop losing track of your guild's activity in a flood of trade chat, raid alerts, and world messages. GuildRouter intercepts system messages that usually vanish beneath the flood and organises them into a clean, readable stream.

Why not just make your own “Guild” chat tab?

You can create a custom chat tab and enable Guild, Officer, System, Announce, and Achievement messages but Blizzard’s routing is purely mechanical. It simply dumps raw events into a window with no intelligence, no filtering, and no awareness of guild context.

GuildRouter goes far beyond what the default UI can do:

Blizzard gives you a bucket. GuildRouter gives you a curated, intelligent guild activity feed.

Key features

Installation

  1. Move/copy the GuildRouter folder to your _retail_/Interface/AddOns/ or _classic_/Interface/AddOns/ directory
  2. Restart World of Warcraft or logout and login

On load/login: Screenshot: GuildRouter UI

Example updates: Screenshot: GuildRouter UI

Configuration

The addon requires no setup. When it loads, it looks for a chat tab named “Guild”. If it doesn’t exist, GuildRouter creates it and assigns Guild, Officer, Guild Announcement, and Blizzard System channels, plus optional login/logout messages, giving you one clean, dedicated tab for all guild activity.

To declutter your chat, disable Guild Chat, Officer Chat, and Guild Announce in your primary windows; these messages are now routed to the Guild tab.

If you are using ElvUI, you may need to drag the ‘Guild’ tab once to your preferred position. After that, if you ever delete or need to reset the tab, you can use /grreset and it should retain the previous ordering sequence.

You can modify four values that affect how the addon operates. These are configurable via the standard Blizzard addon UI under <ESCAPE>->Options->Addons->GuildRouter.

Addon options: Screenshot: GuildRouter UI

Any changes take effect immediately but are only written to the savedvariables file on successful logout.

Command Line Options

GuildRouter provides several slash commands to manage the Guild tab, control presence announcements, and test events. None are required for normal operation.

GuildRouter status /grstatus: Screenshot: GuildRouter UI

Technical details

Cache system

GuildRouter uses a smart, event‑driven caching system to keep guild presence routing fast and accurate. Instead of hammering the roster API or rebuilding data every time Blizzard fires a GUILD_ROSTER_UPDATE (which can happen dozens of times per minute), the addon maintains a lightweight cache of guild member names, realms, and classes. This cache is refreshed only when it actually needs to be, on login, or when it becomes stale based on a user‑configurable validity period.

When a presence message arrives (“X has come online”), GuildRouter resolves the player’s full name and class instantly from the cache, producing correct clickable links and accurate guild‑membership checks even when Blizzard sends short names or out‑of‑order events. If the cache is stale, the addon requests a roster update in the background, but only if enough time has passed since the last request. All refreshes are throttled and debounced to avoid UI lag, unnecessary work, or API spam.

The result is a system that is instantaneous and rock‑solid: presence messages are always correct, class colours are always accurate, and the addon never stutters or rebuilds more than necessary. It’s engineered to stay fast under heavy event storms, behave deterministically, and keep your chat clean without wasting CPU cycles or impacting your FPS.

Contributing

Contributions to improve this tool are welcome! To contribute:

  1. Fork the repository https://github.com/ExponentiallyDigital/GuildRouter
  2. Create a feature branch
  3. Make your changes to the source code or documentation
  4. Test with sample data and various input scenarios, see testcases.txt as a starting point
  5. Submit a pull request with a clear description of the improvements

Please ensure your changes maintain compatibility with existing variable formats and follows Lua best practices.

Bugs and new features

Found a bug or want to submit a feature request? open an issue here

Support

This tool is unsupported and may cause objects in mirrors to be closer than they appear etc. Batteries not included.

License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses.

Copyright (C) 2026 ArcNineOhNine