Steam Integration
Track your game deployments on Steam with build status monitoring.
Table of contents
- Overview
- Configuration
- Setup Steps
- Features
- API Endpoints
- Webhook Support
- Deployment Statuses
- Integration with SteamCMD
- Troubleshooting
- Limitations
- Best Practices
Overview
ButterStack integrates with Steam via the Partner Web API to track your deployments:
- Build status monitoring
- Branch/beta information
- Depot version tracking
- Live build detection
- Deployment lifecycle tracking
This is Stage 5 of the Asset Lineage Pipeline - tracking when your builds reach players.
Configuration
Connection Settings
| Field | Description | Required | Example |
|---|---|---|---|
steam_app_id | Your Steam App ID | Yes | 480 |
steam_depot_id | Depot ID (for specific depot tracking) | No | 481 |
steam_branch | Branch to monitor | No | public |
steam_poll_interval | How often to check status (seconds) | No | 300 |
Credentials
| Field | Description | Required |
|---|---|---|
publisher_key | Steamworks Publisher Web API Key | Yes |
Setup Steps
1. Get Your Publisher Key
- Log into Steamworks Partner Site
- Go to Users & Permissions
- Click Manage Group Permissions
- Generate or copy your Publisher Web API Key
Note: This key has access to all your apps. Keep it secure.
2. Find Your App ID
Your App ID is visible in the Steamworks dashboard URL:
https://partner.steamgames.com/apps/landing/480
^^^
App ID
3. Add the Integration
- Go to Project Settings > Integrations
- Click Add Integration
- Select Steam
- Enter your App ID and Publisher Key
- Click Test Connection
- Save the integration
4. Configure Monitoring
Set which branch to monitor (default is public):
public- Main release branchbeta- Beta testing branch- Custom branch names as configured in Steamworks
Features
Deployment Tracking
ButterStack tracks the deployment lifecycle:
pending → submitted → uploading → in_review → approved → live
↘ rejected
When you upload a build to Steam, ButterStack:
- Detects the new build via API polling
- Creates a
Deploymentrecord - Links it to the associated
BuildRun - Tracks status changes until the build goes live
Build Status
Check if a specific build is live:
- Which depot version is on which branch
- When the build was set live
- Build ID and description
Branch Information
View all branches/betas for your app:
- Branch name
- Access requirements (password, time-limited)
- Current build ID
Linking to Build Runs
Deployments automatically link to BuildRuns when:
- Build completes in Jenkins
- Build is uploaded to Steam
- ButterStack matches the build based on:
- Timestamp proximity
- Build description/notes
- Manual linking
API Endpoints
Steam Partner API
ButterStack uses these Steam endpoints:
| Endpoint | Purpose |
|---|---|
ISteamApps/GetAppBuilds/v1/ | Get build information |
ISteamApps/GetAppBetas/v1/ | Get branch/beta info |
ISteamApps/GetAppDepotVersions/v1/ | Get depot versions |
ButterStack API
List Deployments:
GET /api/v1/projects/{project_id}/deployments
Get Deployment:
GET /api/v1/projects/{project_id}/deployments/{deployment_id}
Create Deployment (manual):
POST /api/v1/projects/{project_id}/deployments
{
"platform": "steam",
"build_run_id": 123,
"steam_app_id": "480",
"steam_branch": "public"
}
Webhook Support
Steam doesn’t support outbound webhooks. ButterStack uses polling instead.
Deployment Webhook (from your build pipeline)
If you want faster detection, call ButterStack when you upload:
POST /webhooks/deployment?token={webhook_token}
{
"platform": "steam",
"event": "uploaded",
"steam_app_id": "480",
"build_id": "12345678",
"branch": "public"
}
Deployment Statuses
| Status | Description |
|---|---|
pending | Deployment initiated |
submitted | Build submitted to Steam |
uploading | Upload in progress |
in_review | Under Steam review (if applicable) |
approved | Approved for release |
live | Build is live on the branch |
rolled_back | Build was replaced |
Integration with SteamCMD
ButterStack tracks deployments made via SteamCMD.
Typical Upload Flow
- Build completes in Jenkins
- Jenkins runs SteamCMD to upload:
steamcmd +login user pass +run_app_build app_build.vdf +quit - ButterStack detects new build via API polling
- Deployment record created and linked
Build VDF Example
"AppBuild"
{
"AppID" "480"
"Desc" "Build 123 - PROJ-456 new weapons"
"ContentRoot" "./build/Steam"
"BuildOutput" "./build/output"
"Depots"
{
"481"
{
"FileMapping"
{
"LocalPath" "*"
"DepotPath" "."
"recursive" "1"
}
}
}
}
Troubleshooting
Connection Failed
Error: Invalid publisher key
- Verify key is from Publisher Web API (not regular Steam API)
- Check key hasn’t been regenerated
- Ensure account has app access
App Not Found
Error: App ID not found
- Verify App ID is correct
- Ensure your publisher account has access to the app
Build Status Not Updating
- Check poll interval (default 5 minutes)
- Verify branch name matches exactly
- Review ButterStack logs for API errors
Rate Limiting
Error: 429 Too Many Requests
- Increase
steam_poll_interval - Steam limits API calls per key
Limitations
- Read-only: ButterStack cannot trigger uploads to Steam
- Polling-based: No real-time webhooks from Steam
- Publisher key required: Regular Steam API keys won’t work
- No store page access: Only app/depot build information
Best Practices
- Secure your publisher key - It has broad access
- Use meaningful build descriptions - Helps with linking
- Set appropriate poll interval - Balance freshness vs API limits
- Integrate with Jenkins - Notify ButterStack when uploading
- Track multiple branches - Create separate integrations per branch if needed