Bullhorn CRM
Connect Bullhorn CRM with Webflow to sync job listings, capture candidate applications, and move staffing data between your website and your ATS.
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:
- Contact Bullhorn Support to obtain your account-specific iframe URL and embed code. No public universal URL exists.
- Open the page where you want the job board or application form to appear.
- Drag a Code Embed element onto the page canvas from the Add panel.
- 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> - Click Save & Close, then publish your site.
For the OSCP, the process is similar but requires an extra hosting step:
- Host the OSCP files on an external server and confirm the portal is live at its URL (for example,
https://jobs.youragency.com). - Drag a Code Embed element onto your careers page.
- Paste an iframe pointing to your hosted OSCP URL.
- 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:
- The Bullhorn REST API handles candidate records, job orders, placements, submissions, resume parsing, and event subscriptions
- The Bullhorn Public API returns published job listings and accepts applications without authentication
- The Webflow Data API handles Webflow CMS collections and form submissions
- Webflow webhooks trigger real-time events when forms are submitted or CMS items change
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:
- Fetch open job orders from Bullhorn using either the Public API or authenticated search endpoint.
- For each job, check whether a corresponding CMS item already exists by matching on a stored Bullhorn
JobOrder.idfield. - Create new CMS items with
POST /v2/collections/{collection_id}/items/livefor direct publishing, or usePOST /v2/collections/{collection_id}/itemsfollowed byPOST /v2/collections/{collection_id}/items/publishfor a staged workflow. - Update existing items with
PATCH /v2/collections/{collection_id}/items/{item_id}/live. - 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:
- Register a webhook by calling
POST /v2/sites/{site_id}/webhookswithtriggerTypeset toform_submissionand aurlpointing to your middleware endpoint. - When the webhook fires, return HTTP 200 immediately from your middleware. Process the submission asynchronously.
- Validate the payload using the
x-webflow-signatureheader (SHA-256 HMAC). - 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". - If no match exists, create a new candidate:
PUT {restUrl}/entity/Candidatewith the mapped form fields. - Optionally create a job submission linking the candidate to a specific job order:
PUT {restUrl}/entity/JobSubmissionwith thecandidate.idandjobOrder.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:
- 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,JobOrderwithINSERTED,UPDATED, andDELETED). - Poll for events on a schedule (every five minutes is typical):
GET {restUrl}/event/subscription/{subscriptionId}?maxEvents=100. - Each event returns the
entityIdandentityEventTypebut not the full record data. Make a follow-up call toGET {restUrl}/entity/{EntityType}/{id}?fields=...to retrieve current values. - Map the updated data to the corresponding Webflow CMS item and call
PATCH /v2/collections/{collection_id}/items/{item_id}/liveto update it. - 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:
- Request an authorization code:
GET https://auth.bullhornstaffing.com/oauth/authorize?client_id={client_id}&response_type=code&redirect_uri={redirect_uri}. - Exchange the code for an access token:
POST https://auth.bullhornstaffing.com/oauth/tokenwithgrant_type=authorization_code. - 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 aBhRestTokenand arestUrlspecific to your data center. - Use the
BhRestTokenfor all subsequent requests. Re-authenticate only when you receive a401response, 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
sourcefield lets you tag every applicant withsource=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}/jobsand accepts candidate applications atPOST /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
PUTto create new records andPOSTto 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.
Description
Bullhorn CRM is a cloud-based staffing platform with applicant tracking and CRM for recruiting firms.
This integration page is provided for informational and convenience purposes only.

Copper
Connect Copper CRM with Webflow through Zapier to automatically create lead records from form submissions and route website inquiries into sales pipelines.

Bigin by Zoho CRM
Connect your Webflow site to Bigin by Zoho CRM through multiple integration methods including native form embedding, Zapier, Make.com, or Zoho Flow to capture leads, create contacts automatically, and manage customer relationships without manual data entry.

Hype (formerly Pico)
Connecting Hype with Webflow enables creators to integrate their CRM, payment processing, and link-in-bio tools with their website through custom code implementation.Retry

BambooHR
Connecting BambooHR with Webflow enables HR teams to automate employee data synchronization between their HRIS and public-facing websites.
Attio
Connect Attio, a CRM for go-to-market teams, with Webflow to turn form submissions into CRM records with enriched contact data, pipeline stage assignments, and automated follow-up tasks.

Salesforce
Connect Salesforce's powerful CRM capabilities with Webflow to streamline lead capture, automate customer data synchronization, and create personalized web experiences. Transform your website into a revenue-generating engine with seamless form-to-CRM workflows and real-time data integration.

Pipedrive
Connect Pipedrive's powerful sales CRM with Webflow to automatically capture leads, sync customer data, and create dynamic content from your sales pipeline. Transform website visitors into organized deals while keeping your CMS updated with real-time customer information.

HubSpot
Connect HubSpot's powerful CRM and marketing automation platform with Webflow to create personalized web experiences, automate lead capture, and unify your marketing data. Streamline workflows while maintaining complete design control over your website.
Hubspot via Vimkit
Connect Vimkit with Webflow to sync form submissions directly to the HubSpot CRM without custom code.


