{"_id":"5bb61e17bdc41900039a97b0","project":"55dd9f2e0efd5821000d54d9","version":{"_id":"55dd9f4dab0e4d210045aae9","__v":45,"project":"55dd9f2e0efd5821000d54d9","createdAt":"2015-08-26T11:13:17.024Z","releaseDate":"2015-08-26T11:13:17.024Z","categories":["55dd9f4dab0e4d210045aaea","55ddb5fa9067202b00ddff6f","55e0472c6bad670d0081f213","55e04764a44fae0d00214671","55e047a9a44fae0d00214672","55e047b258c5460d0076a9a7","55e95e337fc27b2d00d32cf2","55e979bda7ca823900ad549a","55edb8c18dcb210d0056900b","55f0365c8563861700a33765","55f03677d58f9b1900acf996","55f036938eeefc23001ea5de","55f036a38563861700a33767","55f036c08563861700a33769","55f036d02911b72100482cd7","55f036e92911b72100482cd9","55f036fa8563861700a3376b","55f0370ee507711900e58c69","55f0371df6101b1900c70700","55f0374f2911b72100482cdb","55f0375e2911b72100482cdc","560eb0f659cb8d0d0015cd52","560eb25239fad419002ae1e0","561fb64d4d67490d00804b2a","562b9f775a39cd0d009aff22","562ba0505a39cd0d009aff23","562ba149d56bc30d00f0cb18","562ba595f68a5f0d007b1f3b","562ba78fd56bc30d00f0cb1b","562ba8b95a39cd0d009aff27","562baadf6562140d001501d2","562bab37f68a5f0d007b1f3d","562bc1bf9ebc950d000f7523","562bc99ced4bea0d00c11dfa","562bd29c1b98640d00714520","562bd5875a39cd0d009aff60","562bdfabff2da50d002c0aaf","562be0bd5a39cd0d009aff75","57a0b476d8313e1900454439","5b19051beece890003020163","5b34ded01cb20f000391ad6d","5b3a325acffe770003fd29e5","5b3c737a7f7b890003365501","5b3c929b367036000391b11e","5b7c1e210dc2e20003871521"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"2.0.0","version":"2"},"category":{"_id":"562b9f775a39cd0d009aff22","project":"55dd9f2e0efd5821000d54d9","pages":["562ba0bbed4bea0d00c11de2","562ba2436562140d001501cd","562ba4a6f68a5f0d007b1f3a","562ba73c6562140d001501d1","562ba8e19ebc950d000f750b","562badaded4bea0d00c11de6","562bae17db5fea0d003fa832","562baef76562140d001501d4","562baf3ad56bc30d00f0cb1e","562bbfe59ebc950d000f7521","562bc031ed4bea0d00c11df1","562bc060d56bc30d00f0cb2f","562bc0f1d56bc30d00f0cb30","562bc14a5a39cd0d009aff49","562bc17c5a39cd0d009aff4a","562bc8ca5a39cd0d009aff54","562bc9131b98640d0071451b","562bd54052fb180d0034cc0b","562bda3212c2820d00869ba0","562bdab29ebc950d000f753c","562bdb00ff2da50d002c0aac","562bdb851b98640d00714527","562bde831b98640d0071452c","562bded9ff2da50d002c0aae","562be2159ebc950d000f7542","562be2725a39cd0d009aff78","562be33d9ebc950d000f7543","562d619ae01a430d00c2c82d"],"version":"55dd9f4dab0e4d210045aae9","__v":28,"sync":{"url":"","isSync":false},"reference":false,"createdAt":"2015-10-24T15:10:47.563Z","from_sync":false,"order":26,"slug":"contacts-1","title":"Contacts"},"user":"5a251846c297dc0012e531cd","__v":0,"parentDoc":null,"updates":[],"next":{"pages":[],"description":""},"createdAt":"2018-10-04T14:05:11.022Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":6,"body":"This method updates a contact with ConsentInsight data and marketing preferences if that contact has a given ID in your account . This information replaces any existing information for the contact.\n\nSetting the `OptInType` to 'VerifiedDouble' will result in a double opt-in confirmation email being sent to the contact. The result will state that the contact's `OptInType` is 'Double' and `Status` is 'PendingOptIn'. These will only update to 'VerifiedDouble' and 'Subscribed' respectively once the contact has clicked the link in the confirmation email, at which point they will be added to the account.\n\nTo opt in contacts to preferences, set the `isOptedIn` key to `true`\n\nTo opt out contacts from preferences, set the `isOptedIn` key to `false`, or do not specify those preferences in the request body.\n\nNote that this method can also be used to create a contact. To do this, enter an email address that doesn't already exist in your account. The contact will be created (with a valid ID) in the 'All contacts' address book.\n\n**SOAP action:** [https://[region ID]-api.dotmailer.com/v2/ApiService/UpdateContactWithConsentAndPreferences](doc:updatecontactwithconsentandpreferences)\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Input and output parameters\",\n  \"body\": \"The input and output parameters for this method are:\\n\\n**Input parameters** \\n  * Email - *required; string*\\n  * OptInType - *optional; string ('Unknown', 'Single', 'Double', 'VerifiedDouble')*\\n  * EmailType - *optional; string ('PlainText', 'Html')*\\n  * DataFields - *optional; array of ContactData* \\n       * ContactData\\n            * Key - *string*\\n            * Value - *anyType* (please note: the data type needs to be defined for the value, such as 'string', 'numeric', 'date' or 'boolean'; e.g., for 'Firstname', the XML would need to be as follows - **<apic:Value xsi:type=\\\"xsd:string\\\">John</apic:Value>**\\n* ConsentFields - *optional; array of ContactData* \\n       * ContactData\\n            * Key - *string* ('Text', 'DateTimeConsented', 'URL', 'IPAddress', 'UserAgent')\\n            * Value - *anyType* (please note: the data type needs to be defined for the value, such as 'string', 'numeric', 'date' or 'boolean'; e.g., for 'Text', the XML would need to be as follows - **<apic:Value xsi:type=\\\"xsd:string\\\">Your consent text goes here</apic:Value>**\\n* Preferences - *optional; array of Preferences* \\n       * Preference\\n            * Key - *string* ('id', 'isPreference', 'preferences', 'isOptedIn')\\n            * Value - *anyType* (please note: the data type needs to be defined for the value, such as 'string', 'numeric', 'date' or 'boolean'; e.g., for 'isOptedIn', the XML would need to be as follows - **<apic:Value xsi:type=\\\"xsd:boolean\\\">true</apic:Value>**\\n\\n**Output parameters** \\n  * CreateContactResult\\n       * Id - *integer*\\n       * Email - *string*\\n       * OptInType - *string ('Unknown', 'Single', 'Double', 'VerifiedDouble')*\\n       * EmailType - *string ('PlainText', 'Html')* \\n       * DataFields - *optional; array of ContactData* \\n            * ContactData\\n                 * Key - *string*\\n                 * Value - *anyType*\\n       * ConsentFields - *optional; array of ContactData* \\n            * ContactData\\n                 * Key - *string*\\n                 * Value - *anyType*\\n       * Preferences- *optional; array of Preferences* \\n            * Preference\\n                 * Key - *string*\\n                 * Value - *anyType*\\n       * Status - *string ('Subscribed', 'Unsubscribed', 'SoftBounced', 'HardBounced', 'IspComplained', 'MailBlocked', 'PendingOptIn', 'DirectComplaint', 'Deleted', 'SharedSuppression', 'Suppressed', 'NotAllowed', 'DomainSuppression', 'NoMxRecord')*\"\n}\n[/block]\n**Example**\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"using (var client = new ApiServiceClient())\\n{\\n    client.ClientCredentials.UserName.UserName = \\\"username\\\";\\n    client.ClientCredentials.UserName.Password = \\\"password\\\";\\n\\n    var contact = new ApiContactWithConsentAndPreferences\\n    {\\n        Contact = new ApiContact\\n        {\\n            Email = \\\"john.smith:::at:::example.com\\\",\\n            OptInType = ApiContactOptInTypes.Single,\\n            EmailType = ApiContactEmailTypes.Html,\\n            DataFields = new[]\\n           {\\n                new ApiContactData { Key = \\\"FirstName\\\", Value = \\\"John\\\" },\\n                new ApiContactData { Key = \\\"FullName\\\", Value = \\\"John Smith\\\" },\\n                new ApiContactData { Key = \\\"Gender\\\", Value = \\\"Male\\\" },\\n                new ApiContactData { Key = \\\"LastName\\\", Value = \\\"Smith\\\" },\\n               new ApiContactData { Key = \\\"Postcode\\\", Value = \\\"N5 1DP\\\" }\\n            }\\n        },\\n        ConsentFields = new[]\\n        {\\n            new ApiConsent\\n            {\\n                Fields = new[]\\n                {\\n                    new ApiContactData() { Key = \\\"text\\\", Value = \\\"Your consent text goes here.\\\" },\\n                    new ApiContactData() { Key = \\\"datetimeconsented\\\", Value = \\\"2018-01-26T21:29:00\\\" },\\n                    new ApiContactData() { Key = \\\"url\\\", Value = \\\"https://www.example.com/signup/\\\" },\\n                    new ApiContactData() { Key = \\\"ipaddress\\\", Value = \\\"127.0.0.1\\\" },\\n                    new ApiContactData() { Key = \\\"useragent\\\", Value = \\\"Mozilla/5.0 (X11; OpenBSD i386) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36\\\" },\\n                }\\n            }\\n        },\\n        Preferences = new[]\\n        {\\n            new ApiPreference\\n            {\\n                Id = 1,\\n                IsPreference = false,\\n                Preferences = new[]\\n                {\\n                    new ApiPreference { Id = 2, IsPreference = true, IsOptedIn = false },\\n                    new ApiPreference { Id = 3, IsPreference = true, IsOptedIn = false },\\n                }\\n            },\\n            new ApiPreference\\n            {\\n                Id = 4,\\n                IsPreference = true,\\n                IsOptedIn = true\\n            }\\n        }\\n    };\\n\\n    var createdContact = client.UpdateContactWithConsentAndPreferencesAsync(contact).Result;\\n}\",\n      \"language\": \"csharp\"\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"updatecontactwithconsentandpreferences","type":"basic","title":"UpdateContactWithConsentAndPreferences"}

UpdateContactWithConsentAndPreferences


This method updates a contact with ConsentInsight data and marketing preferences if that contact has a given ID in your account . This information replaces any existing information for the contact. Setting the `OptInType` to 'VerifiedDouble' will result in a double opt-in confirmation email being sent to the contact. The result will state that the contact's `OptInType` is 'Double' and `Status` is 'PendingOptIn'. These will only update to 'VerifiedDouble' and 'Subscribed' respectively once the contact has clicked the link in the confirmation email, at which point they will be added to the account. To opt in contacts to preferences, set the `isOptedIn` key to `true` To opt out contacts from preferences, set the `isOptedIn` key to `false`, or do not specify those preferences in the request body. Note that this method can also be used to create a contact. To do this, enter an email address that doesn't already exist in your account. The contact will be created (with a valid ID) in the 'All contacts' address book. **SOAP action:** [https://[region ID]-api.dotmailer.com/v2/ApiService/UpdateContactWithConsentAndPreferences](doc:updatecontactwithconsentandpreferences) [block:callout] { "type": "info", "title": "Input and output parameters", "body": "The input and output parameters for this method are:\n\n**Input parameters** \n * Email - *required; string*\n * OptInType - *optional; string ('Unknown', 'Single', 'Double', 'VerifiedDouble')*\n * EmailType - *optional; string ('PlainText', 'Html')*\n * DataFields - *optional; array of ContactData* \n * ContactData\n * Key - *string*\n * Value - *anyType* (please note: the data type needs to be defined for the value, such as 'string', 'numeric', 'date' or 'boolean'; e.g., for 'Firstname', the XML would need to be as follows - **<apic:Value xsi:type=\"xsd:string\">John</apic:Value>**\n* ConsentFields - *optional; array of ContactData* \n * ContactData\n * Key - *string* ('Text', 'DateTimeConsented', 'URL', 'IPAddress', 'UserAgent')\n * Value - *anyType* (please note: the data type needs to be defined for the value, such as 'string', 'numeric', 'date' or 'boolean'; e.g., for 'Text', the XML would need to be as follows - **<apic:Value xsi:type=\"xsd:string\">Your consent text goes here</apic:Value>**\n* Preferences - *optional; array of Preferences* \n * Preference\n * Key - *string* ('id', 'isPreference', 'preferences', 'isOptedIn')\n * Value - *anyType* (please note: the data type needs to be defined for the value, such as 'string', 'numeric', 'date' or 'boolean'; e.g., for 'isOptedIn', the XML would need to be as follows - **<apic:Value xsi:type=\"xsd:boolean\">true</apic:Value>**\n\n**Output parameters** \n * CreateContactResult\n * Id - *integer*\n * Email - *string*\n * OptInType - *string ('Unknown', 'Single', 'Double', 'VerifiedDouble')*\n * EmailType - *string ('PlainText', 'Html')* \n * DataFields - *optional; array of ContactData* \n * ContactData\n * Key - *string*\n * Value - *anyType*\n * ConsentFields - *optional; array of ContactData* \n * ContactData\n * Key - *string*\n * Value - *anyType*\n * Preferences- *optional; array of Preferences* \n * Preference\n * Key - *string*\n * Value - *anyType*\n * Status - *string ('Subscribed', 'Unsubscribed', 'SoftBounced', 'HardBounced', 'IspComplained', 'MailBlocked', 'PendingOptIn', 'DirectComplaint', 'Deleted', 'SharedSuppression', 'Suppressed', 'NotAllowed', 'DomainSuppression', 'NoMxRecord')*" } [/block] **Example** [block:code] { "codes": [ { "code": "using (var client = new ApiServiceClient())\n{\n client.ClientCredentials.UserName.UserName = \"username\";\n client.ClientCredentials.UserName.Password = \"password\";\n\n var contact = new ApiContactWithConsentAndPreferences\n {\n Contact = new ApiContact\n {\n Email = \"john.smith@example.com\",\n OptInType = ApiContactOptInTypes.Single,\n EmailType = ApiContactEmailTypes.Html,\n DataFields = new[]\n {\n new ApiContactData { Key = \"FirstName\", Value = \"John\" },\n new ApiContactData { Key = \"FullName\", Value = \"John Smith\" },\n new ApiContactData { Key = \"Gender\", Value = \"Male\" },\n new ApiContactData { Key = \"LastName\", Value = \"Smith\" },\n new ApiContactData { Key = \"Postcode\", Value = \"N5 1DP\" }\n }\n },\n ConsentFields = new[]\n {\n new ApiConsent\n {\n Fields = new[]\n {\n new ApiContactData() { Key = \"text\", Value = \"Your consent text goes here.\" },\n new ApiContactData() { Key = \"datetimeconsented\", Value = \"2018-01-26T21:29:00\" },\n new ApiContactData() { Key = \"url\", Value = \"https://www.example.com/signup/\" },\n new ApiContactData() { Key = \"ipaddress\", Value = \"127.0.0.1\" },\n new ApiContactData() { Key = \"useragent\", Value = \"Mozilla/5.0 (X11; OpenBSD i386) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36\" },\n }\n }\n },\n Preferences = new[]\n {\n new ApiPreference\n {\n Id = 1,\n IsPreference = false,\n Preferences = new[]\n {\n new ApiPreference { Id = 2, IsPreference = true, IsOptedIn = false },\n new ApiPreference { Id = 3, IsPreference = true, IsOptedIn = false },\n }\n },\n new ApiPreference\n {\n Id = 4,\n IsPreference = true,\n IsOptedIn = true\n }\n }\n };\n\n var createdContact = client.UpdateContactWithConsentAndPreferencesAsync(contact).Result;\n}", "language": "csharp" } ] } [/block]