Bullhorn
website integration
Bullhorn website integration connects your Bullhorn ATS to your recruitment website so that jobs published in Bullhorn appear on your site automatically, and applications made on your site go straight back into Bullhorn as candidate records with their CVs. It is usually built on Bullhorn's REST API, either through a plugin such as Matador Jobs for a Bullhorn job board on WordPress, a recruitment website platform with a Bullhorn connector, or a custom integration.
Your Bullhorn jobs, on your own site
- 01
Live jobs on your own site
Jobs you publish in Bullhorn appear on your website automatically, with keyword, location, sector and salary search and filters, and a page of their own for every job.
- 02
Google for Jobs markup
Each job page carries JobPosting structured data. Google requires it on the same page as the job description candidates read, on the most detailed page possible, and not on search-results pages.
- 03
Applications straight back into Bullhorn
Applications and registrations create or update the candidate record, attach the CV, link the candidate to the job where Bullhorn supports it, and record the source so you can see which jobs and channels work.
- 04
Job alerts
Candidates can sign up for alerts by keyword, location or sector and are emailed when matching jobs go live.
- 05
Expiry and unpublishing
When a job is filled or unpublished in Bullhorn, it comes off your site. Google asks for expired jobs to be removed from the page, marked with a past validThrough date, or returned as 404 or 410.
How Bullhorn integration works technically
Based on Bullhorn's own published documentation, linked below. Vendors change their APIs and access rules, so we confirm the details with Bullhorn before every build.
- 01API type
- Bullhorn's REST API, which uses JSON for requests and responses.
- 02Authentication
- OAuth 2.0. Your application gets an authorisation code, swaps it for an access token, then calls the REST login endpoint, which returns a session key (BhRestToken) and the base URL for your data centre. Bullhorn asks integrations to reuse that session rather than log in before every call.
- 03How jobs are exposed
- Jobs are JobOrder records, read with the search (Lucene) or query (JPQL) operations, or one at a time by ID. Bullhorn's own help centre says a job appears on its career portal when it is Open and its publishing status is Published – Approved, so most website integrations follow the same rule.
- 04How applications are created
- Candidates are created with a PUT to the Candidate entity endpoint, and files such as CVs are attached through the file endpoint for that candidate, either base64-encoded or as a multipart upload.
- 05What the agency needs to request
- A client ID, client secret and API user. Bullhorn says customers obtain the client ID and secret by raising a support ticket in the Bullhorn Resource Center; its knowledge base adds that credentials are not self-service, are issued per environment, and take a few business days.
Bullhorn documentation we used
Four ways to connect Bullhorn to your website
| Option | Cost model | Design freedom | SEO control | Data flow | Lock-in |
|---|---|---|---|---|---|
| Bullhorn's own career portalBullhorn offers a career portal and publishes its open-source career portal app on GitHub (MIT licence). Jobs show when they are Open and Published – Approved. | Open-source app (MIT licence); hosting and customisation to arrange | Low to medium: a standard app you can restyle | Limited: a separate app from your main site | Jobs out of Bullhorn; applications handled by the portal | Tied to Bullhorn |
| Off-the-shelf plugin (WordPress)Matador Jobs is a WordPress plugin that connects your Bullhorn account to a self-hosted job board. The free Lite version displays jobs; its Pro and All-Access plans turn applications into Bullhorn candidates submitted to jobs, and it describes job SEO “optimized for Google Jobs Search”. Bullhorn API credentials are requested from Bullhorn support. | Plugin licence (annual or lifetime plans, per Matador) plus your WordPress build | High, within your WordPress theme | Good: jobs live on your own domain | Jobs in; applications back on paid plans, immediately or on the next scheduled sync | Tied to WordPress and the plugin |
| Recruitment website platform with a connectorRecruitment website platforms sell sites with ATS connectors built in. Access Volcanic, for example, documents a Bullhorn integration that publishes Open, published jobs and sends registrations and applications to Bullhorn as candidates; it says set-up is a chargeable service. | Monthly platform fee, often on a fixed-term contract, plus set-up | Medium: within the platform's templates and modules | Medium: on your domain, within what the platform allows | Two-way, configured by the platform | High: site, jobs and integration sit with the platform |
| Custom integration in your own site (what we build)We connect your website to Bullhorn's REST API directly: job search and job pages on your domain, JobPosting markup, applications and registrations written to Bullhorn with CV, source and consent. | Scoped to your requirements; included in our 5-page website offer | Full | Full: every job is an indexable page on your domain | Two-way, mapped to your fields and rules | Low: you own the site and the code |
Third-party products are named only where the vendor's own documentation (linked above) describes the integration. TRG Digital is independent and not a Bullhorn partner.
How a Bullhorn integration project runs
Audit what you have
We look at how jobs reach your site today, what happens to an application, and where candidates and Google see your jobs.
Get API access
Your Bullhorn admin requests API access from the vendor, and nothing is built until it is confirmed. Raise a Bullhorn support ticket for REST API credentials (client ID, client secret and API user) for the environment you want connected. Bullhorn says this can take a few business days.
Map the fields
We agree which ATS fields drive titles, filters, salary, location and the Google for Jobs markup, and how applications map back.
Build job search and job pages
Search, filters and a fast, indexable page for every job on your own domain, with JobPosting structured data.
Connect applications and registrations
Forms write to Bullhorn: candidate created or updated, CV attached, source recorded, consent captured.
Handle expiry
Unpublished and filled jobs leave the site and Google; old job URLs return the right status.
Test with live jobs
We publish, edit and close test jobs, submit test applications and check every record in Bullhorn before launch.
Launch and monitor
We watch the sync, Google Search Console job reports and application volumes after launch.
What we'll need from you
- An Bullhorn admin who can request or approve API access
- Your list of job fields to show (title, salary, location, sector, job type, consultant)
- How you want applications recorded: new candidate, update existing, source value
- Your privacy notice and the consent wording you use today
- A handful of live test jobs we can publish and unpublish
What goes wrong, and how to avoid it
- Iframes and embedded widgets
- Jobs shown inside an iframe live on someone else's page. Google says JobPosting data must be on the same page as the job description the candidate reads, so an embedded list usually gives you no Google for Jobs listings and no search value on your own domain.
- Jobs on an ATS subdomain
- Hosted careers pages often sit on the vendor's domain or a subdomain. Candidates still find the jobs, but the search visibility builds up on that address rather than your website.
- Duplicate candidate records
- If every application creates a new candidate, your database fills with duplicates. Match on email (and phone where you can) and update the existing record instead.
- GDPR and consent capture
- The ICO says you must give people privacy information at the time you collect their data. Link your privacy notice on every form, record what the candidate agreed to and when, and send that record to the ATS with the application.
- Expired jobs left live
- Jobs that are filled but still marked up confuse candidates and break Google's rules. Make sure unpublishing in the ATS removes the job or its markup from your site.
- Field mapping left to defaults
- Sector, location and job type values in the ATS rarely match your website's filters out of the box. Agree the mapping before build, not after launch.
A 5-page recruitment website with job pages and integrations included, worth up to £4,999, is free with any SEO package from £299 a month (12-month minimum term). Additional pages are priced on requirements.
It is a connection between Bullhorn and your recruitment website that publishes jobs from Bullhorn to your site automatically and sends applications and registrations back into Bullhorn as candidate records, usually through Bullhorn's REST API.
Yes. Plugins such as Matador Jobs connect Bullhorn to a WordPress site. Matador's free Lite version displays Bullhorn jobs; its paid plans also send applications into Bullhorn as candidates submitted to jobs. A custom integration is the alternative if you want full control of fields, duplicates and source tracking.
Bullhorn says customers obtain a client ID and client secret by raising a support ticket in the Bullhorn Resource Center. Its knowledge base notes that credentials are not self-service, are issued per environment, and can take a few business days.
They can, if each job has its own page on your site carrying JobPosting structured data with Google's required properties: title, description, datePosted, hiringOrganization and jobLocation. Jobs shown only inside an iframe or on a separate portal won't help your own site.
They can if every application creates a new candidate. A good integration looks for an existing candidate first, usually by email, and updates that record, attaches the new CV and records the source.
