Problem Opting in New Contact through API

We are running into an issue where we are passing new contacts over to Infusionsoft through API but we need to opt these contacts in.

However my developer is running into problems with this. We are able to create contacts fine, but every contact that is created has the N Status and we can’t market to them.

Could anyone help us get this issue resolved?

He’s currently using the data method to create a record in the Contact table.

$api->data()->add(‘Contact’, $data)

data has FirstName, LastName and Email fields

He is using the XML API

After creating the Contact, you have to make another call to opt-in the email address.

You can only opt in a new email address via the API. If a contact opts-out, then they can only be opted back in via opening the contact record manually in Infusionsoft and updating their opt in status there.

Ok thanks Jordan! I’ll pass this on to my developer and see if this works, if not I’ll post any other questions we may have. Thanks again!


I guess this is the process that we are using but I guess you first need to create the contact record and then call to opt-in the email, but since the contact has already been created, the email is listed with the N Status (Not Marketable), so Infusionsoft won’t let us update this email to be opted in now.

Any thoughts on how to work around this?

I’ve never seen the API refuse to opt-in a new contact. That is the same process pretty much every API developer uses - create the contact and then opt in the email.

If that email address already exists in your database, or was used by a previous contact, then I would expect an error similar to what you are reporting.

If you want to post the code where the calls are made, I may be able to see the problem.

The api will refuse to optin an email if the email had been previously opted out EVEN IF there isn’t a contact with that email still. The email address status remains after a contact is deleted and if someone registers with that email then the opt out status will remain and the api cannot be used to “re-opt” them back in.