<script
type="text/javascript"
- src="https://seekcdn.com/hirer/indirect-posting/product-selection-panel/seek.js"
+ src="https://integration.seek.com/panels/SeekApi.js"
></script>
SeekApi.render:- SEEKAdPostingWidget.render(containerNode, options);
+ SeekApi.render(containerNode, 'adSelection', props);
positionProfile input change.
For example, if the hirer selects a new location, you must re-render the panel to reflect updated products and pricing.props which you must update in your software:Legacy option  | New prop  | 
|---|---|
localeAdd this new option to specify the locale to display content in, e.g. en-AU. Set this prop to override the default localisation behaviour based on users browser preferences. Supported locales are outlined in the content localisation documentation. | |
selectedAdvertisementProductIdAdd this new option to specify the product ID stored in a job ad draft | |
sellingPointsDisplayNew visual option defining how the panel should display selling points of each product | |
draftAdvertisement | positionProfileJob ad fields have been revised, you must adjust the individual fields below. | 
draftAdvertisement.typeCode | Remove, this prop is no longer supported  | 
draftAdvertisement.hirerJobReference | Remove, this prop is no longer supported  | 
draftAdvertisement.positionTitle | positionProfile.positionTitleSame behaviour as before | 
draftAdvertisement.jobCategoryId | positionProfile.jobCategoriesPass in a single SEEK Category IDe.g. 'seekAnzPublicTest:jobCategory:seek:2PiXemmou' | 
draftAdvertisement.positionLocationId | positionProfile.positionLocationPass in a single SEEK Location IDe.g. 'seekAnzPublicTest:location:seek:W7NggeKH' | 
positionProfile.positionOrganizationsAdd this new prop containing a single SEEK Hirer ID that is posting or updating the job ade.g. 'seekAnzPublicTest:organization:seek:93WyyF1h' | |
positionProfile.offeredRemunerationPackageAdd a new RemunerationPackageInput object containing remuneration offered for the position | |
positionProfile.profileIdDuring updates, add this prop with the job ad ID to be updated (replaces functionality in previous advertisement) | |
onChange | onChangeRevise handling of the product fields in event, refer to step 4 below | 
isValidationEnabled | showFormValidationErrorSame behaviour as before | 
getAuthToken | getAuthTokenSame behaviour as before | 
advertisement | Remove, information for existing job ads being updated is now inferred from  positionProfile.profileId | 
disableCSSOMInjection | Remove, this prop is no longer supported  | 
instanceId | Remove, this prop is no longer supported  | 
mode | Remove, an update is now inferred by the presence of a  positionProfile.profileId | 
onInitialLoad | Remove, fallback is no longer supported  | 
theme | Remove, default theme is brand neutral  | 
SeekApi.render(document.getElementById('seekPanelContainer'), 'adSelection', {
getAuthToken: async () => {
// Do not implement caching in your `getAuthToken` implementation.
// The panel will internally memoise the response.
const token = await fetchAuthToken();
return token;
},
onChange: (event) => {
const { selectedProduct } = event;
// Persist `selectedProduct.id` in memory for use in job posting mutations.
//
// Display form inputs for features supported by the selected product.
if (selectedProduct?.features.branding) {
// Show brand selection.
} else {
// Hide brand selection.
}
if (selectedProduct?.features.searchBulletPoints) {
// Show the number of bullet point input fields indicated by `limit`.
} else {
// Hide all bullet point input fields.
}
},
sellingPointsDisplay: 'bullet',
positionProfile: {
// Ad products and their pricing vary based on these classifiers.
jobCategories: 'seekAnzPublicTest:jobCategory:seek:27HXTkNXh',
positionLocation: 'seekAnzPublicTest:location:seek:W7NggeKH',
positionOrganizations: 'seekAnzPublicTest:organization:seek:93WyyF1h',
positionTitle: 'Software Engineer',
// Salary details let us indicate how each ad product is likely to perform.
offeredRemunerationPackage: {
basisCode: 'Salaried',
descriptions: ['Up to $70,000 per year + bonus'],
ranges: [
{
intervalCode: 'Year',
minimumAmount: { currency: 'AUD', value: 40000 },
maximumAmount: { currency: 'AUD', value: 70000 }
}
]
},
seekAnzWorkTypeCode: 'FullTime',
// The position profile ID should be provided when editing a job ad.
profileId: undefined
},
// The product ID stored in a job ad draft.
selectedAdvertisementProductId: undefined,
// Set this to true if the hirer tries to post the job ad before they have
// selected an ad product (i.e. no `selectedProduct.id` persisted in memory).
showFormValidationError: false
});
positionProfile prop has been extended to accept salary details.
We recommend rendering ad selection after you capture salary information in your posting workflow.
This will enable your software to supply the optional offeredRemunerationPackage and seekAnzWorkTypeCode inputs,
which SEEK can use to better predict—and inform the user of—how each ad product is likely to perform.onChange callback returns an object identifier for the selected product.A human-readable advertisement.typeCode is no longer provided.
The object identifier should be propagated to the seekAdvertisementProductId field when previewing, posting or updating the job ad.const event = {- advertisement: {
+ selectedProduct: {
- typeCode: 'StandOut',
+ id: 'globalPublicTest:adProduct:seekApi:11111111111111111111111111111111',
// ...
},
};onChange callback returns the features supported by the selected product.Your software must conditionally display brand selection and search bullet point inputs based on these dynamic feature indicators.
You may have a similar capability if you integrated with the feature indicators of the previous Ad Selection Panel,
but we now provide parameters that detail which brand components and how many bullet points are supported:const event = {- advertisement: {
+ selectedProduct: {
features: {
- brandingIndicator: true,
+ branding: {
+ coverImageIndicator: false,
+ logoIndicator: true,
+ },
- searchBulletPointsIndicator: true,
+ searchBulletPoints: {
+ limit: 3,
+ },
},
// ...
},
};{"selectedProduct": {
"id": "globalPublicTest:advertisementProduct:products:AXwwLCx2cqKvgEvULe6reS",
"features": {
"branding": {
"coverImageIndicator": false,
"logoIndicator": true
},
"searchBulletPoints": null
}
}
}selectedAdvertisementProductId.
Ad selection will then pre-select an equivalent ad product and return new product IDs that can be used to post the job ad.Your software must omit the deprecated seekAnzAdvertisementType field in favour of a seekAdvertisementProductId sourced from our new panel or GraphQL query.
Your software should always omit unused arguments as a best practice to reduce the surface area of your integration.
Setting seekAnzAdvertisementType will result in failed Job Posting create and update calls following the December 2024 retirement date.{"postingInstructions": {
"seekAnzAdvertisementType": "Classic"
}
}seekAnzAdvertisementType field in favour of the new seekAdvertisementProduct field.
Your software should only select the fields it uses as a best practice to reduce the surface area of your integration.
Selecting seekAnzAdvertisementType will result in failed Job Posting queries following the December 2024 retirement date.# Inline arguments are only used to simplify these examples.# Parameterise your production queries with variables.# https://developer.seek.com/graphql/in-practice#variables
query {
positionProfile(id: "seekAnzPublicTest:positionProfile:jobAd:2782PZfXV") {
postingInstructions {
seekAnzAdvertisementType
}
}
}seekAnzAdvertisementType field in favour of a seekAdvertisementProductId sourced from our new panel or GraphQL query.
Using seekAnzAdvertisementType will result in failed Job Posting create and update calls following the December 2024 retirement date.Under certain circumstances,
it may be infeasible to present an ad selection interface to the hirer when an update is made.
For example, the update may be driven by a back-end process in your software rather than an individual user interacting with an update workflow.
In such scenarios, you should omit both seekAdvertisementProductId and seekAnzAdvertisementType to retain the current ad product.See the relevant use case documentation for more information.The following criteria need to be met before progressing to the next feature:Criteria  | Description  | 
|---|---|
Ad selection built  | SEEK hirers can select available SEEK ad products and see pricing when creating or editing a job ad in your software  | 
Ad selection re-render implemented  | SEEK hirers can see new products when the position location, job category or title has changed  | 
Ad selection fallback removed  | SEEK hirers must not see a dropdown list of hardcoded ad types when the Ad Selection Panel fails to load  | 
User experience signed off  | SEEK has signed off on your ad selection user experience  | 
Job ad posted successfully  | Hirer can successfully post a job ad to SEEK with their selected ad product  | 
Job ad updated successfully  | Hirer can successfully update a job ad to SEEK with their selected ad product  |