Update from a draft job ad

Job ads can be modified under their existing URL after they’ve been posted. There are some restrictions when updating a job via Enhanced Job Posting:
  • Only a live job with an Active status can be edited or updated.
  • Job ads cannot be moved between position openings or SEEK hirers.
  • Updates to positionTitle, jobCategories, positionLocation and postingInstructions.seekAdvertisementProductId may result in an additional charge for that job ad.Prices vary  by role and market factors.
  • Questionnaires cannot be modified.See the questionnaire immutability documentation for more information.
  • The application method of a job ad cannot be changed once live on the SEEK platform.If a change is required, the existing job must be closed and a new job ad posted to SEEK with a different application method.

Editing a job ad in the panel

The Enhanced Job Posting panel can be used by a hirer to make edits to an existing job ad. To start an edit, your software should call the render function with the existing job ad’s positionProfileId in addition to the job requisition. The live job must have status Active. This will pre-fill the form with the current values from the job ad.When save is triggered through dispatchEvent('seek:draft:save'), the panel will return a new draft ID that can be used to update the job ad. Replace the stored draft ID with this new ID.Drafts created during an edit session are distinct from drafts created when posting a new job ad. updatePositionProfileFromDraft accepts only an edit-scoped draft for its source live job, and rejects a create-scoped draft. For example, if a positionProfileId is not provided to the render function, the resulting draft ID is scoped to posting a new job ad and cannot be used to update an existing job ad. To resume an edit-scoped draft, pass both draftPositionProfileId and the same positionProfileId.For further information on required props and events, refer to Displaying the panel.

Operations

updatePositionProfileFromDraft

The updatePositionProfileFromDraft mutation updates a live job ad. Call this with a partner token that has mutate:enhanced-job-posting and a current Job Posting relationship for the hirer. The PositionProfile’s existing fields will be replaced with the fields from the draft. This mutation is not idempotent and does not accept an idempotencyId. Retry policy after an ambiguous response is defined by your software.For example, you could run this mutation to update a job ad with a revised draft:
MutationVariablesResult
mutation ($input: UpdatePositionProfileFromDraftInput!) {
  updatePositionProfileFromDraft(input: $input) {
    positionProfile {
      profileId {
        value
      }
    }
  }
}
You will receive a FORBIDDEN error if you try to update a job ad whose status is not Active.

Events

PositionProfileUpdated

A PositionProfileUpdated event is emitted when an existing job ad has been updated in the SEEK employment marketplace. You will receive events for SEEK hirers you have a JobPosting relationship with at the time of updating.The PositionProfileUpdated event is not emitted:In response to these events you can request the most up-to-date values of the fields from the position profile.This is an example of a webhook body containing a PositionProfileUpdated event:
JSON
Copy
{
  "events": [
    {
      "id": "seekAnzPublicTest:event:events:U3LAePBniDDJb2PYkJgdWa",
      "type": "PositionProfileUpdated",
      "createDateTime": "2025-01-27T05:52:16.909Z",
      // This can be passed to the `positionProfile` query
      "positionProfileId": "seekAnzPublicTest:positionProfile:jobAd:2Hsmapbu9",
      // This is only available for signed webhook subscriptions
      "hirerId": "seekAnzPublicTest:organization:seek:93WyyF1h"
    }
  ],
  "subscriptionId": "seekAnzPublicTest:webhookSubscription:events:D5Xa1QrddYJSSdnfVnXwHi",
  "url": "https://example.com/1/2/3",
  "expireDateTime": "2019-09-13T22:16:10.593Z"
}