Hi,
I've developed to the API using the python libraries supplied by ctct. Very nice. The API is simple and easy to use. I've started adding some more robust data to my application and have found that some of the field names that I'm using are getting rejected by the server when I post the data. Specifically, I have been trying to use the create_activity functionality to add/update multiple subscribers at a time. In the README file that comes with the python library, there is a list of fields returned from the API when requesting subscriber information:
id
updated
status
email_address
email_type
name
first_name
middle_name
last_name
job_title
company_name
home_phone
work_phone
addr1
addr2
addr3
city
state_code
state_name
country_code
country_name
postal_code
sub_postal_code
note
custom_field1
...
custom_field15
contact_lists
Solved! Go to Solution.
Hello,
I apologize I did not realize you were doing a bulk import, I thought you were adding contacts individually. For bulk activities in the python library you would have to do it with their proper names. The names for each one can be found here.
If you have any questions please let me know.
Regards,
Hello,
I believe that those fields should work fine. Is it possible for you to send me your code? You can email it here, and we will take a look at it and see if we can find out what is going on.
Regards,
Benjamin,
Thanks, I appreciate the help. I'm not sure that my code will be of much use unless you can see what my data structures contain. I think the way my code is written, it may be hard to cut and paste the relevant parts and have it make sense. Let me start by showing you the data structures and then the params sent in the URL. Perhaps you can spot something there. Here's the dictionary that contains the "rows" and "columns" elements:
{ "rows": [ [ "Liz.Buck40@yahoo.com", "Liz", "Buck", "27701" ], [ "Cheryl.Harris26@hotmail.com", "Cheryl", "Harris", "27701" ] ], "columns": [ "email_address", "first_name", "last_name", "postal_code" ] }
When I pass that along to the creat_activity() method in ctctwspylib, I get these params that are passed to the API:
activityType=SV_ADD &data=email_address%2Cfirst_name%2Clast_name%2Cpostal_code%0A Liz.Buck40%40yahoo.com%2CLiz%2CBuck%2C27701%0A Cheryl.Harris26%40hotmail.com%2CCheryl%2CHarris%2C27701 &lists=http%3A%2F%2Fapi.constantcontact.com%2Fws%2Fcustomers%2FXXXXXXX%2Flists%2F1
Everything above is exactly as it is sent to the API except that I changed the customer ID in the list URL to X's for security purposes. Decoded, it looks like this (for readability):
activityType=SV_ADD &data=email_address,first_name,last_name,postal_code Liz.Buck40@yahoo.com,Liz,Buck,27701 Cheryl.Harris26@hotmail.com,Cheryl,Harris,27701 &lists=http://api.constantcontact.com/ws/customers/XXXXXXX/lists/1
On a whim, I tried changing the field names to the same as are given in the examples in the README file that came with the ctctwspylib library. (email_address = Email Address, first_name = First Name and last_name = Last Name). When I did so, it worked. I was not able to find the equivalent for postal_code, though.
Thanks for your help.
-Scot
Oh, and... If this isn't enough information and you'd still like to see the code, I'll see if I can cobble together a standalone outside of my library that exhibits the same issue and post it for you.
Thanks,
-Scot
UPDATE:
It seems that the culprit is the original list of field names. If I use any of those field names I get "Error 400: Bad upload data" in the response body. If I use the proper names, it works. The problem is that I cannot guess at what the proper names would be for all the fields I would like to use.
It sounds like you're saying that the underscored field name ought to work and I certainly agree. However, I can change my code to use the proper names if you can send me a list of what they are.
Thanks again,
-Scot
Hello,
I apologize I did not realize you were doing a bulk import, I thought you were adding contacts individually. For bulk activities in the python library you would have to do it with their proper names. The names for each one can be found here.
If you have any questions please let me know.
Regards,
Benjamin,
That's great. Much appreciated. I'm sure that'll do the trick. You might want to have someone update the README file that comes with the python libraries and put that in the create_activity section. That would be very helpful.
Have a great one.
-Scot
Benjamin,
Sorry. I spoke too soon. I tried adding just the "Zip/Postal Code" field and I still get the same 400 error message. Here's what I'm posting.
activityType=SV_ADD&data=Email+Address%2CFirst+Name%2CLast+Name%2CZip%2FPostal+Code%0ALiz.Buck40%40yahoo.com%2CLiz%2CBuck%2C27701%0ACheryl.Harris26%40hotmail.com%2CCheryl%2CHarris%2C27701&lists=http%3A%2F%2Fapi.constantcontact.com%2Fws%2Fcustomers%2Fcat1013%2Flists%2F1 activityType=SV_ADD&data=Email+Address,First+Name,Last+Name,Zip/Postal+Code Liz.Buck40@yahoo.com,Liz,Buck,27701 Cheryl.Harris26@hotmail.com,Cheryl,Harris,27701&lists=http://api.constantcontact.com/ws/customers/cat1013/lists/1
Any ideas?
-Scot
Hello,
The Zip/Postal code actually needs to be posted as "Postal Code". I am going to look into this because our FAQ currently has Zip/Postal code, and it is not the same in the API.
I will find out if the FAQ is wrong, or if the API needs to be changed, and I will post back here with my results.
Regards,
Thanks again, Benjamin.
I did some trial-and-error testing and found that some of the fields listed on the page referenced work and others don't. "Postal Code" does not work along with "Country" and a few others.
I'll wait to hear what you find.
Cheers,
-Scot
Hello,
I have updated the Bulk Activities URI documentation to include the correct names. However, POSTAL CODE and COUNTRY should work. What is the data that you are trying to input in? It has to be correct postal codes and country codes. Here is an example of the string that I used that successfully was inserted in:
activityType=SV_ADD&data=EMAIL+ADDRESS%2CFIRST+NAME%2CMIDDLE+NAME%2CLAST+NAME%2CPOSTAL+CODE%2CCOUNTRY%0Atest%40example.com%2C+FirstName%2C+MidName%2C+LastName%0Atest2%40example.com%2C+FirstName2%2C+MidName2%2C+LastName2%2C+12345%2C+US%0A&lists=http%3A%2F%2Fapi.constantcontact.com%2Fws%2Fcustomers%2Fusername%2Flists%2F1
If you are still running into any issues please let me know.
Regards,
The holidays have come and gone. For many seasonal businesses, this means the rush of shoppers has decreased as well. Instead of turning off the lights and waiting for spring, make your email marketi...
See Article