{"_id":"5cc1aba250be91005d276987","project":"55dd9f2e0efd5821000d54d9","version":{"_id":"55dd9f4dab0e4d210045aae9","__v":47,"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","5da48fa678007c00d3826dfd","5da4905f535c4a002716833a"],"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":"5c3740967267aa42020e5cce","__v":0,"parentDoc":null,"metadata":{"title":"","description":"","image":[]},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2019-04-25T12:44:18.019Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":20,"body":"This operation bulk creates, or bulk updates, contacts with merge options. \n\nImport format can either be CSV or Excel. It must contain one column with the heading 'Email'. Passing a valid 'mergeOption' parameter is compulsory. Any other columns will attempt to map to your custom data fields. The ID of returned object can be used to query import progress.\n\nFor merge options, you can update all data fields by entering 'Overwrite', avoid updating data fields that contain blank values by entering 'OnlyOverwriteIfNotEmpty', or you can choose not to update data fields that contain values by entering 'OnlyOverwriteIfContactDataNotPopulated'.\n\nThis method mimics the existing [bulk create contacts in address book](https://developer.dotdigital.com/docs/importcontactstoaddressbook) method, but with an additional parameter, 'mergeOption', that allows you to specify how the import should handle empty fields, which is similar to the functionality described in [this article](https://support.dotdigital.com/hc/en-gb/articles/212211898-Importing-contacts-into-an-address-book#mergeoptions). \n\n**SOAP action:** [https://[region ID]-api.dotmailer.com/v2/ApiService/ImportContactsToAddressBookWithMergeOption](doc:importcontactstoaddressbookwithmergeoption) \n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Input and output parameters\",\n  \"body\": \"**Input parameters**\\n  * AddressBook ID - *required; integer* \\n  * Data - *required; file*\\n  * dataType - *required; string*\\n  * mergeOption - *required; ApiContactMergeOptionTypes - enum ('NotAvailableInThisVersion', 'Overwrite', 'OnlyOverwriteIfNotEmpty', 'OnlyOverwriteIfContactDataNotPopulated')*\\n                 \\n**Output parameters** \\n   * Id - *GUID*\\n   * Status - *string ('Finished', 'NotFinished', 'RejectedByWatchdog', 'InvalidFileFormat', 'ExceedsAllowedContactLimit', 'Unknown', 'Failed')*\"\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 path = :::at:::\\\"contacts.csv\\\";\\n  var data = File.ReadAllBytes(path);\\n  var dataType = \\\"csv\\\";\\n  var addressBookId = 1;\\n  var mergeOption = ApiContactMergeOptionTypes.OnlyOverwriteIfNotEmpty;\\n  var contactImport = client.ImportContactsToAddressBookWithMergeOption(addressBookId, data, dataType, mergeOption);\\n}\",\n      \"language\": \"csharp\"\n    }\n  ]\n}\n[/block]","excerpt":"Bulk creates, or bulk updates, contacts in an address book with merge option","slug":"importcontactstoaddressbookwithmergeoption","type":"basic","title":"ImportContactsToAddressBookWithMergeOption"}

ImportContactsToAddressBookWithMergeOption

Bulk creates, or bulk updates, contacts in an address book with merge option

This operation bulk creates, or bulk updates, contacts with merge options. Import format can either be CSV or Excel. It must contain one column with the heading 'Email'. Passing a valid 'mergeOption' parameter is compulsory. Any other columns will attempt to map to your custom data fields. The ID of returned object can be used to query import progress. For merge options, you can update all data fields by entering 'Overwrite', avoid updating data fields that contain blank values by entering 'OnlyOverwriteIfNotEmpty', or you can choose not to update data fields that contain values by entering 'OnlyOverwriteIfContactDataNotPopulated'. This method mimics the existing [bulk create contacts in address book](https://developer.dotdigital.com/docs/importcontactstoaddressbook) method, but with an additional parameter, 'mergeOption', that allows you to specify how the import should handle empty fields, which is similar to the functionality described in [this article](https://support.dotdigital.com/hc/en-gb/articles/212211898-Importing-contacts-into-an-address-book#mergeoptions). **SOAP action:** [https://[region ID]-api.dotmailer.com/v2/ApiService/ImportContactsToAddressBookWithMergeOption](doc:importcontactstoaddressbookwithmergeoption) [block:callout] { "type": "info", "title": "Input and output parameters", "body": "**Input parameters**\n * AddressBook ID - *required; integer* \n * Data - *required; file*\n * dataType - *required; string*\n * mergeOption - *required; ApiContactMergeOptionTypes - enum ('NotAvailableInThisVersion', 'Overwrite', 'OnlyOverwriteIfNotEmpty', 'OnlyOverwriteIfContactDataNotPopulated')*\n \n**Output parameters** \n * Id - *GUID*\n * Status - *string ('Finished', 'NotFinished', 'RejectedByWatchdog', 'InvalidFileFormat', 'ExceedsAllowedContactLimit', 'Unknown', 'Failed')*" } [/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 path = @\"contacts.csv\";\n var data = File.ReadAllBytes(path);\n var dataType = \"csv\";\n var addressBookId = 1;\n var mergeOption = ApiContactMergeOptionTypes.OnlyOverwriteIfNotEmpty;\n var contactImport = client.ImportContactsToAddressBookWithMergeOption(addressBookId, data, dataType, mergeOption);\n}", "language": "csharp" } ] } [/block]