Whenever a sync runs, Hightouch tracks all rows that the destination rejects using their primary key. Hightouch then automatically retries syncing these rows two ways:
- Within an Active Sync: If Hightouch receives any row-level errors during an active sync, it automatically retries those rows at an exponential backoff until it meets a destination-dependent failure threshold. Hightouch's retry process is similar to the one described by AWS.
- On Subsequent Syncs: Hightouch keeps an index of all failed records and automatically retries them on every subsequent sync until they succeed.
Example retry scenario
Imagine you are trying to sync 10,000 records to Salesforce in a single sync, and five of the records are locked within Salesforce at the beginning of the sync.
- During that sync run, imagine two of those five records become available for update. Because Hightouch performs retries during an active sync, these two will update successfully during the sync run.
- On the subsequent sync run, Hightouch automatically retries the remaining three records. Assuming they're unlocked by that point, they will successfully update on the subsequent sync. Hightouch continues to retry the failed rows until they are successfully synced.
If part of my sync failed, does Hightouch retry every row in the sync?
No, Hightouch only retries failed rows. For example, if you try to sync 1,000 rows to Salesforce, but only 600 pass, Hightouch retries only the 400 that failed.
How can I be alerted to failing rows or syncs?
Hightouch continuously tries to resync failed rows until the underlying issue is addressed. To become aware of failed rows or syncs and fix them, it's best to set up alerting.