Automating Bi-Directional Attachment Sync Between Bullhorn ATS and HubSpot Custom Objects
Standard HubSpot-to-Bullhorn integrations fail on binary file transfers. For an executive search firm, we engineered a serverless Pipedream middleware layer that intercepts HubSpot form submissions and streams resume files directly into Bullhorn Candidate entities. The firm's 14,000+ profiles stayed functionally complete with no manual uploads.
Executive Summary
Context
An executive recruitment firm had to replace a legacy Volcanic site with HubSpot while keeping Bullhorn as their system of record. The non-negotiable requirement was a zero-touch sync for candidate resumes from HubSpot CMS forms into the Bullhorn candidate file repository.
What We Built
A serverless Pipedream middleware integration handles binary file transfers and relational data mapping between Bullhorn, Idibu, and HubSpot.
Tech Stack
- Bullhorn (ATS), HubSpot Marketing & CMS Hub Enterprise, Pipedream (Node.js Environment), HubSpot Files API, Bullhorn REST API
Not a fit for firms that only need contact record syncing and don't store original resume files or legal documents inside the ATS environment.
The Challenge
The technical bottleneck sat in Bullhorn: it can't ingest the public URLs that HubSpot's file upload fields generate. Bullhorn requires files to attach as specific entities (CandidateFile), so a direct mapping was impossible. Mid-deployment, the firm switched from Broadbean to Idibu, which shifted the payload structure for incoming job alerts. The middleware architecture therefore had to handle asynchronous file processing, or large PDF or DOCX files would hit timeout errors during transfer.
Our Approach
Pipedream acts as an intermediary file processor. When a candidate submits a resume on the HubSpot CMS, the middleware triggers a GET request to the HubSpot Files API and retrieves the binary content. The script then sends an authenticated POST request to the Bullhorn `/file` endpoint, tying the binary data to the newly created Candidate ID. For the switch from Broadbean to Idibu, we abstracted the data transformation logic into separate Node.js modules. The job board provider can change without anyone rewriting the file-handling routine.
Impact
~90% Faster Candidate Time-to-Entry
The recruitment team no longer downloads CVs from HubSpot and re-uploads them to Bullhorn by hand. Automated file transfer logic cut time-to-entry for new candidates by an estimated 90%.
Data Consistency Across Systems
The file physically moves rather than just syncing as a URL. Recruiters working exclusively in Bullhorn get immediate access to candidate resumes, even if the HubSpot public link expires or the file moves in the CMS.
Middleware-Level API Throttling
The Pipedream queue managed the API load for binary transfers, which cost far more resources than standard JSON updates. The integration never hit Bullhorn's concurrency limits, even during peak application windows.
100% File Transfer Integrity via Retry Logic
A resume lost during a sync is a high-cost failure in the specialized executive search vertical. A retry-logic loop implemented within the middleware automatically re-attempts any failed file transfer. Candidate profiles maintain 100% data integrity for that reason.
A serverless function downloads the file from HubSpot's CDN into temporary Pipedream storage first. From that staging point, the system calculates the necessary metadata (file size, MIME type) that the Bullhorn API requires before the final upload occurs.
"Job" and "Candidate" live as distinct Custom Objects in HubSpot. When a candidate applies, the middleware updates the HubSpot record and creates the Bullhorn entity at the same time, so the attachment links to the correct internal ID in both environments.
Duplicate file uploads get detected by dedicated logic. When a candidate re-applies with a new resume, the system creates a new "CandidateFile" record in Bullhorn with a timestamp instead of overwriting the previous version. The candidate's professional history stays intact.
The middleware manages the OAuth 2.0 refresh tokens for both Bullhorn and HubSpot to keep the connection secure. Token expiration can't interrupt a long-running binary transfer, and that expiration is a common failure point in long-form data syncs.
Standard CRM integrations routinely fail on binary file transfers like candidate resumes. Engineering a serverless Pipedream middleware layer intercepts HubSpot form submissions and streams resume files directly into Bullhorn Candidate entities. This automation ensures recruitment profiles remain functionally complete without manual uploads.
FAQ
Bullhorn's internal search and parsing tools can't "read" or index a file stored on an external URL. Pushing the binary file into Bullhorn turns on the ATS's native resume parsing and keyword search capabilities. Both are critical for executive search workflows.
Pipedream's asynchronous execution runs the file transfer independently of the HubSpot form submission. For a particularly large file, the middleware queues the task. The user sees a successful submission on the website while the background transfer continues to Bullhorn.