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}
Both require read:builds. The deployments API is read-only - there is no POST /api/v1/projects/{project_id}/deployments. To record a deployment from your build pipeline, post to the deployment webhook below.
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