Skip Navigation
Show nav
Heroku Dev Center Dev Center
  • Get Started
  • Documentation
  • Changelog
  • Search
Heroku Dev Center Dev Center
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
    • .NET
  • Documentation
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log in or Sign up
View categories

Categories

  • Heroku Architecture
    • Compute (Dynos)
      • Dyno Management
      • Dyno Concepts
      • Dyno Behavior
      • Dyno Reference
      • Dyno Troubleshooting
    • Stacks (operating system images)
    • Networking & DNS
    • Platform Policies
    • Platform Principles
    • Buildpacks
  • Developer Tools
    • AI Tools
    • Command Line
    • Heroku VS Code Extension
  • Deployment
    • Deploying with Git
    • Deploying with Docker
    • Deployment Integrations
  • Continuous Delivery & Integration (Heroku Flow)
    • Continuous Integration
  • Language Support
    • Node.js
      • Node.js Behavior in Heroku
      • Troubleshooting Node.js Apps
      • Working with Node.js
    • Ruby
      • Rails Support
        • Working with Rails
      • Working with Bundler
      • Working with Ruby
      • Ruby Behavior in Heroku
      • Troubleshooting Ruby Apps
    • Python
      • Working with Python
      • Background Jobs in Python
      • Python Behavior in Heroku
      • Working with Django
    • Java
      • Java Behavior in Heroku
      • Working with Java
      • Working with Maven
      • Working with Spring Boot
      • Troubleshooting Java Apps
    • PHP
      • Working with PHP
      • PHP Behavior in Heroku
    • Go
      • Go Dependency Management
    • Scala
    • Clojure
    • .NET
      • Working with .NET
  • Databases & Data Management
    • Heroku Postgres
      • Postgres Basics
      • Postgres Getting Started
      • Postgres Performance
      • Postgres Data Transfer & Preservation
      • Postgres Availability
      • Postgres Special Topics
      • Migrating to Heroku Postgres
    • Heroku Key-Value Store
    • Apache Kafka on Heroku
    • Other Data Stores
  • AI
    • Inference Essentials
    • Inference API
    • Inference Quick Start Guides
    • AI Models
    • Tool Use
    • AI Integrations
    • Vector Database
  • Monitoring & Metrics
    • Logging
  • App Performance
  • Add-ons
    • All Add-ons
  • Collaboration
  • Security
    • App Security
    • Identities & Authentication
      • Single Sign-on (SSO)
    • Private Spaces
      • Infrastructure Networking
    • Compliance
  • Heroku Enterprise
    • Enterprise Accounts
    • Enterprise Teams
  • Patterns & Best Practices
  • Extending Heroku
    • Platform API
    • App Webhooks
    • Heroku Labs
    • Building Add-ons
      • Add-on Development Tasks
      • Add-on APIs
      • Add-on Guidelines & Requirements
    • Building CLI Plugins
    • Developing Buildpacks
    • Dev Center
  • Accounts & Billing
  • Troubleshooting & Support
  • Integrating with Salesforce
    • Heroku AppLink
      • Getting Started with Heroku AppLink
      • Working with Heroku AppLink
      • Heroku AppLink Reference
    • Heroku Connect (Salesforce sync)
      • Heroku Connect Administration
      • Heroku Connect Reference
      • Heroku Connect Troubleshooting
    • Other Salesforce Integrations
  • Deployment
  • Deployment Integrations
  • Heroku GitHub Enterprise Server Integration Using GitHub Apps

Heroku GitHub Enterprise Server Integration Using GitHub Apps

Table of Contents [expand]

  • Prerequisites
  • Set Up the Integration
  • Reconfigure Repo Access
  • View All Authorized Enterprise Server Orgs On Your Account
  • Connect or Disconnect an App From a Repo
  • Connect or Disconnect a Pipeline From a Repo
  • Uninstall the Integration
  • Limitations

Last updated February 05, 2026

This integration is only available for Heroku Enterprise customers.

The Heroku GitHub Enterprise Server Integration is the recommended way to integrate with GitHub. It uses GitHub Apps, which are more secure compared to personal OAuth tokens and offer more granular permissions. Using the integration, you don’t need to maintain a service account as a separate user as the GitHub app acts on its own behalf, taking actions via the API directly using its own identity.

This integration provides the following advantages over Heroku GitHub Deploys:

  • If the user who set up the integration leaves the GitHub org, deploys still work
  • Allow for more permissions and control for repos

After installing the integration on an Enterprise account, all Enterprise teams under that account must use this GitHub Enterprise Server integration for any new apps or pipelines.

Prerequisites

To set up the integration, you must have:

  • the manage permission for an active Heroku Enterprise account
  • full access to the GitHub Enterprise Server org that contains all the repos you want to use with this integration
  • no unowned pipelines
  • have the expiring user access tokens feature disabled in GitHub

If you have just closed your contract or are currently transitioning to Enterprise, wait for your Enterprise account to be created.

Set Up the Integration

After configuring this integration, there’s no easy way to switch back to your old configuration. Uninstalling the integration means disconnecting all your apps and pipelines and manually reconnecting to use personal OAuth tokens with Heroku GitHub Deploys.

 

Installing the integration doesn’t disconnect any existing connections with GitHub, but you must reconfigure any apps and pipelines you want to use this GitHub Enterprise Server integration.

You can install the integration from the Enterprise account’s Settings tab. All users with manage permission at the Enterprise account level can see the installation option.

GitHub Enterprise Server in Account Settings

Select Connect to get promoted for the url for the GitHub Enterprise Server and the name of the organization (within the GitHub Enterprise Server) that you want to install the GitHub App on, in order to start the app installation process.

Alt text

After filling out the modal and selecting Connect, you get redirected to the GitHub Enterprise Server to complete the GitHub App installation process.

Provide a name for this app and select Create GitHub App.

Alt text

All the repositories used across the entire Enterprise Account must be under the same GitHub org for this installation to work correctly.

Next, select all or a specific set of repositories to allowlist: Allowlist Specific Repos

Select Install & Authorize to complete the installation process and return to dashboard.heroku.com.

After installing the integration on an Enterprise account, all Enterprise teams under that account must use this GitHub Enterprise Server integration for any new apps or pipelines.

After installation is complete, the Settings tab updates to show the connected org:

Connected GitHub org

You can then reconfigure apps and pipelines to use the new GitHub app. Here’s an example of a pipeline’s Settings tab that uses the OAuth Heroku GitHub integration, with option to connect with the new integration instead:

Pipeline Settings

Reconfigure Repo Access

To reconfigure an existing GitHub App installation for the Enterprise Server integration, go to the Settings tab of the Enterprise account.

Alt text

Select Configure/Uninstall on GitHub to get redirected to the GitHub App’s settings page where you can change the repository access or uninstall the GitHub App entirely:

Choose repos that the GitHub App can access

View All Authorized Enterprise Server Orgs On Your Account

If you’re a member of more than one Enterprise Account using this new integration, you can see all the authorized GitHub apps in your account.

  1. Select Account Settings from under your profile
  2. Select the Applications tab.
  3. View the list of authorized GitHub apps and connected org in the Third-Party Services section.

Installation Overview

This example shows a user with the GitHub OAuth integration and the GitHub Enterprise Server integration. There’s no option to reauthorize or revoke access from GitHub Enterprise Server here because that integration is at the Enterprise account level, not your own account. To reauthorize, go the Enterprise account’s Settings tab. To revoke access, refer to Uninstalling the Integration.

Connect or Disconnect an App From a Repo

If your account is already connected to a GitHub Enterprise Server org, you can connect an individual app to a repo on it:

  1. Select the app from your dashboard.
  2. Go to the Deploy tab for the app.
  3. Search for the repo to connect to.

Repo search for apps

Select Disconnect to disconnect a repo from the app.

Disconnect repo from app

Connect or Disconnect a Pipeline From a Repo

If your account is already connected to a GitHub Enterprise Server org, you can connect a pipeline to a repo on it:

  1. Select the pipeline from your dashboard.
  2. Go to the Settings tab for the pipeline.
  3. Search for the repo to connect to.

Repo search for pipelines

Select Disconnect to disconnect a repo from the pipeline.

Disconnect repo from pipeline

Uninstall the Integration

Uninstalling disconnects all your pipelines and apps. You must manually connect apps and pipelines to the correct GitHub repo if you want to use personal OAuth tokens again.

To uninstall:

  1. Go to the Settings tab of the Enterprise account
  2. Select the dropdown in the GitHub Enterprise Server panel
  3. Select Configure/Uninstall on GitHub

Alt text

After redirecting to the GitHub App settings page, select Uninstall.

Alt text

Limitations

You must disable the expiring user access tokens feature in GitHub Enterprise Server to allow for proper functioning of this integration. That feature forces users to log in every 8 hours to ensure that their credentials and access remain valid. Failure to do so results in 401 Unauthorized errors returned from the API when attempting to access information about the GitHub Enterprise Server and GitHub app. Currently, the Heroku dashboard doesn’t support handling these errors appropriately.

There’s a 1:1 relationship between your Enterprise account and GitHub org. If you have any pipelines using repositories outside the GitHub org, fork and move them to that main GitHub org before configuring the integration.

You can only link a GitHub org to one Enterprise account at a time. If you linked your GitHub org to an Enterprise Account, and want to link it to a different one, you have to uninstall the integration first.

This integration doesn’t work for GitHub orgs that restrict access by IPs.

Heroku Buttons won’t work with private repositories if the user trying to launch it doesn’t have access to the repos.

Feedback

Log in to submit feedback.

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure
  • .NET

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing
  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Github
  • LinkedIn
  • © 2026 Salesforce, Inc. All rights reserved. Various trademarks held by their respective owners. Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States
  • heroku.com
  • Legal
  • Terms of Service
  • Privacy Information
  • Responsible Disclosure
  • Trust
  • Contact
  • Cookie Preferences
  • Your Privacy Choices