We Recovered a Dual-SKU Wishlist Split After itch Demo Diluted Steam October Fest Traffic - 2026 Case Study

This is a synthesized case study—a field pattern from September 2026 dual-SKU weeks where teams filed dual_sku_dress_rehearsal_receipt_v1.json with dual_sku_rehearsal_ok: true, watched D1–D6 go GREEN, boosted an itch “Play in browser” CTA across socials, and still watched Steam wishlist adds flatten while itch page views spiked. Marketing screenshots looked healthy. Steamworks traffic looked soft. October Next Fest was three weeks out. It is not a named studio turnaround. There are no invented wishlist counts, no fake SteamDB charts, and no fabricated conversion percentages.
What follows is the failure signature, a D1–D4 recovery timeline, dual_sku_wishlist_recovery_receipt_v1.json with gates R1–R6, a funnel CSV crosswalk, announcement stop rules, and a fail-closed verify script teams run when dual-depot rehearsal passed but discovery still leaks away from Steam.
Pair itch + Steam dual-depot dress rehearsal, itch browser demo is not free marketing, itch PWYW vs Steam demo economics, 16 free wishlist velocity tools, Help #55 forward, forward blog #6 soft-launch window trend.
Non-repetition note: Dress rehearsal owns D1–D6 / dual_sku_rehearsal_ok prevention. Economics worksheet owns cash/runway math. Browser demo opinion owns scope honesty argument. Wishlist velocity listicle owns export tooling. This URL owns wishlist-split recovery after rehearsal GREEN—funnel triage and announcement stop rules, not another dress rehearsal evening.
Why this matters now (September → October Next Fest 2026)
- Rehearsal proves bytes, not discovery math. D1–D6 can match
build_idwhile social CTAs still send 80% of clicks to itch. - itch “play now” is frictionless. Steam wishlist is an additional click; browsers take the easy path when both links sit side by side without hierarchy.
- October fest reward is Steam-centric. Wishlists and fest hub traffic on Steam matter more for Next Fest than unscoped HTML5 plays—even when HTML5 is useful QA.
- GREEN boolean theater. Producers cite
dual_sku_rehearsal_okandchannel_label_matchwhile wishlist velocity charts are flat. - Soft-launch calendars collide. Forward blog #6 soft-launch windows assume dual-SKU + freeze + age packet gates; wishlist split is the failure that makes soft-launch “success” look like fest failure.
Direct answer: Recovery required funnel CSV crosswalk of itch visits vs Steam wishlist adds, announcement hierarchy stop rules, CTA inventory purge, optional itch soft-close or Steam-first framing, re-proof dual-SKU labels, file recovery receipt with R1–R6, and dual_sku_wishlist_recovery_ok: true before treating October prep as healthy.
Beginner quick start — what recovered means here
Recovered in this pattern means:
- Admitted that dual-SKU rehearsal GREEN did not prove Steam discovery health.
- Measured a split using daily itch page views / plays vs Steam wishlist adds (same UTC window).
- Inventoried every public CTA that pointed to itch without a Steam-first pairing.
- Applied stop rules (pause itch-primary socials, fix Steam store CTA, optional temporary itch framing).
- Re-ran dress rehearsal smoke so players who still hit itch see the same
build_label. - Filed
dual_sku_wishlist_recovery_receipt_v1.jsonwith R1–R6 GREEN and set BUILD_RECEIPTdual_sku_wishlist_recovery_ok: true.
Success check: Across a measured post-fix window, Steam wishlist adds resume on a documented band relative to referral traffic, itch CTAs no longer outrank Steam on primary social posts, and funnel CSV rows exist for before/after—not vibes.
The player-facing failure (typical signals)
| Channel | Typical wording |
|---|---|
| Marketing channel | "itch is crushing it—why are wishlists flat?" |
| Steam discussions | "I played on itch—where do I wishlist?" buried or unanswered |
| Analytics | itch page views up; Steam visits weak; wishlists plateau |
Internal #fest |
"Rehearsal passed Tuesday—stores are GREEN" |
| Press kit footnotes | Both URLs equal-weight; creators pick itch |
No dollar claims required. The pattern is discovery attribution split, not economics alone.
Timeline D1–D4 (synthetic September window)
D1 — Detection (same day green flags mislead)
Dress rehearsal filed GREEN. Social calendar launches dual-link posts (itch first, Steam second). Within 48 hours wishlist velocity tool exports show adds flattening while itch analytics rise.
R1 action: Open incident note; copy last dual_sku_dress_rehearsal_receipt path; do not declare steam broken without funnel rows.
D2 — Measure funnel (CSV crosswalk)
Export:
- Steam wishlist adds / unique visits (partner export or disciplined daily sheet from velocity tools)
- itch page views + play clicks
- UTM or referrer notes if available
Build funnel_crosswalk_v1.csv:
date_utc,steam_visits,steam_wishlist_adds,itch_views,itch_plays,cta_primary,notes
2026-09-10,420,38,910,640,itch,rehearsal_ok dual link
2026-09-11,390,31,1200,880,itch,tiktok itch-first
2026-09-12,410,29,1400,1010,itch,split_confirmed
R2 action: Confirm split signature—itch engagement rising while Steam adds stall or fall for ≥2 consecutive days under similar content push.
D3 — Inventory CTAs and apply stop rules
List every live CTA:
| Surface | Primary URL | Steam-first? | Owner |
|---|---|---|---|
| itch page | play in browser | n/a | @web |
| Twitter/X pinned | itch | NO | @social |
| Steam store news | steam | YES | @release |
| Discord welcome | itch | NO | @community |
| Press kit PDF | itch = Steam | NO | @press |
Stop rules (pick minimum viable set):
- Pause itch-first social posts for 72 hours.
- Steam-first on all remaining posts (
Wishlist on Steamthen optionalbrowser prototype on itch). - itch page: add clear “Steam wishlist for Next Fest” banner above play button.
- Optional: soft-close itch free-play for fest window if economics allow (opinion).
- Do not silently change
build_idwithout re-running dress rehearsal.
R3 action: File cta_inventory_v1.md + applied stop-rule IDs.
D4 — Re-prove dual-SKU parity + close incident
Re-run D3–D5 from dress rehearsal so itch soft-close or banner change did not drift labels. Capture post-stop funnel days. File recovery receipt R1–R6.
R4–R6 action: Post-window CSV shows Steam adds recovering on the studio’s chosen band; BUILD_RECEIPT latches recovery OK; producers unpause Steam-first socials under documented hierarchy.
Gates R1–R6
| Gate | Question | Required evidence | Fail action |
|---|---|---|---|
| R1 | Is dual-SKU rehearsal context attached? | Path to prior dress rehearsal receipt | Do not invent channel matrix mid-incident |
| R2 | Is wishlist split measured? | funnel_crosswalk_v1.csv ≥2 day signature |
Keep measuring; no CTA purge yet |
| R3 | Are CTAs inventoried with stop rules? | cta_inventory_v1.md + applied rule IDs |
Inventory before guessing which post “caused” it |
| R4 | Is Steam-first hierarchy live on primary surfaces? | Screenshots of pinned posts + store news + Discord | Fix ownership; re-capture |
| R5 | Does dual-SKU label/byte proof still hold after CTA changes? | Re-smoke itch (if live) + Steam; channel_label_match true |
Re-run dress rehearsal blocks |
| R6 | Is recovery receipt filed on BUILD_RECEIPT? | dual_sku_wishlist_recovery_ok: true |
Block “fest discovery healthy” claims |
Funnel CSV crosswalk (developer sheet)
Recommended columns:
date_utc
steam_unique_visits
steam_wishlist_adds
steam_add_rate (adds/visits)
itch_views
itch_plays
itch_play_rate
cta_primary (steam|itch|equal)
social_spend_usd_optional
notes
Beginner reading tip: You do not need perfect Steam partner exports on Day 1. A disciplined daily manual count beats no sheet. Use listicle tools when ready (wishlist velocity).
Developer tip: Compare rates, not only raw wishlists. Traffic seasonality can hide splits when both stores get a spike.
Producer tip: Treat a flat wishlist sheet during an itch-heavy social week as an ops incident until R2 either confirms or clears the split. Silence is never a diagnosis—immediately open the funnel CSV the same day you first notice the itch spike.
dual_sku_wishlist_recovery_receipt_v1.json
{
"schema": "dual_sku_wishlist_recovery_receipt_v1",
"incident_id": "WS-2026-09-12",
"detected_utc": "2026-09-12T16:00:00Z",
"closed_utc": "2026-09-16T20:00:00Z",
"dress_rehearsal_receipt": "release-evidence/dual-sku/2026-09-08-october-rehearsal/dual_sku_dress_rehearsal_receipt_v1.json",
"funnel_csv": "release-evidence/dual-sku/wishlist-split-2026-09/funnel_crosswalk_v1.csv",
"cta_inventory": "release-evidence/dual-sku/wishlist-split-2026-09/cta_inventory_v1.md",
"stop_rules_applied": ["SR1", "SR2", "SR3"],
"post_window_days": 3,
"gates": {
"R1": "PASS",
"R2": "PASS",
"R3": "PASS",
"R4": "PASS",
"R5": "PASS",
"R6": "PASS"
},
"dual_sku_wishlist_recovery_ok": true,
"notes": "itch kept live with Steam-first banner; no soft-close required."
}
BUILD_RECEIPT crosswalk:
{
"dual_sku_rehearsal_ok": true,
"dual_sku_wishlist_recovery_ok": true,
"dual_sku_wishlist_recovery_receipt": "release-evidence/dual-sku/wishlist-split-2026-09/dual_sku_wishlist_recovery_receipt_v1.json"
}
verify_dual_sku_wishlist_recovery.sh
#!/usr/bin/env bash
set -euo pipefail
R="${1:-release-evidence/dual-sku/wishlist-split-latest/dual_sku_wishlist_recovery_receipt_v1.json}"
test "$(jq -r .dual_sku_wishlist_recovery_ok "$R")" = "true"
for g in R1 R2 R3 R4 R5 R6; do
test "$(jq -r ".gates.$g" "$R")" = "PASS"
done
test -f "$(jq -r .funnel_csv "$R")"
test -f "$(jq -r .cta_inventory "$R")"
test -f "$(jq -r .dress_rehearsal_receipt "$R")"
echo "dual_sku_wishlist_recovery_ok"
Announcement hierarchy (stop-rule detail)
| Priority | Message | Allowed when |
|---|---|---|
| P0 | Steam wishlist CTA only | During recovery window |
| P1 | Steam wishlist + itch secondary | After R4 PASS and 3-day post window |
| P2 | Equal dual links | Only if economics + discovery both GREEN for 14 days |
| P3 | itch play-first | Rare; document as subsidized discovery per economics worksheet |
Do not hide Steam. Recovery is hierarchy, not deletion of useful HTML5 QA—unless soft-close is intentional and advertised.
Proof table
| Artifact | Proves | Does not prove |
|---|---|---|
| Dress rehearsal receipt | Channel bytes/labels matched | Discovery attribution |
| Funnel CSV | Split signature measurable | Exact causal tweet ID |
| CTA inventory | Where hierarchy broke | That itch revenue is bad |
| Stop-rule screenshots | Steam-first live | Forever social discipline |
| R5 re-smoke | Labels still match after page edits | Wishlist guarantees |
| Recovery OK latch | Incident closed with evidence | Next soft-launch will not regress |
Scenarios A–G
A - Rehearsal missing entirely
Fail R1. Run dress rehearsal first—wishlist recovery without build_id truth creates two myths.
B - Wishlists flat, itch flat too
Not this failure signature. Check trailer, tags, or seasonal noise via velocity tools—do not purge itch CTAs without R2.
C - itch PWYW making money
Economics may keep itch live. Recovery still requires Steam-first hierarchy for fest window—money sheet and wishlist recovery can both be GREEN.
D - Creators only embed itch
Update press kit; send Steam key + wishlist link; note R3 inventory includes creator pins.
E - Stale WASM after banner edit
Butler push without D4 byte proof fails R5—follow WASM MIME help if players see old build.
F - Marketing refuses to un-pin itch
Producer fails R4 closed; leave incident open—do not latch recovery OK.
G - Soft-launch this month
Forward #6 trend playbook should treat dual_sku_wishlist_recovery_ok (or absence of split) as a soft-launch gate alongside freeze + age packet.
Worked incident narrative (synthetic, no fake counts)
Tuesday 10:00 — Dress rehearsal dual_sku_rehearsal_ok filed. Steam and itch share build_label fest_2026-09-08_a1b2.
Tuesday 18:00 — Social calendar posts itch-first dual links across three channels. Press kit lists both URLs with equal weight.
Thursday 09:00 — Marketing celebrates itch play spikes. Wishlist velocity sheet looks soft versus Tuesday baseline.
Thursday 11:00 — Incident opened. R1 attaches rehearsal path. R2 starts funnel CSV from Tuesday.
Thursday 15:00 — CTA inventory shows Discord welcome, Twitter pin, and press PDF all itch-primary. Stop rules SR1–SR3 applied: pause itch-first, Steam-first remaining posts, itch banner “Wishlist on Steam for Next Fest” above play.
Friday–Sunday — Post-window CSV continues. R4 screenshots captured. R5 re-smoke: Steam depot unchanged; itch etag unchanged after banner-only HTML.
Monday — R6 recovery receipt filed. BUILD_RECEIPT sets dual_sku_wishlist_recovery_ok. Social returns to P1 hierarchy (Steam wishlist primary, itch secondary). Soft-launch calendar marked clear of open wishlist-split incident.
No studio name. No invented “+27% wishlists.” The narrative exists so teams recognize time order—measure before purge, re-smoke after HTML edits, close after a window.
Printable recovery card
Dual-SKU Wishlist Split Recovery Card — September/October 2026
[ ] R1 Dress rehearsal receipt path attached
[ ] R2 funnel_crosswalk_v1.csv shows ≥2-day split signature
[ ] R3 cta_inventory_v1.md complete; stop rules IDs listed
[ ] R4 Steam-first live on pin / Discord / Steam news (screenshots)
[ ] R5 Re-smoke itch (if live) + Steam; channel_label_match true
[ ] R6 dual_sku_wishlist_recovery_receipt_v1.json + BUILD_RECEIPT latch
Incident ID: ____________ Owner: ____________
Post-window end UTC: ____________
Do NOT claim fest discovery healthy until R6 PASS.
Player-support reply templates (honest, short)
When someone says they played on itch and cannot find Steam:
Thanks for playing the browser build. For Steam Next Fest / wishlist updates, please use our Steam page: [store URL]. The browser build is a scope-limited prototype; Steam is the fest track.
When someone asks which build is “real”:
Both surfaces should show build label [build_label]. If yours differs, send a screenshot—we treat that as a dual-SKU ops incident, not a feature request.
Keep replies aligned with visible build label discipline.
Common mistakes
- Treating dress rehearsal GREEN as discovery GREEN.
- Deleting the itch page in panic without measuring.
- Dual-linking every post “fairly” during fest run-up.
- Measuring wishlists only on Sundays while ads ran Tue–Thu.
- Changing Steam store age/localization flags mid-incident without receipts.
- Inventing studio names and fake +40% recovery charts.
- Skipping R5 re-smoke after itch banner HTML edits.
- Closing the incident after one good Steam day.
Troubleshooting
“We don’t have Steam partner traffic exports.” Use daily wishlist add deltas + store visit estimates you can defend; document method in CSV notes.
“itch is our only live demo.” Optional soft-close to Steam demo depot for fest window; keep itch as patch QA internal until Next Fest ends.
“Wishlist recovered but refunds spiked.” Separate incident—wishlist adds ≠ build quality (refund dashboard cousin).
“channel_label_match false during recovery.” Fail R5; finish dress rehearsal before more social spend.
Format ladder
| Format | Job |
|---|---|
| Dress rehearsal tutorial | Prevent label/byte drift |
| This case study | Recover discovery split after GREEN bytes |
| Economics worksheet | Decide if itch stays subsidized |
| Browser demo opinion | Argue scope honesty |
| Forward Help #55 | Symptom-first fix article |
| Forward blog #6 | Soft-launch calendar gate model |
Schedule pairing for September 2026
| Day | Action |
|---|---|
| Before social dual-CTA | Dress rehearsal D1–D6 |
| Detection | R1–R2 funnel CSV |
| Same day | R3 CTA inventory + stop rules |
| +72h | R4 hierarchy screenshots |
| After page edits | R5 re-smoke |
| Close | R6 recovery latch → resume Steam-first P1 |
| Soft-launch week | Require no open wishlist-split incident |
Key takeaways
- Dual-SKU rehearsal GREEN can coexist with a wishlist split.
- Measure itch engagement vs Steam wishlist adds with a dated CSV (R2).
- Inventory CTAs before deleting storefronts (R3).
- Recovery is usually Steam-first hierarchy, not burn-it-all.
- Re-smoke after itch page edits (R5)—banners can hide WASM drift.
- File
dual_sku_wishlist_recovery_receipt_v1.jsonand latch recovery OK (R6). - Do not invent percentages—defend method notes in CSV.
- Economics and opinion pieces answer “should itch exist?”; this case answers “how did discovery split after GREEN bytes?”
- Forward soft-launch (#6) should gate on split recovery hygiene.
- Keep Help #55 for symptom-first readers later.
- Press kits must not equal-weight itch during fest run-up.
- Close incidents only after a documented post-window, not one good day.
FAQ
What is a dual-SKU wishlist split?
A period when itch (or another non-Steam SKU) absorbs discovery clicks so Steam wishlist adds stall relative to engagement elsewhere—often right after dual-link marketing launches.
Does rehearsal failure cause the split?
Not necessarily. Rehearsal can be GREEN. Split is a discovery hierarchy failure. Rehearsal failure is a separate build_id/channel_label_match problem.
Should we shut down itch for Next Fest?
Sometimes. Often Steam-first framing is enough. Use economics plus this receipt—not panic.
How long is the post-window?
Three calendar days is a practical minimum for R6; fourteen days if you spent heavily on itch-first ads.
Can we keep equal dual links after recovery?
Only after sustained GREEN discovery and explicit P2 decision. Default back to P1 for October.
Is this the same as Summer Sale wishlist decay?
No. Sale decay worksheets address sale-window rate bands on Steam. This case addresses multi-storefront discovery leakage before October fest.
What if we never had a dress rehearsal receipt?
Create one before claiming recovery closed—R1 and R5 need it.
Do we publish fake before/after charts?
No. Publish method, CSV schema, and qualitative stop rules. This article intentionally avoids fabricated conversion lifts.
What does “Steam-first” mean on Discord?
Put the Steam wishlist URL in the welcome channel and server description before the itch play link. Pin a single post that states the fest track is Steam. Keep itch in #web-qa if you need browser playtesters—do not lead every new member to HTML5 during September–October.
How do we hand this to soft-launch planning?
When forward blog #6 soft-launch windows land, require either (a) no open wishlist-split incident or (b) dual_sku_wishlist_recovery_ok: true plus a Steam-first P1 rule in the soft-launch calendar. Soft-launch ads that restart itch-first CTAs without a new R2 check reopen the incident.
Can one person own R1–R6 alone?
Yes for a solo studio. Prefer separating social owner (R3–R4) from build owner (R1/R5) when staffing allows so hierarchy changes do not skip re-smoke.
Related reads
- Your First itch.io + Steam Dual-Depot Dress Rehearsal Before October Upload Peak
- Your itch Browser Demo Is Not Free Marketing
- itch PWYW vs Steam Demo SKU Economics Worksheet
- 16 Free Steam Daily Export Wishlist Velocity Tools
- 5-Day Localization Freeze Gate Challenge
- 14 Free IARC PEGI ESRB Age-Rating Packet Tools
- August 2026 Soft-Launch Windows Before October Next Fest — G3 soft-window gate consumes recovery OK
- itch.io HTML5 WASM MIME Cache After Upload
- Your First Steam Refund Signal Dashboard
Closing
September dual-SKU weeks can look operationally healthy while discovery quietly leaks to itch. Admit the split, measure it, inventory CTAs, enforce Steam-first hierarchy for the fest window, re-smoke labels, and latch recovery only when R1–R6 are honest green.
dual_sku_rehearsal_ok means bytes agreed. dual_sku_wishlist_recovery_ok means discovery hierarchy agreed. October Next Fest needs both.
Keep the recovery card next to the dress rehearsal printable. When the next social calendar is drafted, check P0–P3 hierarchy before scheduling dual links. Prevention is cheaper than R2 CSV triage—but when the split arrives anyway, this receipt is how you close it without inventing a studio mythology.