Using the C# wrapper to issue api calls.
When our contacts notify us of a change of email address they use our website to do so. This results (among other things) in a row in one of our database tables telling us the old and new email address. End of day processing looks for these rows and attempts to change the email address in Constant Contact. However, the following sequence of api calls doesn't work.
1) contactObject.EmailAddresses.EmailAddr = <new email address>;
2) UpdateContact(contactObject, <neither true nor false works>);
The above results in a stack trace with an empty Message and a null InnerMessage. Is the server telling us that we are not allowed to change someone's email address? I guess so.
DeleteContact/AddContact seems the only solution. But DeleteContact results in setting the status to OptOut. We would prefer not causing this level of disabling the old email address since the user is not necessarily telling us that the old email address is no longer being used by them. Our website is not querying the user as to whether they have disabled the old email address. They are simply telling us that they would prefer that we begin using this new one. So setting the status of the old one to OptOut is misleading. And if later on the user decides to switch back to the original email address, they will need to jump through the hoop of filling out a form to reenable the email address that they opted out of.
So after explaining all that, is DeleteContact/AddContact my only option here?
Solved! Go to Solution.
Based on what you've provided, it looks like what you're trying to do should work without any issue. The only exception that immediately comes to mind is that the account owner is not allowed(in step 2) to make changes to the email address of contacts who have confirmed their subscription.
The method that you've attempted to use is definitely the preferred way to accomplish your goal, rather than using DeleteContact/AddContact. Additionally, the behavior that you've described does not sound normal. Would it be possible for you to email us at firstname.lastname@example.org with some details such as the account username and email address(es) used? This would allow me to dig into our logging to hopefully determine the cause of the issue you're seeing.