Description
Personal Shopper - Community Buy Orders for WoW Classic Era
Tired of sitting in trade chat waiting for someone to sell you that one recipe or rare material? Personal Shopper lets you post buy orders for any item with a quantity and price, visible server-wide to all Personal Shopper users — so sellers can find you, fulfill your order at the mailbox, and get paid automatically via COD.
The Problem
WoW Classic has no built-in way to post a "WTB" that persists beyond a single chat message. Sellers come and go, you miss each other's timing, and coordinating a trade across different play sessions is pure friction. You end up either camping trade chat or going without the items you need.
For crafters and recipe hunters it's even worse — tracking which recipes you still need across multiple profession windows, then cross-referencing what's on the Auction House, means opening the AH and searching dozens of times manually every time you log in.
The Solution
Personal Shopper uses a dedicated addon communication channel shared across all Personal Shopper users on your realm. Buy orders are broadcast automatically, kept in sync in real time, and fulfilled at the mailbox with zero manual setup — the addon attaches items, sets the COD amount, and addresses the mail for you.
Core Features
Server-Wide Buy Orders
- Post buy orders for any item with a quantity and max price per item
- Orders are visible server-wide to all Personal Shopper users, regardless of what zone they're in
- Faction-aware order board — Horde and Alliance orders are kept separate
- Orders persist across sessions and sync automatically when players come online
- Completed and cancelled orders tracked in Order History
Smart Mailbox Fulfillment
- Browse available orders and click Fulfill Order at any mailbox
- The addon automatically addresses the mail, attaches the correct items, and sets the COD amount
- Stack splitting support — if you need to split a stack to hit the exact quantity, the addon handles it
- Automatic order tracking — quantity updates when the buyer accepts a COD mail
Shopping List
- Personal shopping list to track items you're looking for — recipes, rare materials, anything
- Add items manually or auto-populate from your missing tradeskill recipes with one click
- Set a max price per item, assign priority (High / Medium / Low), and add notes
- Organize items into categories; filter by category or priority in the list view
- Account-wide — your shopping list is shared across all your characters
Auction House Scanner
- At the Auction House, click Scan AH to search for every item on your shopping list in one pass
- Results show current buyout price, quantity available, and whether each listing is within your max price
- Green / red indicators highlight deals vs. over-budget listings at a glance
- Configurable scan delay to avoid AH throttling; skip fully-stocked items automatically
Missing Recipe Tracker
- Open any profession window and click Add Missing Recipes to scan for recipes you haven't learned
- Filters out BoP quest rewards, seasonal recipes, and recipes locked to a different specialization (Dragonscale / Elemental / Tribal Leatherworking, Gnomish / Goblin Engineering, etc.)
- Adds all missing tradeable recipe scrolls directly to your shopping list with one click
Real-Time Peer-to-Peer Sync
- Uses AceComm-3.0 over a hidden addon channel — no visible chat spam
- Order creates, updates, fulfillments, and cancellations broadcast instantly to all online users
- Delta sync ensures players who come online later catch up automatically
- Communication channel status visible via
/ps comms
UI & Customization
- Tabbed interface: My Orders, Available Orders, Shopping List, Order History, GoldFundMe
- Minimap button — left-click to open/close the main window, right-click to open/close the settings panel
- TitanPanel integration — displays active order count in your TitanPanel bar
- Item autocomplete powered by a full item database — 14,889 entries for Classic Era, 164,799 entries for Retail — no need to have the item cached
- Price input supports natural formats:
5g,30s,75c,1g3s5c - Window position persists across sessions and
/reload - Search and filter on the Available Orders list
How It Works
Communication System
Personal Shopper uses AceComm-3.0 over a custom addon channel (PersonalShopper) to broadcast order state across all users on the realm. The communication flow is:
- On load — Personal Shopper requests current orders from any online users to populate the local cache
- On order create — the order is broadcast to all online users with item, quantity, price, and character info
- On fulfillment — quantity is decremented and the update is broadcast; fully-filled orders are removed from the board
- On cancel — a removal notification is sent so all clients drop the listing immediately
Mailbox Fulfillment Flow
- Find an order you want to fill in the Available Orders tab
- Walk to any mailbox and open it
- Click Fulfill Order — Personal Shopper fills in the recipient, subject, COD amount, and attaches the right items automatically
- Click Send — the buyer receives the COD mail and pays upon acceptance
Slash Commands
- /ps — Open or close the main window
- /ps minimap — Toggle the minimap button
- /ps options — Open the options panel
- /ps comms — Show communication channel status
- /ps debug — Toggle debug output
- /ps help — Show all commands
Requirements
- Ace3 (AceAddon-3.0, AceComm-3.0, AceDB-3.0, AceGUI-3.0, AceTimer-3.0, AceConsole-3.0)
- WoW Classic Era, TBC, WotLK, Cataclysm, MoP, or Retail (The War Within) — all versions supported via compatibility shims
Recent Updates
v0.6.2 (Latest — 2026-04-14)
- fix: Collector Missing Recipes now works without opening the profession window first — the feature previously required the player's profession window to be open so
CRAFT_SHOW/TRADE_SKILL_SHOWcould build the known-recipes cache; Enchanters on Classic Era were most affected since Enchanting uses the Craft window (not the Trade Skill window). Fixed by adding an on-demand fallback that callsIsSpellKnown(spellID, false)for every entry in the recipe DB and builds the cache in place; result is stored so the fallback only runs once per session. (GUI/ShoppingListTab.lua)
v0.6.1 (2026-04-14)
- feat: GoldFundMe guild-only campaigns — new Guild Only checkbox in the Create Campaign dialog; guild-only campaigns broadcast over the shared PersonalShopper channel with
guildOnly+ownerGuildpayload fields;GetActive()hides campaigns from non-members; campaign rows show a[g]guild badge - feat: GreenWall confederation forwarding —
AnnounceToChannelsnow forwards announce messages through GreenWall's confederation channel when GreenWall is installed and connected; on by default, respects opt-out flag, capped at 240 chars - feat: [Announce] buttons — gold [Announce] button on GoldFundMe campaigns, Shopping List items, and My Orders rows; sends a lore-flavoured WTB/GFM message to configured channels with one click
- feat: Announcements settings page — unified ESC > Interface > AddOns > Personal Shopper > Announcements covers all tabs; guild toggle + per-channel multiselect; channel choices persist in SavedVariables
- feat: channel spam filter hides addon-owned and guild-merge channels (
PersonalShopper,Grouper,GreenWall,GuildMerge) from the channel list - feat: multi-version WoW support — now loads on Classic Era, TBC, WotLK, Cataclysm, MoP, and Retail (The War Within) via three new compatibility shims:
- TradeSkillCompat —
PS_TradeSkill.GetAdapters()unifies the Classic dual-window API and retailC_TradeSkillUIfor the Missing Recipe Tracker - MailCODCompat —
PS_MailCOD.SetCOD(copper)handles Classic frame manipulation, Cata+SetSendMailCOD(), and retail (COD was removed — mail sends with a warning) - AHCompat —
PS_AHCompatunifies ClassicQueryAuctionItemsand the retail two-phaseC_AuctionHouseflow (browse query → commodity or per-item search), with a callback API used by the AH Scanner
- TradeSkillCompat —
- fix:
C_AddOns.GetAddOnMetadatacrash on Classic Era — guarded ininit.lua - fix:
C_Container.*crash on Classic Era —MailHandler.luafalls back to Classic bag globals - change: Notifications settings page removed — all toggles merged into the General page
- change: dead Custom Channel settings and code removed
- change:
goldFundMeAnnounceSavedVariable key renamed toannounce— channel prefs will reset to defaults on first load after upgrade - change: GFM guild-only routing simplified — removed separate GUILD AceComm prefix; guild-only campaigns now travel over the shared channel with payload flags
- fix: lint errors in
ShoppingListTab.lua(undefinedAddTooltip, forward-referencedresultsLabel),MailCODCompat.lua(@returnannotation),AHCompat.lua(missingsortsfield), and.luarc.json(5 missing globals)
v0.6.0 (2026-04-13)
- feat: GoldFundMe — new tab for community gold-goal campaigns; create campaigns with a title, gold goal, and optional linked item; other players see your campaign server-wide and can pledge by sending gold via COD mail; progress bar shows current savings + pledges vs. goal
- feat: Donor List dialog — lists each backer's contribution with a mail-confirmed badge; opens snapped to the right of the main window; size persists in SavedVariables across redraws and
/reload - feat: Automatic mail donation detection — taking money from a
GFM:<campaignId>mail instantly records the donation with no manual input - feat: Donate via Mail shortcut — pre-fills recipient, subject, and gold amount in the mail compose window with one click
- fix: GFM sync not propagating pledges — channel messages are capped at 255 bytes; fix uses whisper-based full campaign sync triggered automatically when a newer version is received
- fix: Available orders leaking into GFM tab after tab switch
- fix: Donor dialog double-release AceGUI error
- fix: Donor dialog always centering on screen instead of snapping to main window
- fix: GFM donation recipient showing double realm suffix
- change: DESIGN.md consolidated; obsolete pre-implementation planning docs removed
v0.5.0 (2026-04-04)
- feat: Settings now embedded in ESC > Interface > AddOns > Personal Shopper with an expandable tree (General, Notifications, Custom Channel, Profiles, Debugging) — no more floating dialog
- feat: Auto-cancel buy orders on obtain — the Auto-Remove When Obtained toggle now also cancels active buy orders when your bags contain enough of the item
- feat: Right-click minimap button now toggles the settings panel open/closed
- change: "Auto-Remove When Obtained" tooltip updated to describe both Shopping List removal and buy order cancellation
v0.4.1 (2026-04-04)
- fix: Last item in Shopping List was always clipped by the scroll frame edge — fixed with a trailing spacer
- fix: Priority filter type mismatch causing items to be incorrectly hidden
- fix: AH Scanner crash when sorting items with no priority set
- fix: Items added with no priority (old saves) now default to Medium
- fix: Stale category filter hiding all items after removing the last item in a category
- fix: Newly added items hidden when a category/priority filter was active — filters reset on Add
- fix: Empty item link producing an invisible zero-height row
- fix: Row render errors silently suppressed — now printed to chat
- fix: Shopping List title truncated when filtered count indicator was visible
- change: Scan Options (Scan Mode, Min Priority, Delay, Hide over budget, Skip fully stocked) moved from Settings into the AH Scan tab inline
- change: Clear Filters link added to Shopping List filter bar; shown in red when a filter is active
- change:
/ps dumpsldiagnostic slash command added
Community
If you have any questions, comments, bug reports, or feature requests, please feel free to reach out on Discord or open an issue on GitHub!


