Hourly
Celebrate each new hire in Slack
When a candidate is marked hired in Greenhouse, the team hears about it in Slack within the hour.
- Runs
- Hourly
- Apps
- Greenhouse
- AI
- Not needed
- Access
- read
Send this to your assistant
Create a ClickRuntime automation: every hour, check Greenhouse for candidates marked as hired and post a congratulations to #general with their name and the role they're joining.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A signed offer is the moment a recruiting team has been working toward for weeks, yet in many companies the news travels by whispers. The recruiter tells the hiring manager, the hiring manager mentions it in a one-to-one, and the people who will onboard the new hire, set up their laptop or plan their first week learn about it days late. Meanwhile the recruiters who closed the role get no visible credit.
Every hour, Greenhouse is asked for applications whose status changed to hired since the last check. Each one produces a Slack post naming the candidate, the job and the start date if it is recorded, so the announcement goes out on the same day the hire is marked.
It is especially useful for growing companies where IT, facilities and team leads depend on hearing about hires early, and for recruiting teams that like to celebrate wins publicly.
What you get out of it
Onboarding starts earlier
IT, facilities and the hiring manager learn about the hire the same day, so equipment, accounts and a desk are ready before the first morning instead of being scrambled together on it.
Recruiters get visible credit
A post in a shared channel shows who closed which role. That recognition costs nothing and keeps a recruiting team motivated through long searches with plenty of rejections along the way.
One source of truth for who is joining
Instead of relying on hallway news, everyone reads the same message drawn directly from Greenhouse. Fewer mistakes about names, titles and start dates reach other teams. Mistakes in titles and spellings are caught once, in one place, instead of spreading.
Leaders see hiring momentum
Executives and department heads watching the channel get a feel for how quickly roles are closing, without asking for a report or opening the recruiting dashboard. A single glance at the channel shows how many roles have closed this month.
No manual announcement to forget
Recruiters are busy and the announcement is the first thing to slip after an offer is accepted. The check runs on its own, so a hire is never left unannounced.
How it works
What happens, step by step
Every hour, ClickRuntime checks Greenhouse for candidates marked as hired since its last check.
For each one, it posts a welcome message to your Slack channel with their name and the role they are joining in.
Each hire is announced only once.
Before it runs live
- Connect Greenhouse
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Act only on the items that match your own rules, and skip the rest
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Greenhouse steps into one automation
Under the hood
The code that runs this automation
from datetime import datetime, timezone
from clickruntime import on_trigger, credentials, http, state, notify, report_fetched
def harvest(path, **params):
resp = http.get(f"https://harvest.greenhouse.io/v1/{path}",
auth=(credentials.secret("GREENHOUSE_API_KEY"), ""), params=params)
resp.raise_for_status()
return resp.json()
@on_trigger
def run(event):
since = state.get("since") or datetime.now(timezone.utc).isoformat()
started = datetime.now(timezone.utc).isoformat()
announced = set(state.get("announced") or [])
hired = [a for a in harvest("applications", status="hired", last_activity_after=since, per_page=100)
if a["id"] not in announced]
report_fetched(len(hired))
if not hired:
state.set("since", started)
return {"summary": "Nothing new"}
for a in hired:
c = harvest(f"candidates/{a['candidate_id']}")
notify.slack(f"🎉 Please welcome {c['first_name']} {c['last_name']}, who's joining as {a['jobs'][0]['name']}!",
channel="#general")
announced.add(a["id"])
state.set("announced", sorted(announced))
state.set("since", started)
return {"announced": len(hired)}FAQ
Common questions
What counts as hired in Greenhouse?
Will it post the same person twice?
Can I limit announcements to one department or office?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Post new Greenhouse applications to Slack
Your hiring channel sees each new applicant within about 15 minutes of them applying.
See how it worksChase overdue interview scorecards
Each afternoon you get a list of finished interviews that still have no scorecard, with the interviewer's name.
See how it worksGet today's interview schedule each morning
Before your day starts, you have every Greenhouse interview scheduled for today in one email.
See how it worksKeep exploring
Set up “Celebrate each new hire in Slack” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.