This use case provides technical implementation details for the SEEK Optimised Apply product.
You can find more information and request an integration on its product page .Using SEEK’s Apply Form, candidates can apply for jobs without leaving our website or mobile app.
This allows candidates to use documents and information already stored in their SEEK Profiles.
SEEK Optimised Apply enables industry-leading conversion rates of candidates through the application funnel.When a candidate applies for a job advertised by one of your hirers, the SEEK API makes their application available for export.
You can export applications for job ads posted via your recruitment software, but also for those posted directly on SEEK.The SEEK API may occasionally send duplicate events.
This can occur incidentally, or when SEEK finds and fixes a data quality issue.
While it is generally safe to ignore duplicate events that are sent in quick succession,
we recommend reprocessing them to ensure that your software always has the latest view of each application.A duplicate Events sent via the webhook method do not contain sensitive information.Once you receive an event you can use its You do not need to query for the candidate’s application separately as all information can be retrieved as part of the
CandidateApplicationCreated
events are emitted when candidates submit applications.
You will receive events for SEEK hirers you have an ApplicationExport
relationship with at the time of application submission.You will need to request candidate application details from the GraphQL endpoint in response to these events.
For more details, see:Job posting method
Application ingestion method
Deliverables
Via your software
Optimised ApplyNew
Candidate data
Attachmentsresume, cover letter, selection criteria
ATS screening question submissionsNew
Direct on SEEK
Optimised ApplyNew
Candidate data
Attachmentsresume, cover letter, selection criteria
SEEK screening question submissions
CandidateApplicationCreated
event does not indicate that a candidate modified their application.
A candidate may submit multiple applications for a given job ad on the SEEK job board,
but each application is modelled as its own object.A candidate application will remain for 180 days after the close date of its associated job ad.
Your software must store any data that it needs to access after the 180 day period.A significant number of SEEK hirers have workflows that require posting job ads directly on the SEEK employer website.
On the SEEK employer website , there is a job reference field that hirers can provide during posting if they intend for the applications to arrive in their ATS.In order to support the workflows of these hirers, SEEK strongly recommends that you appropriately handle CandidateApplicationCreated
events from job ads posted outside of your software.
Otherwise, hirers will need to use the SEEK employer website to manage applications for these job ads.To associate an application from a job ad with the appropriate position in your software, use the PostedPositionProfile.seekHirerJobReference
field.
Your software will not have a record of position identifiers for job ads posted outside the SEEK API, so associating applications based on known position identifiers will fail.If the design of your software prohibits it from handling job ads posted from another source,
you can implement the following logic:- Use a reference field to correlate the job ad with an existing position in your software.
- If correlation fails, check the
PostedPositionProfile.seekCreatedBySelfIndicator
field for the job ad.true
indicates that the job ad was posted by your software. You should triage this job ad as your software may have omitted a reference field.false
indicates that the job ad was posted outside of your software. You may discard this job ad and its associated applications at the expense of workflow flexibility for your hirers. If you received the application via webhook, you should still respond with a2xx
status to allow the SEEK API to halt retries and mark the application as delivered.
CandidateApplicationCreated
events:JSON
Copy
{
"events": [
{
"id": "seekAnzPublicTest:event:events:5cKZnRzXas97fyUAhpiAV1",
"type": "CandidateApplicationCreated",
"createDateTime": "2019-09-13T22:16:10.593Z",
"candidateApplicationProfileId": "seekAnzPublicTest:candidateProfile:apply:7DtW6Q68gk2R4okNGhvg1Y",
"candidateId": "seekAnzPublicTest:candidate:feed:5PGXAHysiXhtA9JUqhyM8hhzMuWMPA",
// This is only available for signed webhook subscriptions
"hirerId": "seekAnzPublicTest:organization:seek:93WyyF1h"
},
{
"id": "seekAnzPublicTest:event:events:WBmJMt4uEbj72ZVMhGi2hS",
"type": "CandidateApplicationCreated",
"createDateTime": "2019-09-08T20:32:12.479Z",
"candidateApplicationProfileId": "seekAnzPublicTest:candidateProfile:apply:4QM5fWQbdekL9gPtPZrzex",
"candidateId": "seekAnzPublicTest:candidate:feed:5PGXAHysjZdkQYwZghfL4bRCqvZ7ZM",
// This is only available for signed webhook subscriptions
"hirerId": "seekAnzPublicTest:organization:seek:93WyyF1h"
}
],
"subscriptionId": "seekAnzPublicTest:webhookSubscription:events:BoJiJ9ZWFVgejLXLJxUnvL",
"url": "https://example.com/webhook"
}
candidateApplicationProfileId
to query the candidate’s application using the candidateProfile
query.See the webhooks section for more information.Receiving candidate application events via polling with the SEEK API:This query example returns a page of CandidateApplicationCreated
events since the previous cursor:query ($after: String!, $filter: EventsFilterInput!, $schemeId: String!) {
events(after: $after, filter: $filter, schemeId: $schemeId) {
edges {
node {
typeCode
... on CandidateApplicationCreatedEvent {
candidate {
person {
name {
formattedName
}
}
}
candidateApplicationProfile {
associatedPositionProfile {
positionUri
}
}
}
}
}
pageInfo {
hasNextPage
endCursor
}
}
}
Event
.See the polling section for more information.