-
Notifications
You must be signed in to change notification settings - Fork 0
Setting Qualifications via the Feed (For Snagajob Easy Apply) EXTERNAL
This resource contains integration instructions for our ATS partners. Enabling Easy Apply lets applicants use their Snagajob profile to apply to jobs.
- Your customers set up supported qualification/screener questions in your system.
- You pass us job postings via an XML feed with the qualifications per requisition.
- You pass us an application destination URL (per job) via your feed. (Example:
<PostUrl>https://myapplicantapi.com/sajeasyapply</PostUrl>
) - We post your jobs and enable our Easy Apply application experience.
- We send the application data back to the POST URL each time a worker applies! (Here is an example of the JSON)
Qualifications are a collection of standardized screening questions we offer our employers to ask Workers. In the interest of creating the best possible Worker experience, Snagajob does not support asking custom questions at this time.
Most employers receive a 60-80% application completion rate when opting in to question standardization.
Here is a list of our supported Qualification questions.
- For Boolean questions leave the "answer=" value out of the element.
- All Items must have a required=”true/false” value within each element.
- For non-boolean qualifications, reference the answer option spreadsheet for each supported qualification.
- Postings with qualifications should not include an application URL (to enable Easy Apply).
Value | Required? | Description | Example |
---|---|---|---|
name | Yes | The field indicating which qualification Employers would like to add to the posting. | name="q-basic-dob" |
answer | Yes for non-boolean qualifications Types 2 and Type 3 No for Type 1 qualifications |
The field indicating which enumeration should apply to the question being asked. | answer="1" |
required | Yes | The field that designates if the qualification is required or preferred by the Employer. | required="true" |
This posting would require the Worker to be 14 years or older, require that they be eligible to work in the US, and they prefer that they can lift more than 40lbs.
<Qualifications>
<Item name="q-basic-dob" answer="1" required="true" />
<Item name="q-basic-auth" required="true" />
<Item name="q-work-lift" answer="3" required="false" />
<Item name="q-work-lift" answer="2" required="false" />
</Qualifications>
The Type of qualification determines how it should be presented to the applicant, as well as how it will be evaluated. The recognized types of qualifications are as follows:
This is a simple Yes/No Boolean qualification. There are no options for the applicant or employer to choose from, and no variable piece of the qualification. For example, "Do you have access to reliable transportation to and from work?".
This is a Yes/No question that has exactly one variable component (or "option") that can be swapped out based on the employer's preference. For example, a job may require both "Can you speak fluent English?" and "Can you speak fluent Spanish?". An applicant may answer YES to one, both, or neither. An employer should be able to specify ANY NUMBER of options per Select Many qualifications to a job posting.
This is a Yes/No question that has exactly one variable component (or "option"), and the options can be numerically ranked in such a way that answering YES to a higher-tier option implies that you also would answer YES to a lower-tier option. This works in reverse, too - if you answer NO to a lower-tier option, it is implied that you would answer NO to a higher-tier option as well. For example, if you answer YES to "Are you at least 18 years old?", we know that you would also answer YES to "Are you at least 17 years old?" and any other options below that. An employer should only specify ONE option per Scaling qualification to a job posting.
Full Easy Apply applications are emailed to users based on locations they have access to by default.
To accept candidate data via API, you must include a POST url on each posting in the XML feed you wish to accept programmatically.
<PostUrl>https://myapplicantapi.com/sajeasyapply</PostUrl>
This url should accept a JSON payload with the following format:
Value | Description | Type | Example |
---|---|---|---|
displayText | This is the question displayed to the worker. | string | "displayText": "At least associate's degree or higher" |
isPass | "isPass": true means the worker answered Yes to the question "isPass": false means the worker answered No to the question | boolean | "isPass": true |
name | The name of the qualification | string | "name": "q-exp-degree" |
required | This field signifies if the employer requires the worker to answer 'Yes' ("isPass": true) to be qualified for the role. | boolean | "required": false |
option | For Scaling (Type 3) questions, the employer can ask multiple variations of the same question (For example, asking if the worker has more than one type of food certification). This field indicates which answer the isPass answer corresponds to. | int | “option”: 2 |
{
"applicantAddress": {
"line1": "123 Main St.",
"line2": "",
"city": "Richmond",
"stateProvCode": "VA",
"postalCode": "23219"
},
"emailAddress": "[email protected]",
"employment": [
{
"employerName": "We Paint Cars",
"endDate": null,
"jobTitle": "Automotive Painter",
"startDate": "2019-01-01T05:00:00Z"
},
{
"employerName": "Local Library",
"endDate": "2018-05-01T04:00:00Z",
"jobTitle": "Librarian",
"startDate": "2015-01-01T05:00:00Z"
},
{
"employerName": "Fast Food Chicken Chain",
"endDate": "2014-12-01T05:00:00.00Z",
"jobTitle": "Assistant Manager",
"startDate": "2011-07-01T04:00:00Z"
}
],
"firstName": "First",
"lastName": "Last",
"fullName": "First Last",
"isAuthorizedToWorkInUs": true,
"phoneNumber": "8045551234",
"qualifications": [
{
"displayText": "Background check",
"isPass": true,
"name": "q-basic-bgcheck",
"required": false
},
{
"displayText": "14 years or older",
"isPass": true,
"name": "q-basic-dob",
"option": 1,
"required": true
},
{
"displayText": "Legally authorized to work in the United States",
"isPass": true,
"name": "q-basic-auth",
"required": true
},
{
"displayText": "At least associate's degree or higher",
"isPass": true,
"name": "q-exp-degree",
"option": 2,
"required": true
}
],
"requisitionId": "req12345"
}
The post request sent to your postUrl contains an HTTP header that can be used to verify the authenticity of the post. Using the shared API secret, Snagajob EasyApply computes a message signature using the HMAC-SHA1 algorithm. This signature is sent as an X-SAJ-Signature HTTP header. An X-SAJ-Date HTTP header is included and should be used to ignore any requests over 15 minutes old. The code examples below demonstrate how the message signature is generated.
using System.Globalization;
using System.Security.Cryptography;
using System.Text;
public class Program
{
public static void Main(string[] args)
{
string requestBody = GetRequestBody();
string apiSecret = "your api secret key";
string requestXSAJDate = "Thu, 13 Jan 2022 17:21:07 GMT";
string signature = ComputeSignature($"{requestBody};{dateHeader}", apiSecret);
if (signature.Equals("AIAvMLdPqjbNocJ4UHZpg3Axxzk="))
{
Console.WriteLine("B64 HMAC SHA1: " + signature);
}
else
{
Console.WriteLine("invalid value: " + signature);
}
}
private static string ComputeSignature(string input, String key)
{
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
using(HMACSHA1 myhmacsha1 = new HMACSHA1(keyBytes))
{
byte[] inputBytes = Encoding.UTF8.GetBytes(input);
byte[] hash = myhmacsha1.ComputeHash(inputBytes);
return Convert.ToBase64String(hash);
}
}
private static string GetRequestBody()
{
return "{\"firstName\":\"John\", \"lastName\":\"Doe\", \"fullName\":\"John Doe\", \"email\":\"[email protected]\"}";
}
}