Skip to main content
All CollectionsApideck Unify
Navigating Virtual Webhooks: Understanding change detection
Navigating Virtual Webhooks: Understanding change detection
Updated over a week ago

We use Virtual webhooks to monitor integrations, like BambooHR, Salesforce, ...
A number of SaaS systems do not provide webhook events for pushing changes. To provide a Unify way to subscribe to change, we have provided “Virtual Webhooks”.

The Virtual webhook concept explained in short:

We monitor resources (for example Employees, Leads, ...) through a polling system and when we detect a change, we send a webhook event.


More info can be found in the article: What is a Virtual webhook?

This allows you to set up a consistent process for handling webhook events, whether it's for systems that natively support webhooks or SaaS tools that do not.
Here's an example payload for a Unify webhook event: https://developers.apideck.com/apis/hris/reference#operation/employeeUpdated

Some more context on the virtual webhooks mechanism to track record changes:

  • Data source: We poll the “List” endpoint (eg: EmployeesAll, leadsAll) and paginate through the list of records.

  • Interval frequency: we monitor the data source at regular intervals. Currently every 24 hours, but this frequency can be adjusted based on the pricing plan chosen.

The tracking methods, that are being used to detect changes in records:

  1. Date tracking: if the properties created_at and/or updated_at are available in the response from the integration.

  2. Checksum tracking: if the date properties are not available in the response, we use the integration response to compute checksums and use that to detect changes. We never store the resource data in a database. The mechanism computes checksums based on the raw responses of the integration and all fields that are returned on their “list” endpoints.

If the checksum record did not exist before, it will trigger a "created" event like an "employee.created"

If the checksum record already existed before but the checksum is different, it will trigger an "updated" event like "employee.updated"

For additional information on the interval settings for the Virtual Webhook engine, please visit Virtual Webhooks Polling: Understanding Interval Timing

Did this answer your question?