> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rootly.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Workflows & Features

> Create and update GitHub issues, fetch commit details, track pull request enrichment, and receive deployment events as Rootly pulses for incident context.

<Callout icon="ℹ️" color="#DBEAFE">
  To use these features, you must first connect GitHub to Rootly. See [GitHub Installation](/integrations/github/github).
</Callout>

## Workflow Actions

These actions are available in **Incident Workflows** and **Alert Workflows**.

### Create a GitHub Issue

Creates a new issue in the specified GitHub repository and links it to the Rootly incident or action item.

| Field                   | Description                                                             | Required |
| ----------------------- | ----------------------------------------------------------------------- | -------- |
| **Repository**          | The GitHub repository where the issue will be created (e.g. `org/repo`) | Yes      |
| **Title**               | Issue title. Supports Liquid templating (e.g. `{{ incident.title }}`)   | Yes      |
| **Body**                | Issue body/description. Supports Liquid templating                      | No       |
| **Labels**              | Comma-separated list of label names to apply to the issue               | No       |
| **Issue Type**          | The type of issue to create (e.g. `Bug`, `Feature`, `Task`)             | No       |
| **Parent Issue Number** | Issue number of the parent issue. Use this to create a sub-issue        | No       |

### Update a GitHub Issue

Updates an existing GitHub issue linked to the incident or action item.

| Field          | Description                                                                                                                                 | Required |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
| **Issue ID**   | The ID of the GitHub issue to update. Use the stored ID from a prior Create Issue action                                                    | Yes      |
| **Title**      | New title for the issue. Supports Liquid templating                                                                                         | No       |
| **Body**       | New body/description. Supports Liquid templating                                                                                            | No       |
| **Labels**     | Comma-separated list of label names to apply                                                                                                | No       |
| **Issue Type** | Updated issue type                                                                                                                          | No       |
| **Completion** | Set to **Auto** to mirror the incident or action item status. Closes the issue when the incident resolves or the action item is marked done | No       |

<Callout icon="ℹ️" color="#DBEAFE">
  When **Completion** is set to **Auto**, Rootly will automatically close the GitHub issue when the linked incident is resolved or the linked action item is completed.
</Callout>

### Get Commits

Fetches recent commits from one or more GitHub repositories and optionally posts them to the incident timeline or a Slack channel.

| Field                             | Description                                                                                                                                                          | Required    |
| --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| **Services Impacted by Incident** | When enabled (default), automatically queries the GitHub repositories linked to the services impacted by the incident. Disable this to specify repositories manually | No          |
| **Service IDs**                   | Rootly service IDs whose linked GitHub repositories will be queried. Required when **Services Impacted by Incident** is disabled and **Repository Names** is not set | Conditional |
| **Repository Names**              | Explicit list of GitHub repository names to query (e.g. `org/repo`). Required when **Services Impacted by Incident** is disabled and **Service IDs** is not set      | Conditional |
| **Branch**                        | The branch to fetch commits from. Defaults to `master`                                                                                                               | No          |
| **Past Duration**                 | How far back to look for commits (e.g. `1h`, `30m`)                                                                                                                  | No          |
| **Post to Incident Timeline**     | When enabled, appends fetched commits as an event in the incident timeline                                                                                           | No          |
| **Post to Slack Channels**        | Slack channel names to post the commit list to                                                                                                                       | No          |

<Callout icon="ℹ️" color="#DBEAFE">
  When **Services Impacted by Incident** is disabled, either **Service IDs** or **Repository Names** must be provided. Each service used must have a GitHub repository configured in its settings.
</Callout>

## PR Link Enrichment

When an engineer pastes a GitHub PR URL into the incident's Slack channel, Rootly automatically:

1. Detects the PR link and attaches it to the incident
2. Tracks the PR status (open, approved, merged) in real time
3. Posts status updates in Slack as the PR progresses
4. Adds each status change as an event in the incident timeline

<Frame>
  <iframe src="https://www.loom.com/embed/af877e8142784d0d8fc2d946e88a014a" frameborder="0" allowfullscreen width="100%" height="400px" />
</Frame>

## Inbound Events (Pulses)

Rootly receives GitHub webhook events and stores them as **pulses** — timestamped signals you can correlate with incidents.

### Supported Events

| Event                      | Trigger                                     |
| -------------------------- | ------------------------------------------- |
| **Push**                   | Any push to any repository branch           |
| **Pull Request: Opened**   | A new pull request is opened                |
| **Pull Request: Closed**   | A pull request is closed without merging    |
| **Pull Request: Merged**   | A pull request is merged                    |
| **Pull Request: Approved** | A pull request review approval is submitted |
| **Issues**                 | A GitHub issue is opened, closed, or edited |

### Pulse Labels

Each pulse includes the following labels for filtering and routing:

| Label        | Description                                | Events                |
| ------------ | ------------------------------------------ | --------------------- |
| `action`     | Event action (e.g. `push`, `pr_merged`)    | All                   |
| `repository` | Repository name where the event originated | All                   |
| `ref`        | Branch or tag ref (e.g. `refs/heads/main`) | Push, Pull Request    |
| `base`       | Target branch of the pull request          | Pull Request (merged) |
| `merged_by`  | GitHub login of the user who merged the PR | Pull Request (merged) |

## Secret Scanning

GitHub scans public repositories for known secret patterns, including Rootly API tokens.

Rootly has partnered with GitHub's secret scanning program. When a Rootly token is detected in a public repository, GitHub notifies Rootly, which then alerts workspace owners and allows them to revoke the token within seconds.

GitHub Advanced Security customers can additionally enable [push protection](https://github.blog/changelog/2022-04-04-secret-scanning-prevents-secret-leaks-with-protection-on-push/) to block Rootly tokens from entering repositories at push time.

* [Learn more about secret scanning](https://docs.github.com/en/github/administering-a-repository/about-secret-scanning)
* [Partner with GitHub on secret scanning](https://docs.github.com/en/developers/overview/secret-scanning/)

## Troubleshooting

<AccordionGroup>
  <Accordion title="Issues are not being created" icon="circle-exclamation">
    * Confirm the repository name is in `org/repo` format
    * Verify the connected GitHub account has write access to the target repository
    * Check that the **rootlyhq** GitHub App is still installed and has access to the repository
  </Accordion>

  <Accordion title="Get Commits returns no results" icon="code-commit">
    * Confirm the branch name is correct and exists in the repository
    * Check that the **Past Duration** window is wide enough to include recent commits
    * When using Service IDs, verify each service has a GitHub repository configured in its settings
  </Accordion>

  <Accordion title="PR enrichment is not working" icon="code-pull-request">
    * The incident must have an active Slack channel
    * The PR URL must be pasted directly in the incident Slack channel (not a thread)
    * Confirm the GitHub App has **Read** access to pull requests
  </Accordion>

  <Accordion title="Pulses are not appearing" icon="bolt">
    * Navigate to the Rootly integrations page and verify the GitHub connection is active
    * Re-authenticate if the OAuth token has expired
    * Confirm the **rootlyhq** GitHub App is installed and the webhook is active in your GitHub organization settings
  </Accordion>
</AccordionGroup>
