Option 1: Ad Selection Panel

    Suggestions will appear below the field as you type

    Option 1: Ad Selection Panel

      Suggestions will appear below the field as you type

      Option 1: Ad Selection Panel

      Option 1: Ad Selection Panel

      Adopt the new Ad Selection Panel by including its script tag on the webpage where the panel will be displayed:
      HTML
      Copy
      <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>
      While its visual refresh will be immediately noticeable, the new Ad Selection Panel also integrates with your software differently under the hood.
      1. The panel is rendered via SeekApi.render:
        JavaScript
        Copy
        - SEEKAdPostingWidget.render(containerNode, options);
        + SeekApi.render(containerNode, 'adSelection', props);
        The render function must be called on page load and whenever the properties of the positionProfile  input change. For example, if the hirer selects a new location, you must re-render the panel to reflect updated products and pricing.
      2. The render function accepts a revised set of props which you must update in your software:
        Legacy option
        New prop
        locale
        Add 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.
        selectedAdvertisementProductId
        Add this new option to specify the product ID stored in a job ad draft
        sellingPointsDisplay
        New visual option defining how the panel should display selling points of each product
        draftAdvertisement
        positionProfile
        Job 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.positionTitle
        Same behaviour as before
        draftAdvertisement.jobCategoryId
        positionProfile.jobCategories
        Pass in a single SEEK Category ID
        e.g. 'seekAnzPublicTest:jobCategory:seek:2PiXemmou'
        draftAdvertisement.positionLocationId
        positionProfile.positionLocation
        Pass in a single SEEK Location ID
        e.g. 'seekAnzPublicTest:location:seek:W7NggeKH'
        positionProfile.positionOrganisations
        Add this new prop containing a single SEEK Hirer ID that is posting or updating the job ad
        e.g. 'seekAnzPublicTest:organization:seek:93WyyF1h'
        positionProfile.offeredRemunerationPackage
        Add a new RemunerationPackageInput object  containing remuneration offered for the position
        positionProfile.profileId
        During updates, add this prop with the job ad ID to be updated (replaces functionality in previous advertisement)
        positionProfile.seekAnzWorkTypeCode
        Add a new prop containing the SEEK work type code 
        e.g. FullTime
        onChange
        onChange
        Revise handling of the product fields in event, refer to step 4 below
        isValidationEnabled
        showFormValidationError
        Same behaviour as before
        getAuthToken
        getAuthToken
        Same 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 support is no longer recommended
        theme
        Remove, default theme is brand neutral
      Example
      New Ad Selection PanelPrevious Implementation
      Copy
      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
      });
      The new 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.
      1. The 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.
        JavaScript
        Copy
        const event = {
        - advertisement: {
        + selectedProduct: {
        -   typeCode: 'StandOut',
        +   id: 'globalPublicTest:adProduct:seekApi:11111111111111111111111111111111',
            // ...
          },
        };
      2. The 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:
        JavaScript
        Copy
        const event = {
        - advertisement: {
        + selectedProduct: {
            features: {
        -     brandingIndicator: true,
        +     branding: {
        +       coverImageIndicator: false,
        +       logoIndicator: true,
        +     },
        -     searchBulletPointsIndicator: true,
        +     searchBulletPoints: {
        +       limit: 3,
        +     },
            },
            // ...
          },
        };
      3. A hardcoded fallback field is no longer recommended.
        Error handling is now largely managed within the panel itself. If you implemented a fallback for the previous panel you can now remove it.
      4. Internet Explorer 11 is no longer supported.
        We have introduced a new browser support policy. We are not able to provide ongoing support for Internet Explorer as it is retired and out of support .
      You can preview the new Ad Selection Panel below, and see our panel implementation guide for more information.
      Basic

      SGD 260.00

      Find great candidates with our basic ad
      • Similar ads get between 10 and 20 applications
      • 30-day listing
      • Include your company logo
      Branded

      SGD 320.00

      Stand out with branding and key selling points
      • Similar ads get between 20 and 30 applications
      • Add company images to promote your brand
      • Highlight 3 key selling points to attract candidates
      Premium

      SGD 540.00

      Attract more candidates on average with a featured listing
      • Similar ads get between 30 and 40 applications
      • Priority listing in search
      • Get candidates fast
      Ad prices vary based on many factors including the supply of, and demand for, candidates for the advertised role. Prices shown represent today’s prices only. If you schedule your job ad for a future date, you acknowledge and agree you’ll be charged the price of that ad at the date it’s published on SEEK’s website.
      Display the brand selection field here.
      onChange
      Copy
      {
        "selectedProduct": {
          "id": "globalPublicTest:advertisementProduct:products:AXwwLCx2cqKvgEvULe6reS",
          "features": {
            "branding": {
              "coverImageIndicator": false,
              "logoIndicator": true
            },
            "searchBulletPoints": null
          }
        }
      }

      Managing variable job ads

      Due to the variable nature of SEEK’s product ladder, the new panel and GraphQL query return ephemeral product IDs that reference the set of products quoted at that point in time. When a hirer selects a product and your software propagates its identifier to post or update a job ad, SEEK will scan recent ad selection contexts for a match and attempt to lock in the exact quoted product features and pricing.
      Ad products presented to a hirer are only valid within the context of the workflow that they were executing at the time. Product IDs cannot be persisted long term; they should not be stored alongside a posted job ad for subsequent update workflows or to otherwise build a hardcoded mapping.
      The selected product ID may be temporarily stored in a job ad draft. When the hirer resumes their posting workflow from the draft at a later date, this previous product ID should not be directly used to post the job ad. Instead, pass the previous product ID to ad selection as the 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.

      Posting a job ad

      Your software must omit the deprecated 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.
      See the relevant use case documentation for more information.

      Updating a job ad

      In a typical update workflow, you should present an ad selection interface to the hirer so they can choose to upgrade their ad product.
      Your software must omit the deprecated 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.

      Exit criteria

      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