FlowRunner
PricingContact
Theme
Start Free
Integration Guide August 11, 2026 7 min read

GitHub Google Sheets Integration: PR Tracker That Holds the Merge

Connect GitHub and Google Sheets to log pull requests and releases automatically, and run the same connection as an AI agent that pauses for a human before a risky merge ships.

GitHub Google Sheets Integration: PR Tracker That Holds the Merge
trigger A pull request opens on a watched GitHub repo.
action Agent reads the PR and checks run status via List Workflow Run Jobs, then logs it as a new row in the Google Sheets tracker.
check Agent evaluates whether checks are failing or the branch is a production release.
human Merges with failing checks, or releases touching production, route to the on-call engineer in Slack before anything ships.
action On approval, agent calls Merge Pull Request and updates the tracker row with the decision and approver.
trigger Release Published fires when the tag goes out.
action Agent confirms the pipeline ran clean via List Workflow Runs and writes the release outcome back to the same tracker row.

How do you connect GitHub to Google Sheets?

Connect GitHub’s On Pull Request Opened (or On Release Published) trigger to Google Sheets’ Add Row action, and the tracker fills itself: every PR or release lands as a row with the author, branch, and check status already mapped. FlowRunner is a visual AI-agent orchestration platform where automations run autonomously and pause for human judgment on the steps that carry real consequence. Run this same connection as an AI agent, and it does more than copy data: it reads the check results, decides whether a merge is routine or risky, and pauses for a human before a production-touching change goes out.

The problem it solves

An engineering manager or release lead is usually the one holding this together by hand. Pull requests open, checks run, and reviewers get pinged one Slack DM at a time. When a release ships, someone copies the release notes and the pipeline status into a spreadsheet, or into nothing at all, because there isn’t time. Ask “what shipped last month and who approved it” and the honest answer is a scroll through chat history and a guess.

The exceptions are what actually cost time. A PR with failing checks gets merged anyway because nobody was watching. A release tag touches a production branch and nobody flagged it before it went out. None of this is a tooling gap exactly; GitHub has all the data. It’s a tracking gap. There’s no single record that ties the PR, the check status, the reviewer decision, and the release outcome together, so it falls through the cracks and the team spends its Monday reconstructing what happened instead of building.

How it works: the connection

On Pull Request Opened fires for a watched repository and starts the flow. The connection reads the PR title, author, branch, and touched files, then calls List Workflow Run Jobs to pull the current check status for that branch. That data maps into an Add Row call against your Google Sheets tracker: one row per PR, with columns for author, branch, check status, and a blank decision field waiting to be filled in.

When the PR is eventually merged, Merge Pull Request runs and an Update Row call writes the outcome, the approver, and the merge timestamp back into the same row. On Release Published, the same tracker gets a second pass: List Workflow Runs confirms the release pipeline ran clean, and Update Row (or a fresh Add Row for a release log) records the workflow status and changelog. Nobody exports anything. The sheet is populated and updated as the events happen, not reconstructed from memory at the end of the sprint.

A horizontal step diagram on a dark background showing a pull request icon opening into a check-status readout, then narrowing into a single spreadsheet row with columns for author, branch, and status, then branching to a locked gate icon before a final merged checkmark

Can an AI agent run it? (and why a human stays in the loop)

A plain sync tool copies PR data into a row and stops there; it has no opinion about whether the PR should merge. An AI agent reads the check results, reasons about what it’s looking at, and calls GitHub and Google Sheets actions as tools in whatever order the situation calls for. Most PRs it can walk through end to end: log the row, wait for checks to pass, merge, update the row. This is not a sync tool. The agent knows when to stop and ask.

Here’s the decision moment. A pull request opens against a release branch and List Workflow Run Jobs comes back with two failing jobs. In a normal flow, that PR either blocks silently or someone merges it anyway without checking. The agent instead recognizes this specific combination, a production-tagged branch with failing checks, as exactly the kind of moment that needs a person, and it invokes a human-in-loop flow as a callable tool rather than proceeding. It packages the context that matters: the PR number, the branch, the author, and the list of failing jobs, then posts it to the on-call engineer in Slack: “Merge PR #482 into release/v3.2. Failing checks: integration-tests, deploy-smoke-test. Approve, request changes, or hold for review?” The workflow pauses. The engineer decides. On approval, the agent calls Merge Pull Request and writes the decision, the approver’s identity, and the timestamp into the tracker row, so the audit trail and the merge happen in the same motion. This is the digital andon cord: the agent pulls it itself when the data says something’s off, not because a person told it to check that one thing.

A Slack-style notification card on a dark interface showing a pull request alert: PR number and branch name at the top, a list of two failing check names, and three buttons labeled Approve, Request Changes, and Hold for Review

FlowRunner vs n8n

n8n is a strong choice for technical teams who want to wire GitHub and Google Sheets together with full control over the logic, and its node-based editor is genuinely flexible for engineers comfortable building and debugging flows themselves. That flexibility is also the tradeoff: routing a risky merge to a human for approval means hand-building an approval branch, a wait state, and a way to resume the flow with the decision, and maintaining it as your process changes.

CapabilityFlowRunnern8n
Human-in-the-loopNative: the agent invokes a human-approval flow as a callable tool and resumes with the decisionNot built in; requires manually wired wait/webhook nodes to approximate
AI decision-makingAgent reads check status and reasons about which PRs need a personWorkflow logic is deterministic unless you wire in a separate LangChain-style agent node
Users includedUnlimited on every tierPriced per seat on most cloud tiers
AI provider keysBYOK: connect your own OpenAI/Anthropic keysAlso supports BYOK for AI nodes
Self-hostingCommunity Edition free; Enterprise adds clustering and full complianceFair-code self-hosting model, strong community track record
Pricing modelFlat workflow-based tiers with a stated execution ceilingExecution-based pricing that gets harder to predict at scale

Before and after

What changesBeforeAfter
PR visibilityStatus hidden in tabs: checks, workflow runs, and release status live in separate UI tabs and chat threadsStatus surfaced on event: PR events drive a single notification with check summary, failing jobs, and author context
Reviewer routingReviewers pinged manually by an engineer after opening or fixing a PRReviewers pulled in automatically with the change scope and risk context attached
Release recordReleases tracked in chat: notes and approvals scattered across DMs with no single recordReleases recorded as a flow: release events drive the tracker, notifications, and audit record together
Tracker maintenanceSpreadsheets kept by hand, exported from other systems and pasted in weeklySheets stay current in the flow, updated as PR and release events fire
Merge riskFailing-check merges depend on someone noticing before approvingFailing-check merges into production branches are held for the on-call engineer by default

A dark dashboard mockup of a spreadsheet-style tracker with rows showing pull request titles, author names, a check-status column with green and amber pills, and a merged-timestamp column, next to a small summary panel reading Open, Held for Review, Merged

What you can build

PR and release tracker with a merge gate. Every pull request logs to a Google Sheets row on open, gets its check status attached, and is merged automatically unless it fails checks on a production branch, in which case it’s held for the on-call engineer.

Bug intake sheet that files GitHub issues. A support-facing Google Sheet takes bug reports; On New Row triggers the agent to call Search Issues and Pull Requests for duplicates and Find or Create Issue to file a new one with the reproduction steps attached, so support stops keeping a private list.

Release report on a schedule. On a schedule, the agent reads the tracker sheet, calls Export Sheet to generate the current release log as a file, and emails it to stakeholders without anyone opening the spreadsheet.

Reviewer load balancer. New Review Request in GitHub logs to a Google Sheets row that tallies open reviews per engineer, so a lead can see review load at a glance instead of asking around.

A split composition on a dark background: left half shows a tangle of disconnected chat bubbles and browser tabs in dim gray; right half shows the same information reorganized into three clean, ruled spreadsheet rows with checkmarks

Getting started

Connect GitHub and Google Sheets on FlowRunner with a $100 credit on the Growth tier, roughly 67 days of real usage, no credit card required. Start with the plain connection (PR events into a tracker row) and add the AI agent and human-in-loop step whenever you’re ready to let it decide which merges need a person.

Explore the GitHub integration and the Google Sheets integration for the full list of triggers and actions. Start building at flowrunner.ai, or book time to walk through your specific setup at calendly.com/flowrunner/intro.

Ready to automate this?

Start building your first workflow free. $100 in credits, no card required.