{"_id":"5acde23240606a0003eab649","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":"55dd9841cafe7221002a4c62","githubsync":"","__v":0,"parentDoc":null,"updates":[],"next":{"pages":[],"description":""},"createdAt":"2018-04-11T10:23:46.358Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":1,"body":"This method creates a new contact within the account with their consent information, and adds it to the 'All contacts' address book.\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\nNote that it is possible to update an existing contact using this method. A duplicate contact will not be created. If the contact already exists, then any data provided in your request that is already held for the contact will be overwritten and updated in the system.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Are you importing multiple contacts with consent?\",\n  \"body\": \"If you're looking to import or update multiple contacts with consent information at once, then we highly recommend using [ImportContacts](https://developer.dotmailer.com/docs/importcontacts) instead.\\n\\nIt allows you to import a file and has the benefit of being a single API call only, making it far less likely that your account will exceed its API calls per hour limit.\\n\\nHowever, when using the 'ImportContacts' call with consent information, you'll need to specify the following additional column headers in your file in order to successfully import consent:\\n\\n* CONSENTTEXT\\n* CONSENTURL\\n* CONSENTDATETIME\\n* CONSENTIP\\n* CONSENTUSERAGENT\"\n}\n[/block]\n**SOAP action:** [https://[region ID]-api.dotmailer.com/v2/ApiService/CreateContactWithConsent](doc:createcontactwithconsent)\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 ConsentData*\\n       * ConsentData\\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                 \\n**Output parameters** \\n  * CreateContactWithConsentResult\\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       * Status - *string ('Subscribed', 'Unsubscribed', 'SoftBounced', 'HardBounced', 'IspComplained', 'MailBlocked', 'PendingOptIn', 'DirectComplaint', 'Deleted', 'SharedSuppression', 'Suppressed', 'NotAllowed', 'DomainSuppression', 'NoMxRecord')*\\n       * ConsentFields - *optional; array of ConsentData*\\n            * ConsentData\\n                 * Key - *string ('Text', 'DateTimeConsented', 'URL', 'IPAddress', 'UserAgent', 'DateTimeCreated')*\\n                 * Value - *anyType*\"\n}\n[/block]\n**Example** \n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"using (var client = new ApiServiceClient.ApiServiceClient())\\n{\\n\\tclient.ClientCredentials.UserName.UserName = \\\"username\\\";\\n\\tclient.ClientCredentials.UserName.Password = \\\"password\\\";\\n\\n\\tvar contact = new ApiContactWithConsent\\n\\t{\\n\\t\\tContact = new ApiContact {\\n\\t\\t\\tEmail = \\\"john.smith:::at:::example.com\\\",\\n\\t\\t\\tOptInType = ApiContactOptInTypes.Single,\\n\\t\\t\\tEmailType = ApiContactEmailTypes.Html,\\n\\t\\t\\tDataFields = new[] {\\n\\t\\t\\t\\tnew ApiContactData { Key = \\\"FirstName\\\", Value = \\\"John\\\" },\\n\\t\\t\\t\\tnew ApiContactData { Key = \\\"FullName\\\", Value = \\\"John Smith\\\" },\\n\\t\\t\\t\\tnew ApiContactData { Key = \\\"Gender\\\", Value = \\\"Male\\\" },\\n\\t\\t\\t\\tnew ApiContactData { Key = \\\"LastName\\\", Value = \\\"Smith\\\" },\\n\\t\\t\\t\\tnew ApiContactData { Key = \\\"Postcode\\\", Value = \\\"N5 1DP\\\" }\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tConsentFields = new[] {\\n\\t\\t\\tnew ApiConsent {\\n\\t\\t\\t\\tFields = new[] {\\n\\t\\t\\t\\t\\tnew ApiContactData() { Key = \\\"text\\\", Value = \\\"Your consent text goes here.\\\" },\\n\\t\\t\\t\\t\\tnew ApiContactData() { Key = \\\"datetimeconsented\\\", Value = \\\"2018-01-26T21:29:00\\\" },\\n\\t\\t\\t\\t\\tnew ApiContactData() { Key = \\\"url\\\", Value = \\\"https://www.example.com/signup/\\\" },\\n\\t\\t\\t\\t\\tnew ApiContactData() { Key = \\\"ipaddress\\\", Value = \\\"127.0.0.1\\\" },\\n\\t\\t\\t\\t\\tnew 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\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t};\\n\\tvar createdContact = client.CreateContactWithConsent(contact);\\n}\",\n      \"language\": \"csharp\"\n    }\n  ]\n}\n[/block]","excerpt":"Creates a contact with their consent information","slug":"createcontactwithconsent","type":"basic","title":"CreateContactWithConsent"}

CreateContactWithConsent

Creates a contact with their consent information

This method creates a new contact within the account with their consent information, and adds it to the 'All contacts' address book. 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. Note that it is possible to update an existing contact using this method. A duplicate contact will not be created. If the contact already exists, then any data provided in your request that is already held for the contact will be overwritten and updated in the system. [block:callout] { "type": "info", "title": "Are you importing multiple contacts with consent?", "body": "If you're looking to import or update multiple contacts with consent information at once, then we highly recommend using [ImportContacts](https://developer.dotmailer.com/docs/importcontacts) instead.\n\nIt allows you to import a file and has the benefit of being a single API call only, making it far less likely that your account will exceed its API calls per hour limit.\n\nHowever, when using the 'ImportContacts' call with consent information, you'll need to specify the following additional column headers in your file in order to successfully import consent:\n\n* CONSENTTEXT\n* CONSENTURL\n* CONSENTDATETIME\n* CONSENTIP\n* CONSENTUSERAGENT" } [/block] **SOAP action:** [https://[region ID]-api.dotmailer.com/v2/ApiService/CreateContactWithConsent](doc:createcontactwithconsent) [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 ConsentData*\n * ConsentData\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 \n**Output parameters** \n * CreateContactWithConsentResult\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 * Status - *string ('Subscribed', 'Unsubscribed', 'SoftBounced', 'HardBounced', 'IspComplained', 'MailBlocked', 'PendingOptIn', 'DirectComplaint', 'Deleted', 'SharedSuppression', 'Suppressed', 'NotAllowed', 'DomainSuppression', 'NoMxRecord')*\n * ConsentFields - *optional; array of ConsentData*\n * ConsentData\n * Key - *string ('Text', 'DateTimeConsented', 'URL', 'IPAddress', 'UserAgent', 'DateTimeCreated')*\n * Value - *anyType*" } [/block] **Example** [block:code] { "codes": [ { "code": "using (var client = new ApiServiceClient.ApiServiceClient())\n{\n\tclient.ClientCredentials.UserName.UserName = \"username\";\n\tclient.ClientCredentials.UserName.Password = \"password\";\n\n\tvar contact = new ApiContactWithConsent\n\t{\n\t\tContact = new ApiContact {\n\t\t\tEmail = \"john.smith@example.com\",\n\t\t\tOptInType = ApiContactOptInTypes.Single,\n\t\t\tEmailType = ApiContactEmailTypes.Html,\n\t\t\tDataFields = new[] {\n\t\t\t\tnew ApiContactData { Key = \"FirstName\", Value = \"John\" },\n\t\t\t\tnew ApiContactData { Key = \"FullName\", Value = \"John Smith\" },\n\t\t\t\tnew ApiContactData { Key = \"Gender\", Value = \"Male\" },\n\t\t\t\tnew ApiContactData { Key = \"LastName\", Value = \"Smith\" },\n\t\t\t\tnew ApiContactData { Key = \"Postcode\", Value = \"N5 1DP\" }\n\t\t\t}\n\t\t},\n\t\tConsentFields = new[] {\n\t\t\tnew ApiConsent {\n\t\t\t\tFields = new[] {\n\t\t\t\t\tnew ApiContactData() { Key = \"text\", Value = \"Your consent text goes here.\" },\n\t\t\t\t\tnew ApiContactData() { Key = \"datetimeconsented\", Value = \"2018-01-26T21:29:00\" },\n\t\t\t\t\tnew ApiContactData() { Key = \"url\", Value = \"https://www.example.com/signup/\" },\n\t\t\t\t\tnew ApiContactData() { Key = \"ipaddress\", Value = \"127.0.0.1\" },\n\t\t\t\t\tnew 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\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tvar createdContact = client.CreateContactWithConsent(contact);\n}", "language": "csharp" } ] } [/block]