AutoSellPlus is a World of Warcraft addon that shows a popup when visiting a merchant to review and sell junk items. It targets the Midnight expansion (Interface 120001), has zero external dependencies, and is distributed via CurseForge.
- Auto-Sell Modes
- Merchant Popup Panel
- Quality & Item Level Filters
- Category Filters
- Expansion & Slot Filters
- Item Protection System
- Junk Marking System
- Confirmation Dialogs & Item List
- Selling Process
- Undo System
- Sale History
- Session Tracking
- Stack Limits
- Value-Based Eviction
- Auto-Repair
- Destruction System
- Bag Space Monitoring
- Minimap Button
- Bag Gold Display
- Profiles & Templates
- Never-Sell & Always-Sell Lists
- Setup Wizard
- Settings Panel
- Third-Party Addon Integration
- WeakAura Integration
- Slash Commands
- All Settings Reference
- Data Structures
- Shift-Click Item Links in History
- Sell-All Confirmation Dialog
- Soulbound-Only Filter
- Current Expansion Materials Protection
- Key Bindings
- Instance Auto-Profile Switching
- Priority Sell Queue
- Quest Item Protection
- Tooltip Item Status
- Compact Mode
- AH Value Protection
- Safe Mode Template
- Destruction System
- Smart Defaults Engine
- Toast Notification System
- Instance-Aware Junk Detection
- Unified Item Actions
The addon supports three modes of operation, configurable via settings or the setup wizard.
When visiting a vendor, a full interactive popup appears showing all sellable items. The user reviews items, selects/deselects them, and clicks "Sell Selected" or "Sell All". This is the safest mode, giving full control before any sale.
Similar to popup mode but with a prominent sell button for quick selling after a brief visual review. The popup still appears but is optimized for fast interaction.
Items are sold automatically when visiting any vendor. An optional delay (0-10 seconds) can be configured to give time to cancel. Auto-sell can be cancelled by closing the merchant window before the delay expires. A countdown message is shown during the delay.
The popup is the primary UI for reviewing items before selling. It appears when visiting a merchant (in popup/oneclick modes).
- Default size: 580x620 pixels
- Draggable by title bar
- Resizable via Ctrl+Scroll (scale range 0.6x to 1.5x)
- Flat 1px border aesthetic (ElvUI-style)
Quality checkboxes with per-quality item level threshold sliders and input fields. Additional toggles for "Only Equippable", "Allow Transmog" (disables transmog protection so uncollected appearances can be sold), "Soulbound Only" (skip all unbound BoE items), category filters, expansion filter dropdown, and equipment slot filter buttons.
Sortable columns:
- Item Name (default sort) - quality-colored text with icon
- Item Level - shows effective ilvl with equipped comparison (e.g. "439 (eq:421)")
- AH Price - auction house value if TSM or Auctionator is installed
- Vendor Price - sell price at merchant
Each row displays:
- Item icon with quality-colored border
- Status badges: "BoE" (bind-on-equip), "Junk" (manually marked)
- Green text for upgrades, gray for downgrades (ilvl comparison)
- Green AH value if >10x vendor price, yellow if >2x, gray otherwise
- Coin warning icon on high-value items
- Checkbox for selection
- Hover tooltip with full item details
- Right-click context menu for list management
When right-clicking an item row:
- Add to never-sell list (global, account-wide)
- Add to never-sell list (this character only)
- Add to always-sell list (global, account-wide)
- Add to always-sell list (this character only)
- Remove from all lists
- The bag item flashes briefly to confirm the action
Located bottom-left of the popup. Drag any item from bags onto this button to sell it instantly. The sale is recorded in history and session stats.
- Total gold and item count for selected/visible items
- Session earnings display (updates in real-time)
- Sell progress bar during active selling (shows percentage)
- Sell Selected - sell only checked items
- Sell All - check all gray/marked items and show a confirmation dialog with total count and gold value before selling
- Select All - check all visible items
- Clear Selection - uncheck all items
- Close (X) - dismiss popup
Each quality tier has an independent enable toggle and item level threshold.
| Quality | Setting | Default | iLvl Threshold | Default |
|---|---|---|---|---|
| Poor (Gray) | sellGrays |
On | N/A | N/A |
| Common (White) | sellWhites |
Off | whiteMaxIlvl |
0 (all) |
| Uncommon (Green) | sellGreens |
Off | greenMaxIlvl |
0 (all) |
| Rare (Blue) | sellBlues |
Off | blueMaxIlvl |
0 (all) |
| Epic (Purple) | sellEpics |
Off | epicMaxIlvl |
0 (all) |
When a quality is enabled with an ilvl threshold > 0, only items at or below that ilvl are included. A threshold of 0 means all items of that quality are included (no ilvl restriction).
The "Only Equippable" toggle (onlyEquippable, default: true) limits non-gray quality filters to armor and weapons only, preventing accidental sale of valuable non-gear items.
When "Relative iLvl" (useRelativeIlvl, default: off) is enabled, a single ilvl threshold is computed as a percentage of the player's average equipped ilvl (relativeIlvlPercent, default: 70%). This replaces all per-quality ilvl sliders with one unified threshold that auto-adjusts as gear improves.
- Example: avg equipped ilvl 620 at 70% → sell threshold is 434
- The popup header shows the computed threshold when active
- Per-quality ilvl sliders are grayed out while relative mode is on
- The slider ranges from 10% to 100% in steps of 5
Additional item category toggles for non-equipment items:
| Category | Setting | Default | Item ClassID |
|---|---|---|---|
| Consumables | sellConsumables |
Off | 0 |
| Trade Goods | sellTradeGoods |
Off | 7 |
| Quest Items | sellQuestItems |
Off | 12 |
| Miscellaneous | sellMiscItems |
Off | 15 |
These allow selling non-gear items that pass the other filter criteria.
Filter items by which WoW expansion they belong to. Options: All (0), Classic (1), TBC (2), WotLK (3), Cata (4), MoP (5), WoD (6), Legion (7), BfA (8), SL (9), DF (10), TWW (11), Midnight (12).
An additional "Exclude Current Expansion" checkbox hides items from the current expansion (Midnight) from the popup entirely.
Toggle which equipment slots appear in the popup. Buttons are displayed as compact labels: H (Head), S (Shoulder), C (Chest), W (Waist), L (Legs), F (Feet), Wr (Wrist), G (Hands), Bk (Back), MH (Main Hand), OH (Off Hand). Rings, Trinkets, and Neck are also included as slot IDs.
Items are evaluated against protection rules in strict priority order. The first matching rule wins.
- Never-Sell List - items on the global or per-character never-sell list are always skipped
- Always-Sell List - items on the global or per-character always-sell list are always sold (if they have a vendor price)
- Marked Items - items manually marked as junk are sold (if they have a vendor price)
- Sell Price Check - items with no vendor price are skipped
- Locked Items - locked items are skipped
- Equipment Set Protection (
protectEquipmentSets, default: on) - items in any active equipment set are skipped - Uncollected Transmog (
protectUncollectedTransmog, default: on) - items with visual transmog appearances that are uncollected are skipped (trinkets, rings, and necklaces are excluded from this check since they have no visual appearance) - Transmog Source Protection (
protectTransmogSource, default: on) - enhanced source-level transmog checking (distinguishes same-appearance items from different sources) - Refundable Items - items within the vendor buyback/refund window are skipped
- Quest Item Protection (
protectQuestItems, default: on) - items in the Quest Items category (classID 12) are skipped - Bind-on-Equip Protection (
protectBoE, default: on) - unbound BoE items are skipped (overridable viaallowBoESell) - Soulbound-Only Mode (
onlySoulbound, default: off) - when enabled, unbound BoE items are always skipped - Current Expansion Materials (
protectCurrentExpMaterials, default: off) - Trade Goods from the current expansion are skipped - Sell Collected Transmog (
sellCollectedTransmog, default: off) - items with already-collected transmog appearances are sold - Sell Known Collectibles (
sellKnownCollectibles, default: off) - already-known mounts, pets, and toys are sold - Quality Filters - items matching enabled quality tiers (and within ilvl thresholds) are included
- Category Filters - items matching enabled category toggles are included
Allows manual marking of specific items as junk for targeted selling.
- ALT+Click an item in your bags to toggle its junk mark
- Drag an item to the "Mark as Junk" button (appears above bags when open)
- Right-click an item in the popup and select "Always sell"
- Auto-mark gray loot when looted (
autoMarkGrayLoot, default: off) - Auto-mark below ilvl when looting equippable items below a threshold (
autoMarkBelowIlvl, default: 0/off)
Toggle with /asp mark. While active, clicking items in bags marks/unmarks them without needing to hold ALT. Useful for marking many items quickly.
- Marked items display an orange/gold coin icon overlay in bags
- Overlay mode is configurable:
"border"(outline only),"tint"(color wash), or"full"(both) - Cycle modes with
/asp overlay - Baganator addon: corner widget integration for marked items
- Tooltips show "[Marked as Junk]" indicator on marked items
Safety confirmation popups appear before selling in certain conditions. Each dialog now shows an item list panel anchored below it.
| Dialog | Trigger | Context |
|---|---|---|
| ASP_SELL_ALL_CONFIRM | "Sell All Junk" button clicked | Popup sell-all |
| ASP_EPIC_CONFIRM | Queue contains epic items | Popup sell |
| ASP_HIGH_VALUE_CONFIRM | Items exceed highValueThreshold |
Popup sell |
| ASP_AUTOSELL_EPIC_CONFIRM | Queue contains epic items | Auto-sell |
| ASP_AUTOSELL_HIGHVALUE_CONFIRM | Items exceed highValueThreshold |
Auto-sell |
| ASP_EVICT_CONFIRM | Eviction suggests selling items | Bags-full eviction |
When any sell confirmation dialog appears, a scrollable item list panel appears anchored below it:
- Title: "Items to sell:"
- Item rows (24px each): icon with quality-colored border, quality-colored item name, vendor price in gold
- Tooltip on hover: full item tooltip via GameTooltip
- Buyback limit divider: a red "-- Beyond Buyback Limit --" divider is inserted before item 13
- Red-tinted rows: items 13 and beyond get a red background tint (these items cannot be repurchased from the vendor's buyback tab)
- Total bar: "Total: Xg Xs (N items)" with count
- Buyback warning: "N beyond buyback limit" in red text when applicable
- Scrollable: max 10 visible rows before scrolling kicks in
- Width: ~300px, anchored below the active StaticPopup dialog
- Auto-cleanup: panel hides when the dialog is dismissed (accept, cancel, escape, or merchant closed)
epicConfirm(default: on) - require confirmation before selling epic itemshighValueConfirm(default: on) - require confirmation for high-value itemshighValueThreshold(default: 50000 copper / 5g) - price threshold for high-value warningbuybackWarning(default: on) - warn when selling more than 12 items
The complete sell flow works as follows:
- Build Sell Queue - iterate all bag slots, apply protection rules and filters to determine sellable items
- Priority Sort - if
prioritySellQueueis enabled (default), sort queue by total value ascending so the cheapest items are sold first. Buyback keeps only the last 12 items sold, so selling cheapest-first leaves the most valuable items occupying those slots - Verify Queue - re-check that items are still present in bags before proceeding
- Show Confirmations - if epic or high-value items are in the queue, display confirmation dialogs with the item list panel
- Mute Sounds - silence vendor sell sounds during bulk selling (if
muteVendorSoundsenabled) - Process Batches - sell 10 items per tick with 0.2 second delay between batches (prevents server throttling). Each batch first confirms the merchant window is still open, because
UseContainerItemsells at a vendor but uses the item anywhere else - Record History - add each sold item to the sale history table
- Update Session - increment session copper and item counters
- Show Progress - update the popup's selling progress bar with percentage
- Finish - print summary to chat, create undo buffer, update per-character stats, fire WeakAura event
When dryRun is enabled, the entire sell process runs but no items are actually sold. The addon prints what would have been sold with full details. Useful for testing filter configurations.
After selling, an undo notification toast appears (if showUndoToast is on).
- Displays for 8 seconds after selling completes
- Shows item count and total gold earned
- "Undo" button repurchases items from the vendor's buyback tab
- Undo buffer expires after 5 minutes
- Limited to 12 items (WoW buyback limit)
- Buyback entries are matched by full item link and walked from the highest index down, because repurchasing an item shifts every higher index
- Items you can't currently afford to buy back are skipped and reported, rather than failing silently
- If items can't be repurchased, a link to Blizzard's item restoration page is provided
- Triggered via
/asp undoor the toast button
Persistent record of recent sales stored in AutoSellPlusDB.saleHistory.
- Maximum 200 entries (FIFO - oldest removed first)
- Each entry records: item link, item ID, quantity, total price, timestamp
Scrollable list with reverse-chronological sorting:
- Item icon
- Item name/link (clickable)
- Quantity sold
- Total sale price (gold-colored text)
- Time elapsed ("Xs ago", "Xm ago", "Xh ago", "Xd ago")
- Summary bar showing total sales count and combined gold
- Tooltip on hover showing full item details (when item link is available)
- Shift+left-click a row to insert the item link into chat
- Clear button with confirmation dialog to wipe all history
- Access via
/asp log uior Shift+Right-click minimap button
/asp log- print last 10 sales to chat/asp log 20- print last 20 sales/asp log clear- wipe all history
Tracks selling activity for the current play session.
- Total items sold this session
- Total copper earned this session
- Session start time
- Gold per hour calculation
/asp session- print session stats to chat/asp session reset- reset session counters/asp session export- export formatted summary- Minimap button tooltip shows session stats
- Popup bottom bar shows session earnings in real-time
Set maximum quantities per item. Excess is automatically included in sell queues.
When a stack limit is set for an item, any quantity above the limit is flagged for selling. For example, setting a limit of 20 for an item means if you have 35, the excess 15 will be sold.
/asp keep <itemID> <count>- set limit (e.g./asp keep 12345 20)/asp keep list- show all configured limits/asp keep clear- clear all limits/asp keep clear <itemID>- clear limit for one item
Automatically suggests selling cheapest items when bags are full at a vendor.
- Checks if free bag slots are below
freeSlotThreshold - Scans bags for sellable items (poor quality and marked items only)
- Sorts candidates by total price ascending (cheapest first)
- Selects the minimum number of items needed to reach the threshold
- Shows a confirmation dialog with the eviction list and item list panel
evictionEnabled(default: off)freeSlotThreshold(default: 0 / disabled) - minimum free slots to maintain
Eviction candidates must pass: not locked, not in never-sell list, not refundable, not in equipment sets, must have a vendor sell price.
Automatically repairs all gear when visiting a repair-capable merchant.
- Checks if merchant can repair (
CanMerchantRepair()) - If guild repair is enabled and player is in a guild, attempts guild bank repair first
- Falls back to personal gold if guild repair unavailable or fails
- Prints repair cost to chat (or shows needed vs available gold if insufficient)
autoRepair(default: off)autoRepairGuild(default: on) - prefer guild funds
Complete item destruction system for clearing worthless items when not at a vendor.
Items pass through a separate destruction protection chain before being eligible:
- Never-destroy list (manual blacklist)
- Never-sell list (also blocks destruction)
- Equipment set items (if
destroyProtectEquipmentSetsenabled) - Uncollected transmog (if
destroyProtectTransmogenabled) - BoE items (if
destroyProtectBoEenabled) - Refundable items (always skipped)
- Quality filter (
destroyMaxQuality) - Item level filter (
destroyMaxIlvl) - Vendor value filter (
destroyMaxVendorValue)
Before destroying, a confirmation popup appears with:
- Red-themed dialog listing items to destroy (up to 10 shown, remainder counted)
- Vendor value being lost
- Countdown timer on the Destroy button (configurable, default 3 seconds)
- Cancel button to abort
Each item is destroyed one at a time (0.3s per tick) with full cursor verification:
ClearCursor()to ensure clean statePickupContainerItem()to pick up the itemGetCursorInfo()to verify the correct item is on the cursorDeleteCursorItem()only if itemID matches- Skips with a warning if cursor has wrong item (e.g., player dragging something)
Valuable items make WoW raise its own "type DELETE" confirmation instead of
deleting immediately. AutoSellPlus never auto-answers that prompt. If one
appears, the run stops, reports how many items were destroyed beforehand, and
asks you to answer the dialog by hand and re-run /asp destroy. This prevents
the queue from clearing the cursor underneath an open dialog and advancing to
the next item.
Bags do not update synchronously after DeleteCursorItem(), so a destruction is
confirmed on the following tick rather than assumed. If the item is still in its
slot when we look again, it is reported as skipped instead of counted.
Automatically triggers the destruction confirmation when free bag slots drop below a configured threshold:
- Fires on
BAG_UPDATE_DELAYEDevents - 60-second cooldown between triggers to avoid spam
- Only triggers when destruction is enabled and not already in progress
- Shows the same confirmation popup (never auto-destroys silently)
Separate per-item blacklist for destruction (independent from never-sell list):
/asp neverdestroy add <ItemLink>— add item to never-destroy list/asp neverdestroy remove <ItemLink>— remove item/asp neverdestroy list— show all items on the list- Also manageable via Settings > Lists > Never-Destroy tab
destroyEnabled(default: off) — enable destruction featuredestroyMaxQuality(default: 0 / Poor only) — max quality to destroy (0-4)destroyMaxIlvl(default: 0 / disabled) — max ilvl for equippable itemsdestroyMaxVendorValue(default: 0 / unlimited) — max total vendor value (copper)destroyConfirmCountdown(default: 3) — seconds before Destroy button activatesdestroyFreeSlotTrigger(default: 0 / disabled) — bag pressure valve thresholddestroyProtectTransmog(default: on) — protect uncollected transmogdestroyProtectBoE(default: on) — protect bind-on-equip itemsdestroyProtectEquipmentSets(default: on) — protect equipment set items
/asp destroy— trigger item destruction
Real-time monitoring of free bag slots with alerts.
When free slots drop below the configured threshold, an alert is triggered. Alerts have a 60-second cooldown to avoid spam.
"chat"- prints message to chat window"screen"- displays on-screen error frame message (red text)
freeSlotThreshold(default: 0 / disabled)freeSlotAlertMode(default: "chat")
A draggable button on the minimap border providing quick access.
- AutoSellPlus version
- Current session income and items sold
- Today's totals
- Per-character statistics (if multiple alts tracked)
- Interaction hints
| Action | Result |
|---|---|
| Left-Click | Open settings panel |
| Shift+Left-Click | Print session stats |
| Right-Click | Toggle addon enabled/disabled |
| Shift+Right-Click | Open sale history panel |
| Drag | Reposition around minimap |
showMinimapButton(default: on)minimapButtonAngle(default: 225) - position in degrees around minimap
Optional floating text above the backpack button showing total vendor value of all bag contents.
- Shows total vendor value formatted as gold
- Hover tooltip breaks down value by quality tier
- Shows marked item total separately
- Auto-updates when bags change
showBagGoldDisplay(default: off)
Save, load, and manage named setting configurations.
/asp profile save <name>- save current settings/asp profile load <name>- load saved profile/asp profile delete <name>- delete profile/asp profile list- list all profiles- Per-character auto-load: the last loaded profile is restored on login (with chat notification)
- Instance auto-profiles: automatically load a profile when entering a specific instance type (raid, dungeon, pvp, arena, scenario, open world)
- Delete profile from the settings UI shows a confirmation dialog
Pre-built setting bundles for common playstyles:
| Template | Description |
|---|---|
| Raid Farmer | Aggressively sells grays, whites, and greens. Protects transmog, equipment sets, and BoE. Popup mode. |
| Transmog Hunter | Conservative - only sells grays. Maximum transmog protection (appearance + source level). Protects BoE. |
| Leveling Alt | Fast auto-selling for alts. Sells grays through blues. Auto-sell with 2-second delay. Protects BoE. |
| Gold Farmer | Maximum income. Sells grays through blues. Includes consumables and trade goods. No transmog protection. Non-equippable items allowed. |
/asp template list- list available templates/asp template "Raid Farmer"- apply template (resets all settings to template defaults)
Items that are never sold regardless of any filter settings.
- Global (account-wide): stored in
AutoSellPlusDB.neverSellList - Per-character: stored in
AutoSellPlusCharDB.charNeverSellList - Takes highest priority in protection checks
Items that are always sold (if they have a vendor price), bypassing quality/ilvl filters.
- Global (account-wide): stored in
AutoSellPlusDB.alwaysSellList - Per-character: stored in
AutoSellPlusCharDB.charAlwaysSellList - Second priority after never-sell
- Right-click items in popup to add/remove from lists
/asp add <itemID>- add to global never-sell/asp remove <itemID>- remove from global never-sell/asp list- display all lists/asp reset lists- clear all lists/asp export//asp import- serialize/deserialize lists for sharing
Lists are serialized as: NEVER:id1,id2,id3;ALWAYS:id4,id5
A three-page first-run configuration guide shown once per character. It is marked complete only when the wizard is actually finished, so closing it early means it reappears on the next login. Characters that were already using the addon before the completion flag existed are treated as onboarded and are not shown the wizard on upgrade.
- Radio buttons: "Review Popup", "One-Click Popup", "Fully Automatic"
- Profile picker with cycle button
- Quick-start template selector with descriptions
- Checkboxes for protection options (equipment sets, transmog, BoE)
- Epic and high-value confirmations
- Auto-repair toggle
- Completion message
- Command hints and tips
- "Done!" button
/asp wizard- show the wizard again at any time
Full configuration interface registered under WoW Settings > AddOns > AutoSellPlus.
- General - enabled, summary, itemized output, dry-run
- Automation - auto-sell mode, delay, repair, sound muting, priority sell queue
- Protection - all item safety toggles (transmog, BoE, soulbound-only, quest items, expansion materials)
- Marking - auto-mark settings, overlay mode, bag gold display
- Display - undo toast, minimap button
- Bag Maintenance - free slot alerts, eviction
- Auto-Destroy - destruction settings
- Profiles & Templates - manage saved profiles, apply templates, instance auto-profiles
- Lists - manage never-sell, always-sell, and stack-limit lists
- Quick Actions - buttons for common operations (reset, clear lists)
Access via /asp config or minimap button left-click.
The addon detects and adapts to these bag replacements for overlay rendering:
- Default Blizzard bags
- Baganator - includes corner widget integration for marked item indicators
- Bagnon
- AdiBags
- ArkInventory
- Blizzard UI (primary, via
C_TransmogCollection) - AllTheThings - uses its collection data for enhanced transmog detection
- CanIMogIt - uses its source-level checking
- TradeSkillMaster (TSM) - reads
DBMarketprices, shows AH value column in popup - Auctionator - fallback AH price source if TSM is not available
- Leatrix Plus - warns if its auto-sell junk feature is enabled (can conflict)
- Postal - detects and suppresses auto-sell during mail processing
The addon exposes global variables for custom WeakAura triggers and displays:
| Variable | Type | Description |
|---|---|---|
AutoSellPlus_SessionData |
table | Session statistics (items, copper, start time) |
AutoSellPlus_LastEvent |
string | Name of last fired addon event |
AutoSellPlus_LastSellCount |
number | Number of items in last sell batch |
AutoSellPlus_Events |
table | Event history |
LOADED- addon fully initializedSELL_COMPLETE- selling finished (includes count and copper data)
All commands use /asp or /autosell as prefix.
| Command | Description |
|---|---|
/asp or /asp help |
Show command list |
/asp config |
Open settings panel |
/asp toggle |
Enable/disable addon |
/asp dryrun |
Toggle dry-run mode |
/asp debug |
Toggle debug output |
/asp sell |
Sell all qualifying items now (at merchant) |
/asp preview |
One-shot dry-run preview |
/asp mark |
Toggle bulk mark mode |
/asp session |
Show session statistics |
/asp session reset |
Reset session counters |
/asp session export |
Export session stats |
/asp log |
Show last 10 sales in chat |
/asp log <N> |
Show last N sales |
/asp log ui |
Open sale history panel |
/asp log clear |
Clear all sale history |
/asp add <itemID> |
Add item to never-sell list |
/asp remove <itemID> |
Remove item from never-sell list |
/asp list |
Display all lists |
/asp export |
Export lists as string |
/asp import <data> |
Import lists from string |
/asp overlay |
Cycle overlay mode (border -> tint -> full) |
/asp keep <itemID> <count> |
Set stack limit for item |
/asp keep list |
Show all stack limits |
/asp keep clear |
Clear all stack limits |
/asp keep clear <itemID> |
Clear limit for one item |
/asp destroy |
Destroy qualifying junk items |
/asp profile save <name> |
Save current settings as profile |
/asp profile load <name> |
Load saved profile |
/asp profile list |
List all profiles |
/asp profile delete <name> |
Delete profile |
/asp template list |
List available templates |
/asp template <name> |
Apply a preset template |
/asp wizard |
Re-run setup wizard |
/asp reset |
Reset all settings (with confirmation) |
/asp reset lists |
Clear all never-sell and always-sell lists |
/asp undo |
Repurchase last sold items from vendor |
| Setting | Type | Default | Description |
|---|---|---|---|
enabled |
bool | true | Master toggle |
showSummary |
bool | true | Print sale summary after selling |
showItemized |
bool | false | Print each item sold individually |
dryRun |
bool | false | Preview mode (no actual selling) |
| Setting | Type | Default | Description |
|---|---|---|---|
sellGrays |
bool | true | Sell poor quality items |
sellWhites |
bool | false | Sell common quality items |
sellGreens |
bool | false | Sell uncommon quality items |
sellBlues |
bool | false | Sell rare quality items |
sellEpics |
bool | false | Sell epic quality items |
whiteMaxIlvl |
int | 0 | Max ilvl for whites (0 = all) |
greenMaxIlvl |
int | 0 | Max ilvl for greens (0 = all) |
blueMaxIlvl |
int | 0 | Max ilvl for blues (0 = all) |
epicMaxIlvl |
int | 0 | Max ilvl for epics (0 = all) |
onlyEquippable |
bool | true | Limit non-gray filters to armor/weapons |
useRelativeIlvl |
bool | false | Use % of avg equipped ilvl as threshold |
relativeIlvlPercent |
int | 70 | Percentage for relative ilvl (10-100) |
| Setting | Type | Default | Description |
|---|---|---|---|
sellCollectedTransmog |
bool | false | Sell items with already-collected appearances |
sellKnownCollectibles |
bool | false | Sell already-known mounts, pets, and toys |
| Setting | Type | Default | Description |
|---|---|---|---|
sellConsumables |
bool | false | Sell consumable items |
sellTradeGoods |
bool | false | Sell trade goods |
sellQuestItems |
bool | false | Sell quest items |
sellMiscItems |
bool | false | Sell miscellaneous items |
| Setting | Type | Default | Description |
|---|---|---|---|
filterExpansion |
int | 0 | Filter by expansion (0 = all) |
excludeCurrentExpansion |
bool | false | Hide current expansion items |
filterSlots |
table | all true | Which equipment slots to show |
| Setting | Type | Default | Description |
|---|---|---|---|
protectEquipmentSets |
bool | true | Never sell equipment set items |
protectUncollectedTransmog |
bool | true | Never sell uncollected appearances |
protectTransmogSource |
bool | true | Source-level transmog checking |
protectBoE |
bool | true | Never sell unbound BoE items |
allowBoESell |
bool | false | Override BoE protection |
onlySoulbound |
bool | false | Only sell soulbound items, skip all unbound BoE |
protectQuestItems |
bool | true | Never sell Quest Items category |
protectCurrentExpMaterials |
bool | false | Never sell current expansion Trade Goods |
protectMountEquipment |
bool | true | Never sell mount equipment items |
protectWarband |
bool | false | Protect warband and account-bound items |
sellCollectedTransmog |
bool | false | Sell items with already-collected transmog |
sellKnownCollectibles |
bool | false | Sell already-known mounts, pets, and toys |
| Setting | Type | Default | Description |
|---|---|---|---|
epicConfirm |
bool | true | Confirm before selling epics |
highValueConfirm |
bool | true | Confirm for high-value items |
highValueThreshold |
int | 50000 | High-value threshold (copper) |
buybackWarning |
bool | true | Warn when selling >12 items |
showUndoToast |
bool | true | Show undo notification after selling |
| Setting | Type | Default | Description |
|---|---|---|---|
autoSellMode |
string | "popup" | Mode: "popup", "oneclick", "autosell" |
autoSellDelay |
int | 0 | Delay before auto-sell (seconds) |
autoRepair |
bool | false | Auto-repair at merchants |
autoRepairGuild |
bool | true | Prefer guild funds for repair |
muteVendorSounds |
bool | false | Silence sell sounds during bulk sell |
prioritySellQueue |
bool | true | Sell highest-value items first for buyback safety |
| Setting | Type | Default | Description |
|---|---|---|---|
autoMarkGrayLoot |
bool | false | Auto-mark looted gray items |
autoMarkBelowIlvl |
int | 0 | Auto-mark equippable below this ilvl |
overlayMode |
string | "border" | Overlay style: "border", "tint", "full" |
| Setting | Type | Default | Description |
|---|---|---|---|
showMinimapButton |
bool | true | Show minimap button |
minimapButtonAngle |
float | 225 | Minimap button position (degrees) |
showBagGoldDisplay |
bool | false | Show vendor value above bags |
showTooltipStatus |
bool | true | Show ASP classification in item tooltips |
compactMode |
bool | false | Use condensed popup with one-click sell |
| Setting | Type | Default | Description |
|---|---|---|---|
freeSlotThreshold |
int | 0 | Alert below this many free slots |
freeSlotAlertMode |
string | "chat" | Alert mode: "chat" or "screen" |
evictionEnabled |
bool | false | Enable value-based eviction |
| Setting | Type | Default | Description |
|---|---|---|---|
destroyEnabled |
bool | false | Enable destruction feature |
destroyMaxQuality |
int | 0 | Max quality to destroy (0-4) |
destroyMaxIlvl |
int | 0 | Max ilvl for equippable items (0 = disabled) |
destroyMaxVendorValue |
int | 0 | Max total vendor value in copper (0 = unlimited) |
destroyConfirmCountdown |
int | 3 | Seconds before Destroy button activates |
destroyFreeSlotTrigger |
int | 0 | Free slot threshold for pressure valve (0 = disabled) |
destroyProtectTransmog |
bool | true | Protect uncollected transmog from destruction |
destroyProtectBoE |
bool | true | Protect bind-on-equip items from destruction |
destroyProtectEquipmentSets |
bool | true | Protect equipment set items from destruction |
| Setting | Type | Default | Description |
|---|---|---|---|
ahProtectionEnabled |
bool | false | Protect items worth listing on AH |
ahProtectionThreshold |
int | 10000 | AH value threshold in copper |
ahHighlightMultiplier |
int | 2 | AH/vendor ratio to color-code popup rows |
| Setting | Type | Default | Description |
|---|---|---|---|
smartDefaults |
bool | true | Learn from sell/keep decisions and auto-check/uncheck items |
{
bag = int, -- Bag index (0-4)
slot = int, -- Slot within bag
itemID = int, -- WoW item ID
itemLink = string, -- Full item link with color codes
quality = int, -- 0=Poor, 1=Common, 2=Uncommon, 3=Rare, 4=Epic
ilvl = int, -- Effective item level
equippedIlvl = int, -- Equipped ilvl in same slot
sellPrice = int, -- Vendor price per unit (copper)
stackCount = int, -- Quantity in stack
totalPrice = int, -- sellPrice * stackCount
isEquippable = bool, -- Is armor or weapon
isAlwaysSell = bool, -- On always-sell list
isMarked = bool, -- Manually marked as junk
isBoe = bool, -- Unbound bind-on-equip
classID = int, -- Item class ID
expansionID = int, -- Expansion ID
ahValue = int, -- Auction house value (if available)
checked = bool, -- Selected for selling in popup
visible = bool, -- Passes current filters
isUpgrade = bool, -- ilvl > equipped ilvl
}{
link = string, -- Item link
id = int, -- Item ID
count = int, -- Quantity sold
price = int, -- Total copper earned
time = int, -- Unix timestamp
}charStats["Charactername - Realmname"] = {
totalCopper = int, -- Lifetime copper earned from selling
totalItems = int, -- Lifetime items sold
lastSeen = int, -- Last login timestamp
bagJunkValue = int, -- Estimated junk value in bags
}- Config.lua - Default settings,
AutoSellPlusDBsaved variable initialization, database validation
Note: Bindings.xml (key binding definitions) is auto-detected by the WoW client and is not listed in the .toc file.
2. Helpers.lua - Utility functions (ilvl calculation, transmog checks, equipment sets, money formatting, vendor mount detection, list serialization)
3. Protection.lua - Item protection logic (never-sell, always-sell, equipment sets, transmog, BoE, refundable)
4. BagAdapters.lua - Bag addon detection and frame resolution (Blizzard, Baganator, Bagnon, AdiBags, ArkInventory)
5. Overlays.lua - Visual overlays for marked items in bags
6. Marking.lua - Junk marking system, bulk mark mode, tooltip integration, auto-mark on loot
7. History.lua - Sale history recording, session tracking, per-character stats
8. HistoryUI.lua - Sale history scrollable panel UI
9. MinimapButton.lua - Minimap button creation and interaction
10. Wizard.lua - First-run setup wizard UI
11. UI.lua - Settings panel under WoW Options > AddOns
12. PopupFilters.lua - Popup filter logic and smart defaults
13. ConfirmList.lua - Confirmation dialog item list panel
14. Popup.lua - Merchant popup frame, item row rendering, sell action
15. Selling.lua - Auto-sell logic, confirmations, eviction
16. Destroy.lua - Item destruction system, countdown confirmation, bag pressure valve
17. Core.lua - Event handling, sell queue processing, slash commands
18. Toasts.lua - Non-intrusive toast notification system
19. InstanceJunk.lua - Instance-aware junk detection and tracking
MERCHANT_SHOW event
-> DoAutoRepair() [Core.lua]
-> EvictAtVendor() [Selling.lua] if eviction enabled
-> HandleAutoSell() [Selling.lua] based on autoSellMode
-> ShowPopup() [Popup.lua] in popup/oneclick mode
-> BuildSellQueue() [Selling.lua] in autosell mode
-> ConfirmAndSell() [Selling.lua] with confirmations
-> StartSelling() [Selling.lua] begins batch processing
-> ProcessNextBatch() [Selling.lua] sells 10 items per 0.2s tick
-> FinishSelling() [Selling.lua] summary and cleanup
MERCHANT_CLOSED event
-> HidePopup() [Popup.lua]
-> HideConfirmList() [ConfirmList.lua]
-> StopSelling() [Selling.lua]
-> CancelAutoSell() [Selling.lua]
Missing WoW APIs are detected at login and features are disabled individually:
C_Container.UseContainerItemmissing -> selling disabledC_Container.GetContainerNumSlotsmissing -> scanning disabledC_Item.GetItemInfomissing -> item info disabledC_TransmogCollectionmissing -> transmog checks disabledC_EquipmentSetmissing -> equipment set checks disabledC_Container.PickupContainerItemmissing -> destroy disabled
Shift+left-clicking a row in the sale history panel inserts the item link into the active chat edit box. This follows the standard WoW UX pattern for item link insertion.
When clicking "Sell All Junk" in the popup, a confirmation dialog appears showing the total item count and gold value before selling proceeds. This prevents accidental bulk sales. The dialog is automatically dismissed when the merchant window closes.
When enabled (onlySoulbound, default: off), only soulbound items (BoP or already-bound) are eligible for selling. All unbound BoE items are skipped regardless of other filter settings. Useful for dungeon farmers who want to keep BoE drops for the auction house.
Available as a checkbox in the popup filter section and a toggle in Protection settings.
When enabled (protectCurrentExpMaterials, default: off), Trade Goods (classID 7) from the current expansion (Midnight, ID 12) are never sold. Prevents accidental sale of valuable crafting materials.
Available as a toggle in Protection settings.
AutoSellPlus registers a bindable key in WoW's native Key Bindings UI under the "AutoSellPlus" header.
| Binding | Action |
|---|---|
| Toggle Sell Popup | Opens the sell popup when a merchant window is open |
Access via Game Menu > Key Bindings > AutoSellPlus.
Automatically load a saved profile when entering an instance type. Per-character setting mapping instance types to profile names.
| Type | Description |
|---|---|
none |
Open world |
party |
5-man dungeons |
raid |
Raids |
pvp |
Battlegrounds |
arena |
Arena |
scenario |
Scenarios |
Configure in Settings > Profiles & Templates > Instance Auto-Profiles. Enter a saved profile name for each instance type.
When enabled (prioritySellQueue, default: on), items are sold in descending order of total value. This ensures the 12 buyback slots contain the most valuable items, maximizing the safety window if the user needs to undo a sale.
Previously, items were sold in bag order, which could waste buyback slots on cheap items.
When enabled (protectQuestItems, default: on), items in the Quest Items category (classID 12) are never sold. This prevents accidental sale of quest objectives and quest-starting items during dailies or leveling.
Respects the always-sell list override for intentional sales.
When enabled (showTooltipStatus, default: on), AutoSellPlus adds a colored status line to item tooltips showing how the addon classifies each item:
- Green — "ASP: Will sell (quality filter)", "ASP: Will sell (collected transmog)", "ASP: On always-sell list"
- Red — "ASP: Protected (uncollected transmog)", "ASP: Protected (equipment set)", "ASP: Protected (bind on equip)"
- Yellow — "ASP: On never-sell list"
- Gray — "ASP: Skipped (not soulbound)", "ASP: Skipped (item locked)"
Items the sell path refuses are never labelled "Will sell": locked items and
items with no vendor value are classified the same way ShouldSellItem treats
them.
Works for items in bags (full classification including BoE, refundable, warband checks), equipped gear, and merchant windows (itemID-based checks only). Does not duplicate the existing [Marked as Junk] tooltip line.
Toggle in Settings > Display or the in-popup Settings tab.
When enabled (compactMode, default: off), the merchant popup is replaced with a condensed view showing:
- Item count — Total number of items matching current filters
- Total value — Combined vendor value of all matched items
- Per-quality breakdown — Color-coded count per quality tier (e.g., "5 Poor 3 Uncommon 1 Rare")
- One-click Sell button — Sells all matched items with a single click
Compact mode trusts your filter configuration and auto-checks all visible items. All protections (transmog, equipment sets, BoE, quest items, never-sell list, etc.) still apply. Epic and high-value confirmation dialogs still fire when applicable.
- From detailed popup: Click the "Compact" button next to the Settings tab
- From compact popup: Click the "Expand" button in the title bar
- Slash command:
/asp compacttoggles the setting - Settings panel: Settings > Display > Compact Mode
The compact popup has independent position and scale saved separately from the full popup.
When enabled (ahProtectionEnabled, default: off), items worth more than a configurable threshold on the auction house are protected from being auto-sold. Requires TradeSkillMaster (TSM) or Auctionator.
- During sell evaluation, each item's AH market value is looked up via TSM's
DBMarketor Auctionator's price API - If the AH value exceeds
ahProtectionThreshold(default: 1g), the item is protected from selling - In the popup, rows where AH value exceeds
ahHighlightMultipliertimes the vendor price are color-coded in light blue - Hovering a color-coded row shows a tooltip: "Worth listing: AH Xg, vendor Yg (Nx)"
ahProtectionEnabled(default: off) — enable AH value protectionahProtectionThreshold(default: 10000 copper / 1g) — minimum AH value to trigger protectionahHighlightMultiplier(default: 2) — AH/vendor price ratio for popup row coloring
- TSM or Auctionator must be installed and have price data available
- Without either addon, AH protection is silently skipped (items sell normally)
A new profile template designed for new users or anyone who wants maximum safety.
- Quality: Grays only (whites, greens, blues, epics all disabled)
- Protections: All protections enabled (transmog, equipment sets, BoE, quest items, mount equipment, warband, current expansion materials)
- Confirmations: Epic confirm and high-value confirm enabled (threshold: 1g)
- Mode: Popup mode with buyback warning
- Categories: Only equippable items (no consumables, trade goods, quest items, misc)
- Safe Mode is rendered first in the wizard template list with a green accent
- If the user completes the wizard without selecting any template or profile, Safe Mode is automatically applied as the default
AutoSellPlus is already exceptionally comprehensive, covering 90%+ of player wishlists from recent r/wowaddons threads (filters, marking, safeties, profiles). It outclasses Aardvark, Scrap, and Legacy Vendor in proactive tools like eviction and loot-marking previews.
| Feature | AutoSellPlus | Competitors Miss |
|---|---|---|
| Loot Pre-Mark | Auto-mark on loot (gray/low-ilvl) | Manual drag only (Aardvark/Peddler) (ref) |
| Eviction | Value-based proactive eviction at vendor | Vendor-only reaction (ref) |
| Cross-Alt Sync | Global profiles, per-char overrides | Per-char only (ref) |
| Buyback Safety | Visual divider + red-tinted rows for items 13+ | Basic count warning at best (ref) |
| Per-Char Stats | Minimap tooltip with multi-alt tracking | None (ref) |
| Graceful Degradation | Per-feature API detection, survives patches | Breaks entirely on API changes (ref) |
Players repeatedly request these for farming and alts (2025-2026 threads). The current feature set misses explicit loot-time automation and instance-based rules. (ref)
Priority: Must-have
ALT+Click in the loot window should mark items before they enter bags, preventing clutter entirely. Visual: red glow on loot roll frame. Combine with existing auto-mark gray/low-ilvl toggles.
- "Mark while waiting RP between bosses" is an exact player quote (ref)
- No competitor offers this; Aardvark and Peddler require manual drag after looting (ref)
Priority: High demand
A button in the popup: "Sell [Current Raid]" that auto-adds known junk from the current instance (e.g. Naxx trash, Ulduar greens). Farmers running 40+ characters hate building manual lists per instance. Aardvark does this manually; AutoSellPlus could automate it via the Adventure Guide API.
- Legacy Vendor is the closest competitor but only filters by expansion, not instance (ref)
- High demand in farming communities (ref)
Priority: Medium
Toggle: "Destroy mats instead of sell" when enchanting/alchemy is detected on the character. Profession-specific profiles (e.g. "Enchanter: Destroy greens for materials").
- "As enchanter, destroy not sell" is a common request (ref)
Filter: "Below X% of equipped avg ilvl" (e.g. <80% of your gear). Solves "soulbound 10 ilvls below equipped" wishlists without hardcoding thresholds.
- Frequently requested (ref)
- The infrastructure already exists (
GetEquippedIlvls,GetEquippedIlvlForItem) and the popup already shows equipped ilvl comparison per item
Detect zone (e.g. "Naxxramas") and automatically load a named profile (e.g. "Aggressive Farm"). Eliminates manual profile switching when moving between content types.
- Event farming across 40 characters needs this (ref)
Post-sell option to /send guild materials to a banker alt. ArkInventory handles categories; AutoSellPlus could integrate with Postal for full mail automation.
- Requested in farming/economy threads (ref)
| Priority | Feature | Impact |
|---|---|---|
| 1 | Loot ALT+Mark | UX must-have, no competitor offers it |
| 2 | Instance Auto-List | Killer feature for farmers |
| 3 | Prof Destroy Override | Niche but vocal demand |
When enabled (smartDefaults, default: on), AutoSellPlus learns from your sell and keep decisions over time, closing the #1 competitive gap with Scrap's "intelligent learning" feature.
- Sell tracking: Every item you sell is recorded in
learnedSellItemswith a count and timestamp - Keep tracking: Every item you un-check in the popup is recorded in
learnedKeepItems - Auto-check: Items with 3+ sell occurrences are auto-checked in the popup, even if they don't match quality filters
- Auto-uncheck: Items with 3+ keep occurrences are auto-unchecked, even if they match quality filters
- Visual feedback: "Learned" (purple) and "Kept" (blue) badges on popup rows; tooltip shows "ASP: Learned — usually sold/kept"
- Decay: Entries older than 30 days are pruned on login. Pruning is by age only — partially-learned entries (count 1 or 2) are kept so a count can build up across sessions
- Cap: Maximum 200 items per list; oldest entries removed when exceeded
- Threshold: Minimum 3 occurrences before learned behavior activates
- Storage: Account-wide in
AutoSellPlusDB.learnedSellItemsandAutoSellPlusDB.learnedKeepItems
| Key | Default | Description |
|---|---|---|
smartDefaults |
true |
Enable behavioral learning |
Non-intrusive slide-in notifications that supplement chat messages with visual feedback.
- Toasts slide in from the right screen edge with an ease-out animation (0.3s)
- Auto-dismiss after configurable duration (default: 5s) with fade-out (0.3s)
- Stack vertically from top-right (max 5 visible)
- Color-coded left accent bar: green (success), blue (info), yellow (warning), red (danger)
- Frame pool recycling for zero allocation after initial creation
ns:ShowToast(message, toastType, duration)
-- toastType: "success" | "info" | "warning" | "danger"
-- duration: seconds (default: 5)
ns:DismissToast(toast)
ns:DismissAllToasts()- Sell summary: "Sold 15 items for 42g" (success toast)
File: Toasts.lua (loaded after Widgets.lua, before Protection.lua)
Tracks items sold per instance to build a per-instance junk database over time.
- Recording: When you sell an item while inside an instance, the item is recorded in
instanceJunkDB[instanceID]with a count and timestamp - Suggesting: When you open a vendor while inside an instance, items in your bags that match the instance junk DB (2+ previous sells) are suggested
- Popup integration: The popup title shows the current instance name when inside one
- Minimum sells: Items require 2+ sells in an instance before being suggested
- Decay: Entries older than 90 days are pruned on login
- Empty cleanup: Instances with no remaining items are removed entirely
- Storage: Account-wide in
AutoSellPlusDB.instanceJunkDB
ns:GetCurrentInstanceID() -- returns instanceID (0 if not in instance)
ns:GetCurrentInstanceName() -- returns instance name
ns:RecordInstanceSell(itemID) -- record a sell for current instance
ns:GetInstanceSuggestions() -- get bag items matching instance junk DB
ns:PruneInstanceJunkDB() -- remove stale entries
ns:GetInstanceJunkSummary() -- { itemCount, instanceCount }File: InstanceJunk.lua (loaded after BagAdapters.lua, before Overlays.lua)
Enhanced modifier key combinations for bag item interactions.
| Modifier | Action | Visual Feedback |
|---|---|---|
| ALT+Click | Toggle junk mark | Green/red flash |
| Shift+ALT+Click | Add to always-sell list | Green flash |
| Ctrl+ALT+Click | Add to never-sell list | Green flash |
ALT+Click in the loot window marks items as junk before they enter bags. This is handled by SetupLootWindowHook() in Marking.lua.
All handlers are in Marking.lua. The OnModifiedClick function checks modifier combinations in priority order (Shift+ALT first, Ctrl+ALT second, plain ALT last).