# 6. Publishing Pitfalls
Part of [[Publishing to itch.io and Steam]]. Prev: [[5. Worked Example Ship a Classroom Build]].
## Secrets in the repository
Butler keys, SteamCMD passwords, Steam Guard codes, `config.vdf`, signing keystores, service accounts. Use secrets and `.gitignore`. If it was committed, **rotate** it; deleting the file from a later commit does not erase history ([[Version Control]]).
## Zipping or pushing the wrong directory
A wrapper folder so the player has to "open another folder," a zip of `MyProject/` including `Library`, or the Editor project itself. Upload the **player output**. Official butler note: a folder that contains exactly one `.zip` is auto-unzipped unless you pass `--no-auto-unzip` - know which behavior you wanted.
## Development / profiler / script-debug builds on a public channel
Fine for a private "qa" channel or a Steam beta, and only if labeled. Do not make testers think they installed a profiler.
## Clobbering channels and depots
`butler push …:windows` with a Linux folder. One Steam depot for two OSes. A second student pushing to the same `user/game:windows` and wiping the first slice.
## `--hidden` on an existing channel
Official butler behavior: `--hidden` only applies when **creating** a channel. A second hidden push errors. Use page visibility, a new channel name, or a draft project instead.
## `--userversion` does not sort the page
Itch orders by upload time. `0.2.0` pushed before a mistaken `0.1.9` rebuild can look confusing in the build list. Teach testers to read the string *and* the upload time.
## Upload succeeded, branch never set
SteamPipe can succeed while `default` (or the beta testers opted into) still points at an old build. The partner-site "set this branch to this build" step is part of the assignment.
## Invented Steamworks C# packages
You can ship a build with **no** Steamworks plugin. Adding Steamworks.NET or another wrapper is a separate, versioned decision. This series does not invent a version for one.
## IAP "just a button"
Out of scope. No `com.unity.purchasing`, no Economy, no ads in this course.
## WebGL on this assignment
Pointer only (Edit game → HTML5 tag, project kind HTML). The later **Web / WebGL Builds** queue item is the place for player settings, memory, and an itch HTML5 channel done properly.
## macOS notarization / Android keys ignored
If you do ship those platforms, follow the **current** platform docs. Do not copy a 2019 `codesign` blog post from memory.
## "It works in the Editor"
The assignment is the **downloaded or Steam-installed** build. Play Mode is not a store.
## CI pushed a failed artifact
A cancelled or red Unity job that still ran butler. Gate the push on a green build and on "the exe exists."
## Sources
- https://itch.io/docs/butler/pushing.html
- https://partner.steamgames.com/doc/sdk/uploading