Our GitHub Projects integration allows you to complement our existing GitHub integration with project-level information (such as Iterations and custom fields).
The GitHub Projects integration is supplemental and requires you to import the related repositories to Keypup.
Related repositories are not automatically imported into Keypup since each repository incurs an additional monthly cost. You are in control of which repositories you track through your GitHub Projects.
GitHub accounts connected before May 5th, 2025, need to be reconnected
Our GitHub integration was updated to require the read:project
scope. If you connected GitHub before May 5th, 2025, then GitHub Projects won't appear in the list of available projects to connect.
To fix this, go to the Apps page on your Keypup account and click the reconnect icon π in front of GitHub. GitHub Projects will appear after reconnecting.
How does it work compared to importing repositories?
GitHub Projects are project management layers on top of GitHub repositories belonging to the same user or organization.
An Issue or Pull Request can belong to multiple GitHub Projects. Typically, this means that an Issue or Pull Request can be in multiple advancement statuses, depending on which GitHub Project you consider.
This is why each GitHub Project on Keypup maintains its own set of issues and pull requests, on top (but separate) from repository data.
Each GitHub Project you connect to Keypup creates duplicates, in Keypup, of Issues and Pull Requests imported from repositories. Each duplicate gets augmented with additional fields (status, iteration, custom field) coming from the GitHub Project.
Because each GitHub Project creates duplicates of existing Issues and Pull Requests imported from repositories, it is important to use Project-level or App-level filtering in Keypup to ensure your reporting focuses on the right project.
Example
Let's assume Issue 123
from repository doecorp/ui
has been added to GitHub Project A
and GitHub Project B
.
After connecting doecop/ui
to Keypup, we will have the following data:
Issue 123 |
|
|
|
If you now connect GitHub Project A
and GitHub Project B
to Keypup, we will have the following data:
Issue 123 |
|
|
|
Issue 123 |
|
|
|
Issue 123 |
|
|
|
What data do we collect?
Our GitHub integration fetches the following entities:
Project Items
Project items are fetched and exposed on the Issues & Pull Request dataset. Each project item adopts the attributes of the underlying issue or PR, plus the following attributes:
The
Status
field in GitHub Project is mapped to the Workflow status field in Keypup.The
Iteration
field attributes (start/end date, etc.) in GitHub Project are mapped asSprint
attributes in Keypup (e.g., Sprint Name field). If you renamed theIteration
field in GitHub Project to something else, Keypup will not pick it up asSprint
.The
GitHub Project name
is mapped to the Project field in Keypup.The source repository of the Issue/PR is mapped to the Project Source field in Keypup.
The Source App field in Keypup is set to
github-projects
instead ofgithub
.
Project Iterations
Project iterations from the Iteration
field in GitHub Projects are captured and exposed as Sprints in Keypup. Sprint attributes allow you to filter issues and pull requests based on Sprint Name, Sprint End Date, Sprint Start Date, etc.
On the Iteration
field is retrieved as Sprints. Other iteration fields are not picked up by Keypup. If you renamed the Iteration
field in GitHub Project to something else, Keypup will not pick it up as Sprint
.
Project Item Status
The Status
field in GitHub Projects is a mandatory non-editable system field. This field is mapped to the Workflow status field in Keypup.
You can define a custom list of statuses in your GitHub Project, and Keypup will automatically pick up the status names.
Project Item Custom Fields
All date
, number
, single select
and text
fields are captured as custom fields in Keypup. Custom fields can be used for filtering, reporting, and in formulas (they are prefixed with cf_github_
).
Current limitations
Status transition events (e.g., transition from "Todo" to "In Progress") are not currently exposed on the GitHub API.
The consequences are the following:
The WORKFLOW_STATUS_UPDATED events are not available on the Activity Events dataset.
The workflow_timeline field will be empty on the Issues & Pull Requests dataset.
The Issue Cycle Time dashboard, which surfaces "time in status" statistics, will be empty.
How often do we refresh data?
Updates on Issues and Pull Requests are received in real time via webhooks when available, or via long-polling (every 20 mins) if the connecting user does not have permissions to set webhooks on the repositories.
Updates on Project Items (status, iterations, custom fields) are received via long-polling (every 20 mins). Webhooks are not available since they require org-level administrative permissions.
Note on API throttling: GitHub has strict API rate limitations and it may take Keypup up to a day to retrieve historical data the first time you connect projects. |
Using IP whitelisting on GitHub
If you have IP whitelisting enabled on GitHub, please authorize the IPs to make Keypup work:
35.227.8.113
34.139.100.4
104.196.223.124
34.23.243.137