Bullhorn Automation
HRConnect AI agents to Bullhorn Automation, formerly Herefish, the recruiting automation platform for staffing firms. Agents add or update contacts, manage list membership, sync placements, and match candidates to jobs so recruiting outreach stays current automatically.
What This Integration Enables
Bullhorn Automation, formerly Herefish, is the outreach engine that sits beside a staffing firm's applicant tracking system rather than inside it. The distinction matters when you build on it: this is a separate product from the core Bullhorn ATS and CRM, which is covered by the Bullhorn connector. Records here exist to drive automations, not to be the system of record.
That shapes the whole surface. Add or Update Contact creates or updates a person, deduplicated by email address, and when a list name is supplied it adds them to that list. Because automations in Bullhorn Automation are triggered by list membership, that single call is not a tag operation, it is an enrollment: the person begins receiving whatever sequence the list drives. Remove Contact from List is the counterpart, taking someone out of a named list without deleting the contact, which is how an agent stops list-triggered outreach for one person. Get Contact reads a stored contact by its Bullhorn Automation ID.
Add or Update Placement keeps the assignment picture current, linking a candidate to a job with a start date and status, deduplicated by ATS placement ID. Placements are what drive redeployment, contractor care, and anniversary automations, so a stale placement record is not a reporting problem, it is a sequence firing at the wrong person on the wrong day. Three matching operations round out the connector: Get Candidates for Job returns ranked candidate IDs for a requisition, Get Jobs for Candidate returns ranked job IDs for a person, and Find Similar Jobs returns openings closest to a given one, each capped at fifty results. All three return identifiers from your applicant tracking system rather than full records, so a flow resolves them against the ATS to get names, availability, and history before doing anything with them.
Without FlowRunner
With FlowRunner
Use Case Scenarios
Redeployment Before the Assignment Ends
A contractor's assignment has three weeks left. On a schedule the agent finds placements approaching their end date, runs Get Jobs for Candidate to pull ranked openings that match each person, and runs Find Similar Jobs against their current assignment to catch near matches the first call missed. It resolves the returned job IDs against the applicant tracking system for title, location, pay rate, and start date, then assembles a per contractor shortlist and posts it to their recruiter. The recruiter decides who to approach and with what. The value here is timing: the conversation happens while the person is still working, not after they have already accepted something else.
Keeping the Automation Layer in Step With the ATS
Placements change constantly: start dates move, assignments extend, statuses flip. The agent watches the applicant tracking system for those changes and runs Add or Update Placement for each one, passing the ATS placement ID so an existing record is updated in place rather than duplicated. Because status, type, and employment type are free text that mirror the values used in the ATS, the agent passes them through unchanged rather than mapping them to an invented vocabulary. Contractor care and anniversary sequences then fire against dates that are actually true.
Sourced Candidate Into the Right Nurture Track
Candidates arrive from job boards, referrals, and events with wildly different levels of qualification. Rather than dropping everyone into one list, the agent classifies each new contact against the specialism and seniority captured during sourcing, writes the person with Add or Update Contact so the email deduplication catches anyone already known, and proposes the list that matches their track. When a candidate later accepts a placement, the agent runs Remove Contact from List to take them off the active outreach track so they stop receiving job alerts while they are working, then adds them back when the assignment ends.
Human-in-Loop Highlight
In Bullhorn Automation, adding a contact to a list is not a filing action. Lists trigger automations, so supplying a list name in Add or Update Contact enrolls that person into a live sequence, and the first message can be on its way before anyone reviews the batch. The undo, Remove Contact from List, only stops what has not been sent yet. Combine that with the matching operations, which return ranked ATS identifiers and nothing else, and the risk becomes concrete: an agent can enroll fifty people it has never actually read the records of. So the agent resolves the IDs first, filters out anyone on assignment, recently contacted, or opted out, and then stops before the enrollment: "Get Candidates for Job returned 62 matches for [requisition]. After filtering, 34 remain. Adding them to list [name] starts the [sequence name] outreach, and only unsent messages can be stopped. Here are the 34 names with last contact date and current status. Approve, remove names, or hold." Placement syncs, contact updates without a list name, and match retrieval all run unattended, because none of them reach a candidate. Starting outreach to real people is where the human-in-the-loop belongs.
Agent Capabilities
7 actionsContacts
3- Add or Update Contact Creates or updates a contact, a candidate or sales contact, and when a list name is supplied adds that contact to the list. Contacts are matched and deduplicated by email address, so an existing record with the same email is updated in place rather than duplicated. Because list membership triggers automations, supplying a list name enrolls the person in a live sequence, so this call is routed for sign-off when it targets a list.
- Remove Contact from List Removes a contact from a specific list, identified by email address and list name. The contact record itself is not deleted, only its membership in the named list, which is how a flow stops list-triggered outreach for one person.
- Get Contact Retrieves a single contact record by its Bullhorn Automation contact ID, returning stored fields such as name, email, status, and location. Used to read the current state of a contact that was previously created or synced.
Placements
1- Add or Update Placement Creates or updates a placement linking a candidate to a job with a start date and status. Placements drive redeployment, contractor care, and anniversary automations. An existing placement with the same applicant tracking system placement ID is updated in place rather than duplicated.
Matching
3- Get Candidates for Job Returns a ranked list of candidate IDs that best match a specific job in your applicant tracking system, using Bullhorn Automation's matching engine. Optionally scopes results to the candidate pool of a specific automation. Returns identifiers only, so resolve them against the ATS before acting.
- Find Similar Jobs Returns a ranked list of job IDs most similar to a specified job in your applicant tracking system, up to fifty results. Used to suggest alternative openings to a candidate or to widen a redeployment search.
- Get Jobs for Candidate Returns a ranked list of job IDs that best match a specific candidate in your applicant tracking system, up to fifty results. Used to recommend openings to a candidate or to power redeployment automations.
Frequently Asked Questions
What can FlowRunner do with Bullhorn Automation?
FlowRunner agents can run Add or Update Contact, Remove Contact from List, and Get Contact in Bullhorn Automation, plus 4 more actions.
Does connecting Bullhorn Automation to FlowRunner require OAuth?
No. Bullhorn Automation connects to FlowRunner with an API key, no OAuth flow required.
Can Bullhorn Automation trigger a FlowRunner workflow automatically?
Bullhorn Automation doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.
Start building with Bullhorn Automation
$100 in credits. No card required. Connect in minutes.