Connecting your Bullhorn account
Bullhorn issues API access per customer. You ask Bullhorn support for an API username, client ID and client secret, paste those into Schakel and then sign in at Bullhorn once. Requesting them usually takes a few working days; the rest is five minutes.
What you end up withA connected Bullhorn account in Schakel, with your placements visible to the connector.
- 01
Request API access from Bullhorn
Email Bullhorn support and ask for REST API access for an accounting integration. Explicitly ask for refresh tokens as well: without them your connector stops every ten minutes. You get three things back: an API username, a client ID and a client secret. This is the only step you cannot do yourself, and the only one that takes time.
Or go straight to https://www.bullhorn.com/support/
- 02
Give them the callback URL
Bullhorn asks which address they may send you back to after signing in. Give them exactly this: https://app.schakel.app/api/connections/bullhorn/callback. If a single character differs, Bullhorn refuses the sign-in with no explanation.
- 03
Fill in the three credentials in Schakel
In Schakel, go to Connections and fill in the API username, client ID and client secret in the Bullhorn block. Schakel uses that username to work out which data centre your Bullhorn runs on, because that differs per customer. Note that Bullhorn accepts any username on that lookup, so a typo only shows up at the next step.
- 04
Sign in at Bullhorn once
Then click Connect with Bullhorn, sign in as the API user and approve. You land back in Schakel with the name of your Bullhorn environment shown. Your password never reaches Schakel: you type it on Bullhorn’s own screen.
Worth knowing
- Permanent placements and contract work are invoiced differently. A permanent placement earns a fee once, and that sits on the placement itself; that works in every Bullhorn. Contract work runs on approved hours, and those only exist if you have Bullhorn Back Office (Pay & Bill). Schakel checks for that module at connect time and switches the option off if you do not have it.
- Fill in the fee on a permanent placement carefully in Bullhorn. A number below 1 is read as a percentage of the annual salary, so 0.2 means 20%. A number above 1 is read as a flat amount, so 7500 means € 7,500. If it is exactly 1, Schakel skips the placement and says why: it could mean either and neither is likely to be what you meant.
- Only placements with the statuses you set in the settings are invoiced, by default Approved and Completed. A placement still at Placed can fall through before it starts, and invoicing one costs you a credit note and a phone call.
- Bullhorn runs on numbered data centres. Schakel works out which one is yours from your API username, so you do not have to know anything about it. If Bullhorn migrates your environment, the connector notices on its own.
- Nothing is changed in Bullhorn. The connector reads placements, clients and approved hours, and writes the invoices into your accounting package. In Bullhorn everything stays as it is.
If something goes wrong
- Bullhorn refuses the sign-in.
- Compare it letter by letter with what support sent you. It is the API username, not your normal Bullhorn login, and not your email address. You only see this at the sign-in step, not when filling it in: the lookup Schakel does beforehand accepts any username.
- Schakel says Bullhorn returned no lasting access.
- Refresh tokens are switched off for your client ID. Email Bullhorn support and ask them to enable them; it is a setting on their side. Without it you would have to sign in again every ten minutes, so Schakel would rather not store the connection half way.
- I am not sent back to Schakel after signing in.
- A different address is registered at Bullhorn. Ask support to set exactly https://app.schakel.app/api/connections/bullhorn/callback, with no trailing slash.
- The connector finds no hours to invoice.
- Check whether you have Bullhorn Back Office and whether the hours are approved there. Without that module approved hours do not exist in the API, and then only permanent placements can be invoiced. The connector settings say so too.
Stuck on a step?
Screens move around. If what you see does not match the screenshots, message us and we will look at it with you, and fix the page.