Events

Events

What’s an event?

Events are generated when certain actions occur on SEEK. For example, an event may be generated when:
  • The advertisement for a position has gone live on a SEEK job board
  • A candidate has applied for an advertised position
A complete list of event types is available 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.

Why webhooks?

Webhooks are preferred for a few key reasons:
  • Efficiency
    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 system will be slower to react to events, while polling too frequently wastes compute resources.
    With 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.
  • Scalability
    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.
    With webhooks, you can distribute incoming events across multiple servers and process them in any order.
  • Simplicity
    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.
    With 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.