GitHub
Receive GitHub issue and pull request events in Plural
A GitHub webhook delivers issues, pull requests, and their comments from GitHub into Plural. Each issue, pull request, or comment becomes an issue record in Plural that a workbench can act on. You can register the webhook on a repository or on an organization.
An event does not start a job by itself. A job starts only when a webhook trigger on a workbench matches the item, and only when the item has just become open: a new open issue, pull request, or comment, or a closed one that was reopened. Edits to an item that is already open do not start another job, and the same item starts at most one job per workbench in an hour.
This webhook is separate from the SCM webhook Plural uses for pull request automation and Flows. See SCM webhooks and PR linking for that one.
What Plural reads from the payload
Plural looks at the shape of the payload, not the X-GitHub-Event header or the action field. Any event that carries an issue or pull_request object is recorded, whatever its action. Everything else, including GitHub's ping, is acknowledged and ignored.
GitHub event | Recorded as | Title | Body | Link |
|---|---|---|---|---|
| Issues | The issue | Issue title | Issue body | Issue page |
| Pull requests | The pull request | Pull request title | Pull request body | Pull request page |
| Issue comments | A separate item per comment | The issue title, or Comment on PR: <title> (#<comment id>) for a pull request comment | Comment body | Issue or pull request page |
| Pull request review comments | A separate item per comment | Comment on PR: <title> (#<comment id>) | Comment body | Pull request page |
Other events that include a pull_request object, such as pull request reviews, update the pull request's own record.
Plural identifies each item by repository and GitHub ID, so later events for the same issue, pull request, or comment update the existing record instead of creating a new one. The repository comes from repository.full_name, or from the item's URL when that field is missing. An empty body is stored as {empty}, and bodies longer than 10,000 characters are truncated.
A trigger matches against the title and body joined by a newline. Because a comment's title includes the pull request title, a trigger that matches text in a pull request title also matches every comment on that pull request.