How to track Steam wishlists and sales for an indie game
Last updated: November 1, 2026
From the SoleOS answers series — written about our own product space; grounded in published definitions and documented behavior, never invented numbers.
The honest answer: Valve doesn't offer a public API for Steam wishlists or sales, so you're tracking this manually. You export CSVs from Steamworks (wishlist actions, regional sales, refunds) on a schedule, log the numbers somewhere durable, and watch the trend rather than any single day. If your game is one of several products you run, the real work is getting those numbers into the same place as everything else so you're not flipping between five tabs to know if the month is good or bad.
This isn't a "connect an API and forget it" situation like Stripe or RevenueCat. Steam tracking is a discipline problem before it's a tooling problem.
What Steamworks actually gives you
Log into Steamworks and you'll find two relevant reports:
- Sales & Activation reports — units sold, gross/net revenue by region, refunds, and chargebacks, broken down daily. These export as CSV and are usually delayed by a day or two, sometimes longer around weekends.
- Wishlist actions — adds, deletes, and purchases/activations from wishlist, also by region and by day. This is the report most devs actually check compulsively, because wishlist velocity is the leading indicator before and during a launch.
Neither of these has a documented public API for third-party tools to pull on your behalf. There are unofficial scrapers and community scripts that log into Steamworks and parse the HTML, but that's fragile — Valve can and does change the page layout, and you're trusting a script with your Steamworks session. If you go that route, treat it as "nice to have, might break," not infrastructure.
The manual workflow that actually holds up
Most solo devs who track this well do three things:
- Export on a fixed cadence. Daily during launch week and any sale event, weekly otherwise. Pick a day (Monday morning) and don't skip it — gaps in a wishlist chart make trend analysis useless.
- Log into a running spreadsheet, not a fresh one each time. One row per day: wishlist adds, wishlist deletes, units sold, net revenue, refunds. Add a column for "notable event" (sale start, press mention, update ship) so spikes have context six months later when you've forgotten why.
- Separate wishlist velocity from conversion. Adds-per-day tells you if marketing is working. Wishlist-to-purchase conversion during a launch or sale tells you if the game itself is converting. Conflating the two is the most common mistake — a trailer can spike adds without moving conversion at all.
If you want a starting structure instead of building one from scratch, the spreadsheet approach we've written about for SaaS metrics applies almost directly here: one tab for raw daily exports, one tab for rolled-up weekly/monthly views, and formulas that compute week-over-week change so you're not eyeballing a CSV.
Where this gets harder with more than one game (or a game plus other products)
If Steam is your only product, a spreadsheet is genuinely fine — don't let anyone sell you more tooling than the job needs. The problem shows up when you're running a Steam title alongside mobile apps, a SaaS side project, or a second game. Now you've got Steamworks CSVs, RevenueCat or Stripe data from other products, and App Store Connect or Play Console numbers, and none of them share a dashboard or a common "is this month up or down" view.
That's the gap SoleOS is built for — and worth disclosing upfront: this is our blog, we built SoleOS, and we're writing about the category we sell into. SoleOS doesn't have a Steam connector (Valve's lack of a usable API means almost nobody does this well programmatically), but it does let you pull in your other revenue sources — Stripe, RevenueCat, App Store Connect, Google Play — into one portfolio view, and you can log your weekly Steam wishlist/sales numbers manually alongside it so at least the comparison lives in one place instead of a browser tab graveyard. If your Steam game is your only product and you have no other revenue streams to compare it against, you probably don't need a portfolio tool at all — a good spreadsheet and the Steamworks dashboard will cover you.
What to actually watch, week to week
A few things matter more than raw totals:
- Wishlist velocity, not wishlist total. A game with 20,000 wishlists adding 50/day is in a worse spot than one with 8,000 adding 300/day. The slope is the signal.
- Wishlist-to-sale conversion during your launch window. Valve's own guidance (and most postmortems you'll find from other devs) treats the first two weeks post-launch as the period where accumulated wishlists convert fastest. Watch this window specifically rather than averaging it into a monthly number.
- Refund rate by region. High refunds concentrated in one region often means a localization, performance, or pricing mismatch specific to that market — not a quality problem with the game overall.
- Net revenue after Valve's cut and regional pricing, not gross units. Steam's revenue share and regional currency conversion means "units sold" and "money you'll actually see" can diverge more than people expect, especially with regional pricing discounts active.
None of these require a tool — they require you to actually look at the same four numbers every week instead of checking Steamworks once, feeling good or bad about a single day, and moving on.
Frequently asked questions
Is there an official Steam API for wishlists or sales?
No. Valve provides Steamworks reports (CSV exports) inside the partner dashboard, but there's no documented, supported public API for pulling wishlist or sales data into third-party tools. Anything that claims to do this automatically is either scraping the Steamworks web UI (fragile, against the spirit of the terms, and liable to break) or asking you to upload the CSVs yourself.
How often should I check my wishlist numbers?
Daily during your launch week, the two weeks before launch, and any sale event. Weekly the rest of the time. Checking more often than that mostly adds anxiety without adding signal — daily wishlist adds are noisy, and a single bad day rarely means anything on its own.
What's a good wishlist-to-sale conversion rate?
There's no reliable public benchmark we'd attach a number to here, and most "X% convert" figures floating around indie dev forums are from games with very different genres, price points, and launch marketing — not comparable to your game. Track your own conversion rate over successive sale events instead; the trend relative to your own history is more useful than a borrowed industry number.
Can SoleOS pull my Steam data automatically?
No — SoleOS doesn't have a Steam connector because Valve doesn't expose the kind of API that would make an automated, reliable integration possible. You can log Steam numbers manually inside SoleOS alongside your other connected products (see what SoleOS connects to) so your game's performance sits next to your app or SaaS revenue in one view, but the Steam side itself stays manual on your end.
Should a solo Steam dev even bother with a portfolio dashboard?
Only if Steam is one of several revenue streams you're managing. If it's your only product, a well-maintained spreadsheet and the Steamworks dashboard are enough — see our spreadsheet vs. paid dashboard breakdown for where the tipping point usually is. The value of a portfolio view shows up when you're comparing this game's trajectory against other apps or games you run, not when it's standing alone.