SUPPORT.TWILIO.COM END OF LIFE NOTICE: This site, support.twilio.com, is scheduled to go End of Life on February 27, 2024. All Twilio Support content has been migrated to help.twilio.com, where you can continue to find helpful Support articles, API docs, and Twilio blog content, and escalate your issues to our Support team. We encourage you to update your bookmarks and begin using the new site today for all your Twilio Support needs.

Troubleshooting Persistent Deleted Records in Object Cloud Sources

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.

Have more questions? Submit a request
Powered by Zendesk