Skip to content

Hourly

Announce new starters and flag leavers

New starters get a welcome post in Slack, and you get an email when someone's employment ends.

Runs
Hourly
Apps
BambooHR
AI
Not needed
Access
read

Send this to your assistant

Create a ClickRuntime automation: every hour, check BambooHR for changed employees. Post new starters to #general with their name, job title and start date, and email me when someone has a termination date set.

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

Joiners and leavers touch half the company, and the HR system is where the facts first appear. An employee record is created in BambooHR on Monday, but IT hears about it on Wednesday when the new person cannot log in. A termination date is entered on Friday afternoon, and nobody revokes the person's access to the shared drive until the following week. Both gaps cost something: a wasted first day for a joiner, and a security exposure for a leaver.

Every hour, ClickRuntime asks BambooHR which employees changed since its last check, looks at their hire and termination dates and posts a welcome to Slack for new starters. Terminations are sent privately to the people you name, such as IT and HR, not to the whole company.

Companies with fewer than a few hundred employees, where HR, IT and facilities are separate people, benefit most.

What you get out of it

  • New starters have what they need on day one

    IT, facilities and managers know about a hire when the record is created. Laptops, accounts and desks can be ready, so the first morning is about the job and not about missing logins.

  • Access for leavers is removed promptly

    A private note the moment a termination date is entered gives IT the chance to disable accounts on time. Former employees do not keep access to customer data for days after leaving.

  • Welcomes feel timely and personal

    A public message introducing a new colleague on their first morning helps them feel noticed. Teams can reply in the thread and start building relationships before the first meeting. Employees feel noticed from the very first morning at work.

  • Sensitive news reaches only the right people

    Hires are celebrated openly, while terminations go to a short list. That respects the privacy of departing employees and still ensures the people who must act are informed. Everyone who must act is told, and nobody else is.

  • HR does not become a message relay

    Instead of sending the same note to IT, facilities and managers by hand, HR enters the data once. The rest follows, which reduces mistakes and forgotten steps. Fewer manual messages means fewer forgotten steps.

How it works

What happens, step by step

  1. Every hour, ClickRuntime checks BambooHR for employee records that changed since its last check.

  2. It looks at each one for a new hire date or a new end date.

  3. New starters get a welcome message in your Slack channel with their role and start date.

  4. When someone's employment is ending, you get an email instead, so access and equipment can be handled quietly.

Before it runs live

  • Connect BambooHR

What you get

RunsHourly
Announce new starters and flag leaverstoday, 9:00Succeeded
Slack · #generalWelcome Priya Nair, joining as Product Designer on 2026-11-03!

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 BambooHR 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_hire_and_leaver_notifications.pyexample
from datetime import datetime, timezone
from clickruntime import on_trigger, credentials, http, state, notify, report_fetched

COMPANY = "northwind"

def bamboo(path, **params):
    resp = http.get(f"https://api.bamboohr.com/api/gateway.php/{COMPANY}/v1/{path}",
                    auth=(credentials.secret("BAMBOOHR_API_KEY"), "x"),
                    headers={"Accept": "application/json"}, params=params)
    resp.raise_for_status()
    return resp.json()

@on_trigger
def run(event):
    since = state.get("since") or datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
    changed = bamboo("employees/changed/", since=since).get("employees", {})
    report_fetched(len(changed))
    if not changed:
        return {"summary": "Nothing new"}
    notified = set(state.get("notified") or [])
    for emp_id in changed:
        e = bamboo(f"employees/{emp_id}/", fields="displayName,jobTitle,hireDate,terminationDate,status")
        if e.get("hireDate") and f"hire:{emp_id}" not in notified and e["hireDate"] >= since[:10]:
            notify.slack(f"Welcome {e['displayName']}, joining as {e['jobTitle']} on {e['hireDate']}!",
                         channel="#general")
            notified.add(f"hire:{emp_id}")
        if e.get("terminationDate") and e["terminationDate"] != "0000-00-00" and f"term:{emp_id}" not in notified:
            notify.email_me(f"Leaver: {e['displayName']}", f"Termination date set: {e['terminationDate']}")
            notified.add(f"term:{emp_id}")
    state.set("notified", sorted(notified))
    state.set("since", datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"))
    return {"changed": len(changed)}

FAQ

Common questions

How does it know someone is a new hire?
It compares each changed employee's hire date with recent days and treats a hire date in the past few days, or today, as a new starter. Employees whose records changed for other reasons, such as a new phone number, are ignored.
Where do termination notices go?
They are not posted publicly. You choose the recipients, for example the IT lead and an HR channel that has restricted membership. Sending them by email or to a private channel keeps the matter confidential until the company announces it.
What if a hire date is entered in advance?
Future hire dates are common. The flow can post on the hire date itself, or when the record is created, depending on what is more useful to you. IT often prefers advance notice, while a welcome message is better on the first day.
What permissions does it need?
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 “Announce new starters and flag leavers” from your assistant

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