We use Workato to pull data out of HubSpot into a BigQuery data warehouse. Our challenge is that the API from Hubspot to Workato doesn't recognize deleted records. Hence, everytime a record is merged or deleted from Hubspot, it will forever remain in the Warehouse when it shouldn't. Has anyone here had experience/ideas on how to work around this?
Essentially I thinkwe need to find a way to recognize that a Contact record in HubSpot has been deleted (whether from a merge or organically) and send this info out via Workato.
In case you didnt get it solved. HubSpot doesn’t send deletion events via standard API endpoints, so tools like Workato or even native exports won’t catch them.
Here are a few workarounds you can explore:
1. Use the GDPR delete webhook (if possible):
If you have a Private App set up and are using webhooks, HubSpot will send a contact.deleted event for GDPR deletions or merges.
But: this only works for contacts, and only if the record is fully deleted, not just removed from a list or made inactive.
2. Track deleted/merged IDs via exports or Workato diffs:
Here’s a workaround using Workato:
• Regularly sync all contact IDs (minimal payload, e.g. just vid, hs_object_id)
• Keep a snapshot of previous syncs in BigQuery
• Compare current vs previous if an ID disappears, you can assume it was deleted or merged
→ flag it as deleted = true in your warehouse
It’s a bit of work but gives you visibility.
3. Use a “soft delete” property (manual fallback):
You could introduce a custom property in HubSpot like is_deleted or deletion_flag, and set that before actual deletion (e.g. via workflow or API). Then sync this flag with Workato.
Downside: requires consistent internal process to flag before delete.
4. Merged records: handle with the merged-into ID
When a record is merged, HubSpot redirects to the primary record. If you use the API or Workato to pull merge-audit info, you might be able to detect which IDs have been merged and update your warehouse accordingly.
Let me know how clean or automated you need this. There are ways to go more real-time or stick with daily batch comparisons.
Best regards,
Sebastian
Did my post help answer your query? Help the community by marking it as a solution.
In case you didnt get it solved. HubSpot doesn’t send deletion events via standard API endpoints, so tools like Workato or even native exports won’t catch them.
Here are a few workarounds you can explore:
1. Use the GDPR delete webhook (if possible):
If you have a Private App set up and are using webhooks, HubSpot will send a contact.deleted event for GDPR deletions or merges.
But: this only works for contacts, and only if the record is fully deleted, not just removed from a list or made inactive.
2. Track deleted/merged IDs via exports or Workato diffs:
Here’s a workaround using Workato:
• Regularly sync all contact IDs (minimal payload, e.g. just vid, hs_object_id)
• Keep a snapshot of previous syncs in BigQuery
• Compare current vs previous if an ID disappears, you can assume it was deleted or merged
→ flag it as deleted = true in your warehouse
It’s a bit of work but gives you visibility.
3. Use a “soft delete” property (manual fallback):
You could introduce a custom property in HubSpot like is_deleted or deletion_flag, and set that before actual deletion (e.g. via workflow or API). Then sync this flag with Workato.
Downside: requires consistent internal process to flag before delete.
4. Merged records: handle with the merged-into ID
When a record is merged, HubSpot redirects to the primary record. If you use the API or Workato to pull merge-audit info, you might be able to detect which IDs have been merged and update your warehouse accordingly.
Let me know how clean or automated you need this. There are ways to go more real-time or stick with daily batch comparisons.
Best regards,
Sebastian
Did my post help answer your query? Help the community by marking it as a solution.