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 cinpm run buildConfigure the backend with the repository’s .env.example. Load those variables into your process environment before starting the server.
npm startCopy 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:webSet PORT=3001 for the backend when you run both services locally. The frontend uses port 3000 by default.
PUBLIC_BASE_URL. The landing page starts the existing install flows.Add PullPing to Slack.
- Create a Slack App with the
chat:writeandcommandsOAuth scopes. - Set the redirect URL to
PUBLIC_BASE_URL/auth/slack/callback. - Configure
SLACK_OAUTH_CLIENT_ID,SLACK_OAUTH_CLIENT_SECRET, andSLACK_SIGNING_SECRETon your backend. - Point the
/pullpingslash command toPUBLIC_BASE_URL/slack/commands. - Enable Interactivity at
PUBLIC_BASE_URL/slack/interactionsso the Details button can open its modal. - Start the Slack connection from the setup page. Invite PullPing to your destination channel.
Bring in your GitHub repositories.
- Create a GitHub App with a webhook URL of
PUBLIC_BASE_URL/webhooks/github-app. - Subscribe to pull request events and configure the permissions your backend requires.
- Set
GITHUB_APP_ID,GITHUB_APP_PRIVATE_KEY,GITHUB_APP_WEBHOOK_SECRET, andGITHUB_APP_SLUG. - Install the app and select the repositories you want to route.
- Run the route command in the Slack channel that should receive updates.
/pullping route owner/repoFor 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 connectLink your GitHub identity to Slack for personal mentions.
/pullping route owner/repoSend one repository’s PR updates to the current channel.
/pullping routesList repository routes for your Slack workspace.
/pullping prsShow your workspace’s PR queue privately.
/pullping digestPost an on-demand digest to the current channel.
/pullping unroute owner/repoRemove 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:00Use /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