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
... View more