Bullhorn CRM

Connect Bullhorn CRM with Webflow to sync job listings, capture candidate applications, and move staffing data between your website and your ATS.

Install app
View website
View lesson
A record settings
CNAME record settings
Bullhorn CRM

Connect Bullhorn CRM to your Webflow site and job postings publish automatically, candidate applications flow straight into your ATS as new records with source tagging and deduplication, and the two systems stay in sync with no copy-paste and no re-entry.

That's a meaningful shift for staffing agency marketers managing career content, recruiters routing web-submitted applications, and operations leads cutting manual data transfer between site and ATS. It works for staffing firms across light industrial, healthcare, professional services, IT recruiting, and executive search.

How to integrate Bullhorn CRM with Webflow

What is Bullhorn CRM? Bullhorn is a cloud-based staffing and recruitment platform for staffing agencies and recruiting firms. It combines applicant tracking (ATS) and customer relationship management (CRM) in one system. Use it for candidate sourcing, job order management, placements, and client relationships. Bullhorn has over 10,000 customers globally across professional staffing, healthcare, light industrial, and executive search verticals.

Staffing agencies use Webflow for their public-facing websites and Bullhorn for day-to-day recruiting operations. The integration links the two systems, so job data published in Bullhorn appears on your Webflow site. Candidate information captured on the site flows back into Bullhorn. Choose the approach based on your agency's design control, SEO goals, and data requirements.

You have 2 integration approaches:

  • Bullhorn iframe embeds display Bullhorn-hosted job boards and application forms directly on Webflow pages without writing code.
  • The Webflow and Bullhorn APIs let you control job syncing, candidate creation, event-driven updates, and bidirectional data flow, but they require server-side development.

Most implementations combine two or more of these methods depending on the complexity of the setup.

Embed Bullhorn widgets with Code Embed elements

Bullhorn provides account-specific iframe embed codes for job boards, application forms, and candidate portals. Place these directly on any Webflow page using a Code Embed element. You don't need an API integration or middleware. It's the fastest way to display live Bullhorn content on a Webflow site. It works for agencies that want a functional job board without building a custom data pipeline.

Bullhorn also maintains an Open Source Career Portal (OSCP) that displays published job listings. Webflow sites don't include FTP or server-level file access, so you'll need to host the OSCP files on an external server (such as Netlify or GitHub Pages) and then embed them via iframe.

To embed a Bullhorn iframe on a Webflow page:

  1. Contact Bullhorn Support to obtain your account-specific iframe URL and embed code. No public universal URL exists.
  2. Open the page where you want the job board or application form to appear.
  3. Drag a Code Embed element onto the page canvas from the Add panel.
  4. Paste the iframe code into the HTML editor. For example: <iframe src="https://your-bullhorn-embed-url.com" width="100%" height="800px" frameborder="0"></iframe>
  5. Click Save & Close, then publish your site.

For the OSCP, the process is similar but requires an extra hosting step:

  1. Host the OSCP files on an external server and confirm the portal is live at its URL (for example, https://jobs.youragency.com).
  2. Drag a Code Embed element onto your careers page.
  3. Paste an iframe pointing to your hosted OSCP URL.
  4. Publish your site.

This keeps the OSCP hosted externally while making it accessible inside your Webflow careers page.

If a Bullhorn Marketplace partner provides a JavaScript widget snippet instead of an iframe, you can add it through custom code in head and body tags at the page or site level, or inline via a Code Embed element.

The iframe approach is the lowest-effort method, but it has a tradeoff. Embedded content renders inside Bullhorn's styling, not your Webflow design system. Search engines don't index iframe content as part of your site, so job listings displayed this way contribute no SEO value. If you need full design control and search visibility for job pages, use the API-based CMS sync approach covered below.

Build with the Webflow and Bullhorn APIs

If you need real-time sync, full design control over job listings, or bidirectional data flow, use the API integration path. This approach requires server-side development. You'll need a middleware layer, such as a backend service or serverless functions. Both APIs require credential-bearing requests that can't run safely from client-side JavaScript.

Use these APIs and documentation sources:

Bullhorn uses PUT to create new records and POST to update existing ones — the opposite of standard REST convention. Watch for this, since it's a common source of integration bugs.

Sync job listings from Bullhorn to the Webflow CMS

Pulling open job orders from Bullhorn into Webflow CMS collections gives you full design control over how jobs appear on the site. Each listing becomes indexable by search engines. Use this approach if you want SEO value from your job board.

If you don't need authenticated access, Bullhorn's Public API returns published job listings with no OAuth required:

GET https://rest{swimlane#}.bullhornstaffing.com/rest-services/pubapi/v1/jobBoards/{corpToken}/jobs?fields=*

For full access to all job order fields, use the authenticated endpoint:

GET {restUrl}/search/JobOrder?query=isOpen:true AND isDeleted:false&fields=id,title,publicDescription,employmentType,address,salary&BhRestToken={token}

To sync jobs into the Webflow CMS:

  1. Fetch open job orders from Bullhorn using either the Public API or authenticated search endpoint.
  2. For each job, check whether a corresponding CMS item already exists by matching on a stored Bullhorn JobOrder.id field.
  3. Create new CMS items with POST /v2/collections/{collection_id}/items/live for direct publishing, or use POST /v2/collections/{collection_id}/items followed by POST /v2/collections/{collection_id}/items/publish for a staged workflow.
  4. Update existing items with PATCH /v2/collections/{collection_id}/items/{item_id}/live.
  5. For closed or deleted jobs, unpublish the CMS item with DELETE /v2/collections/{collection_id}/items/{item_id}/live.

CMS item limits apply: the Starter plan supports 50 items, the Premium plan supports 20,000 items, and Enterprise is custom. Legacy plan holders retain their previous entitlements, and add-ons of +5,000 or +10,000 items are available on the Business plan. Some agencies have thousands of concurrent openings that may still exceed these limits. In those cases, serve job listings directly from Bullhorn's Public API via client-side JavaScript on the Webflow page rather than syncing every record to the CMS. You can still use CMS collections for evergreen category and location landing pages.

Capture candidate applications from Webflow forms

A candidate submits an application through a Webflow form. A webhook sends that data to your middleware. Your middleware then creates a candidate record in Bullhorn.

To implement this flow:

  1. Register a webhook by calling POST /v2/sites/{site_id}/webhooks with triggerType set to form_submission and a url pointing to your middleware endpoint.
  2. When the webhook fires, return HTTP 200 immediately from your middleware. Process the submission asynchronously.
  3. Validate the payload using the x-webflow-signature header (SHA-256 HMAC).
  4. Search Bullhorn for existing candidates matching the submitted name and email to avoid duplicates: GET {restUrl}/search/Candidate?query=firstName:"Jane" AND lastName:"Doe" AND email:"jane.doe@example.com".
  5. If no match exists, create a new candidate: PUT {restUrl}/entity/Candidate with the mapped form fields.
  6. Optionally create a job submission linking the candidate to a specific job order: PUT {restUrl}/entity/JobSubmission with the candidate.id and jobOrder.id.

Now Webflow-submitted applications land in Bullhorn with duplicate checks and optional job attribution.

For public-facing application forms where you want to skip OAuth entirely, the Bullhorn Public API accepts applications with resume uploads at POST /pubapi/v1/jobBoards/{corpToken}/jobs/{jobId}/apply. This endpoint accepts candidate details and a CV file. It returns a confirmation including whether the candidate already existed and whether the resume parsed successfully.

Keep data in sync with Bullhorn event subscriptions

Bullhorn doesn't push webhook notifications in the traditional sense. It uses a subscription queue model: you create a named subscription, Bullhorn queues entity change events, and your service polls for new events on a schedule.

To set up event-driven sync:

  1. Create an event subscription: PUT {restUrl}/event/subscription/{subscriptionId} with a JMS selector specifying the entity types and event types you care about (for example, JobOrder with INSERTED, UPDATED, and DELETED).
  2. Poll for events on a schedule (every five minutes is typical): GET {restUrl}/event/subscription/{subscriptionId}?maxEvents=100.
  3. Each event returns the entityId and entityEventType but not the full record data. Make a follow-up call to GET {restUrl}/entity/{EntityType}/{id}?fields=... to retrieve current values.
  4. Map the updated data to the corresponding Webflow CMS item and call PATCH /v2/collections/{collection_id}/items/{item_id}/live to update it.
  5. For deleted or closed entities, unpublish the CMS item.

Unused subscriptions expire after 7 days, and un-retrieved events also expire. Add health check monitoring to your polling service so you don't lose data silently during downtime.

Authenticate with the Bullhorn REST API

Bullhorn uses a two-phase OAuth 2.0 flow that creates a session token for subsequent API calls.

To authenticate:

  1. Request an authorization code: GET https://auth.bullhornstaffing.com/oauth/authorize?client_id={client_id}&response_type=code&redirect_uri={redirect_uri}.
  2. Exchange the code for an access token: POST https://auth.bullhornstaffing.com/oauth/token with grant_type=authorization_code.
  3. Perform a REST login to get the session token: POST https://rest-{loginInfo}.bullhornstaffing.com/rest-services/login?version=*&access_token={access_token}. The response returns a BhRestToken and a restUrl specific to your data center.
  4. Use the BhRestToken for all subsequent requests. Re-authenticate only when you receive a 401 response, then use the refresh token flow. Don't perform a fresh login before every API call — Bullhorn will throttle and block frequent logins.

Access tokens expire after 10 minutes, and refresh tokens are single-use. Persist the new refresh token immediately after each refresh. Always use the restUrl returned by the login response rather than hardcoding a server URL. To obtain OAuth credentials, create a support ticket via the Bullhorn Resource Center.

Bullhorn's ATS Growth edition doesn't include API access. Verify your Bullhorn edition before scoping any API integration work.

What can you build with the Bullhorn CRM Webflow integration?

Integrating Bullhorn CRM with Webflow lets you run a staffing agency website where job data, candidate applications, and client leads stay synchronized with your ATS. It cuts down on manual data entry.

  • Pull open job orders from Bullhorn into a Webflow CMS collection for an SEO-indexed job board with live data. Display them using a Collection List on your careers page. Each listing becomes a fully designed, search-engine-indexable page with your brand's layout and typography, rather than a generic iframe widget. A healthcare staffing agency could generate location-specific job pages that rank organically for searches like "travel nurse jobs in Boston."
  • Build application forms in Webflow that create candidate records in Bullhorn as soon as someone submits, giving you automated candidate capture with source tagging. The Bullhorn Public API's source field lets you tag every applicant with source=webflow. Recruiters can then track which placements originated from the agency's own website versus third-party job boards.
  • Add a "hire talent" form to your Webflow site and use your middleware to create new client contact or opportunity records in Bullhorn automatically. A professional staffing firm could route inbound client requests into their sales pipeline without anyone copying data between systems.
  • Build recruiter pages on your Webflow site that pull each recruiter's active job orders from Bullhorn via the API. An executive search firm could show prospective candidates and clients exactly which roles each recruiter is working. These pages update automatically as assignments change in Bullhorn.

Use the API integration path when you need bidirectional sync, event-driven updates, or resume parsing workflows.

Frequently asked questions

  • No. Bullhorn does not appear in the Webflow Apps Marketplace, and Webflow is not listed as a partner in the Bullhorn Marketplace. The Webflow integrations page for Bullhorn describes connection methods including iframe embeds and direct API integration, but none of these represent a native installable app. All integration between the two platforms requires one of the methods covered in this guide.

  • Iframe embeds display Bullhorn-hosted content inside your page. They require no code and no API setup. The content is not indexed as part of your site by search engines, and you cannot control the styling to match your Webflow design. Syncing jobs into Webflow CMS collections via the API gives you full design control through Collection Lists. Each job listing becomes indexable for organic search.

  • Yes, for two specific use cases. Bullhorn's Public API returns published job listings at GET /pubapi/v1/jobBoards/{corpToken}/jobs and accepts candidate applications at POST /pubapi/v1/jobBoards/{corpToken}/jobs/{jobId}/apply, both without authentication. This covers browsing and applying for jobs. Any operation that reads or writes candidate records, placements, or client data beyond the public endpoints requires the full OAuth 2.0 authentication flow.

  • Bullhorn uses PUT to create new records and POST to update existing records by ID. This is confirmed in the Creating a Submission documentation. It applies to all entity types (Candidate, JobOrder, Placement, JobSubmission). Mixing these up is one of the most common integration bugs. Your middleware should use the correct verb for each operation.

  • The Starter plan supports 50 CMS items, the Premium plan supports 20,000 items, and Enterprise is custom. Legacy plan holders retain their previous entitlements, and add-ons of +5,000 or +10,000 items are available on the Business plan. For agencies with a small to moderate number of concurrent job openings, syncing Bullhorn job orders into a CMS collection works well. High-volume light industrial agencies with thousands of active listings should consider a different approach. Serve jobs directly from Bullhorn's Public API via JavaScript on the page. Use CMS collections only for evergreen category and location landing pages.

Bullhorn CRM
Bullhorn CRM
Joined in

Category

CRM

Description

Bullhorn CRM is a cloud-based staffing platform with applicant tracking and CRM for recruiting firms.

Install app

This integration page is provided for informational and convenience purposes only.


Other CRM integrations

Other CRM integrations

Jobber

Jobber

Connect Jobber with Webflow to capture service leads through forms and sync customer data between platforms.

CRM
Learn more
Odoo

Odoo

Connecting Odoo with Webflow lets you automate lead capture, sync product catalogs, and manage customer data without manual entry.

CRM
Learn more
Recruit CRM

Recruit CRM

Connect RecruitCRM's applicant tracking system with Webflow through automation platforms like Zapier or Make.

CRM
Learn more
Pardot

Pardot

Connect Pardot to Webflow and capture leads through custom forms without rebuilding your site in Pardot templates.

CRM
Learn more
HighLevel

HighLevel

Connect HighLevel, an all-in-one CRM and marketing automation platform, with Webflow to embed forms, chat widgets, and booking calendars while routing leads into pipelines and follow-up sequences.

CRM
Learn more
LeadConnector

LeadConnector

Connect LeadConnector with Webflow to capture form submissions, trigger workflow automation, and sync contact data in real time.

CRM
Learn more
Microsoft Dynamics CRM

Microsoft Dynamics CRM

Connect Microsoft Dynamics CRM with Webflow to sync form submissions to CRM records. Use integration platforms like Zapier, Make.com, or n8n for visual workflow automation, embed Dynamics forms directly in Webflow pages, or build custom API integrations for bidirectional synchronization.

CRM
Learn more
HoneyBook

HoneyBook

Connect HoneyBook forms in Webflow or use Zapier to auto-create clients and projects from site inquiries.

CRM
Learn more
Bitrix24

Bitrix24

Connect Bitrix24, a unified business workspace with CRM and project management, with Webflow to capture leads from forms, embed live chat widgets, and sync CRM data through automation platforms.

CRM
Learn more

Related integrations

No items found.

Get started for free

Try Webflow for as long as you like with our free Starter plan. Purchase a paid Site plan to publish, host, and unlock additional features.

Get started — it’s free