Issue
Customers using Segment's Object Cloud Sources (such as HubSpot or Salesforce) frequently notice that records they have deleted inside their source platform continue to appear as active rows in their SQL data warehouse. Customers report that the records are not being deleted downstream even after a successful warehouse sync completes.
Product
Segment
Environment
Segment Console
Cause
Segment’s Object Cloud Sources use an upsert process (inserting or updating rows) rather than issuing direct DELETE queries to your warehouse. How a deletion is handled depends on how it was executed in the source platform:
Soft Deletes (Archived/Trash): The partner API flags the state change. Segment detects this on the next sync and updates the deletion status column in your warehouse:
- Salesforce & HubSpot Deals/Companies: The is_deleted column updates to True.
- HubSpot Contacts: The is_contact column updates to False.
Hard Deletes (Permanently Purged): The record is completely removed from the source database and stops appearing in API responses. Because Segment can no longer fetch the record, it cannot detect the deletion to update your warehouse. The record remains in its last synced state, appearing active.
Resolution
To ensure deleted records are properly managed and hidden from your dashboards, use the following methods:
1. Filter Soft Deletes in SQL
Always exclude soft-deleted records when querying your tables.
- For Salesforce & HubSpot Deals/Companies:
SELECT * FROM your_schema.accounts WHERE is_deleted = FALSE;- For HubSpot Contacts:
SELECT * FROM your_schema.contacts WHERE is_contact = TRUE;2. Manually Purge Hard-Deleted Records
Because Segment's connector cannot fetch permanently purged records from the partner API, you must manually delete them from your SQL database targeting the specific record IDs:
DELETE FROM your_schema.accounts WHERE id = 'hard_deleted_id_here';Additional Information
If you need to permanently delete individual objects for privacy compliance, you can submit an object deletion request directly within the Segment Workspace.
There is no automatic sync workaround for hard-deleted Salesforce records. You must either manually delete the rows from your SQL warehouse, or connect a brand-new Salesforce source to trigger a fresh, full sync from scratch.