Hand off Breezy HR new hires to BambooHR and announce them in Slack

When a candidate moves to Hired in Breezy HR, automatically create their employee record in BambooHR and post a welcome message in Slack.

Deterministic Code
Breezy HRBambooHRSlackHR & PeopleOperationsOnboarding AutomationData SyncNotifications & Alerts

Build a code workflow that hands off new hires from Breezy HR to BambooHR and announces them in Slack, so the recruiting team never has to retype a candidate.

Trigger: a Breezy HR webhook. Use Breezy HR's Create Webhook Endpoint to register the workflow URL against my Breezy company. The webhook should be scoped to candidate events. Each incoming payload must be filtered down to candidate stage-change events where the destination stage is Hired. Match on either the stage label "Hired" (case-insensitive) or the stage id, and ignore every other event type.

Step 1: When a matching stage change arrives, call Breezy HR's Get Candidate using the company id, position id, and candidate id from the webhook payload to pull the full candidate record. Read: first name, last name, work email, phone, the position title from the parent position, and the candidate's start date if Breezy has captured one.

Step 2: Call BambooHR's Create Employee with the candidate mapped onto BambooHR's employee schema: firstName, lastName, workEmail, jobTitle, hireDate (use the Breezy start date if present, otherwise leave hireDate empty and let BambooHR default it). Capture the new employee's id from the Location header BambooHR returns, and build the BambooHR profile URL using the connected instance URL plus /employees/{id}.

Step 3: Post a welcome announcement to a configurable Slack channel using Slack's Send a Message. The message should include the new hire's full name, their role, their start date if known, a link to the candidate in Breezy HR, and a link to their new BambooHR profile. Make the target channel a workflow input so the user can pick #welcome, #people-ops, or any other channel without editing code.

Error handling: if BambooHR rejects the Create Employee call (for example a missing required field, a duplicate work email, or a permission error), do not retry blindly and do not leave a half-created employee. Instead, send a Slack message to the same configured channel that names the candidate, the Breezy candidate link, the BambooHR error message returned in the response header, and a short prompt asking a recruiter to fix the Breezy record. Skip the welcome post in that case.

Other guardrails: only fire on candidate_stage_changed events with the Hired destination; ignore notes, comments, and other stage transitions. Treat duplicate webhook deliveries as idempotent by checking whether a BambooHR employee with the same work email already exists before creating, and if one does, skip the create and just post the Slack welcome with the existing profile link.

Additional information

What does this prompt do?
  • Watches Breezy HR for candidates that move into the Hired stage so nothing slips through the cracks.
  • Copies the new hire's name, email, job title, and start date into BambooHR as a fresh employee record, no double entry required.
  • Posts a friendly welcome announcement in the Slack channel of your choice with the new teammate's role, start date, and a link to their BambooHR profile.
  • If BambooHR rejects the record because a required field is missing, sends the error straight to Slack instead of leaving a half-finished employee behind.
What do I need to use this?
  • A Breezy HR account that can register a webhook for stage changes.
  • A BambooHR account with permission to create new employees.
  • A Slack workspace and the channel where you want welcome messages to land.
How can I customize it?
  • Pick which Slack channel gets the welcome post, whether that is your company-wide announcements channel or a dedicated #welcome room.
  • Adjust which Breezy HR fields flow into BambooHR, for example department, manager, or location, depending on what your HR team tracks.
  • Tweak the welcome message wording, emoji, and which links you include so it matches your company voice.

Frequently asked questions

What triggers the workflow?
A candidate being moved into the Hired stage inside Breezy HR. Stage changes to any other stage are ignored, so the workflow only fires for real new hires.
Will it work with custom pipelines or renamed Hired stages?
Yes. The workflow checks the destination stage label or ID, so you can match against whatever your team calls the final stage in Breezy HR.
What happens if BambooHR is missing a required field?
Instead of creating a partial employee record, the workflow posts the BambooHR error message in Slack so a recruiter or HR admin can fix the candidate record and re-trigger the move.
Can I send the welcome message to more than one Slack channel?
Yes. You can fan the announcement out to multiple channels, or send a private message to the hiring manager in addition to the public welcome.
Does this replace our existing onboarding checklist in BambooHR?
No. It creates the employee record so your normal BambooHR onboarding flows, checklists, and welcome emails kick in automatically as if a person had typed the new hire in by hand.

Stop retyping new hires into BambooHR.

Connect Breezy HR, BambooHR, and Slack once, and Geni hands every hired candidate over the moment they cross the finish line.