Stackwatch Docs
Service Setup

GitHub Actions

Track Actions minutes, runner breakdowns, and storage limits

Stackwatch tracks your GitHub Actions minutes, packages bandwidth, and shared storage against your plan's monthly limits.

If you signed up or logged in with GitHub, you can connect your GitHub integration in one click — no token required.

  1. Go to Integrations in the Stackwatch dashboard
  2. Find GitHub Actions and click Connect
  3. Click Use my GitHub account at the top of the dialog
  4. GitHub will ask you to approve read:user, read:org, and repo permissions — these are the same scopes required for a PAT
  5. You're redirected back and the integration is created automatically

If you haven't linked a GitHub account yet, you'll see a Connect GitHub account prompt instead. Clicking it links your GitHub identity to your Stackwatch account and creates the integration in one step.

Connecting via Personal Access Token

Use this method if you prefer not to use OAuth, need to connect a separate GitHub account, or signed up with email or Google.

Step 1 — Create a Personal Access Token

  1. Go to github.com/settings/tokens
  2. Click Generate new token → Generate new token (classic)
  3. Give it a descriptive name, e.g. stackwatch-monitoring
  4. Set an expiry that suits your needs (90 days recommended — you'll need to reconnect when it expires)
  5. Select the required scopes:
ScopeWhy it's needed
repoRequired to list repositories and read workflow run data for the per-repo breakdown (Pro)
read:userRequired to read personal account billing data
read:orgRequired to read organization billing data

Select all three. If you only need personal-account billing and are on the Free tier, read:user alone is sufficient — but adding repo and read:org ensures everything works as you upgrade.

  1. Click Generate token and copy it immediately — GitHub only shows it once.

Step 2 — Add the integration in Stackwatch

  1. Navigate to your project in the Stackwatch dashboard
  2. Go to the project's Integrations tab
  3. Find GitHub Actions and click Add account
  4. Paste your token into the Personal Access Token field
  5. Give the integration a label (e.g. my-org or personal)
  6. Click Connect

To monitor an organization's billing instead of your personal account, enter the org slug (e.g. acme-corp from github.com/acme-corp) in the Organization name field. Leave it blank for personal account billing.

What gets tracked

Free tier

MetricDescription
Actions minutesTotal minutes used vs your monthly included minutes

Pro tier (additional)

MetricDescription
Actions minutes — UbuntuUbuntu runner minutes
Actions minutes — macOSmacOS runner minutes (billed at 10× multiplier by GitHub)
Actions minutes — WindowsWindows runner minutes (billed at 2× multiplier by GitHub)
Packages bandwidthGitHub Packages bandwidth used vs included GB
Actions storageShared storage used (artifacts, caches, packages) vs 0.5 GB free limit
Per-repo breakdownApproximate minutes per repository this month, derived from workflow run durations across your 20 most recently active repos

Note on per-repo minutes: These are approximated from workflow run durations, not the exact billing minutes GitHub charges. They're useful for identifying which repos are driving usage but may not match your GitHub billing page exactly.

Troubleshooting

"Invalid or expired Personal Access Token" Your token has expired or was revoked. Generate a new one and reconnect from the project's Integrations tab. If you originally connected via OAuth, click Connect on the GitHub integration and use Use my GitHub account again to refresh the token.

"Token lacks required permissions" You're missing a scope. Ensure read:user is checked for personal billing, read:org for org billing, and repo for per-repo breakdown (Pro). If you connected via OAuth, disconnect and reconnect — GitHub will prompt you to approve the updated permissions.

"No Actions billing data for this plan" The billing API returned a 404. This usually means the account has no GitHub Actions billing data exposed — common on free personal accounts with no Actions usage, and on accounts using GitHub's newer billing platform (post-2023). Data will appear once usage is recorded under the legacy billing system.

Organization vs personal mismatch If you're trying to monitor an org but left the org field blank (or vice versa), the wrong billing endpoint will be called. Check that the org slug in Stackwatch matches exactly what appears in your GitHub org URL.

Reconnecting / rotating credentials

OAuth: Click Connect on the GitHub integration and use Use my GitHub account again. This refreshes the stored token without creating a duplicate integration.

PAT: When your token expires, generate a new one with the same scopes, then go to Integrations, find your GitHub integration, click the edit (pencil) icon, paste the new token, and save. Stackwatch will resume polling on the next cycle.

On this page

    Docs