After your software has synced a position,
the SEEK API can notify you when Ad Sync posts or updates a corresponding job ad.
This is driven by asynchronous lifecycle events as SEEK may not process the position sync in real time.When your software receives a Job Posting event and retrieves the corresponding 
When your software receives a
If this is not feasible, your software may add an
When querying the state of a Subscribe to 
A PositionNotPosted event will be emitted whenever a position cannot be posted on SEEK, whether due to insufficient information in the
To determine why a position was not posted, use the Some example keys you can use to test different scenarios:The Note Requests will be routed to the Playground environment if
Hirers can use the SEEK Employer website or a classic or Enhanced Job Posting integration to edit job ads posted via Ad Sync.
Keep the details in your software in sync with these changes.Directional A new
Directional In rare cases, SEEK may flag a job ad after it has been posted, move it to a
Expiration is a terminal state for the job ad.
Disable the action to view it on SEEK.Directional Provide an option to re-post the job ad via Enhanced Job Posting, once available.
PostedPositionProfile object from our GraphQL endpoint,
correlate it to a position in your software via identifiers & references,
then display it in your job ad list view.
This improves hirer understanding and reduces the likelihood that they will inadvertently post a duplicate ad via classic or Enhanced Job Posting.An open position is not guaranteed to be automatically posted by Ad Sync.
Hirers can specify rules to exclude certain positions,
and data duplication or quality issues may prevent Ad Sync from advertising the position.PositionProfilePosted or PositionProfileUpdated event,
use the positionProfileId from the event to query the job ad.
The response includes SEEK job category and location identifiers resolved from SEEK’s taxonomies,
alongside human-readable names you can show in your UI.
This is the source of truth for what is live on SEEK,
including values inferred by Ad Sync when the position was posted.
See positionProfile for a full query and response example.Use the query response to populate your job ad list and detail views only.
When a hirer edits a requisition, propagate the change with the same syncPositions mutation you use to create and update positions.
Updating a live job ad outside Ad Sync breaks automatic sync from the requisition to the job ad.Ad Sync may infer a number of fields on the job ad that your software did not supply in the original sync.
See Persisting inferred values on the sync positions page for the fields this applies to, and guidance on retrieving and persisting these values back into your software.Your software must differentiate job ads that were automatically posted by Ad Sync from those that a hirer manually posted.It is recommended to drive this differentiation off of the seekPostingSourceCode available when querying the state of a PostedPositionProfile, otherwise you can use a posting source value that your software stores at the time of posting.Include an (Ad Sync) qualifier in the channel or source field of your software.
Your software may also support advanced sorting and filtering by this field.| Reference | Title | Source | Status | Created | Actions |
|---|---|---|---|---|---|
| AD-123 | Señor business analyst | SEEK (Ad Sync) | Active | 2048-01-01 | … |
| … | … | … | … | … | … |
(Ad Sync) prefix to the title field of the job ad.| Reference | Title | Source | Status | Created | Actions |
|---|---|---|---|---|---|
| AD-123 | (Ad Sync) Señor business analyst | SEEK | Active | 2048-01-01 | … |
| … | … | … | … | … | … |
PostedPositionProfile,
your software will receive different seekCreatedBySelfIndicator and seekPostingSourceCode values depending on the posting source.Ad Sync via SEEK APIAd Sync via feeds & web scrapingJob Posting via SEEK APISEEK Employer website
Copy
// Treat as automated posting{"seekCreatedBySelfIndicator": true,
"seekPostingSourceCode": "AdSync"
}PositionNotPosted, PositionProfilePosted, PositionProfileUpdated, and PositionProfileClosed events to keep your software in sync.
See our event documentation for more context.syncPositions mutation, an issue with the hirer’s SEEK account or Ad Sync configuration, an intentional exclusion via the hirer’s Ad Sync rules, or following a job ad being updated outside Ad Sync, which prevents future Ad Sync updates from propagating to the job ad.Your software may surface a SEEK provided message explaining why the position wasn’t posted and guidance on how to resolve it.| Reference | Title | Source | Status | Created | Actions |
|---|---|---|---|---|---|
| AD-123 | Señor business analyst | SEEK (Ad Sync) | Not Posted | 2048-01-01 | |
| AD-456 | Software Engineer | SEEK (Ad Sync) | Couldn't Post | 2048-02-01 | |
| … | … | … | … | … | … |
reasonId included in the PositionNotPosted event to query positionNotPostedReason. This will return a detailed explanation and suggested actions for the specific posting failure.To retrieve a list of historical reasons associated with a position, use the seekPartnerPositionId included in the PositionNotPosted event to query positionNotPostedReasons.To test how your software handles PositionNotPosted events, include a supported key in positionTitle when calling the syncPositions mutation.For example, setting positionTitle to include EXPIRED_AD will prevent the job ad from being posted on SEEK and emit a PositionNotPosted event.Input snippet
Copy
{"positionTitle": "Senior Business Analyst EXPIRED_AD"
}CATEGORY_INFERENCE_FAILEDEXPIRED_ADLOCATION_INFERENCE_FAILEDSALARY_INFERENCE_FAILED
positionNotPostedReason query accepts a reasonId, included in the PositionNotPosted event, and returns the reason a position was not posted to SEEK, along with any suggested remediation actions.Query the status, message, and callToAction fields to clearly communicate the issue and recommended next steps to the hirer.
You may also query displaySeverityCode to better tailor how the message is presented - for example, by styling errors more prominently than informational notices.QueryVariablesResult
CopyGraphQL Explorer
query ($input: PositionNotPostedReasonInput!) {
positionNotPostedReason(input: $input) {
status
message
displaySeverityCode
errors {
field
value
message
}
callToAction
timestamp
}
}positionNotPostedReasons query accepts a seekPartnerPositionId, included in the PositionNotPosted event, along with the seekAdSyncId and optional seekSubOrgReference used when posting the position with the syncPositions mutation.It returns the 25 most recent historical reasons why a position was not posted to SEEK, along with any suggested remediation actions.QueryVariablesResult
CopyGraphQL Explorer
query ($input: PositionNotPostedReasonsInput!) {
positionNotPostedReasons(input: $input) {
status
message
displaySeverityCode
errors {
field
value
message
}
callToAction
timestamp
}
}seekAdSyncId
is seek-adSync-PlayGroundIdOnce a job ad has been posted,
provide options to view the job ad on SEEK,
and to manage the job ad via classic or Enhanced Job Posting.
The latter allows hirers to further tailor the content of job ads posted via Ad Sync.When a hirer edits the requisition for an Ad Sync job ad,
use your existing position edit flow and forward the full updated state via the syncPositions mutation.
See Persisting inferred values for guidance on surfacing and reusing values Ad Sync inferred when the job ad was first posted.| Reference | Title | Source | Status | Created | Actions |
|---|---|---|---|---|---|
| AD-123 | Señor business analyst | SEEK (Ad Sync) | Active | 2048-01-01 | |
| … | … | … | … | … | … |
PostedPositionProfile.seekStatusCode field is available for your software to select.
This will be Active while the job ad is listed on our employment marketplace.| Reference | Title | Source | Status | Created | Actions |
|---|---|---|---|---|---|
| AD-123 | Senior business analyst | SEEK (Ad Sync) | Active | 2048-01-01 | |
| … | … | … | … | … | … |
Suspended status, and emit another PositionProfileUpdated event.This may be caused by duplicate job ads being posted under the same hirer account, or issues with the job ad content.Your software may include a call to action for hirers to reactivate suspended job ads by contacting SEEK.Directional Ad Sync may be extended in a later release to emit a PositionNotPosted event when an update to a position profile has failed.| Reference | Title | Source | Status | Created | Actions |
|---|---|---|---|---|---|
| AD-123 | Senior business analyst | SEEK (Ad Sync) | Suspended | 2048-01-01 | |
| … | … | … | … | … | … |
| Reference | Title | Source | Status | Created | Actions |
|---|---|---|---|---|---|
| AD-123 | Senior business analyst | SEEK (Ad Sync) | Expired | 2048-01-01 | |
| … | … | … | … | … | … |