Around mid-2021 we started getting reports about random events affecting a small percentage of Contacts+ accounts in which most or all of the tags in the account were unintentionally deleted.
This since had been a major concern to us, and our highest priority issue in the last couple of months.
Restoring an account to a previous date before the deletion took place would restore those deleted tags, however that caused in some cases recent contact updates to be lost in the process and the whole experience was not as our customers expect from Contacts+.
Our engineers investigated this and found the cause to be related to two main issues:
- iCloud APIs would randomly return a response suggesting there are 0 groups (or tags) in iCloud Contacts, this was a temporary glitch and in the following sync cycle iCloud would again report all the tags to exist as before.
This caused Contacts+ sync to delete and then recreate all the account's tags.
- Google APIs behavior change - Google will, as of June 2021, refuse to create a new label (tag) with the same name as an existing tag.
This caused an operation of insert tag "example" and then deletion of tag "example", when there was already a tag named "example" in the account to partially work - the insert action would fail, while the delete action would succeed, leaving the account with the tag deleted.
These two issues combined caused Contacts+ in those rare iCloud temporary glitches to delete all the tags from the connected Google account, and later this caused the tags to be deleted from all connected sources as well.
In order to resolve both issues above we deployed the following improvements to Contacts+ sync flow:
- The new "Data Protection Service" was added, which can be manually enabled by users at:
When enabled this will automatically detect and block mass-deletion events, turning off the problematic sync source and send an alert email to the user.
This feature is not enabled by default at the moment.
You can read more about this new service here.
- When a mass deletion event is detected it is skipped and ignored once, and will only allowed to sync into Contacts+ if it is received again in the following sync cycle.
This may cause some delay in sync of accounts when many contacts or tags were deleted, but it should also prevent temporary glitches from causing data deletion.
- Contacts+ will detect insert & delete operations with the same tag name, and will handle them in a safer way with respect to the new Google API limitations.
These 3 new improvements should eliminate any way an external connected account, software bug or malicious behavior to affect a Contacts+ customer data.
Please contact our support for any questions or feedback about the new service and features.