14 Free Post-October Fest Steam Analytics Refund and Demo Uninstall Tools - 2026

Wednesday after October Next Fest: #metrics celebrates "we had a great week." Steamworks Sales & Activations still shows fest-hour download spikes—but refunds doubled since Monday and demo uninstall reporting (where your team tracks it) says half of hour-one players never reached the tutorial. Branch unset evening #1 latched branch_unset_ok: true—but BUILD_RECEIPT has no post_fest_analytics_ok column because refunds lived in one CSV export, uninstall notes in a Discord thread, and wishlist velocity in a producer's personal spreadsheet.
November 2026 first week compresses refund spike triage, demo uninstall curves, wishlist velocity stalls, and retention response into the same seventy-two hours after fest live ends. Teams that finished October upload capstone discover the new bottleneck is post-fest signal hygiene—not another store publish checklist. This Listicles & Resource Roundups post curates fourteen free tools (plus a four-tool minimum stack) to run a scannable analytics dashboard across refunds / uninstalls / wishlist velocity / BUILD_RECEIPT crosswalk, file post_fest_analytics_tools_receipt_v1.json with gates T1–T6, and set BUILD_RECEIPT post_fest_analytics_ok: true only when every lane matches the same build_id and post-fest week date range.
Non-repetition note: 16 post-fest wishlist velocity tools owns D+14 wishlist velocity follow-through V1–V6. Post-fest wishlist plateau playbook owns conversion diagnosis narrative. Live-ops analytics resource owns bookmark hub. Branch unset evening #1 owns U1–U6 unset receipt. This URL owns first-week post-fest analytics tooling + T1–T6 receipt—not another velocity-only list or plateau essay.
Pair branch unset #1, wishlist plateau cousin, refund signal evening, Resource #46 forward, Help #49 forward, forward blog #3 five-night retention challenge.
Why this matters now (November 2026 post-October fest)
- Fest traffic cliff is normal; silent refunds are not — Hour-one refund spikes often mean demo scope lies, not algorithm punishment.
- Uninstall reporting lags downloads — Teams that wait until November closeout lose fixable crash clusters.
- Wishlist velocity stalls hide in averages — Daily export beats weekly gut feel per plateau playbook.
- Branch truth before metrics — Branch unset #1 must GREEN before analytics attribute builds correctly.
- Receipt sprawl — Unset receipt, analytics dashboard, and forward #12 capstone need one BUILD_RECEIPT story for November sprint.
Direct answer: Deploy the four-tool minimum (Sheets dashboard + Steamworks exports + jq validator + BUILD_RECEIPT crosswalk), run first-week post-fest metrics calendar, file post_fest_analytics_tools_receipt_v1.json with T1–T6 GREEN, latch post_fest_analytics_ok only when refunds, uninstalls, wishlist velocity, and build_id align.
Who this listicle is for
| Audience | Outcome |
|---|---|
| Beginner | Scannable four-lane dashboard + daily export habit |
| Producer | One receipt proving post-fest signals on same build |
| Release engineer | jq gate before retention challenge #3 starts |
| Studio lead / partner diligence | Attach receipt to post-fest zip instead of screenshot collage |
Time: ~90 minutes to wire four-tool minimum; ~3 hours for full fourteen-tool pass + receipt before forward #3 retention challenge.
Beginner cheat sheet — four-tool minimum stack
| # | Tool | Post-fest week job |
|---|---|---|
| 1 | Google Sheets or Airtable (free tier) | Four-tab dashboard: refunds / uninstalls / wishlist / crosswalk |
| 2 | Steamworks Sales & Activations | Official refund + unit export |
| 3 | jq (CLI) | Validate post_fest_analytics_tools_receipt_v1.json |
| 4 | BUILD_RECEIPT.json | Crosswalk branch_unset_ok → post_fest_analytics_ok |
Rule: All four wired → ready for T1–T3. Tools 5–14 add charts, thresholds, CI, calendars, and verification scripts.
Developer path — gates T1–T6
| Gate | Pass criterion |
|---|---|
| T1 | branch_unset_ok: true on BUILD_RECEIPT (cousin #1) |
| T2 | post_fest_analytics_dashboard_v1.json lists all four lanes with status: active or documented skip |
| T3 | post_fest_daily_export_2026.csv has D+1…D+7 rows with owner + UTC timestamp |
| T4 | Refund spike threshold documented in refund_threshold_v1.json |
| T5 | post_fest_analytics_tools_receipt_v1.json committed |
| T6 | BUILD_RECEIPT post_fest_analytics_ok: true matches receipt |
First-week post-fest metrics calendar (beginner)
Default November 2026 first week after October fest (adjust to your end date):
| Day | Lane | Action | Owner |
|---|---|---|---|
| D+1 AM | Crosswalk | Confirm branch unset GREEN (T1) | Release |
| D+1 PM | Refunds | Export Sales & Activations; log refund rate | Producer |
| D+2 AM | Uninstalls | Record demo uninstall notes + crash folder triage | Engineering |
| D+2 PM | Wishlist | Daily wishlist export row | Marketing |
| D+3 | All | Compare to plateau playbook ratios | Producer |
| D+4–D+5 | All | Forward #3 retention challenge nightly card | Producer |
| D+7 | All | File T1–T6 receipt before forward #12 capstone index | Producer |
Copy into release-evidence/analytics/post_fest_daily_export_2026.csv:
day_utc,lane,metric,value,build_id,owner,status,notes
2026-11-04,crosswalk,branch_unset_ok,1,2026-11-01-trunk01,release@studio,GREEN,pairs unset receipt
2026-11-04,refunds,refund_rate_pct,2.1,2026-11-01-trunk01,producer@studio,GREEN,below threshold
2026-11-05,uninstalls,demo_uninstall_notes,elevated,2026-11-01-trunk01,eng@studio,YELLOW,crash folder open
2026-11-05,wishlist,wishlist_net_delta,42,2026-11-01-trunk01,marketing@studio,GREEN,daily export
post_fest_analytics_tools_receipt_v1.json (template)
{
"schema": "post_fest_analytics_tools_receipt_v1",
"fest_window": "2026-10-next-fest-live",
"post_fest_week": "2026-11-first-week",
"build_id": "2026-11-01-trunk01",
"generated_at_utc": "2026-11-07T16:00:00Z",
"dashboard_path": "release-evidence/analytics/post_fest_analytics_dashboard_v1.json",
"daily_export_path": "release-evidence/analytics/post_fest_daily_export_2026.csv",
"branch_unset_receipt_path": "release-evidence/steam/post_fest_branch_unset_receipt_v1.json",
"refund_threshold_path": "release-evidence/analytics/refund_threshold_v1.json",
"gates": {
"T1": true,
"T2": true,
"T3": true,
"T4": true,
"T5": true,
"T6": true
},
"lanes": {
"refunds": "active",
"uninstalls": "active",
"wishlist_velocity": "active",
"build_receipt_crosswalk": "active"
},
"post_fest_analytics_ok": true,
"notes": ""
}
post_fest_analytics_dashboard_v1.json (four lanes)
{
"schema": "post_fest_analytics_dashboard_v1",
"build_id": "2026-11-01-trunk01",
"lanes": [
{"id": "refunds-01", "lane": "refunds", "label": "refund_rate below threshold", "status": "active"},
{"id": "uninstalls-01", "lane": "uninstalls", "label": "demo uninstall notes + crash triage", "status": "active"},
{"id": "wishlist-01", "lane": "wishlist_velocity", "label": "daily wishlist net delta export", "status": "active"},
{"id": "crosswalk-01", "lane": "build_receipt_crosswalk", "label": "branch_unset_ok + build_id parity", "status": "active"}
]
}
refund_threshold_v1.json (sample)
{
"schema": "refund_threshold_v1",
"fest_demo_sku": "1234560",
"refund_rate_warn_pct": 3.0,
"refund_rate_stop_pct": 5.0,
"window_days_post_fest": 7,
"action_warn": "open crash folder + review demo scope FAQ parity",
"action_stop": "pause post-fest patch until forward #9 exception list"
}
verify_post_fest_analytics_tools.sh
#!/usr/bin/env bash
set -euo pipefail
R="${1:-release-evidence/analytics/post_fest_analytics_tools_receipt_v1.json}"
jq -e '.schema == "post_fest_analytics_tools_receipt_v1"' "$R" >/dev/null
jq -e '.post_fest_analytics_ok == true' "$R" >/dev/null
jq -e '.gates.T1 and .gates.T2 and .gates.T3 and .gates.T4 and .gates.T5 and .gates.T6' "$R" >/dev/null
UNSET="$(jq -r '.branch_unset_receipt_path' "$R")"
test -f "$UNSET"
jq -e '.branch_unset_ok == true' "$UNSET" >/dev/null
echo "post-fest analytics tools verify: OK"
The 14 free tools
Tool 1 — Google Sheets or Airtable (free tier)
Lane: All four tabs in one view.
Job: Human dashboard with build_id column, D+1…D+7 rows, RED/YELLOW/GREEN.
Beginner: Duplicate template tab per fest; do not fork columns mid-week.
Dev: Export CSV nightly to post_fest_daily_export_2026.csv for jq.
Pair: Tool 4 BUILD_RECEIPT crosswalk.
Tool 2 — Steamworks Sales & Activations
Lane: Refunds.
Job: Official refund + unit export for post-fest week.
Beginner: Export daily first week—not only fest live week.
Dev: Compute refund_rate_pct = refunds / units per day; compare to Tool 12 threshold file.
Official: Steamworks sales reports.
Tool 3 — Steam partner wishlist / traffic exports
Lane: Wishlist velocity.
Job: Daily net wishlist delta for plateau playbook ratios.
Beginner: Same export time each day UTC—batch lag lies if you mix morning/evening.
Dev: Pair 16 velocity tools when D+14 follow-through starts.
Tool 4 — BUILD_RECEIPT.json
Lane: Crosswalk.
Job: Hold branch_unset_ok, post_fest_analytics_ok, paths to cousin receipts.
Beginner: One file producers open D+1 standup.
Dev: jq latch chain: unset ok before analytics ok.
Tool 5 — jq (CLI)
Lane: Validation.
Job: Run verify script; fail CI before retention challenge webhook.
Beginner: Install once; copy verify script from this article.
Dev: Gate GitHub Actions post-fest metrics job on exit 0.
Tool 6 — CSV daily export (Tool 1 export)
Lane: Scheduling.
Job: T3 evidence—who logged what metric when.
Beginner: One row per lane per day; no merged cells.
Dev: jq slurp for forward #12 capstone annex.
Tool 7 — Simple chart (Google Sheets chart or Grafana Cloud free tier)
Lane: Refunds + uninstalls visual.
Job: Spot D+2 spike without staring at raw CSV.
Beginner: One chart per lane—do not blend refunds and wishlists on same axis.
Dev: Annotate chart with build_id change events.
Tool 8 — post_fest_analytics_dashboard_v1.json
Lane: Machine dashboard.
Job: T2 structured lanes for jq open-count gate.
Beginner: Start from template in this article.
Dev: CI counts status != active when lane required.
Tool 9 — Refund signal evening cousin
Lane: Refunds.
Job: Refund signal dashboard evening for teams new to refund CSV habit.
Beginner: Run evening tutorial once; this listicle is fest-week bookmark stack.
Dev: Cross-link receipt paths on BUILD_RECEIPT.
Tool 10 — Crash log folder + playtest tools
Lane: Uninstalls.
Job: Tie uninstall notes to 5-day crash log challenge folder structure.
Beginner: One repro folder per weekday D+1…D+5.
Dev: Link folder path on dashboard uninstalls-01 notes field.
Tool 11 — Discord webhook (optional daily metrics)
Lane: Team ops.
Job: Post "D+N metrics GREEN" only after verify script passes—prevents panic threads.
Beginner: Webhook message includes build_id + refund rate + wishlist delta.
Dev: Fail webhook step if post_fest_analytics_ok false.
Tool 12 — refund_threshold_v1.json
Lane: Refunds.
Job: T4 documented warn/stop thresholds—not gut feel.
Beginner: Set warn/stop % before looking at numbers (avoid moving goalposts).
Dev: jq compare daily export against threshold file.
Tool 13 — PowerShell / bash facilitator card
Lane: Ritual.
Job: Printable first-week card stored beside branch unset card.
Beginner: Check boxes in order crosswalk → refunds → uninstalls → wishlist.
Dev: Same order as T1 dependency chain.
Tool 14 — JSON Schema (optional strict mode)
Lane: Validation.
Job: Validate dashboard + receipt JSON in CI beyond jq boolean gates.
Beginner: Skip until team files second fest receipt—jq enough for v1.
Dev: Pin schema version beside receipt receipt_version.
Deep dives — highest-friction lanes
Tool 2 expanded — Refund export ritual
- Open Steamworks → Sales & Activations → select post-fest date range.
- Export CSV; store under
release-evidence/analytics/exports/YYYY-MM-DD_refunds.csv. - Compute daily
refund_rate_pct; log onpost_fest_daily_export_2026.csvrow. - Compare to
refund_threshold_v1.json—YELLOW at warn, RED at stop. - If RED: open crash folder before blaming discovery—pair forward #4 case study if crash spike confirmed.
- Mark dashboard
refunds-01active only after day-one export exists.
Tool 10 expanded — Uninstall notes without inventing metrics
Steam does not always give indie-friendly public uninstall dashboards—honest post-fest ops track proxy signals:
- Demo session length drop in playtest telemetry (if wired).
- Support tickets mentioning "couldn't launch" or "crashed at menu."
- Refund reason text clustering (when available).
- Whisper playtest batch forward #11 for quote-verified pain points—not invented uninstall %.
Log qualitative notes on dashboard uninstalls-01 with status: active and notes field—do not fabricate precise uninstall rates in BUILD_RECEIPT.
Tool 3 expanded — Wishlist velocity vs plateau
- Export daily net wishlist delta D+1…D+7.
- Run plateau playbook ratio checks when delta flatlines.
- If plateau confirmed, defer capsule refresh until analytics receipt GREEN—store edits without signal discipline duplicate effort.
- Forward D+14 to 16 velocity tools when first week receipt files.
Printable post-fest analytics facilitator card
Store in release-evidence/analytics/POST_FEST_ANALYTICS_FACILITATOR_CARD.md:
# Post-October fest analytics — first week (T1–T6)
build_id: __________ post_fest_week: __________ date: __________
CROSSWALK
[ ] branch_unset_ok true (unset receipt path exists)
REFUNDS
[ ] D+1 export archived
[ ] refund_rate below stop threshold
UNINSTALLS
[ ] crash repro folder path documented
[ ] uninstall notes on dashboard (honest proxies)
WISHLIST
[ ] daily export row D+1…D+7
[ ] plateau playbook ratios checked if flat
RECEIPT
[ ] post_fest_analytics_tools_receipt_v1.json — T1–T6 honest
[ ] verify_post_fest_analytics_tools.sh exit 0
[ ] BUILD_RECEIPT post_fest_analytics_ok updated
[ ] Forward #3 retention challenge scheduled
Sign: __________ UTC: __________
Integration with November cluster
| Cousin | Relationship |
|---|---|
| Branch unset #1 | T1 reads branch_unset_ok |
| Wishlist plateau | Diagnosis when wishlist lane flat |
| 16 velocity tools | D+14 follow-through—not first week |
| Refund signal evening | Beginner refund CSV habit |
| Forward #3 challenge | R1–R5 consumes analytics receipt |
| Forward #5 uninstall trend | G1–G6 narrative when curve shifts |
| Forward #12 capstone | Indexes post_fest_analytics_ok in F5 sweep |
Enterprise and partner diligence notes
- Data handling: Redact player identifiers from crash logs before partner zip.
- Export retention: Keep daily CSV exports seven years if publisher contract requires—path in receipt
notes. - Multi-SKU: Split dashboard lanes per app ID if demo and full game share studio account.
- Governance: Studio lead signs T6 latch—not only engineering auto-CI.
Proof table (sample GREEN row)
| Field | Value | Source |
|---|---|---|
build_id |
2026-11-01-trunk01 | BUILD_RECEIPT |
branch_unset_ok |
true | unset receipt |
refund_rate_pct D+1 |
2.1 | Sales export |
wishlist_net_delta D+1 |
42 | daily export |
| T4 | PASS | threshold file exists |
post_fest_analytics_ok |
true | receipt after T6 |
Scenarios A–G
A — Branch unset YELLOW but analytics started
T1 fails—do not set post_fest_analytics_ok until unset evening GREEN.
B — Refund spike day one
T4 YELLOW at warn—open crash folder; forward #4 if fix-forward needed.
C — Wishlist flatlines D+3
Run plateau playbook—analytics receipt stays GREEN if lanes active and exports exist.
D — No telemetry uninstall %
Use honest proxy notes on uninstalls-01—do not invent metrics in receipt.
E — Marketing wants capsule refresh before analytics
Defer until T6 GREEN—pair badge-strip art pass #6 (Z1–Z6) after analytics baseline filed.
F — Multi-region refund lag
Document export UTC time in CSV notes—compare day-over-day at same hour.
G — Publisher asks for post-fest zip
Attach receipt JSON + daily export CSV + threshold file—not Discord screenshots alone.
Common mistakes
- Celebrating fest downloads while ignoring D+1 refund export.
- Setting
post_fest_analytics_okwithoutbranch_unset_okupstream. - Mixing wishlist and refund charts on one axis—hides spike shape.
- Fabricating uninstall percentages Steam does not provide.
- Skipping daily export habit then wondering why retention challenge #3 has no baseline.
- Duplicating 16 velocity tools in week one—different window.
RED / YELLOW / GREEN routing
| Color | Condition | Action |
|---|---|---|
| RED | T1 fail or refund above stop % | Block post-fest patch; triage crashes |
| YELLOW | Refund at warn or uninstall notes elevated | Run forward #3 nightly card |
| GREEN | T1–T6 pass | Proceed to retention challenge + jq weekly #7 |
Key takeaways
- Post-fest week needs four lanes — refunds, uninstall proxies, wishlist velocity, BUILD_RECEIPT crosswalk.
- Gates T1–T6 run on
post_fest_analytics_tools_receipt_v1.jsonwith daily export CSV evidence. - Latch
post_fest_analytics_ok: trueonly whenbranch_unset_okupstream and lanes are active. - Four-tool minimum beats fourteen bookmarks hoarded without CSV habit.
- T1 and T4 are hard blockers before forward #3 retention challenge.
- Pair branch unset #1 for upstream branch truth.
- Pair wishlist plateau playbook when wishlist lane flatlines.
- 16 velocity tools own D+14—not this first-week listicle.
- Live-ops analytics resource bookmark hub for broader stack.
- Forward #3 five-night retention challenge consumes this receipt—file T6 before R1.
- Pair 5-night retention challenge #3 (R1–R5,
post_fest_retention_ok) after T6 GREEN—nightly one-metric cards D+1…D+5. - When T4 RED and R3 smoke fails, open crash recovery case study #4 (C1–C6,
crash_recovery_ok)—C3 batch-lag audit consumes this listicle's refund export timestamps. - After T6 GREEN and R5 pass, file uninstall curve trend playbook #5 (G1–G6,
post_october_uninstall_curve_ok)—G2 consumes this listicle's D+1…D+7 uninstall proxy CSV rows. - After uninstall curve G1–G6 GREEN, run badge-strip art pass #6 (Z1–Z6,
capsule_badge_strip_ok) before November sprint capsule publish. - After badge-strip Z6 GREEN, run jq weekly retention #7 (J1–J6,
post_october_retention_weekly_ok) each Monday—hashes demo download + crash proxy rows from this listicle's CSV.
FAQ
How is this different from the 16 post-fest wishlist velocity tools listicle?
16 velocity tools targets D+14 wishlist follow-through with V1–V6 gates. This URL is first-week post-October fest with four lanes including refunds and uninstall proxies.
Do I need exact uninstall percentages?
No—use honest proxy notes and crash folders. Do not invent uninstall rates in BUILD_RECEIPT.
Can I run analytics before branch unset?
T1 requires branch_unset_ok—metrics attributed to wrong branch lie to the team.
What refund rate should I use for T4?
Set refund_threshold_v1.json before fest ends based on genre norms—document warn/stop % in receipt notes.
Where does the retention challenge fit?
Forward blog #3 R1–R5 assumes post_fest_analytics_ok baseline exists—schedule after T6 GREEN.
Related reads
- Your First SteamFest Branch Unset and Default Branch Return Receipt After October Live
- Post-Next-Fest Wishlist Plateau Diagnostic Playbook for Small Teams
- 16 Free Steam Daily Export Wishlist Velocity Post-Fest Follow-Through Tools
- Your First Steam Refund Signal Dashboard One Evening
- 5-Night Post-October Fest Demo Retention Response Challenge — November cluster #3; R1 consumes
post_fest_analytics_okfrom this listicle - We Recovered Steam Demo Crash Rate Spike After October Fest Without Rollback — November cluster #4; C1/C3 consume T4 refund export + lag audit when R3 stays RED
- November 2026 Post-October Fest Uninstall Curve Trend Playbook — November cluster #5; G1/G2 consume T3 uninstall proxy lane + daily export CSV
- 25 Free Live-Ops Analytics Tools Indie Games 2026 Edition
- Friday October Upload Capstone Before Fest Live
- Official docs: Steamworks Sales Reports
Closing
The first week after October fest is when refunds, uninstall signals, and wishlist velocity tell you whether the demo survived contact with real players—not when the team should still be celebrating download screenshots. Wire the four-tool minimum, walk gates T1–T6, and let post_fest_analytics_ok be a dashboard you filed on purpose—not a gut feeling left over from fest live. When forward retention challenge reads one green latch backed by daily exports and honest proxy notes, November sprint stops being metric theater and becomes a row you can defend in standup.