- API v2.0
- Job Feed
- Webhooks
Webhooks
Intro
Webhooks are notifications sent out by LocumJobsOnline when new leads are received. They allow us to send real-time notifications to web applications and reporting systems.
Once webhooks are set up, they send a request to a URL endpoint of your choice. You may set up separate endpoints for each lead event or opt to receive all lead events to the same endpoint.
Currently Supported Formats
- HTTP POST
- JSON
- Basic Authentication
- Bearer Token Authentication
Responding
Your endpoint should return an HTTP status code in the 2xx range to confirm that the data was successfully received. Any status code outside the 2xx range typically means the webhook was unable to complete the requested action.
Common causes for non-2xx response codes include incorrect or invalid URLs on the receiving endpoint, such as typos, or the receiving server rejecting URLs that exceed a certain character length.
Error Handling & Retries
Understanding how our platform handles webhook failures will help you design reliable endpoints and troubleshoot delivery issues effectively.
Response Requirements
Any response outside the 2xx range will be treated as a failure and trigger our retry mechanism.
Common Error Scenarios:
Client-Side Errors (4xx)
- 400 Bad Request: Your endpoint rejected the payload format
- 401 Unauthorized: Authentication issues with your webhook credentials
- 403 Forbidden: Your server is refusing the request
- 404 Not Found: Webhook URL is incorrect or endpoint doesn't exist
- 413 Payload Too Large: Your server cannot handle the request size
- 422 Unprocessable Entity: Your server cannot process the webhook data structure
Server-Side Errors (5xx)
- 500 Internal Server Error: Temporary issues with your server
- 502 Bad Gateway: Gateway or proxy server issues
- 503 Service Unavailable: Your server is temporarily overloaded
- 504 Gateway Timeout: Your server took too long to respond
Reference:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
Retries
When a webhook delivery fails (non-2xx response or connection error), LocumJobsOnline automatically retries using a set retry schedule:
- Initial attempt: Immediate delivery
- Retry 1: After 1 minute
- Retry 2: After 5 minutes
- Retry 3: After 1 hour
- Retry 4: After 6 hours
- Retry 5: After 24 hours
Total attempts: 6 (1 initial + 5 retries)
After all retries are exhausted, the webhook delivery is marked as permanently failed.
Recommendations When Webhooks Fail:
For 4xx Errors (Client Issues):- Verify your endpoint URL - Ensure the webhook URL is correct and accessible
- Check authentication - Validate that your server can verify the X-T5-Signature header & also confirm that the webhook credentials (or token) are accurate and authenticated
- Review payload handling - Ensure your endpoint can accept JSON payloads and return 2xx responses
- Test URL length limits - Some servers reject URLs that exceed character limits
- Check server error logs - Your server logs may provide insights into the error
- Inspect the .htaccess file - A misconfigured .htaccess file can cause 500 errors
- Contact your hosting provider - They can help investigate server-level issues
- Implement proper error handling - Ensure your endpoint returns 2xx responses for successful processing
- Increase server capacity - Scale your infrastructure to handle webhook volume
- Add monitoring - Track your endpoint's response times and error rates
- Consider queuing - Accept webhooks quickly and process them asynchronously
- Optimize response time - Your endpoint should respond within 30 seconds
- Return success quickly - Accept the webhook and process data asynchronously
- Implement health checks - Monitor your endpoint's availability
- Log webhook attempts - Keep records of incoming webhooks for troubleshooting
- Implement idempotency - Handle duplicate webhook deliveries gracefully
- Use monitoring tools - Set up alerts for webhook failures
- Test regularly - Use our webhook testing feature to verify your endpoint
LocumJobsOnline provides comprehensive webhook delivery monitoring:
- Delivery status - Track success/failure for each webhook attempt
- Response codes - See the exact HTTP status codes your endpoint returned
- Response messages - View error details returned by your server
- Retry history - Monitor the complete retry sequence for failed deliveries
- Payload storage - Access request/response data for debugging
Reach out to LocumJobsOnline support if you experience:
- Consistently high failure rates (>5%) despite following best practices
- Webhooks failing with valid 2xx responses
- Missing webhook deliveries for confirmed events
- Persistent authentication issues with correct signatures
Lead Events & Payloads
Recommended
TrackFive advises clients to individually support and enable each lead event trigger for the most efficient webhook experience. Given the candidate windows in effect, the previously suggested "new lead" trigger may not capture every lead event, making it a less optimal webhook solution.
Job Application Received
This event is triggered when you receive a job application.
Sample POST Payload
{
"event": "job-application-received",
"data": {
"created_at": "2015-12-08T15:24:35-05:00",
"candidate": {
"id": 12345,
"first_name": "John",
"last_name": "Doe",
"address": "1234 Example Street",
"address2": null,
"city": "Louisville",
"state": "KY",
"zip": "40210",
"sent": "2015-12-08T15:24:35-05:00",
"email": "johndoe@test.com",
"phone": "1234567890",
"license": "OD",
"experience": "63",
"specialties": [
"Periodontics",
"Neonatal",
"Child and Adolescent Psychiatry"
],
"licensed_states": [
"PA",
"FL",
"NY",
"VA",
"Compact"
]
},
"job": {
"id": 3,
"title": "Job Title",
"license": "PA",
"specialty": "Administration",
"city": "Lancaster",
"state": "PA",
"zip": "17603",
"shift": "Night",
"shiftType": "days",
"shiftsPerWeek": 3,
"hoursPerShift": 12,
"payAmountMin": "737.00",
"payAmountMax": "913.00",
"payFrequency": "Hourly",
"durationLength": 2,
"durationUnit": "week",
"startdate": "2025-12-06",
"description": "Job Description",
"requirements": "Job Requirements",
"benefits": "Text describing the benefits for the position",
"posted": "2025-12-06",
"referenceNumber": "mWtvcVk0",
"employmentType": "Locum Tenens"
}
}
}
Direct Application Received
This event is triggered when you receive a direct application.
Sample POST Payload
{
"event": "direct-application-received",
"data": {
"created_at": "2015-12-08T15:24:35-05:00",
"candidate": {
"id": 12345,
"first_name": "John",
"last_name": "Doe",
"address": "1234 Example Street",
"address2": null,
"city": "Louisville",
"state": "KY",
"zip": "40210",
"sent": "2015-12-08T15:24:35-05:00",
"email": "johndoe@test.com",
"phone": "1234567890",
"license": "CRNA",
"experience": "1",
"specialties": [
"Allergy and Immunology",
"Orthodontics",
"Rad - Nuclear"
],
"licensed_states": [
"PA",
"FL",
"NY",
"VA",
"Compact"
]
},
"job": {
"id": 7,
"title": "Job Title",
"license": "MD",
"specialty": "Administration",
"city": "Lancaster",
"state": "PA",
"zip": "17603",
"shift": "Night",
"shiftType": "days",
"shiftsPerWeek": 3,
"hoursPerShift": 12,
"payAmountMin": "737.00",
"payAmountMax": "913.00",
"payFrequency": "Hourly",
"durationLength": 2,
"durationUnit": "week",
"startdate": "2025-12-06",
"description": "Job Description",
"requirements": "Job Requirements",
"benefits": "Text describing the benefits for the position",
"posted": "2025-12-06",
"referenceNumber": "mWtvcVk0",
"employmentType": "Locum Tenens"
}
}
}
Real-Time lead Received
This event is triggered when you receive a real time lead.
Sample POST Payload
{
"event": "real-time-lead-received",
"data": {
"created_at": "2015-12-08T15:24:35-05:00",
"candidate": {
"id": 12345,
"first_name": "John",
"last_name": "Doe",
"address": "1234 Example Street",
"address2": null,
"city": "Louisville",
"state": "KY",
"zip": "40210",
"sent": "2015-12-08T15:24:35-05:00",
"email": "johndoe@test.com",
"phone": "1234567890",
"license": "DO",
"experience": "83",
"specialties": [
"Interventional Radiology",
"Trauma Surgery",
"Urgent Care"
],
"licensed_states": [
"PA",
"FL",
"NY",
"VA",
"Compact"
]
}
}
}
Unlocked Lead Received
This event is triggered when you receive an unlocked lead.
Sample POST Payload
{
"event": "lead-unlocked",
"data": {
"unlocked_at": "2015-12-08T15:24:35-05:00",
"unlocked_by": "Smith, John",
"candidate": {
"id": 12345,
"first_name": "John",
"last_name": "Doe",
"address": "1234 Example Street",
"address2": null,
"city": "Louisville",
"state": "KY",
"zip": "40210",
"sent": "2015-12-08T15:24:35-05:00",
"email": "johndoe@test.com",
"phone": "1234567890",
"license": "MD",
"experience": "77",
"specialties": [
"Orthodontics",
"Neonatal",
"Optometry - Peds"
],
"licensed_states": [
"PA",
"FL",
"NY",
"VA",
"Compact"
]
}
}
}
NOT RECOMMENDED
New Lead
*WILL BE DEPRECATED* This event is triggered when you receive a new lead, including real-time leads, unlocked leads, job applicants, and direct applicants. However, it may not capture every event due to candidate windows in effect within our platform. For better coverage, we recommend opting into each specific lead event type listed above instead of relying solely on this event trigger.
Sample POST Payload
{
"event": "new-lead",
"lead": {
"id": 12345,
"first_name": "John",
"last_name": "Doe",
"address": "1234 Example Street",
"address2": null,
"city": "Louisville",
"state": "KY",
"zip": "40210",
"sent": "2015-12-08T15:24:35-05:00",
"email": "johndoe@test.com",
"phone": "+1234567890",
"license": "CAA",
"experience": "31",
"employmentType": "Locum Tenens",
"specialties": "Perinatology",
"contact_time": "Afternoon",
"preferred_destinations": "New Mexico",
"licensed_states": "West Virginia",
"preferred_cities": "Sint vero cumque illo odio. Reprehenderit aut illum cum amet quis sed quia.",
"license_state": "South Carolina",
"license_date_issued": "04/04/2005",
"license_date_expires": "12/18/1955",
"license_investigated": "No",
"license_investigation_details": "",
"employment_history": [
{
"company": "Example Company",
"state": "PA",
"phone": "1234567890",
"start_date": "2021-01-01",
"end_date": null
}
],
"job_applications": [
{
"job_id": 15247,
"title": "Example Job Title",
"reference": "EXAMPLE12356",
"is_direct_app": false,
"created_at": "1980-04-17T06:49:57+00:00"
}
],
"unlocked_by": "Smith, John"
}
}
Referral Source Structuring Recommendation
To maximize the effectiveness of your lead tracking and referral analysis via webhooks, we recommend creating separate referral sources based on the four separate lead event types
Why Structure by Lead Event Type?
- Gain more accurate insights into which programs are driving which types of engagement.
- Compare performance between the programs you're involved in
- Optimize marketing spend and outreach based on event-specific conversion trends.
- Set more granular performance KPIs per referral initiative.
Data Types & Validation
Our webhook mechanism dispatches the following types of events.
Event Types:
| Event Type | Description | Notes |
|---|---|---|
job-application-received
|
Job application submitted | Recommended |
direct-application-received
|
Direct application submitted | Recommended |
real-time-lead-received
|
Real-time lead generated | Recommended |
lead-unlocked
|
Lead unlocked by a recruiter | Recommended |
new-lead
|
DEPRECATED - Generic lead event | Not recommended |
Default event structure:
{
"event": "name-of-event",
"additional-objects": "...varies by event type"
}
Here are a few data objects that are commonly used across several event types.
Candidate/Lead Data Fields:
This table outlines the standard data fields for a candidate or lead profile.
| Field | Type | Notes |
|---|---|---|
id |
integer | Always present. |
first_name |
string | Always present. |
last_name |
string | Always present. |
address |
string | Always present. |
address2 |
string or null | Secondary address line; Nullable. |
city |
string | Always present. |
state |
string | 2-letter state abbreviation (e.g., "CA"). Always present. |
zip |
string | Always present. |
email |
string | Must be a valid email format. Always present. |
phone |
string | E.164 format (e.g., "+14155552671"). Always present. |
license |
string | Primary professional license. Always present. |
experience |
string | Years or level of experience. Always present. |
specialties |
array of strings or string | Can be an array or a single comma-separated string. Can be empty array or empty string |
licensed_states |
string | Comma-separated list of state abbreviations. Always present. |
Job Fields:
| Field | Type | Notes |
|---|---|---|
id |
integer | Unique job identifier. Always present. |
title |
string | Job title. Always present. |
license |
string | Required license type. Always present. |
specialties |
array of strings or string | Can be an array or a single comma-separated string. Can be empty array or empty string |
specialty |
string | Medical specialty. Always present. |
city |
string or null | Job location city. Always present. Potentially Nullable. |
state |
string | 2-letter state abbreviation. Always present. |
zip |
string | Job location postal code. Always present. Potentially Nullable |
shift |
string | Shift information. Always present. Can be empty string. |
shiftType |
string | Type of shift. Always present. Can be empty string. |
shiftsPerWeek |
integer or null | Number of shifts per week. Always present. Nullable. |
hoursPerShift |
integer or null | Hours per shift. Always present. Nullable. |
payRate |
string | Pay rate description. Always present. |
payAmountMin |
string | Minimum pay amount formatted as currency string (e.g., "1192.00"). Always present. Can be empty string. |
payAmountMax |
string | Maximum pay amount formatted as currency string (e.g., "1192.00"). Always present. Can be empty string. |
payFrequency |
string or null | Pay frequency (e.g., "Monthly"). Always present. Nullable. |
positionType |
string or null | Position type. Always present. Nullable. |
duration |
string | Assignment duration. Always present. Nullable. |
durationLength |
integer or null | Duration length number. Nullable. |
durationUnit |
string or null | Duration unit (days, weeks, months). Nullable. |
startDate |
Date String (YYYY-MM-DD) or null | Job start date. Nullable. (e.g., "2025-08-21") |
description |
string | Job description (may contain HTML). Always present. |
requirements |
string or null | Job requirements (may contain HTML). Always present. Nullable. |
benefits |
string or null | Job benefits (may contain HTML). Always present. |
posted |
Date String (YYYY-MM-DD) | Job posting date. Always present. (e.g., "2025-08-21") |
referenceNumber |
string | Client's job reference number. Always present. |
employmentType |
string | Employment type. Always present. Can be empty string. |
isPromoted |
boolean | Whether job is promoted/featured. Always present. |
Employment History Array:
| Field | Type | Notes |
|---|---|---|
company |
string | Employer name. Always present. (Max 255 characters) |
state |
string or null | State abbreviation (2 characters). Nullable. |
phone |
string | Contact phone number. Always present. (Max 20 characters) |
start_date |
Date String (YYYY-MM-DD) | Employment start date. Always present. (e.g., "2020-01-15") |
end_date |
Date String (YYYY-MM-DD) or null | Employment end date. Nullable. Null indicates current employment. (e.g., "2023-06-30") |
DateTime Fields & Timezone Information:
- Timestamps: ISO 8601 format with timezone offset. Example:
"2015-12-08T15:24:35-05:00" - Dates: Date only in YYYY-MM-DD format. Example:
"2015-12-08"
Payloads
Next, we'll provide information about the different event type payloads.
Job Application Received Payload:
Event Structure:
{
"event": "job-application-received",
"data": {
"created_at": "ISO8601 timestamp",
"candidate": {},
"job": {}
}
}
Root Data Fields:
| Field | Type | Notes |
|---|---|---|
created_at |
ISO8601 date string | Application submission timestamp. Always present. (e.g., "2025-08-25T20:19:54+00:00") |
candidate |
object | Candidate/lead information. Always present. |
job |
object | Job details. Always present. |
Candidate Object Fields:
Uses the same structure as the Candidate/Lead Data Fields, with these values as example from the payload:
- specialties: array of strings (e.g., ["Admin/Mgmt", "Antepartum"])
- licensed_states: array of strings (e.g., ["FL"])
Job Object Fields:
Uses the same structure as the Job Data Fields.
Direct Application Received Payload:
Event Structure:
{
"event": "direct-application-received",
"data": {
"created_at": "ISO8601 timestamp",
"candidate": {},
"job": {}
}
}
Root Data Fields:
| Field | Type | Notes |
|---|---|---|
created_at |
ISO8601 date string | Application submission timestamp. Always present. (e.g., "2025-09-04T18:34:18+00:00") |
candidate |
object | Candidate/lead information. Always present. |
job |
object | Job details. Always present. |
Candidate Object Fields:
Uses the same structure as the Candidate/Lead Data Fields.
Job Object Fields:
Uses the same structure as the Job Data Fields.
Real-Time Lead Received Payload:
Event Structure:
{
"event": "real-time-lead-received",
"data": {
"created_at": "Date string",
"candidate": {}
}
}
Root Data Fields:
| Field | Type | Notes |
|---|---|---|
created_at |
Date String (YYYY-MM-DD) | Lead creation date. Always present. (e.g., "2025-09-04") |
candidate |
object | Candidate/lead information. Always present. |
Candidate Object Fields:
Uses the same structure as the Candidate/Lead Data Fields.
Lead Unlocked Payload:
Event Structure:
{
"event": "lead-unlocked",
"data": {
"candidate": {},
"unlocked_at": "ISO8601 timestamp",
"unlocked_by": "string"
}
}
Root Data Fields:
| Field | Type | Notes |
|---|---|---|
candidate |
object | Candidate/lead information. Always present. |
unlocked_at |
ISO8601 date string | Timestamp when lead was unlocked. Always present. (e.g., "2025-09-04T14:43:20+00:00") |
unlocked_by |
string | Name of recruiter who unlocked the lead. Always present. |
Candidate Object Fields:
Uses the same structure as the Candidate/Lead Data Fields.
New Lead Payload:
Event Structure:
{
"event": "new-lead",
"lead": {}
}
Includes all candidate fields plus:
| Field | Type | Notes |
|---|---|---|
license_number |
string | Always present. Can be an empty string. |
certification |
string | Always present. Can be an empty string. |
sent |
ISO8601 date string | Always present. (e.g., "2015-12-08T15:24:35-05:00") |
contact_time |
string | Always present. Can be an empty string. |
preferred_destinations |
string | Always present. |
license_state |
string | Always present. |
license_date_issued |
Date String (YYYY-MM-DD) | Always present. Can be an empty string. (e.g., "2015-12-08") |
license_date_expires |
Date String (YYYY-MM-DD) | Always present. Can be an empty string. (e.g., "2015-12-08") |
license_investigated |
string | Always present. Can be an empty string. |
license_investigation_details |
string | Always present. Can be an empty string. |
is_premium |
boolean or null | |
employment_history |
array of objects | Always present. Can be empty array. |
job_applications |
array of strings | Always present. Can be empty array. |
unlocked_by |
string or null | Included only if the lead has been unlocked. Contains recruiter name. |
Mapping Requirements
Mapping our specialty and/or license lists to yours is crucial when building a webhook to ensure data consistency and accuracy. This mapping ensures that the licenses and specialties from our platform align correctly with those in your system, allowing candidates to be properly categorized and routed. Without this mapping, candidates may be added with incomplete data, leading to discrepancies and inefficient lead management.
Below is our current list of specialties and/or license types for mapping. We send the ‘Name’ value with candidate records.
License Types
| ID | Name | Full Name |
|---|---|---|
1 |
MD | Doctor of Medicine (MD) |
2 |
DO | Doctor of Osteopathic Medicine (DO) |
3 |
PA | Physician Assistant (PA) |
4 |
NP | Nurse Practitioner (NP) |
5 |
CRNA | Certified Registered Nurse Anesthetist (CRNA) |
6 |
DMD | Doctor of Dental Medicine (DMD) |
7 |
DDS | Doctor of Dental Surgery (DDS) |
8 |
DPM | Doctor of Podiatric Medicine (DPM) |
9 |
OD | Doctor of Optometry (OD) |
10 |
CAA | Certified Anesthesiologist Assistant (CAA) |
Specialties
| ID | Name | Full Name |
|---|---|---|
49 |
Addiction Medicine | Addiction Medicine |
1 |
Administration | Administration |
70 |
Adolescent Medicine | Adolescent Medicine |
2 |
Allergy and Immunology | Allergy and Immunology |
71 |
Anesthesiology - Cardiac | Anesthesiology - Cardiac |
72 |
Anesthesiology - Critical Care | Anesthesiology - Critical Care |
3 |
Anesthesiology | Anesthesiology - General/Other |
73 |
Anesthesiology - Neuro | Anesthesiology - Neurology |
74 |
Anesthesiology - OB | Anesthesiology - Obstetric |
75 |
Cardio - Advanced Heart Failure / Transplant | Cardiology - Advanced Heart Failure / Transplant |
59 |
Cardiac Electrophysiology | Cardiology - Electrophysiology |
4 |
Cardiology | Cardiology - General/Other |
76 |
Cardio - Interventional | Cardiology - Interventional |
57 |
Cardiovascular Disease | Cardiovascular Disease |
5 |
Critical Care | Critical Care |
65 |
Cosmetic Dentistry | Dentistry - Cosmetic |
62 |
Endodontics | Dentistry - Endodontics |
69 |
Family Practice - Dentistry | Dentistry - Family Practice |
68 |
General Dentistry | Dentistry - General/Other |
64 |
Oral and Maxillofacial Surgery | Dentistry - Oral and Maxillofacial Surgery |
61 |
Orthodontics | Dentistry - Orthodontics |
66 |
Pediatric Dentistry | Dentistry - Pediatric |
63 |
Periodontics | Dentistry - Periodontics |
67 |
Prosthodontics | Dentistry - Prosthodontics |
7 |
Dermatology | Dermatology |
58 |
Dermatopathology | Dermatopathology |
8 |
Emergency Medicine | Emergency Medicine |
9 |
Endocrinology | Endocrinology |
77 |
Epilepsy | Epilepsy |
10 |
Family Practice | Family Practice |
11 |
Gastroenterology | Gastroenterology |
12 |
General Practice | General Practice |
13 |
Genetics | Genetics |
14 |
Geriatrics | Geriatrics |
15 |
Hematology and Oncology | Hematology and Oncology |
78 |
Hepatology | Hepatology |
16 |
Hospitalist | Hospitalist |
79 |
Hyperbaric | Hyperbaric Medicine |
17 |
Infectious Disease | Infectious Disease |
80 |
Internal Medicine - Critical Care | Internal Medicine - Critical Care |
18 |
Internal Medicine | Internal Medicine - General/Other |
51 |
Maternal-Fetal Medicine | Maternal-Fetal Medicine (MFM) |
19 |
Neonatal | Neonatal |
20 |
Nephrology | Nephrology |
21 |
Neurology | Neurology - General/Other |
81 |
Neuro - Interventional | Neurology - Interventional |
82 |
Neuro - Neurocritical Care | Neurology - Neurocritical Care |
83 |
Neuro - Peds | Neurology - Pediatric |
84 |
Neuro - Stroke | Neurology - Stroke (Vascular) |
85 |
Nuclear Medicine | Nuclear Medicine |
22 |
Nurse Practitioner | Nurse Practitioner |
23 |
Obstetrics and Gynecology | Obstetrics and Gynecology |
24 |
Occupational Medicine | Occupational Medicine |
25 |
Oncology | Oncology - General/Other |
86 |
Onc - Gyn | Oncology - Gynecological |
54 |
Radiation Oncology | Oncology - Radiation |
87 |
Onc - Surgical | Oncology - Surgical |
26 |
Ophthalmology | Ophthalmology |
88 |
Optometry | Optometry - General/Other |
89 |
Optometry - Geriatric | Optometry - Geriatric |
90 |
Optometry - Low Vision / Vision Rehab | Optometry - Low Vision / Vision Rehab |
91 |
Optometry - Ocular Disease / Medical | Optometry - Ocular Disease / Medical |
92 |
Optometry - Peds | Optometry - Pediatric |
27 |
Osteopathic | Osteopathic |
55 |
Other | Other |
42 |
Otolaryngology | Otolaryngology |
93 |
Pain Med | Pain Medicine |
28 |
Palliative Medicine | Palliative Medicine |
29 |
Pathology | Pathology |
94 |
Peds - Anesthesiology | Pediatrics - Anesthesiology |
95 |
Peds - Critical Care | Pediatrics - Critical Care |
31 |
Pediatrics | Pediatrics - General/Other |
96 |
Peds - Hem/Onc | Pediatrics - Hematology/Oncology |
30 |
Perinatology | Perinatology |
34 |
Physical Medicine | Physical Medicine |
97 |
Podiatry - Diabetic Foot Care | Podiatry - Diabetic Foot Care |
98 |
Podiatry | Podiatry - General/Other |
99 |
Podiatry - Sports Med | Podiatry - Sports Medicine (Foot & Ankle) |
100 |
Podiatry - Surgery | Podiatry - Surgery |
101 |
Podiatry - Wound Care / Limb Salvage | Podiatry - Wound Care / Limb Salvage |
102 |
Preventive Med | Preventive Medicine |
103 |
Psych - Addiction | Psychiatry - Addiction |
50 |
Child and Adolescent Psychiatry | Psychiatry - Child and Adolescent |
104 |
Psych - Forensic | Psychiatry - Forensic |
35 |
Psychiatry | Psychiatry - General/Other |
105 |
Psych - Geriatric | Psychiatry - Geriatric |
56 |
Psychology | Psychology |
106 |
Pulmonary Critical Care | Pulmonary Critical Care |
36 |
Pulmonology | Pulmonology |
107 |
Rad - Diagnostic | Radiology - Diagnostic |
37 |
Radiology | Radiology - General/Other |
53 |
Interventional Radiology | Radiology - Interventional |
108 |
Rad - Musculoskeletal | Radiology - Musculoskeletal |
109 |
Rad - Neuroradiology | Radiology - Neuroradiology |
110 |
Rad - Nuclear | Radiology - Nuclear Medicine |
111 |
Rad - Peds | Radiology - Pediatric |
112 |
Rad - Teleradiology | Radiology - Teleradiology |
113 |
Rad - Womens/Breast/Mammo | Radiology - Womens/Breast/Mammo |
114 |
REI | Reproductive Endocrinology & Infertility (REI) |
38 |
Rheumatology | Rheumatology |
115 |
Sleep Med | Sleep Medicine |
116 |
Sports Med | Sports Medicine |
117 |
Surgery - Bariatric | Surgery - Bariatric |
118 |
Surgery - Breast/Cancer | Surgery - Breast/Cancer |
45 |
Cardiothoracic Surgery | Surgery - Cardiothoracic |
33 |
Colorectal Surgery | Surgery - Colorectal |
39 |
General Surgery | Surgery - General/Other |
119 |
Surgery - Hand | Surgery - Hand |
43 |
Neurosurgery | Surgery - Neurosurgery |
44 |
Orthopedic Surgery | Surgery - Orthopedic |
48 |
Pediatric Surgery | Surgery - Pediatric |
120 |
Surgery - Plastic | Surgery - Plastic |
121 |
Surgery - Thoracic | Surgery - Thoracic |
60 |
Transplant Surgery | Surgery - Transplant |
46 |
Trauma Surgery | Surgery - Trauma |
47 |
Vascular Surgery | Surgery - Vascular |
122 |
Telemedicine | Telemedicine |
40 |
Urgent Care | Urgent Care |
123 |
Urogyn | Urogynecology / Female Pelvic Medicine |
41 |
Urology | Urology |
124 |
Women's Health | Women's Health |
125 |
Wound, Burn & Ostomy | Wound, Burn & Ostomy |
Integration Requirements
| Field | Required | Notes |
|---|---|---|
license_id |
Yes | Must match one of the license IDs above |
specialty_id |
Yes | Medical licenses work with medical specialties; dental licenses work with dental specialties |
Handling Duplicate Candidates
When building webhooks or APIs to receive leads, it's essential to ensure that they are designed to handle duplicate leads—especially those that may already exist in your ATS currently attributed to another vendor.
Please ensure your system checks for existing leads before adding new ones to prevent duplicates. It is essential that existing candidates are upserted with at least the latest referral attribution from our platform, even if other candidate data remains unchanged, to accurately reflect ROI and the effectiveness of our platform.
Key Considerations:
- Check for Duplicates: Use unique identifiers (such as email or phone number) to verify if a candidate already exists in your ATS.
- Update Existing Records: If the candidate is a duplicate, update the existing record with new attribution and candidate data, rather than creating a new entry.
- Maintain Data Integrity: This ensures your candidate data remains accurate, prevents unnecessary duplication in your ATS, and preserves effective attribution for proper evaluation of your lead sources.
Next Steps for Completing Implementation
Once you have configured the webhook, you'll need to set up the endpoint URL in your BRAND account and link it to the appropriate lead events, as per your setup.
You can either share the webhook endpoint URL with your Client Success Manager or enter it directly into your account. To do this, go to the 'Agency Info' > 'Webhooks' page, then select ‘Add New Webhook.'
Enter the endpoint URL, choose the correct Authentication Type (as specified in your configuration), and select the events you want to send to that endpoint.
You have the option to create separate endpoint URLs for different event types, or you can direct all event types to the same endpoint.
After entering the details, you can test the webhook to ensure it's functioning correctly. Click on ‘Test your Webhook,' select the event you want to test, and click ‘Send Test Event.' The results will appear on the right side of the screen.
If the tests are successful, you can save the webhook endpoint URL and proceed. You're all set!