I'm trying to import contacts via v3 of the api. I found some errors in their example script, and made some tweaks to get it to work properly with Python's requests module. When I run my script, I get a 200-OK response, but when I check on my import progress, I get that it is 100% complete, 0 were added, 0 updated, and 0 failed. And when I check my mailing list, nothing has been added.
If I rename one of my contact fields, I get a "400 - Bad Request" with an error message of "Invalid panelMember field provided", so I know I'm talking with the server.
Here's a minimum working sample to reproduce the problem: (just replace Token,MailingListID, and DataCenter)
```
import requests
import json
dict_Contacts = [
{
"id": "MLRP_123456789012345",
"firstName": "ExampleFirstName",
"lastName": "ExampleLastName",
"email": "example@example.com",
"language": "SP",
"unsubscribed":1,
"externalReference":"Example",
"embeddedData": {"ExampleField1":"example_field_val_1", "ExampleField2":"example_field_val_2"}
}
]
Token = 'My_Token'
MailingListID = 'My_Mailing_List'
dataCenter = 'My_Data_Center'
url = "https://{0}.qualtrics.com/API/v3/mailinglists/{1}/contactimports/".format(dataCenter, MailingListID)
headers = {
'x-api-token': Token,
'contentType':'application/json'
}
json_string = json.dumps(dict_Contacts)
files = {'contacts': ('contacts', json_string, 'application/json')}
request = requests.post(url, headers=headers, json={'contacts':dict_Contacts})
print(request.text)
```
Page 1 / 1
I found the solution. If you are importing a new contact, don't include an `id`. If a contact has an `id` that doesn't match any of the `id`s in the mailing list, Qualtrics skips the contact, rather than importing it as a new one.
Leave a Reply
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.