Events

What’s an event?

Events are emitted when certain actions occur on SEEK. For example, an event may be emitted when:
  • A posted job ad has gone live on the SEEK job board
  • A candidate has applied for a job ad
A complete list of event types is available in the event types section of this page and in our webhook schema.You can use events to trigger workflows in your software. SEEK can deliver events in two ways:
  • Pushed into your software via webhooks
  • Pulled from your software via polling the GraphQL events query
The SEEK API does not use GraphQL subscriptions as these are not a good fit for machine-to-machine integrations.You can view a list of your historical events on the Developer Dashboard’s events page. This lets you observe the events that are being emitted for all of your SEEK hirers.

Event types

  • CandidateApplicationCreatedEventThese events are emitted when a candidate submits an application for a position.Consuming these events will allow you to retrieve applications submitted using SEEK’s Apply Form; see Optimised Apply for more information.
  • CandidateProfilePurchasedEventThese events are emitted when a candidate profile is purchased in Talent Search .It is essential to consume these events if you wish to import purchased candidate profiles into your recruitment software.
  • HirerRelationshipChangedEventThese events are emitted whenever a relationship between your platform and a hirer is added or removed.The hirer relationships in your software should be kept in sync with SEEK using these events.
  • PositionProfilePostedEventThese events are emitted when a job ad is posted.An advertisement’s status in your software should be kept in sync with SEEK using these events.
  • PositionProfileClosedEventThese events are emitted when a job ad is closed.An advertisement’s status in your software should be kept in sync with SEEK using these events.

Why webhooks?

Webhooks are preferred for a few key reasons:
  • EfficiencyWith webhooks, you are only notified when an event actually occurs. You can place incoming events onto a queue, and leverage autoscaling and event-driven services to adjust to load.With polling, you need to query our GraphQL endpoint for new events on an interval. This leads to a tradeoff between latency and cost: polling infrequently means that your software will be slower to react to events, while polling too frequently wastes compute resources.
  • ScalabilityWith webhooks, you can distribute incoming events across multiple servers and process them in any order.With polling, you need to keep track of pagination cursors and retrieve pages in order. This makes it difficult to distribute your workload across multiple servers.
  • SimplicityWith webhooks, you can have a stateless service that simply processes the events that it receives. SEEK takes care of delivering the events to your endpoint; if your service is unreachable or returns an error, SEEK automatically re-queues the events for later.Webhooks also provide a mechanism for SEEK to resend historical events to you on request. This enables disaster recovery without adding any complexity to your integration.With polling, you need to manage state and the complexity of pagination. It can be easy to accidentally skip events while paging through results, and you will probably need to build the capability to retrieve and reprocess historical events for disaster recovery.