Why this is difficult
A player journey can cross reports, browsers, apps, and devices
An ad platform counts its own click event. Steam counts visits to a tagged Steam page. A social app may open an embedded browser where the player is not signed in, and the same player may later search for the game in the Steam client. Those are related human actions, but they are not necessarily joinable events.
Steam also suppresses low-volume UTM combinations and honors browser and cookie choices. The useful question is not ‘why are the reports identical?’ but ‘what does each stage tell us about the traffic that remained observable?’
Data and definitions
Read the visit funnel from broadest to narrowest
- Total visits
- Visits to the product page carrying the UTM code. Repeated visits and shared tagged links can make this differ from a platform’s click count.
- Trusted visits
- A subset of total visits after Steam filters bots and search crawlers.
- Tracked visits
- Visits associated with users signed into Steam in that browser or arriving through supported Steam app handoffs. Only these visits are eligible for conversion reporting.
- Tracked conversion
- A same-App-ID wishlist, purchase, or activation attributed after an eligible UTM visit within Steam’s documented window.
Campaign taxonomy
Choose names that survive the export
Steam supports utm_source, utm_campaign, utm_medium, utm_content, and utm_term. Steam requires at least utm_source or utm_campaign on a supported app or sale-page link.
A practical convention is source = platform, medium = channel type, campaign = initiative, content = creative group, and term = individual variant. Keep a registry with the exact values and final URL; this convention is useful governance, not a Valve requirement.
Worked example
A campaign can lose volume at each observable stage and still send strong traffic
A paid social campaign reports 1,200 outbound clicks. Steam records the following results after conversions have finalized. The numbers are illustrative, not a benchmark.
| Measure | Value | Calculation | What it asks |
|---|---|---|---|
| Platform outbound clicks | 1,200 | Platform report | What the platform counted |
| Total visits | 1,000 | Steam UTM report | How much tagged traffic arrived |
| Trusted visits | 800 | 800 ÷ 1,000 = 80% | How much looked human |
| Tracked visits | 320 | 320 ÷ 800 = 40% | How much human traffic was identifiable |
| Attributed wishlists | 48 | 48 ÷ 320 = 15% | How many tracked visitors wishlisted |
| Attributed purchases | 8 | 8 ÷ 320 = 2.5% | How many tracked visitors purchased |
Common misinterpretation
Do not divide conversions by total visits and call it the Steam conversion rate
Steam can associate conversions only with tracked visitors, so tracked visits are the explicit denominator for the report’s attributed wishlist or purchase rate. A total-visit denominator can still describe conversions per tagged visit, but it mixes eligibility and conversion into one number and must be labeled accordingly.
The 200-visit difference between platform clicks and Steam total visits is not automatically click fraud or broken tracking. Redirect behavior, repeated clicks, blocked navigation, shared tagged links, report definitions, and time windows can all change the relationship.
Manual workflow
Build the comparison in a spreadsheet
- Freeze the comparison window and wait until Steam marks conversions final.
- Export the Steam UTM breakdown and the platform’s outbound-click report.
- Join on governed campaign values and record any time-zone or naming mismatch.
- Calculate trusted ÷ total, tracked ÷ trusted, and each conversion ÷ tracked.
- Compare campaigns on both volume and traffic quality; do not rank on a tiny denominator.
- Write one conclusion, its competing explanations, and the evidence label it deserves.
Failure modes
Attribution answers a narrower question than causality
- Logged-out visitors may convert after searching later, without a joinable path back to the campaign.
- Cross-browser and cross-device journeys can fall outside the observed chain.
- The 72-hour window omits later outcomes; later rediscovery may be real but unattributed.
- Low-volume combinations may be hidden, and privacy choices affect what is recorded.
- An attributed conversion may have happened without the campaign; attribution alone does not estimate incrementality.
What to do next
Use the funnel to choose the next investigation
Low trusted share: inspect placements, link sharing, and platform click definitions. Low tracked share: inspect device and in-app-browser mix. Healthy tracked traffic with weak conversion: inspect audience promise and store-page response. Strong attributed conversion: repeat carefully, then use a baseline or holdout where available before claiming incremental lift.
How Coal helps
Automate collection and reconciliation, not the judgment
You can run this method with recurring Steamworks and ad-platform exports plus a campaign registry spreadsheet. Coal collects Steam traffic and campaign data into the same operating view, reducing the repeated export and reconciliation work. The definitions, denominators, and evidence discipline remain the same.