We are using v.3 of the API and running into an issue with this use case for a custom sign up form:

First we check for existence of the contact via GET Contact Collection passing the email of the potential contact (example@example.com). We receive empty response for the "contacts" and "contacts_count" response body elements (see code and screenshot)

We are currently researching this issue and working toward a solution. What is happening is what you alluded to; the email address is a deleted contact. You can do a GET on the status of DELETED and not the specific email address. This will return all deleted contacts and you should see the email address in question among those results.

That would be the work around I would recommend for now until we have a full resolution in place. If you would like to be notified of the resolution by email feel free to contact us at webservices@constantcontact.com to request this.

You can do a PUT to update the deleted contact. You would just need to ensure you use the "update_source": "Contact" to tell the system that the contact is taking the action.

The 409 conflict is technically describing a conflict between the status of express versus implied status on the contact. The action being used to change is being done by the account owner when the email address has express permission and only actions can be taken by the contact themselves.

This is generally done with sign-up forms when a contact has been unsubscribed in addition to being deleted.

I'd like to know when the fix for this issue is ready also. I have thousands of deleted contacts that still exist in the back end data store which are not accessible through the CC website search and yet have a status of DELETED and therefor a new contact cannot be created with the same email address.

It is not helpful to get a list of all contacts with status of DELETED when there are thousands of contacts in the result.