docs

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
IssuesThe issueIssue titleIssue bodyIssue page
Pull requestsThe pull requestPull request titlePull request bodyPull request page
Issue commentsA separate item per commentThe issue title, or Comment on PR: <title> (#<comment id>) for a pull request commentComment bodyIssue or pull request page
Pull request review commentsA separate item per commentComment on PR: <title> (#<comment id>)Comment bodyPull 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.

Status