Skip to content

Every 15 minutes

Post new Greenhouse applications to Slack

Your hiring channel sees each new applicant within about 15 minutes of them applying.

Runs
Every 15 minutes
Apps
Greenhouse
AI
Not needed
Access
applications read

Send this to your assistant

Create a ClickRuntime automation: every 15 minutes, check Greenhouse for new applications to our Senior Backend Engineer and Product Designer jobs and post the candidate's name, the job and a link to #hiring in Slack.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

Candidates judge a company by how fast it answers. A strong engineer who applies on a Tuesday morning usually has two or three other applications in flight, and the first team to reply often gets the interview. In Greenhouse, though, a new application is just a row in a list until a recruiter or hiring manager opens the job and refreshes it, which can be a day or two later.

Every 15 minutes, applications created since the last check are fetched and each one is posted in the hiring channel in Slack with the candidate's name, the job and a link back to Greenhouse. The time of the latest application is saved so nothing is posted twice.

It suits hiring managers who review candidates themselves and small teams with no dedicated sourcer watching the pipeline.

What you get out of it

  • Faster first response to strong candidates

    Seeing a promising application within minutes lets you reply the same day, which matters when top candidates are interviewing elsewhere and will accept the first good offer. A first-day reply can decide who wins the candidate.

  • Hiring managers stay engaged

    A notification in Slack pulls a busy manager into the process without logging in to another system. Applications are reviewed sooner, and roles stay open for fewer days. Roles stay open for fewer days when the person who decides sees applicants as they arrive.

  • Applications are not lost in busy periods

    After a job post goes live or a referral campaign launches, many applications arrive together. A message per applicant means none get skipped when the list grows long. Even a flood after a job post goes live is handled without anyone refreshing the list.

  • Immediate signal on sourcing channels

    Watching applicants arrive tells you right away whether a new job board listing or a referral push is working, long before the weekly report would. You can then move budget toward the channels that bring real applicants, and drop the ones that do not, sooner.

  • Everyone sees the same pipeline

    Recruiters, coordinators and managers all see who just applied, which cuts down on messages asking whether anyone has looked at the new person yet. Hand-offs between sourcer, recruiter and manager become smoother as a result.

  • Less pipeline chasing for recruiters

    Recruiters spend less time pinging managers to ask whether someone has looked at a new candidate. The notice itself prompts a look, and the pipeline moves with fewer reminders flying around the company chat.

How it works

What happens, step by step

  1. Every 15 minutes, ClickRuntime checks Greenhouse for applications received since its last check.

  2. Each new one is posted to your Slack hiring channel with the candidate's name, the job and a link to their profile.

  3. It remembers when it last checked, so each applicant is posted once.

Before it runs live

  • Connect Greenhouse

What you get

RunsEvery 15 minutes
Post new Greenhouse applications to Slacktoday, 9:00Succeeded
Slack · #hiringNew application: Riya Shah for Senior Backend Engineer https://app.greenhouse.io/people/123456?application_id=789012

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • 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

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
new_application_alert.pyexample
from datetime import datetime, timezone
from clickruntime import on_trigger, credentials, http, state, notify, report_fetched

JOB_IDS = [4012345, 4012346]  # Senior Backend Engineer, Product Designer

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()
    apps = [a for job in JOB_IDS for a in harvest("applications", job_id=job, created_after=since, per_page=100)]
    report_fetched(len(apps))
    if not apps:
        state.set("since", started)
        return {"summary": "Nothing new"}
    for a in apps:
        c = harvest(f"candidates/{a['candidate_id']}")
        notify.slack(f"New application: {c['first_name']} {c['last_name']} for {a['jobs'][0]['name']}\n"
                     f"https://app.greenhouse.io/people/{c['id']}?application_id={a['id']}", channel="#hiring")
    state.set("since", started)
    return {"new": len(apps)}

FAQ

Common questions

Does it notify for internal referrals and agency candidates too?
It lists every application created in Greenhouse, whatever the source, because it works from the applications list. If you only want some, filter by source or job as a specific change you can approve. Referral status is carried along in the message when Greenhouse records it.
Is every job covered or only some?
All open jobs by default. For a busy company that can be noisy, so many teams limit the alert to specific roles, or send each job to its own channel. This is a small edit to the filter.
How soon after someone applies will the message appear?
Within about 15 minutes, since it checks on that interval rather than the instant an application arrives. That is fast enough for same-day replies, but not a real-time webhook. If you ever need true real time, that would need a different setup.
What permissions does it need?
applications read. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it checks. Checks that find nothing new and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Post new Greenhouse applications to Slack” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.