Skip to content
Automation Squad
GrGSSMade to order

Hiring, onboarding & HR

Greenhouse stage change → Slack job channel + Google Sheets pipeline log

Every stage move in Greenhouse reaches the job's Slack channel and one shared sheet.

A candidate moves stage in Greenhouse. Within a minute the job's Slack channel names the candidate, the new stage and a link to the profile, and a row lands in a Google Sheet the hiring team can read without a Greenhouse seat. Moves into Offer also send the hiring manager a direct message. Built for recruiters who spend their afternoons answering 'where are we with that candidate' in DMs.

How it works

  1. Gr

    Trigger

    Candidate has changed stage (a Greenhouse web hook posting to the n8n Webhook URL, signed with the web hook's secret key)

    Greenhouse

  2. if

    Step 1

    Verify the signature and keep watched jobs

    Checks the Signature header against the secret key, then drops events for any job or stage you have excluded in the settings table at the top of the workflow.

  3. Gr

    Step 2

    Look up the job and its hiring team

    Calls the Harvest API for the job named in the payload to fetch its department, office and hiring team, then resolves the hiring manager's email through the users endpoint.

  4. GS

    Step 3

    Append or update the pipeline row

    Reads the row already held for this application ID, if any, which gives the stage the candidate left and the date they entered it, then writes candidate, job, department, both stages, today's date, the recruiter and the profile link.

  5. S

    Step 4

    Post to the job's channel

    Sends one line to the channel mapped to the job, or to a default hiring channel: candidate, the stage left, the stage entered, days in the previous stage when the sheet holds an earlier move, and the profile link.

  6. if

    Step 5

    Branch on Offer

    Continues only when the new stage is Offer, or another stage you name in the settings table; every other move ends after the channel post.

  7. S

    Step 6

    DM the hiring manager

    Matches the hiring manager's email to a Slack member and sends a direct message with the candidate's name, the stage reached and a link to the sheet row, so they can act before the recruiter chases.

What changes once it runs

  • The job's Slack channel reports every stage move within a minute of it happening in Greenhouse.
  • One Google Sheet holds the current stage and the date of the last move for every open application, readable by people without a Greenhouse seat.
  • Hiring managers get a direct message the moment a candidate reaches Offer, with the profile link in it.
  • Each row records the stage a candidate left and how long they sat there, so slow stages show up without a report.
  • Jobs and stages you exclude in the settings table never post, so confidential searches stay quiet.

What you get

  • The n8n workflow export with the signature check, the Harvest lookups and the Offer branch wired
  • Google Sheets template with the ten pipeline columns and a filter view per job
  • Settings table for job-to-channel mapping and excluded jobs or stages, held at the top of the workflow
  • A setup guide covering the Greenhouse web hook, its secret key, the Harvest API key permissions and the Slack app
  • Recorded walkthrough of one candidate moving stage and the post, the row and the DM arriving
  • 30 days of email support for setup questions

Before you start

  • Greenhouse Recruiting with a Site Admin who has developer permissions, to add a web hook and create a Harvest API key
  • Slack workspace where you can install an app with the chat:write, im:write and users:read.email scopes, plus one channel per job or a default hiring channel
  • A Google account with edit access to the pipeline sheet; a template with the ten columns is included
  • An n8n instance with a public HTTPS URL so Greenhouse can deliver web hooks (n8n Cloud, or self-hosted behind a domain)

Built for

Questions before you buy

Can I limit it to certain jobs, or hide a confidential search?
Yes. The settings table at the top of the workflow lists job IDs to include or exclude and the stages to ignore. A job left out of the table never posts and never writes a row. Greenhouse sends every stage change to the endpoint, so the table is where the scoping happens.
What happens if Slack or the sheet is unavailable when a move happens?
Write steps retry, with a pause between attempts. If a step still fails, the run stops with the error logged in n8n. If n8n itself is unreachable, Greenhouse retries the delivery and emails the error recipient named on the web hook. Nothing is lost quietly: the sheet still shows the last successful move, and the next event writes the gap.
Does it need the Harvest API, or is the web hook enough?
The channel post and the sheet row work from the web hook payload alone. The Harvest key serves the Offer branch, which finds the hiring manager's email through the job's hiring team. Skip the key and the workflow posts to the channel only; the guide shows the one switch to flip.
Do I need a paid n8n plan?
No. n8n Cloud's Starter plan or a self-hosted instance both run it. The one hard requirement is a public HTTPS URL, because Greenhouse has to reach the webhook.
Can it run on Make or Zapier?
Not as a packaged version. The signature check, the two Harvest calls and the read-before-write on the sheet each need a code step on those platforms, and we ship what we have tested end to end. n8n only, for now.

Nearby on the shelf

Whole catalog