Back to PullPing
THE PULLPIG GUIDE

A quieter workflow.
Start here.

Everything you need to connect GitHub and Slack.

Connect the landing page to PullPing.

The landing page and the existing Fastify service run separately. Use Node.js 24 LTS and install dependencies from the repository root.

npm ci
npm run build

Configure the backend with the repository’s .env.example. Load those variables into your process environment before starting the server.

npm start

Copy web/.env.example to web/.env.local. Set PULLPIG_API_URL to your backend origin and SITE_URL to your landing page origin.

Use HTTPS in production. Local development can use http://localhost:3001 for the backend.

npm run start:web

Set PORT=3001 for the backend when you run both services locally. The frontend uses port 3000 by default.

Keep OAuth callbacks and webhook URLs on the backend’s PUBLIC_BASE_URL. The landing page starts the existing install flows.

Add PullPing to Slack.

  1. Create a Slack App with the chat:write and commands OAuth scopes.
  2. Set the redirect URL to PUBLIC_BASE_URL/auth/slack/callback.
  3. Configure SLACK_OAUTH_CLIENT_ID, SLACK_OAUTH_CLIENT_SECRET, and SLACK_SIGNING_SECRET on your backend.
  4. Point the /pullping slash command to PUBLIC_BASE_URL/slack/commands.
  5. Enable Interactivity at PUBLIC_BASE_URL/slack/interactions so the Details button can open its modal.
  6. Start the Slack connection from the setup page. Invite PullPing to your destination channel.
Manage your Slack apps

Bring in your GitHub repositories.

  1. Create a GitHub App with a webhook URL of PUBLIC_BASE_URL/webhooks/github-app.
  2. Subscribe to pull request events and configure the permissions your backend requires.
  3. Set GITHUB_APP_ID, GITHUB_APP_PRIVATE_KEY, GITHUB_APP_WEBHOOK_SECRET, and GITHUB_APP_SLUG.
  4. Install the app and select the repositories you want to route.
  5. Run the route command in the Slack channel that should receive updates.
/pullping route owner/repo

For personal mentions, configure a GitHub OAuth App with PUBLIC_BASE_URL/auth/github/callback. Set GITHUB_OAUTH_CLIENT_ID and GITHUB_OAUTH_CLIENT_SECRET, then use /pullping connect.

A few commands. A clearer day.

/pullping connect

Link your GitHub identity to Slack for personal mentions.

/pullping route owner/repo

Send one repository’s PR updates to the current channel.

/pullping routes

List repository routes for your Slack workspace.

/pullping prs

Show your workspace’s PR queue privately.

/pullping digest

Post an on-demand digest to the current channel.

/pullping unroute owner/repo

Remove a repository route from the workspace.

GitHub stays the source of truth.

PullPing receives signed GitHub webhook events. It uses read-only GitHub API calls when it refreshes PR snapshots.

PullPing does not approve, comment on, or merge pull requests. Your team performs those actions in GitHub.

The backend stores workspace credentials, repository routes, user mappings, PR snapshots, message references, and processed delivery IDs.

Set DATABASE_PATH to enable SQLite persistence and living Slack messages. Protect the setup dashboard with SETUP_ADMIN_TOKEN.

Hosted environments should set REQUIRE_SAAS_CONFIG=true and use persistent storage. Review docs/production-checklist.md before deployment.

What’s available today.

PullPing supports GitHub and Slack. PR queues and digests use stored snapshots from routed repositories.

Digests run on demand or on a daily UTC schedule. Scheduled delivery requires SQLite storage and a running backend.

/pullping digest schedule 09:00

Use /pullping digest schedules to list schedules. Use /pullping digest off to stop the current channel’s schedule. Configured route admins control scheduling.

GitHub write actions and complete branch-protection checks are not available.

The interactive demo uses example data. It does not connect to a workspace or change a real pull request.

The project does not define commercial plans or a payment service yet. This site does not take payments.

Connect your workspace