GitHub Setup
Configure GitHub integration for your self-hosted PullApprove5 deployment.
Create a GitHub App
Fill in your details below and click "Create GitHub App" to open GitHub with the correct permissions pre-filled.
Use your GitHub Enterprise URL if applicable
The GitHub organization where the app will be created
The domain where your PullApprove5 instance will be hosted
Permissions
Events: push, pull_request, pull_request_review
Configure the GitHub App
After creating your GitHub App, you'll need to generate a few credentials from the app settings page before configuring your deployment.
Private Key
Click "Generate a private key" to download a .pem file. This is a multiline file — how you pass it as an environment variable depends on your deployment method. Some systems require you to replace newlines with literal \n characters, while others (AWS Secrets Manager, Vault, K8s Secrets) support multiline values natively. PullApprove normalizes line endings on startup, so both formats work.
Client Secret
Click "Generate a new client secret" and save the value.
Webhook Secret
Generate a random secret, for example:
python3 -c "import secrets; print(secrets.token_urlsafe(32))"
Paste this value into the Webhook secret field in your GitHub App settings.
Environment Variables
Set the following environment variables in your deployment.
# Public URL of your GitHub App (found on the app's settings page)
GITHUB_APP_URL=https://github.com/apps/pullapprove5-yourorg
GITHUB_APP_ID=123456
GITHUB_APP_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----\n"
GITHUB_WEBHOOK_SECRET=your-generated-webhook-secret
GITHUB_CLIENT_ID=Iv23_abc123def456
GITHUB_CLIENT_SECRET=your-client-secret
# GitHub Enterprise Server only
# GITHUB_API_BASE_URL=https://github.example.com/api/v3
# Status check name
# (default: "pullapprove5")
GITHUB_STATUS_CONTEXT=pullapprove5
# Comma-separated usernames to ignore webhooks from
# (e.g., your-app[bot])
GITHUB_WEBHOOK_SENDER_BLOCKLIST=your-app-name[bot]
Verify
Test that GitHub can deliver webhooks to your PullApprove5 instance:
- Go to your GitHub App settings page
- Click on the "Advanced" tab
- Scroll down to "Recent Deliveries"
- Click "Redeliver" on the ping webhook
- Verify the delivery shows a successful response (status 200)

If the webhook ping is successful, your self-hosted instance is ready. You can now install the GitHub App on repositories to start using PullApprove5.