
Why we wrote this
Green Man Gaming ran a campaign where Steam reported a cost per wishlist of £3.30 against a real £1.71. The dashboard saw about half of what the campaign produced.
Sadly, the reported number is the one studios budget from. You cut the channel that looks expensive, when Steam could simply see it least.
Here is what this guide covers:
- What Steam's UTM tracking actually counts, and what it drops
- Why your reported cost per wishlist is one of three different numbers
- The free fixes, and how to work out whether a paid tool is worth its price
- How to measure creators, Discord, and word of mouth that clicks never capture
I hope it helps you put your next budget behind the channels that are genuinely working.
Robbie Ferguson, Co-Founder and President at Immutable

P.S.
We built Immutable's Attribution product for exactly the gap this guide describes: connecting the channel a player came from to the wishlist and the purchase, instead of losing the trail at the store page. We lifted Day 1 player conversion 2.8x for Ubisoft on Might & Magic: Fates, and we do the same work for Steam studios well below that size.
1. Understand what Steam's UTM tracking counts
Steamworks UTM Analytics only reports what it can observe: a tagged click, followed within 72 hours by a matching action on the same App ID.
A UTM parameter is a tag appended to a URL identifying the source of a visit, for example ?utm_source=youtube&utm_medium=influencer&utm_campaign=launch-trailer.
Steam reads those tags on inbound store-page links and groups visits and conversions by them, as set out in Steamworks' UTM Analytics documentation.
What Steam counts as a visit
Three visit numbers appear in the report, and they are not interchangeable:
- Total Visits: all UTM-tagged visits.
- Trusted Visits: excludes bot and crawler traffic.
- Tracked Visits: the user was logged in, and abnormal-rate traffic is excluded.
Since April 22, 2025, UTM parameters on external links to a Steam sale or event page pass through to the individual games featured on it. That covers regional events, themed events, showcases and publisher sale pages.
Store widgets embedded outside Steam can also carry UTM parameters, appended to the iframe URL, so traffic and conversions through them show up in the same reporting.
What Steam counts as a conversion
Three actions count as conversions, provided they happen within 72 hours of the UTM click:
- Wishlist additions
- Purchases
- Activations (free-to-play licenses and redeemed keys)
Only conversions tied to the specific App ID in the UTM link get attributed. One exception exists: a DLC package that includes the base game is counted.

Warning: demos and Playtests do not register as conversions
Demo downloads and Steam Playtest conversions are not counted as base-game UTM conversions. A prelaunch campaign built around a demo install or a Playtest signup therefore has no conversion to show, however well it performs.
What survives a device switch
Cross-device attribution is not categorically impossible; it depends on whether a session link exists between the click and the action. Three cases:
- Survives: a user clicks a UTM link and signs into their Steam account within the same browser or session.
- Survives: on mobile, a user lands in a browser while signed out, taps the app-open banner, and completes the journey in the app.
- Breaks: a user switches browsers entirely, or opens the Steam client and searches for the game manually.
Note: Valve states the break case plainly
"If a player switches browsers or launches the Steam client and searches for the game, we have no way to associate their actions in one browser with conversions in another."
Source: Steamworks UTM Analytics.
What gets held back from the report
The report finalizes four days after the visit, so anything you read before then is provisional. Two further mechanisms remove data from what you see:
- Users can disable "Third Party Links (UTM)" in their cookie preferences, which suppresses attribution entirely for that user.
- Unique UTM parameter combinations below a minimum visit threshold are hidden from the breakdown table.
Valve does not publish an official percentage of what proportion of real traffic gets tracked.
2. Expect attribution error in both directions
Treat the wishlist count in Steam's UTM report as a floor: the conversions Steam could observe and link back to a tagged click. Your campaign's real total sits above it.
Adele Simpson, EVP of Performance Marketing at Green Man Gaming, put the "new normal" for Steam UTM attribution reporting at 20-30% of actual traffic in February 2026. That figure is one practitioner's account of her own campaigns, not a Valve-published rate and not a measured industry average.
Our own data at Immutable points the same way: across the games we measure, 80 to 90% of pre-launch wishlists arrive with no attribution path.
That is one portfolio's observation, not an industry benchmark. It sits with Simpson's range rather than against it: most of what a campaign produces never gets credited to it.
Where the tracked number loses conversions
Three mechanical causes account for most of the loss:
- Cross-device and cross-browser handoff: a player who leaves the tagged session and opens the Steam client separately breaks the link.
- The halo effect: organic conversions get credited to paid activity running at the same time, or the reverse.
- Cookie-consent opt-outs: a user who disables third-party link tracking is never attributed at all.
The loss is not spread evenly across channels: Discord, dark social and creator content are structurally invisible to click-based tracking. SparkToro has reported that visits from Discord, TikTok, Slack, WhatsApp and Mastodon show as "direct" in standard analytics; step 7 covers what to do about it.
Green Man Gaming reported one campaign in detail: YouTube awareness plus a Reddit direct CTA, running to millions of impressions. Steam reported a cost per wishlist of £3.30 where the true figure was £1.71, so the dashboard saw roughly half of what the campaign produced.
That is one company's account of its own campaign, not a measured industry rate, but the direction of the error is the point. Simpson's own framing is blunter: "Your marketing is likely working four times harder than Steam is willing to admit."
Where the tracked number over-credits
The error runs the other way whenever several things move at once, which during a launch beat is most of the time. Wishlist growth inside a campaign window has more than one cause:
- Steam festival visibility
- A demo update
- Organic creator coverage
- Your existing followers
- The Discovery Queue
- Any other campaign running at the same time
Divide the whole spike by your ad spend and the campaign collects credit for all of it, including the growth that was already happening.
Key insight: there is no safe correction multiplier
Because the error runs in both directions, no fixed multiplier fixes it. "Triple the tracked number" is as likely to overstate a channel as to correct it.
Neither the Steam-attributed figure nor total wishlist growth is the truth on its own. Step 10 covers the only method that estimates the difference properly.
3. Know which cost-per-wishlist you are quoting
A studio can quote three different cost-per-wishlist numbers for the same campaign, and each answers a different question.
| Number | Calculation | What it tells you |
|---|---|---|
| Tracked CPW | Campaign spend divided by Steam UTM tracked wishlists | Observable Steam-attributed efficiency; an incomplete view of total campaign contribution |
| Campaign-period CPW | Campaign spend divided by total wishlist additions during the campaign window | Descriptive only; includes organic momentum and every other cause of wishlist movement |
| Incremental CPW | Campaign spend divided by estimated wishlists that would not otherwise have happened | The decision-relevant causal number; requires a credible counterfactual (see step 10) |
The same campaign, three answers
Run one campaign through all three. Spend is $20,000, Steam's UTM report tracks 2,000 wishlists, and total wishlist growth over the period is 7,000. Estimate the baseline at 2,500 wishlists without the campaign, which puts the estimated incremental lift at 4,500.
| Number | Result |
|---|---|
| Tracked CPW | $10.00 |
| Campaign-period CPW | $2.86 |
| Incremental CPW | $4.44 |
Identical spend, identical campaign: the campaign-period number makes it look roughly three and a half times more efficient than the tracked number does.
My recommendation is to name which of the three you are quoting every time you quote one, and to hold any channel comparison to a single definition. Comparing one channel's tracked CPW against another's campaign-period CPW is the most common way studios talk themselves into moving budget the wrong way.
4. Separate attribution from your traffic report
Steamworks reports on external campaigns and on Steam's own discovery surfaces in two separate places, and studios read one as if it answered the other's question.
UTM Analytics measures external campaign attribution: conversions tied to the App ID in your link, inside a 72-hour window. Traffic Report covers Steam's own internal discovery surfaces instead.
Traffic Report breaks your store-page traffic into its Steam-side sources:
- Discovery Queue
- Search
- Tag and browse pages
- Recommendations
- External
- Community
- Direct
| UTM Analytics | Traffic Report | |
|---|---|---|
| Question it answers | Did my campaign work | How did Steam's own discovery surfaces behave |
| Scope | The external links you tagged, per App ID | Traffic reaching your store page, grouped by source |
I treat Traffic Report as directional, not exact. It tells you which Steam surface is moving, not a precise count you should build a budget on.
Note: Update Visibility Rounds are not a third measurement system
Update Visibility Rounds are a post-launch promotional mechanism for announcing major updates, DLC and features. Valve's visibility documentation states you must wait until your initial launch visibility has concluded.
You get 5 lifetime rounds, each capped at 30 days or 1 million impressions, and none of it attributes a wishlist to a channel.
Traffic does not buy you visibility
Steam's algorithmic visibility does not treat raw store-page traffic or wishlist counts as direct inputs. Valve's visibility documentation puts it plainly: "The traffic landing on your store page is not a factor in your Steam store visibility."
Wishlists carry one named exception, and the same page names it. "With a few exceptions like the Popular Upcoming tab, wishlists are not a factor in your game's algorithmic visibility on Steam."
Key insight: external traffic does not buy Steam visibility
Sending more people to your store page does not itself earn more placement in Steam's discovery surfaces. External marketing still matters; judge it on the wishlists and sales it produces, rather than on an algorithm response it was never going to trigger.
The funnel data has no public proxy
Impressions, page click-through rate, page visits and every CTR in that funnel are Developer-Layer-only data, and no public proxy exists for any of them. Benchmarking a competitor on those metrics is therefore impossible.
5. Fix your tracking for free
Tag every external link
Apply UTM parameters to every external link pointing at your Steam page, not only the paid ones. That means:
- Paid ads
- Influencer keys and links
- Newsletter placements
- Reddit posts
- Social bios
Keep the naming structure identical across all of them, so one campaign never ends up split across three spellings of the same source.
| Parameter | What it holds | Example values |
|---|---|---|
utm_source | Platform or partner | reddit, tiktok, youtube, a creator's name |
utm_medium | Channel type | organic, paid, influencer, cpc |
utm_campaign | Initiative slug | launch-trailer |
Then check your Steam Traffic Breakdown weekly, which is how you separate growth driven by Steam's algorithm from growth driven by your marketing.
Choose your funnel architecture
Where you send that tagged traffic is a design decision with genuine trade-offs, and all three options below are legitimate.
Architecture A, direct to Steam: lowest friction, shortest path, Steam's UTM reporting at the end of it. The trade-off is that you get no session or CTA data of your own.
Architecture B, a measurement landing page: richer web analytics, first-party UTM and session data, and visibility into CTA behaviour. The trade-off is an extra click and possible funnel loss.
Architecture C, an authenticated or value-exchange funnel: signup or playtest registration before Steam. Strongest first-party measurement, highest friction, and only worth it when that step delivers real player value.
Here is the payoff of Architecture B or C: a first-party view that drills from destination through channel and campaign down to the individual creative.

Pro Tip: tag the subscriber, not just the click
On any email sign-up (Architecture B or C), store the UTM source as a hidden field in Mailchimp, ConvertKit, or whatever you use. Every subscriber then carries their acquisition channel with them, so the list can be segmented by where each person came from.
Ask players directly
Self-reported attribution is the one signal that does not depend on a click surviving a browser handoff: you ask players where they heard about the game.
Warning: you cannot add that question to Steam's own flow
Steam's wishlist and purchase confirmation screens are Valve's interface, and a developer cannot customise them. Any "how did you hear about us" question has to sit on a touchpoint you own instead.
The owned touchpoints available to you:
- Email registration
- Playtest or demo sign-up surveys
- A Discord onboarding question
- Community surveys
- In-game onboarding
Everything above costs nothing but discipline, and I want to be straight about what that buys you. These fixes recover some of the wishlists Steam never credits, not most of them.
Self-reported answers are a complementary signal, not ground truth. Players misremember, they credit whatever they saw last, and most were exposed to several of your channels before they ever wishlisted.
6. Decide when to pay for a tool
No public benchmark sets the monthly spend at which a paid attribution tool starts paying for itself, and vendor pricing is largely custom or enterprise.
The decision rule I use instead
The rule is value of information: what better measurement is worth to you, priced against what it costs. Two things have to be true together.
First, you have enough spend that reallocating even a modest share of it would meaningfully change outcomes. Second, the tool's monthly cost is smaller than the value of that reallocation.
Illustrative arithmetic: at $100,000 a month of spend, better measurement changes 15% of the allocation, and that reallocated spend performs 20% better. The tool is then buying you roughly $3,000 a month of value.

Those numbers are illustrative, not a claim about what any particular studio spends. Run the same arithmetic on your own spend against a real quote, because vendor pricing is mostly case by case.
The zero-cost tier in step 5 carries most studios a long way. You outgrow it when paid spend and creator volume make a tool cost clearly less than the allocation value it buys back.
What the vendors actually do
Four third-party vendors come up repeatedly for PC and console attribution, and their published methods differ in how much they claim to observe directly. I have added Immutable's own product to the table so you can compare like for like.
| Vendor | Approach as described | Notable detail |
|---|---|---|
| Second Stage TRACKS | Hybrid: deterministic click-ID matching plus probabilistic modelling | Documentation states fully deterministic PC and console attribution "isn't feasible" across the full storefront journey; reportedly up to 96% combined accuracy; recommends plain landing-page URLs with UTM tags over redirect tracking links |
| Airbridge | Probabilistic, with a 6-hour connection-inference window | PC game tracking is explicitly labelled as currently in beta; supports both a landing-page and a no-landing-page path; requires server-to-server events routed to in-app endpoints |
| Singular | Reportedly splits deterministic (an authenticated user registering or logging into the marketing site) from probabilistic (an anonymous visit) | Reportedly requires the Singular Web SDK on landing pages plus a server-to-server API. I could not fetch this from the vendor directly, so treat it as secondhand |
| Gamesight | Creator campaign tracking links and cross-platform funnel tracking | The public documentation I read describes the tracking generically, so I am not going to state a methodology or accuracy figure for it |
| Immutable Attribution | Two tiers: deterministic tracked links and on-page conversions, plus a media mix model that allocates the untracked remainder | Disclosure: this is my company's product. Modelled figures are floored at each channel's tracked volume, labelled as estimates in the product, and audited with geo-holdout tests |
None of these vendors claims fully deterministic PC attribution, ours included, and the most explicit of them says outright that it is not feasible.
The design decision I will defend is the reconciliation rule. Every wishlist reconciles to your exact Steam total under one of three labels: attributed, modelled, or unattributed.
The unattributed bucket is shown rather than folded into a channel. If a tool never shows you an unattributed number, treat that as a red flag rather than a feature.
It is also why a good tool's conversion counts sit below your ad platforms': networks claim every user they touched, a reconciled count ties each conversion to one identity.

Key insight: a tool buys a better estimate, not certainty
Paying for attribution software upgrades the quality of the modelling and the breadth of the touchpoints it can see. It does not convert a probabilistic answer into a deterministic one.
If you are buying to make the uncertainty go away, you will be disappointed. Buy to narrow it enough to change a budget decision.
7. Measure the channels clicks can't see
Creators and community channels generate wishlists that click tracking structurally cannot attribute, because most of the people they influence never touch a tagged link.
Different channels break in different places, so measuring all of them with one click-based number produces bad comparisons.
| Channel | What tagged links do capture | What they routinely miss | Best second signal |
|---|---|---|---|
| Paid social | Tagged visits and tracked conversions | View-through exposure, later manual search | Incremental lift |
| Creators | Traffic from the creator's own link | Most viewers, who never click it | Wishlist trend against baseline |
| Newsletters | Tagged clicks | Forwarded copies, later search | Source-tagged signups |
| PR | Referral traffic where links are tagged | Branded search, syndicated coverage | Wishlist lift around publication |
| Discord | Tagged links you posted yourself | Private resharing, manual navigation | Self-reported attribution |
| Tagged outbound links | Reposts, comment discussion, later search | Self-report plus trend | |
| Festivals | Campaign links where you control them | Steam-native discovery inside the event | Traffic Report plus baseline comparison |
Measure creator lift, not creator clicks
The clearest sizing of that gap comes from mobile. Google Play's own research analyzed more than 250 gaming YouTube videos with over 60 million combined views. For every viewer who clicked a creator's tracking link and downloaded, roughly four more converted without clicking it, within four days of watching.
Those are mobile installs on Google Play, not Steam wishlists. I use the figure as an analogy for the general pattern: click-based tracking undercounts creator influence.
The practical fix is a unique UTM-tagged link or custom short link per creator, read as lift: the wishlists above baseline, not the clicks on the link.
Your baseline is the ordinary daily wishlist rate in the weeks before a video goes live; the spike above it during the campaign window is what the creator moved.

Note: creator content keeps working after your attribution window closes
A review published at launch can still drive wishlists long after Steam's 72-hour window and most ad platform windows have closed. How long that tail runs varies by game and by creator, so treat it as a directional pattern and not a number.
Dark social: Discord, Reddit and word of mouth
Discord servers, Reddit DMs, private group chats and gaming-community word of mouth are structurally invisible to click tracking.
B2B software marketers call their version of it the dark funnel: demand formed in private Slack channels and peer recommendations, where no link exists to tag.
The mitigation is the one from step 5: ask players where they heard about you, rather than waiting for a click that will never arrive.
What a dedicated attribution layer adds is the ability to hold those self-reported and click-based signals in one channel view, rather than in three disconnected exports.
8. Diagnose your current setup
Red flags
These signals suggest your attribution setup is not telling you the truth:
- "Direct" is your largest traffic source.
- Your Steam UTM report shows far fewer conversions than campaign spend would suggest.
- An influencer campaign shows low ROAS while your wishlist count visibly spiked during the campaign window.
- Influencer-shared links, social bios and newsletter placements carry no UTM parameters.
- A campaign report shows "0 conversions" for a channel that visibly drove a traffic spike.
Direct is the softest of these signals: it legitimately includes manual navigation, bookmarks, referrer stripping and private sharing.
A large direct bucket is a reason to investigate dark social and untagged link sharing, before concluding that tracking is broken.
Note: treat vendor-sponsored survey data as vendor-sponsored
A FirstLook survey of over 250 senior AA and AAA product and marketing executives found widespread self-reported failure interpreting pre-launch signals. FirstLook sells playtesting and player-research products, so read that as research with a direct commercial stake in the finding, rather than independent data.
What good looks like
A setup you can trust has three properties:
- Each paid channel has a unique, consistent UTM source, medium and campaign structure.
- Cost-per-wishlist is calculable per channel and updated weekly, using whichever of the three definitions from step 3 fits the decision at hand.
- Email list entries carry a source tag, so the list segments by acquisition channel.
When your dashboards disagree
When your ad platform, Steam's UTM report and total wishlist growth disagree about the same campaign, don't default to the most favourable one. Work through these checks in order:
- Are the platforms measuring the same conversion definition and the same window?
- Does the ad platform include view-through conversions Steam would not count?
- Were other marketing beats running concurrently: a festival, a demo launch, a PR moment?
- Did organic or algorithmic traffic change at the same time?
- Is the pattern consistent across more than one campaign, or a one-off?
Check 3 is much faster when the timeline already exists as a picture: every milestone and social post overlaid on the daily wishlist curve, so a spike explains itself.

9. Look past cost-per-wishlist
A channel that looks expensive on cost-per-wishlist can still beat a cheap one, if its players stay while the cheap channel's players churn.
Strong Day 7 and Day 30 retention is what decides that comparison. I'd treat it as a directional principle rather than a proven predictor.
Most public discussion stops at cost-per-wishlist anyway, because it is the number Steamworks and the ad platforms surface by default.
One metric that does look past it is MER (marketing efficiency ratio), total revenue divided by total marketing spend. MER works at portfolio level rather than per channel, so it will not tell you which channel earned its budget.
The join Steam does not give you
Steam's own Wishlist Reporting is genuinely detailed. It shows you:
- Wishlist additions
- Deletions
- Purchases
- Geography
- Cohort timing
What it does not do is natively join a specific acquisition channel, say a TikTok-acquired wishlist, to a launch purchase. Making that join means connecting the channel to retention and eventual revenue. That requires a player-identity layer Steam's tools do not provide.
Example: Ubisoft's Might & Magic: Fates
With an Immutable email-capture funnel and a five-phase sequence, Ubisoft lifted Day 1 player conversion from 2.37% to 6.64% (2.8x), widening to 3.0x by Day 14.
The lift matters less here than the mechanism: every one of those players arrived through a channel the publisher could still name at purchase.
Key insight: wishlist count alone does not decide launch performance
Two games can arrive at launch on the same wishlist count and sell very differently, because the number says nothing about who added it or why.
Channel mix, retention and audience quality all sit behind that figure, and none of them are visible in it.
10. Test causally when the stakes justify it
Attribution assigns observational credit for conversions that already happened; incrementality testing, or holdout testing, estimates causal lift by comparing an exposed group against a withheld control.
A holdout test is a later-stage, bigger-budget tool, worth its cost when you face high-stakes budget decisions on a channel with enough volume to support a controlled test.
Note: there is no published Steam incrementality benchmark
No robust, publicly available Steam-specific controlled study currently establishes a representative incrementality benchmark for paid marketing driving incremental wishlists. I would rather leave that as a known unknown than fill it with an invented number.
Check whether you can run one at all
Gamesight publishes its own feasibility requirements for a geo-holdout test, and they make a usable bar. Running one takes:
- At least a two-week experiment window
- At least a month of baseline data
- Data across at least 20 regions
If you run paid across twenty or more regions with a clean month of baseline behind you, this is available to you. Below that bar the test cannot work, and the fallback below is what you have.
The weaker fallback
A before-and-after time comparison with no concurrent control is what is left when volume rules out a real test. Label it quasi-experimental and treat it as lower confidence.
It is least reliable around Next Fest or a demo launch, where too many other things change at once to isolate one campaign's effect.
Incrementality testing never depended on click-level tracking, so it sidesteps the cross-device and closed-garden problems the rest of this guide documents.
Build it in this order
Most studios do not need all of this on day one. Add each layer when the one below it is working.

- Tag every external link you control, using one taxonomy you wrote down before the campaign launched.
- Read Steam's UTM report and Traffic Report weekly, and keep them mentally separate.
- Keep a dated timeline of every marketing beat: ads, creator posts, festivals, demo changes, store-page edits, PR. Overlay it on daily wishlist growth. Most spikes explain themselves once you can see what else happened that day.
- Preserve acquisition source on every first-party signup, so a channel stays attached to a player after the click.
- Ask players where they heard about you on the touchpoints you own.
- Add controlled testing once volume and spend justify it.
Conclusion
I hope this one was useful.
Attribution on Steam is a genuinely hard problem, and I have tried not to pretend otherwise. Nobody has fully deterministic PC attribution, the vendors included, and a good chunk of what your marketing produces will never show up in a dashboard at all.
What you can control is whether the number you budget from is an honest one. Tag everything, name which cost-per-wishlist you are quoting, ask your players where they came from, and treat the gap between reported and real as something to estimate rather than ignore.
Robbie Ferguson, Co-Founder and President at Immutable

Free attribution review
Find out which of your channels is actually producing wishlists
Immutable's Attribution reconciles every wishlist to your exact Steam total: attributed to a channel, modelled with a clearly labelled estimate, or shown plainly as unattributed.
Get my free attribution review★★★★★ Trusted by Ubisoft, Netmarble, and 700+ studios
This content is meant to inform and educate; it's not a substitute for advice tailored to your specific circumstances. Always evaluate options in the context of your own goals, constraints, and (where relevant) professional guidance. While care has been taken in the preparation of this guide, no guarantees are made as to its accuracy, completeness, currency or that it will be error-free.










