• Redirect URI: set to https://localhost — this app uses a login-free API flow so the redirect is never actually triggered; any valid URI works.
• PKCE: leave disabled — PKCE is a security feature for user-facing login flows, which this app doesn't use.
Copy the Client ID and Secret below. Your credentials are stored only in your browser's local storage and never sent anywhere except WarcraftLogs.
2 Guild Info
Used to find your guild's logs on WarcraftLogs and pull your roster from Raider.IO
to automatically tell guild members from pugs.
Guild
Never synced
Show
Sessions
Add Report
Paste a WarcraftLogs report URL or report code to include logs that weren't uploaded under the guild —
for example, when a non-officer or pug uploaded their own log for a night you couldn't attend.
How to use this tracker
The table
Each column is a raid session pulled from your WarcraftLogs guild profile, newest on the left. Each row is a player who appeared in at least one of those sessions. The Att% column on the right shows what percentage of the visible sessions that player attended.
Pips ●
A filled dot means the player was present. Clicking it opens their WarcraftLogs summary for that specific report, jumped to the last kill of the night — or the last pull if the boss wasn't killed — with that player pre-selected as the source.
Difficulty badges
Each column header shows a badge for the highest raid difficulty in that log:
N NormalHC HeroicM Mythic
Mythic+ runs and other non-raid content are automatically excluded from the table during sync.
Manually added reports ⊕
A ⊕ under the date means you added that log manually via + Add Report. Use this for nights when someone other than an officer uploaded the log, so it didn't appear under the guild. The column header and border are tinted amber to distinguish these from auto-synced reports.
Guild members vs. pugs
Player rows are labelled Guild or Pug based on your guild's roster from Raider.IO, fetched every time you sync. Guild members sort to the top. If the roster can't be reached, everyone shows as unknown.
Player details panel
Click any player's name to open a side panel with their full attendance history (each session as a pill, clickable to WCL), links to their Raider.IO and WarcraftLogs profiles, and — for pugs — a notes area where you can save their Battle.net tag, Discord handle, freeform notes, and an invite back flag. Notes are saved locally in your browser.
Filters
Show: toggle between all players, guild members only, or pugs only. Sessions: limit the table to the most recent 8, 16, or all sessions. Attendance percentages always reflect only the sessions currently visible.
Duplicate log merging
When two officers both upload logs for the same raid night, the tracker automatically detects the overlap (matching timestamps + >50% shared players) and keeps only one. Logs uploaded by RadagastIRL are always given priority; if that log isn't present for a given night, the log with the most players is kept instead. The sync metadata line shows how many duplicates were merged on the last sync.
Syncing
Click ↻ Sync to re-pull the latest logs and roster from WarcraftLogs and Raider.IO. Your credentials, reports, and pug notes are stored only in your browser's local storage — nothing is sent anywhere except the WCL and Raider.IO APIs.
WCL API client settings
When creating your API client on WarcraftLogs, two settings may be unfamiliar:
Redirect URI — set this to https://localhost. This app uses a login-free flow (client credentials) where the API token is obtained directly with your client ID and secret — no browser redirect ever happens, so this value is required by WCL's form but never actually used.
PKCE — leave this disabled. PKCE (Proof Key for Code Exchange) is an extra security layer for flows where a user logs in and gets redirected. Since this app never does that, PKCE doesn't apply.