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 our webhook schema .
You can use events to trigger workflows in your software. SEEK can deliver events in two ways:
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.
Webhooks are preferred for a few key reasons:
- EfficiencyWith 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.
- ScalabilityWith 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.
- SimplicityWith 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.